class Support::Sites::Schools::FinancialAid::DocumentsController < Support::Sites::Schools::Controller
  def index
    render_success :ok, json: files.map { |f| props(f) }
  end

  private
    def application
      @application ||= school.financial_aid_applications.find_by(id: params[:application_id])
    end

    def file_relationships
      {
        income_files: :income,
        fixed_expense_files: :fixed_expenses,
        variable_expense_files: :variable_expenses,
        debt_files: :debt,
        asset_files: :assets,
        retirement_fund_files: :retirement_funds
      }
    end

    def file_area
      application.send("#{params[:area].singularize}_files")
    end

    def files
      return file_area.attachments if params[:area]

      file_relationships.keys.flat_map { |relation| application.send(relation).attachments }
    end

    def file
      file_area.find_by(id: params[:id])
    end

    def props(file)
      {
        id: file.id,
        filename: file.filename,
        url: file.service_url,
        area: file_relationships[file.name.to_sym],
        type: file.name.to_sym
      }
    end
end
