class Admin::Administration::SchoolPeriodsController < Admin::Administration::Controller
  def index
    render_success :ok, json: periods.map { |p| period_props(p) }
  end

  def show
    render_success :ok, json: period_props(period)
  end

  def create
    period = periods.build(period_params)

    if period.save
      render_success :ok, json: period_props(period)
    else
      render_error :unprocessable_entity, errors: period
    end
  end

  def update
    if period.update(period_params)
      render_success :ok, json: period_props(period)
    else
      render_error :unprocessable_entity, errors: period
    end
  end

  def destroy
    if period.destroy
      render_success :ok
    else
      render_error :unprocessable_entity
    end
  end

  private
    def periods
      current_school.periods
    end

    def period
      @period ||= periods.find_by(id: params[:id])
    end

    def period_params
      params.permit(:start_time, :stop_time, :name, :code, :order)
    end

    def period_props(period)
      {
        id: period.id,
        start_time: period.start_time,
        stop_time: period.stop_time,
        name: period.name,
        code: period.code,
        order: period.order,
      }
    end
end
