class Employee::AddressBook::Contacts::FamiliesController < Employee::Controller
  def index
    render_success :ok, json: families.decorate.map { |f| props(f) }
  end

  def create
    family = families.build(family_params)
    if family.save
      render_success :created, json: props(family.decorate)
    else
      render_error :unprocessable_entity, errors: family.errors
    end
  end

  def update
    if family.update(family_params)
      render_success :ok, json: props(family.decorate)
    else
      render_error :unprocessable_entity, errors: family.errors
    end
  end

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

  private
    def contact
      @contact ||= current_school.contacts.find_by(id: params[:contact_id])
    end

    def families
      contact.contact_families.includes(:family, :relationship)
    end

    def family
      @family ||= families.find_by(id: params[:id])
    end

    def family_params
      params.permit(:relationship_id, :primary, :emergency, :pickup, :family_id)
    end

    def props(family)
      {
        id: family.id,
        contact_id: family.contact_id,
        family_id: family.family_id,
        name: family.family_name,
        relationship_name: family.relationship_name,
        relationship_id: family.relationship_id,
        primary: family.primary,
        emergency: family.emergency,
        pickup: family.pickup
      }
    end
end
