class Admin::FinancialAid::ConfigsController < Admin::Controller
  def show
    render_success :ok, json: props
  end

  def update
    if config.update(config_params)
      render_success :ok, json: props
    else
      render_error :unprocessable_entity, errors: config, body: config.reload
    end
  end

  private
    def config
      @config ||= current_school.find_or_build_financial_aid_config
    end

    def current_admission_year
      current_school.find_or_build_admission_config.school_year
    end

    def total_awarded
      current_admission_year.financial_aid_applications.pluck(:awarded).compact.sum
    end

    def available_funds
      config.available_funds || 0
    end

    def config_params
      params.permit(
        :active,
        :school_voucher,
        :school_voucher_code,
        :school_cover_fee,
        :available_funds
      )
    end

    def props
      {
        active: config.active,
        school_voucher: config.school_voucher?,
        school_voucher_code: config.school_voucher_code,
        school_cover_fee: config.school_cover_fee?,
        stripe_payment_id: config.stripe_payment_id,
        available_funds: available_funds,
        total_awarded: total_awarded,
        amount_remaining: available_funds - total_awarded
      }
    end
end
