Class: SolidusPromotions::PromotionMigrator
- Inherits:
-
Object
- Object
- SolidusPromotions::PromotionMigrator
- Defined in:
- lib/solidus_promotions/promotion_migrator.rb
Constant Summary collapse
- PROMOTION_IGNORED_ATTRIBUTES =
["id", "type", "promotion_category_id", "promotion_id"]
Instance Attribute Summary collapse
-
#logger ⇒ Object
readonly
Returns the value of attribute logger.
-
#promotion_map ⇒ Object
readonly
Returns the value of attribute promotion_map.
Instance Method Summary collapse
- #call ⇒ Object
-
#initialize(promotion_map, logger: nil) ⇒ PromotionMigrator
constructor
A new instance of PromotionMigrator.
Constructor Details
#initialize(promotion_map, logger: nil) ⇒ PromotionMigrator
Returns a new instance of PromotionMigrator.
11 12 13 14 |
# File 'lib/solidus_promotions/promotion_migrator.rb', line 11 def initialize(promotion_map, logger: nil) @logger = logger || Logger.new($stdout) @promotion_map = promotion_map end |
Instance Attribute Details
#logger ⇒ Object (readonly)
Returns the value of attribute logger.
9 10 11 |
# File 'lib/solidus_promotions/promotion_migrator.rb', line 9 def logger @logger end |
#promotion_map ⇒ Object (readonly)
Returns the value of attribute promotion_map.
9 10 11 |
# File 'lib/solidus_promotions/promotion_migrator.rb', line 9 def promotion_map @promotion_map end |
Instance Method Details
#call ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/solidus_promotions/promotion_migrator.rb', line 16 def call SolidusPromotions::PromotionCategory.destroy_all Spree::PromotionCategory.all.find_each do |promotion_category| SolidusPromotions::PromotionCategory.create!(promotion_category.attributes.except("id")) end SolidusPromotions::Promotion.destroy_all Spree::Promotion.all.find_each do |promotion| new_promotion = copy_promotion(promotion) if promotion.promotion_category&.name.present? new_promotion.category = SolidusPromotions::PromotionCategory.find_by( name: promotion.promotion_category.name ) end new_promotion.benefits = promotion.actions.flat_map do |old_promotion_action| generate_new_benefits(old_promotion_action)&.tap do |new_promotion_action| new_promotion_action.original_promotion_action = old_promotion_action new_promotion_action.conditions = promotion.rules.flat_map do |old_promotion_rule| generate_new_promotion_conditions(old_promotion_rule) end end end.compact new_promotion.save! copy_promotion_code_batches(new_promotion) copy_promotion_codes(new_promotion) end end |