class Internal::Paya::FormsController < Internal::Paya::Controller
  def payform
    render_success :ok, json: form_service(:payform)
  end

  def accountform
    render_success :ok, json: form_service(:accountform)
  end

  private
    def family
      @family ||= current_school.families.find_by(id: params[:family_id])
    end

    def contact
      @contact ||= family.contacts.find_by(id: params[:contact_id])
    end

    def form_service(method)
      Paya::FormService.call(current_school, method, options)
    end

    def options
      {}.tap do |props|
        props[:payment_method] = params[:payment_method]
        props[:family] = family

        if action_name.to_sym == :payform
          props[:subtotal] = params[:subtotal]
          props[:surcharge] = params[:surcharge]
          props[:product_transaction_id] = params[:product_transaction_id]
        else
          props[:contact] = contact
          props[:paya_contact_id] = params[:paya_contact_id]
        end
      end
    end
end
