class Admin::Legacy::Discipline::ViolationsController < Admin::Legacy::Discipline::Controller
  def index
    render_success :ok, json: violations.map { |v| violation_props(v) }
  end

  def show
    render_success :ok, json: violation_props(violation)
  end

  def create
    violation = violations.build(violation_params)
    violation.group = group if group
    if violation.save
      render_success :ok, json: violation_props(violation)
    else
      render_error :unprocessable_entity, errors: violation
    end
  end

  def update
    violation.assign_attributes(violation_params)
    violation.group = group if group
    if violation.save
      render_success :ok, json: violation_props(violation)
    else
      render_error :unprocessable_entity, errors: violation
    end
  end

  def destroy
    if violation.destroy
      render_success :ok
    else
      render_error :unprocessable_entity, errors: violation
    end
  end

  private
    def violations
      current_school.discipline_violations
    end

    def violation
      @violation ||= violations.find_by(id: params[:id])
    end

    def group
      @group ||= current_school.discipline_groups.find_by(id: params[:group_id])
    end

    def violation_params
      params.permit(:name, :description, :severity, :punishment)
    end

    def violation_props(violation)
      {
        id: violation.id,
        name: violation.name,
        description: violation.description,
        severity: violation.severity,
        punishment: violation.punishment,
        group_id: violation.group_id,
        group_name: violation.decorate.group_name
      }
    end
end
