timothyandrew/blink

View on GitHub
app/controllers/lesson_plan_items_controller.rb

Summary

Maintainability
A
0 mins
Test Coverage
class LessonPlanItemsController < ApplicationController
  before_filter :assign_lesson_plan
  decorates_assigned :lesson_plan_item

  def index
    @lesson_plan_items = @lesson_plan.items.order(date: :desc)
  end

  def new
    @duplicate_from = params[:duplicate_from]
    @lesson_plan_item = @lesson_plan.items.new
  end

  def edit
    @lesson_plan_item = @lesson_plan.items.find(params[:id])
  end

  def show
    @lesson_plan_item = @lesson_plan.items.find(params[:id])
  end

  def duplicate
    duplicate_from = @lesson_plan.items.find(params[:duplicate_from])
    target = current_user.lesson_plans.find(params[:lesson_plan_item][:lesson_plan_id])
    target.add_duplicate_item!(duplicate_from)
    redirect_to lesson_plan_path(target), notice: "Duplicated successfully"
  end

  def create
    @lesson_plan_item = @lesson_plan.items.new
    @lesson_plan_item.assign_attributes(lesson_plan_item_params)
    if @lesson_plan_item.save
      flash[:notice] = "Lesson plan item was created"
      redirect_to lesson_plan_path(@lesson_plan)
    else
      flash[:alert] = @lesson_plan_item.errors.full_messages.to_sentence
      render :new
    end
  end

  def update
    @lesson_plan_item = @lesson_plan.items.find(params[:id])
    if @lesson_plan_item.update_attributes(lesson_plan_item_params)
      flash[:notice] = "Lesson plan item was edited"
      redirect_to lesson_plan_path(@lesson_plan)
    else
      flash[:alert] = @lesson_plan_item.errors.full_messages.to_sentence
      render :edit
    end
  end

  def destroy
    @lesson_plan_item = @lesson_plan.items.find(params[:id])
    @lesson_plan_item.destroy
    flash[:notice] = "Lesson plan item was destroyed!"
    redirect_to lesson_plan_path(@lesson_plan)
  end

  private

  def assign_lesson_plan
    @lesson_plan = current_user.lesson_plans.find(params[:lesson_plan_id])
  end

  def lesson_plan_item_params
    elc_data_item_schema = [:activity, :materials]
    elc_data_schema = {craft: elc_data_item_schema, central_1: elc_data_item_schema, central_2: elc_data_item_schema,
                       technology: elc_data_item_schema, reading: elc_data_item_schema}
    params.require(:lesson_plan_item).permit(:start, :end, :subject, :topic, :type, :theme,
                                             :goals, :teaching_method, :teaching_aids,
                                             elc_data: elc_data_schema)
  end
end