class Employee::AddressBook::ContactAdditionalGroupsController < Employee::Controller
  def index
    render_success :ok, json: groups.map { |g| group_props(g) }
  end

  def show
    render_success :ok, json: group_props(group)
  end

  def create
    group = groups.build(group_params)
    if group.save
      render_success :created, json: group_props(group)
    else
      render_error :unprocessable_entity, errors: group.errors
    end
  end

  def update
    if group.update(group_params)
      render_success :ok, json: group_props(group)
    else
      render_error :unprocessable_entity, errors: group.errors
    end
  end

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

  private
    def groups
      current_school.contact_additional_groups
    end

    def group
      @group ||= groups.find_by(id: params[:id])
    end

    def group_params
      params.permit(:name, :description)
    end

    def group_props(item)
      {
        id: item.id,
        name: item.name,
        description: item.description,
        count: item.fields_count
      }
    end
end
