mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-25 20:46:48 +00:00
43 lines
1.0 KiB
Ruby
43 lines
1.0 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module Checkout
|
|
class Validation
|
|
def initialize(order, params)
|
|
@params = params
|
|
@order = order
|
|
end
|
|
|
|
def call
|
|
__send__ "validate_#{current_step}"
|
|
end
|
|
|
|
private
|
|
|
|
attr_reader :order, :params
|
|
|
|
def current_step
|
|
([params[:step]] & ["details", "payment", "summary"]).first
|
|
end
|
|
|
|
def validate_details
|
|
return true if params[:shipping_method_id].present?
|
|
|
|
order.errors.add :shipping_method, I18n.t('checkout.errors.select_a_shipping_method')
|
|
end
|
|
|
|
def validate_payment
|
|
return true if params.dig(:order, :payments_attributes, 0, :payment_method_id).present?
|
|
return true if order.zero_priced_order?
|
|
|
|
order.errors.add :payment_method, I18n.t('checkout.errors.select_a_payment_method')
|
|
end
|
|
|
|
def validate_summary
|
|
return true if params[:accept_terms]
|
|
return true unless TermsOfService.required?(order.distributor)
|
|
|
|
order.errors.add(:terms_and_conditions, I18n.t("checkout.errors.terms_not_accepted"))
|
|
end
|
|
end
|
|
end
|