class Support::Sites::Schools::EmployeesController < Support::Sites::Controller
  def index
    render_success :ok, json: employees.map { |e| employee_props(e) }
  end

  def show
    render_success :ok, json: employee_props(employee)
  end

  def update
    if employee.update(employee_params)
      render_success :ok, json: employee_props(employee)
    else
      render_error :unprocessable_entity, errors: employee
    end
  end

  private
    def school
      @school ||= School.find_by(id: params[:school_id])
    end

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

    def employees
      school.employees
        .includes(:permission_users)
        .by_superuser_or_legacy_permissions(params[:superuser]&.to_bool, params[:permissions])
        .is_current(params[:current]&.to_bool)
        .by_main_district_site
        .ordered
    end

    def employee_params
      params.permit(:superuser)
    end

    def employee_props(employee)
      {
        id: employee.id,
        full_name: employee.full_name,
        full_name_reverse: employee.full_name(:reverse),
        username: employee.username,
        superuser: employee.superuser,
        legacy_permissions: employee.permission_users.map(&:name),
        position_name: employee.decorate.position_name,
        work_phone: employee.work_phone,
        admin_permissions: employee.admin_permission,
        support_user: employee.support_permission.present?,
        last_login: employee.last_login,
        support_id: employee.support_id.zero? ? nil : employee.support_id,
        email1: employee.email,
        email1_verified: employee.email_verified
      }
    end
end
