class Admin::Settings::PermissionsController < Admin::Controller
  def show
    render_success :ok, json: permission_props(permissions)
  end

  def update
    if permissions.update(permissions_params)
      render_success :ok
    else
      render_error :unprocessable_entity, errors: permissions
    end
  end

  def export
    Reporting::Settings::PermissionsJob.perform_async(current_school.id, current_user.id)
  end

  private
    def employee
      @employee ||= current_school.employees.find_by(id: params[:id])
    end

    def permissions
      @permissions ||= employee.find_or_build_admin_permission
    end

    def permissions_params
      params.permit(
        :accounting,
        :administration,
        :admissions,
        :classroom,
        :communications,
        :courses,
        :covid,
        :discipline,
        :facility,
        :human_resources,
        :library,
        :nursing,
        :service,
        :state_reporting,
        :students
      )
    end

    def permission_props(permissions)
      {
        id: employee.id,
        accounting: permissions.accounting,
        administration: permissions.administration,
        admissions: permissions.admissions,
        classroom: permissions.classroom,
        communications: permissions.communications,
        courses: permissions.courses,
        covid: permissions.covid,
        discipline: permissions.discipline,
        facility: permissions.facility,
        human_resources: permissions.human_resources,
        library: permissions.library,
        nursing: permissions.nursing,
        service: permissions.service,
        state_reporting: permissions.state_reporting,
        students: permissions.students
      }
    end
end
