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

  def show
    render_success :ok, json: payment_props
  end

  def update
    if payment.update(payment_params)
      render_success :ok, json: payment_props
    else
      render_error :unprocessable_entity, errors: payment
    end
  end

  private
    def school_year
      @school_year ||= current_school.school_years.find_by(id: params[:school_year_id])
    end

    def payment
      @payment ||= family.admission_families
        .find_or_initialize_by(school_year: school_year)
    end

    def config
      current_school.find_or_build_admission_config
    end

    def payment_params
      params.permit(:payment_status)
    end

    def payment_props
      {
        id: payment.id,
        description: payment.payment_description || config.payment_description,
        amount: payment.payment_amount || config.payment_amount,
        paid_at: payment.paid_at,
        status: payment.payment_status
      }
    end
end
