class School::Legacy::Directory::EmployeesController < ApplicationController
  def index
    return render_error :forbidden unless permission?(:directory)

    objects = employees.search(params[:term]).decorate.map { |e| employee_props(e) }
    render_success :ok, json: objects
  end

  private
    def employees
      current_school.employees.in_directory.by_status(true).ordered
    end

    def permissions
      @permissions ||= current_school.school_config
        .directory_permissions(current_user.role)
    end

    def permission?(prop)
      current_user.level.positive? || permissions[:employee][prop]
    end

    def employee_props(employee)
      {}.tap do |prop|
        prop[:id] = employee.id
        prop[:title] = employee.title&.name
        prop[:first_name] = employee.first_name
        prop[:last_name] = employee.last_name
        prop[:position] = employee.position&.name
        prop[:phone] = employee.work_phone_number if permission?(:phone)
        prop[:email] = employee.email if permission?(:email)
        prop[:manager] = employee.manager&.full_name
        prop[:avatar] = employee.path_to_photo.to_s
      end
    end
end
