class Admin::Admissions::Families::RevisionsController < Admin::Admissions::Controller
  include Admin::Admissions::FamilyScoped

  def show
    render_success :ok, json: revision_props(revision)
  end

  def update
    revision.add_custom_error(:base, 'Update has already been applied') if revision.applied

    if revision.update(revision_params)
      render_success :ok, object: 'General fields', json: revision_props(revision)
    else
      render_error :unprocessable_entity, errors: revision
    end
  end

  private
    def revision
      @revision ||= family.admission_family_revisions
        .find_or_initialize_by(school_year: school_year)
    end

    def revision_params
      params.permit(Admission::FamilyRevision::FAMILY_ATTRIBUTES)
    end

    def revision_props(revision)
      {
        address: revision.address,
        address_ext: revision.address_ext,
        city: revision.city,
        county: revision.county,
        state: revision.state,
        zip: revision.zip,
        country_id: revision.country_id,
        address_2: revision.address_2,
        address_ext_2: revision.address_ext_2,
        city_2: revision.city_2,
        state_2: revision.state_2,
        zip_2: revision.zip_2,
        country_2_id: revision.country_2_id,
        directory: revision.directory,
        directory_address: revision.directory_address,
        directory_phone: revision.directory_phone,
        directory_email: revision.directory_email,
        directory_cell: revision.directory_cell,
        name: family.name
      }
    end
end
