Files
openfoodnetwork/app/services/checkout/validation.rb

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