Class: Item::AvailabilityDateChecker
- Inherits:
-
BaseService
- Object
- BaseService
- Item::AvailabilityDateChecker
- Defined in:
- app/services/item/availability_date_checker.rb
Instance Method Summary collapse
Methods inherited from BaseService
#initialize, #log_debug, #log_error, #log_info, #log_warning, #logger, #options, #tagged_logger
Constructor Details
This class inherits a constructor from BaseService
Instance Method Details
#process ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'app/services/item/availability_date_checker.rb', line 3 def process #Examine all store items with availability date set and toggle their inactive status relation = StoreItem.where("store_items.availability_start_date IS NOT NULL OR store_items.availability_end_date IS NOT NULL").joins(:item).merge(Item.active) publication_results = [] publications_relation = relation.merge(Item.publications) non_publications_results = [] non_publications_relation = relation.merge(Item.non_publications) publications_relation.find_each do |store_item| publication_results << { store_item: store_item.to_s, item_id: store_item.item_id }.merge(store_item.update_availability) publication_results = publication_results.reject{|v| v[:result] == :unchanged } end non_publications_relation.find_each do |store_item| non_publications_results << { store_item: store_item.to_s, item_id: store_item.item_id }.merge(store_item.update_availability) non_publications_results = non_publications_results.reject{|v| v[:result] == :unchanged } end if publication_results.present? InternalMailer.store_item_availability_timed_update(publication_results, :publications).deliver_later end if non_publications_results.present? InternalMailer.store_item_availability_timed_update(non_publications_results, :non_publications).deliver_later end { publications: publication_results, non_publications: non_publications_results }.freeze end |