class Employee::AddressBook::ContactCategoriesController < Employee::Controller
  def index
    render_success :ok, json: categories.map { |c| category_props(c) }
  end

  def show
    render_success :ok, json: category_props(category)
  end

  def create
    category = categories.build(category_params)
    if category.save
      render_success :created, json: category_props(category)
    else
      render_error :unprocessable_entity, errors: category
    end
  end

  def update
    if category.update(category_params)
      render_success :ok, json: category_props(category)
    else
      render_error :unprocessable_entity, errors: category
    end
  end

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

  private
    def categories
      current_school.contact_categories
    end

    def category
      @category ||= categories.find_by(id: params[:id])
    end

    def category_params
      params.permit(:name, :description, :group_id)
    end

    def category_props(item)
      {
        id: item.id,
        name: item.name,
        description: item.description,
        group_id: item.group_id,
        count: item.contacts_count
      }
    end
end
