class Admin::Legacy::FamiliesController < Admin::Controller
  def index
    render_success :ok, json: families.current_status(:current).map { |f| family_props(f) }
  end

  def show
    render_success :ok, json: family_props(family)
  end

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

  private
    def families
      current_school.families.includes(:primary_students, :secondary_students)
    end

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

    def family_params
      params.permit(
        :address,
        :address_ext,
        :city,
        :county,
        :state,
        :zip,
        :country_id,
        :address_2,
        :address_ext_2,
        :city_2,
        :state_2,
        :zip_2,
        :country_2_id
      )
    end

    def family_props(family)
      {}.tap do |props|
        props[:id] = family.id
        props[:code] = family.code
        props[:name] = family.name
        props[:address] = family.address
        props[:address_ext] = family.address_ext
        props[:city] = family.city
        props[:county] = family.county
        props[:state] = family.state
        props[:zip] = family.zip
        props[:country_id] = family.country_id
        props[:address_2] = family.address_2
        props[:address_ext_2] = family.address_ext_2
        props[:city_2] = family.city_2
        props[:state_2] = family.state_2
        props[:zip_2] = family.zip_2
        props[:country_2_id] = family.country_2_id
        props[:directory] = family.directory
        props[:directory_address] = family.directory_address
        props[:directory_phone] = family.directory_phone
        props[:directory_email] = family.directory_email
        props[:directory_cell] = family.directory_cell
        props[:students] = family.students.map { |s| student_props(s) }
        return props if action_name.to_sym == :index

        props[:country_name] = family.decorate.country_name
        props[:country_name_2] = family.decorate.country_2_name
      end
    end

    def student_props(student)
      {}.tap do |props|
        props[:id] = student.id
        props[:first_name] = student.first_name
        props[:last_name] = student.last_name
        props[:email] = student.email
      end
    end
end
