Class: CustomerSalesActivityFlagSync
- Inherits:
-
Object
- Object
- CustomerSalesActivityFlagSync
- Defined in:
- app/services/customer_sales_activity_flag_sync.rb
Overview
preserves a pre-existing quirk -- Party.where(id: party_ids) .update_all(open_sales_activity: has_open_activities.include?(id)) applies a
single boolean (whether THE CUSTOMER has open activities) across all related
parties, rather than per-party. The customer's own row is then overwritten
with the same value. Whether that should be per-party is a separate concern;
this extraction keeps the historical behavior intact so callers do not break.
Recomputes the denormalized parties.open_sales_activity flag for a customer
and its contacts based on currently-open sales activities. Returns true if
the customer itself has any open sales activity.
Flat name required because Customer is an AR model (Zeitwerk).
Class Method Summary collapse
Instance Method Summary collapse
- #call ⇒ Object
-
#initialize(customer) ⇒ CustomerSalesActivityFlagSync
constructor
A new instance of CustomerSalesActivityFlagSync.
Constructor Details
#initialize(customer) ⇒ CustomerSalesActivityFlagSync
Returns a new instance of CustomerSalesActivityFlagSync.
20 21 22 |
# File 'app/services/customer_sales_activity_flag_sync.rb', line 20 def initialize(customer) @customer = customer end |
Class Method Details
.call(customer) ⇒ Object
16 17 18 |
# File 'app/services/customer_sales_activity_flag_sync.rb', line 16 def self.call(customer) new(customer).call end |
Instance Method Details
#call ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 |
# File 'app/services/customer_sales_activity_flag_sync.rb', line 24 def call party_ids = @customer.self_and_contacts_party_ids_arr parties_with_open = Activity.sales_activities .open_activities .where(party_id: party_ids) .group(:party_id) .pluck(:party_id) customer_has_open = parties_with_open.include?(@customer.id) write_flags(party_ids, customer_has_open) parties_with_open.any? end |