Sha256: 02195fae05a6407af73647877a9f99bb7973fc28cbe61f448be53826d5737fec
Contents?: true
Size: 972 Bytes
Versions: 1
Compression:
Stored size: 972 Bytes
Contents
module Shopper module CartPage class UpdateCoupon def initialize(params, order) @params = params @order = order end attr_reader :coupon def call set_coupon return true unless need_to_update? return false unless @coupon.valid? deattach_coupon? ? deattach_coupon : update_coupon end private def set_coupon @coupon = CouponForm.from_params(@params[:coupon]) end def need_to_update? new_code != current_code end def deattach_coupon? !current_code.blank? && new_code.blank? end def deattach_coupon @order.coupon = nil @order.save end def update_coupon @order.coupon = Coupon.find_by(code: @coupon.code) @order.save end def current_code @order.coupon&.code&.to_s end def new_code @coupon.code&.to_s end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
shoppper-0.1.0 | app/commands/shopper/cart_page/update_coupon.rb |