Skip to content

Instantly share code, notes, and snippets.

@infinityrobot
Created March 6, 2011 12:27
Show Gist options
  • Save infinityrobot/857249 to your computer and use it in GitHub Desktop.
Save infinityrobot/857249 to your computer and use it in GitHub Desktop.

Revisions

  1. infinityrobot renamed this gist Mar 6, 2011. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  2. infinityrobot created this gist Mar 6, 2011.
    77 changes: 77 additions & 0 deletions gistfile1.txt
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,77 @@
    class TimetablesController < ApplicationController

    # FILTERS
    before_filter :authenticate_user!, :except => [:show, :about]

    # SHOW
    def show
    if user_signed_in? && current_user.timetable
    @timetable_items = current_user.timetable
    elsif user_signed_in? && !current_user.timetable || !user_signed_in?
    redirect_to about_timetable_path # Redirect user to the about timetable page if they are either not logged in or do not have a timetable.
    end
    end

    # ABOUT - Redirected to the about page if they user doesn't have a timetable or they aren't logged in.
    def about

    end

    # NEW
    def new
    if current_user.timetable
    redirect_to timetable_path, :notice => "You already have a timetable!"
    else
    @timetable = Timetable.new
    timetable_item = @timetable.timetable_items.build # Build the first Timetable Item so it is displayed
    timetable_item.timetable_events.build # Build the first Timetable Event so it is displayed
    end
    end

    def create
    update_timetable_event_params(params[:timetable]) # Hacky method to get simple_time_select to work
    @timetable = Timetable.new(params[:timetable])
    @timetable.user = current_user
    if @timetable.save
    redirect_to timetable_path, :notice => "Timetable created successfully!"
    else
    render :action => 'new'
    end
    end

    # EDIT
    def edit
    if @timetable = current_user.timetable
    @timetable
    else
    redirect_to new_timetable_path
    end
    end

    def update
    @timetable = current_user.timetable
    update_timetable_event_params(params[:timetable]) # Hacky method to get simple_time_select to work
    if @timetable.update_attributes(params[:timetable])
    redirect_to timetable_path, :notice => "Your timetable has successfully been updated! :)"
    else
    render :action => 'edit'
    end
    end


    private

    def update_timetable_event_params(timetable_params)
    @item_params = timetable_params["timetable_items_attributes"]
    @item_params.keys.each do |item_key|
    unless @item_params[item_key]["timetable_events_attributes"].blank?
    @item_params[item_key]["timetable_events_attributes"].keys.each do |event_key|
    @event_params = @item_params[item_key]["timetable_events_attributes"][event_key]
    @event_params["start_time"] = @event_params["start_time(5i)"]
    @event_params.delete("start_time(5i)")
    end
    end
    end
    end

    end