class Support::Sites::Schools::FinancialAid::ApplicationsController < Support::Sites::Schools::Controller
  def index
    data = applications.eager_load(:family, application_contacts: :contact)
    render_success :ok, json: data.map { |f| props(f) }
  end

  def show
    render_success :ok, json: props(application)
  end

  def credit_report_pdf
    send_data CreditReport::PdfService.call(school, FinancialAidContact.first),
      type: 'application/pdf',
      disposition: :inline,
      filename: 'crs_report.pdf'
  end

  private
    def school_year
      school.find_or_build_admission_config.school_year
    end

    def applications
      school_year.financial_aid_applications
    end

    def application
      @applications ||= applications.find_by(id: params[:id])
    end

    def props(application)
      {
        id: application.id,
        family_id: application.family.id,
        family_name: application.family.name,
        status: application.status,
        submitted_at: application.submitted_at,
        financial_contribution: application.financial_contribution,
        score: application.score,
        scored_at: application.scored_at,
        contacts: application.application_contacts.map { |c| contact_props(c) }
      }
    end

    def contact_props(application_contact)
      {
        id: application_contact.id,
        credit_report_key: application_contact.credit_report_key,
        full_name: application_contact.contact.full_name,
      }
    end
end
