Class: Merger::AddressMerger
- Inherits:
-
Object
- Object
- Merger::AddressMerger
- Defined in:
- app/services/merger/address_merger.rb
Instance Method Summary collapse
-
#initialize(party_id) ⇒ AddressMerger
constructor
A new instance of AddressMerger.
- #perform_merge! ⇒ Object
Constructor Details
#initialize(party_id) ⇒ AddressMerger
Returns a new instance of AddressMerger.
2 3 4 |
# File 'app/services/merger/address_merger.rb', line 2 def initialize(party_id) @party_id = party_id end |
Instance Method Details
#perform_merge! ⇒ Object
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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'app/services/merger/address_merger.rb', line 6 def perform_merge! @addresses = Address.where(party_id: @party_id) @addresses.each do |s| s.update_attribute(:normalized_address, nil) end unique_addresses = @addresses.group(:normalized_address).minimum(:id) address_remap = {} @results = [] unique_addresses.each do |a, k| next unless (found_addresses = @addresses.select { |r| r.id != k and r.normalized_address == a }).present? @results << "Address #{k} has duplicates, pruning #{found_addresses.length} records" found_addresses.each do |f| address_remap[f.id] = k end end # Now go through the map address_remap.each do |duplicate, replacement| Rails.logger.info " ! Remapping duplicate #{duplicate} to #{replacement}" # RoomConfigirations res_rc = RoomConfiguration.where(installation_address_id: duplicate).update_all(installation_address_id: replacement) Rails.logger.info "Room Configurations updated: #{res_rc}" # Quotes res_q = Quote.where(shipping_address_id: duplicate).update_all(shipping_address_id: replacement) Rails.logger.info "Quotes updated: #{res_q}" # Orders res_o = Order.where(shipping_address_id: duplicate).update_all(shipping_address_id: replacement) Rails.logger.info "Orders updated: #{res_o}" # Deliveries res_oa = Delivery.where(origin_address_id: duplicate).update_all(origin_address_id: replacement) Rails.logger.info "Deliveries updated: #{res_oa}" res_da = Delivery.where(destination_address_id: duplicate).update_all(destination_address_id: replacement) Rails.logger.info "Deliveries updated: #{res_da}" # Invoices res_isa = Invoice.where(shipping_address_id: duplicate).update_all(shipping_address_id: replacement) Rails.logger.info "Invoices updated: #{res_isa}" res_iba = Invoice.where(billing_address_id: duplicate).update_all(billing_address_id: replacement) Rails.logger.info "Invoices updated: #{res_iba}" # CreditMemos res_cmsa = CreditMemo.where(shipping_address_id: duplicate).update_all(shipping_address_id: replacement) Rails.logger.info "Invoices updated: #{res_cmsa}" res_cmba = CreditMemo.where(billing_address_id: duplicate).update_all(billing_address_id: replacement) Rails.logger.info "Invoices updated: #{res_cmba}" # Customers res_sa = Customer.where(shipping_address_id: duplicate).update_all(shipping_address_id: replacement) Rails.logger.info "Customers Shipping updated: #{res_sa}" res_ba = Customer.where(billing_address_id: duplicate).update_all(billing_address_id: replacement) Rails.logger.info "Customer Billing updated: #{res_ba}" res_ma = Customer.where(mailing_address_id: duplicate).update_all(mailing_address_id: replacement) Rails.logger.info "Customer Mailing updated: #{res_ma}" # Support Cases res_sc = SupportCase.where(service_address_id: duplicate).update_all(service_address_id: replacement) Rails.logger.info "Support Cases: #{res_sc}" # Showcases (legacy) have been migrated to Showcase; update if present if defined?(Showcase) res_shw2 = Showcase.where(customer_id: duplicate).update_all(customer_id: replacement) Rails.logger.info "ShowcasesV2 (by customer): #{res_shw2}" end # Locator Records res_lr = LocatorRecord.where(address_id: duplicate).update_all(address_id: replacement) Rails.logger.info "Locator Records: #{res_lr}" # Mail Activities res_act = MailActivity.where(address_id: duplicate).update_all(address_id: replacement) Rails.logger.info "Mail Activities: #{res_act}" # Now dupeplicate can be deleted Address.find(duplicate).destroy Rails.logger.info "Address #{duplicate} destroyed" end end |