class Admin::Legacy::HumanResources::Employees::CategoriesController <
  Admin::Legacy::HumanResources::Controller
  def index
    render_success :ok, json: categories.map { |c| props(c) }
  end

  def batch_create
    employees.each do |employee|
      employee.employee_categories = (employee.categories + selected_categories).uniq
    end

    if transactional_save(employees)
      render_success :ok, event: :added
    else
      render_error :unprocessable_entity
    end
  end

  def batch_update
    employees.each do |employee|
      employee.employee_categories = selected_categories
    end

    if transactional_save(employees)
      render_success :ok, event: :updated
    else
      render_error :unprocessable_entity
    end
  end

  def batch_delete
    employees.each do |employee|
      employee.employee_categories = employee.categories - selected_categories
    end

    if transactional_save(employees)
      render_success :ok, event: :removed
    else
      render_error :unprocessable_entity
    end
  end

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

    def employees
      @employees ||= current_school.employees.by_ids(params[:employee_ids])
    end

    def categories
      employee.categories
    end

    def selected_categories
      current_school.employee_categories.by_ids(params[:categories])
    end

    def props(category)
      {
        id: category.id,
        name: category.name
      }
    end
end
