Class: PartnerService::ChangeTracker
- Inherits:
-
Object
- Object
- PartnerService::ChangeTracker
- Includes:
- ImageHelper, Trackers::Helper
- Defined in:
- app/services/partner_service/change_tracker.rb
Overview
The ChangeTracker class is responsible for tracking and managing changes made by staff to various records within a restaurant's account. It provides functionality for recording changes, notifying managers via email, and generating context-specific breadcrumbs and URLs.
Instance Attribute Summary collapse
-
#changes ⇒ Object
Returns the value of attribute changes.
-
#footer_text ⇒ Object
Returns the value of attribute footer_text.
-
#navigation ⇒ Object
Returns the value of attribute navigation.
-
#staff ⇒ Object
Returns the value of attribute staff.
Instance Method Summary collapse
-
#initialize(staff) ⇒ ChangeTracker
constructor
Initializes a new ChangeTracker instance.
-
#notify_managers(restaurant) ⇒ Object
Sends an email notification to managers, summarizing all tracked changes.
-
#track_added_picture(picture) ⇒ Object
Tracks the addition of a new restaurant picture.
-
#track_block_inventory(valid_params, restaurant_id) ⇒ Object
Tracks inventory blocks for a restaurant.
-
#track_changes_by_model(record:, params:, nav:) ⇒ Object
Tracks changes for a given record and stores them in the `changes` hash.
-
#track_deleted_picture(pictures) ⇒ Object
Tracks the deletion of restaurant pictures.
-
#track_primary_tag(restaurant, new_tag_id, category_code) ⇒ Object
Tracks changes in the primary tag of a restaurant.
-
#track_staff_created(staff) ⇒ Object
Tracks the creation of a staff account.
-
#track_staff_deleted(staff) ⇒ Object
Tracks the deletion of a staff account.
-
#track_staff_updated(staff, staff_param) ⇒ Object
Tracks updates made to a staff account.
-
#track_tag(old_ids, new_ids) ⇒ Object
Tracks changes in tags.
-
#track_thumbnails(old_ids, new_ids) ⇒ Object
Tracks changes in restaurant thumbnails.
-
#track_update_inventory(params, restaurant_id) ⇒ Object
Tracks updates to inventory records.
Methods included from ImageHelper
Constructor Details
#initialize(staff) ⇒ ChangeTracker
Initializes a new ChangeTracker instance.
15 16 17 18 19 20 |
# File 'app/services/partner_service/change_tracker.rb', line 15 def initialize(staff) @staff = staff @changes = {} @navigation = nil @footer_text = nil end |
Instance Attribute Details
#changes ⇒ Object
Returns the value of attribute changes.
10 11 12 |
# File 'app/services/partner_service/change_tracker.rb', line 10 def changes @changes end |
#footer_text ⇒ Object
Returns the value of attribute footer_text.
10 11 12 |
# File 'app/services/partner_service/change_tracker.rb', line 10 def @footer_text end |
#navigation ⇒ Object
Returns the value of attribute navigation.
10 11 12 |
# File 'app/services/partner_service/change_tracker.rb', line 10 def @navigation end |
#staff ⇒ Object
Returns the value of attribute staff.
10 11 12 |
# File 'app/services/partner_service/change_tracker.rb', line 10 def staff @staff end |
Instance Method Details
#notify_managers(restaurant) ⇒ Object
Sends an email notification to managers, summarizing all tracked changes.
25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'app/services/partner_service/change_tracker.rb', line 25 def notify_managers(restaurant) return if changes.empty? StaffMailer.notify_managers( @staff, restaurant, changes.transform_keys(&:to_s), , partner_portal_url, @footer_text, ).deliver_now end |
#track_added_picture(picture) ⇒ Object
Tracks the addition of a new restaurant picture.
112 113 114 115 116 |
# File 'app/services/partner_service/change_tracker.rb', line 112 def track_added_picture(picture) service = PartnerService::Trackers::GalleryService.new service.track_added_picture(picture) config_service(service) end |
#track_block_inventory(valid_params, restaurant_id) ⇒ Object
Tracks inventory blocks for a restaurant.
94 95 96 97 98 |
# File 'app/services/partner_service/change_tracker.rb', line 94 def track_block_inventory(valid_params, restaurant_id) service = PartnerService::Trackers::InventoryService.new service.track_block_inventory(valid_params, restaurant_id) config_service(service) end |
#track_changes_by_model(record:, params:, nav:) ⇒ Object
Tracks changes for a given record and stores them in the `changes` hash.
43 44 45 46 47 |
# File 'app/services/partner_service/change_tracker.rb', line 43 def track_changes_by_model(record:, params:, nav:) service = PartnerService::Trackers::CommonService.new(record: record, params: params, nav: nav) service.call config_service(service) end |
#track_deleted_picture(pictures) ⇒ Object
Tracks the deletion of restaurant pictures.
103 104 105 106 107 |
# File 'app/services/partner_service/change_tracker.rb', line 103 def track_deleted_picture(pictures) service = PartnerService::Trackers::GalleryService.new service.track_deleted_picture(pictures) config_service(service) end |
#track_primary_tag(restaurant, new_tag_id, category_code) ⇒ Object
Tracks changes in the primary tag of a restaurant.
64 65 66 67 68 |
# File 'app/services/partner_service/change_tracker.rb', line 64 def track_primary_tag(restaurant, new_tag_id, category_code) service = PartnerService::Trackers::TagService.new service.track_primary_tag(restaurant, new_tag_id, category_code) config_service(service) end |
#track_staff_created(staff) ⇒ Object
Tracks the creation of a staff account.
121 122 123 124 125 |
# File 'app/services/partner_service/change_tracker.rb', line 121 def track_staff_created(staff) service = PartnerService::Trackers::StaffService.new service.track_staff_created(staff) config_service(service) end |
#track_staff_deleted(staff) ⇒ Object
Tracks the deletion of a staff account.
130 131 132 133 134 |
# File 'app/services/partner_service/change_tracker.rb', line 130 def track_staff_deleted(staff) service = PartnerService::Trackers::StaffService.new service.track_staff_deleted(staff) config_service(service) end |
#track_staff_updated(staff, staff_param) ⇒ Object
Tracks updates made to a staff account.
140 141 142 143 144 145 146 147 148 |
# File 'app/services/partner_service/change_tracker.rb', line 140 def track_staff_updated(staff, staff_param) staff_param = staff_param.tap { |p| p.delete(:first_name); p.delete(:last_name) } service = PartnerService::Trackers::CommonService.new(record: staff, params: staff_param, nav: 'staffs') service.call @navigation = 'staffs' @footer_text = Time.zone.now.strftime('%d %B %Y, %H:%M') config_service(service) end |
#track_tag(old_ids, new_ids) ⇒ Object
Tracks changes in tags.
53 54 55 56 57 |
# File 'app/services/partner_service/change_tracker.rb', line 53 def track_tag(old_ids, new_ids) service = PartnerService::Trackers::TagService.new service.track_tag(old_ids, new_ids) config_service(service) end |
#track_thumbnails(old_ids, new_ids) ⇒ Object
Tracks changes in restaurant thumbnails.
74 75 76 77 78 |
# File 'app/services/partner_service/change_tracker.rb', line 74 def track_thumbnails(old_ids, new_ids) service = PartnerService::Trackers::ThumbnailService.new service.track_thumbnails(old_ids, new_ids) config_service(service) end |
#track_update_inventory(params, restaurant_id) ⇒ Object
Tracks updates to inventory records.
84 85 86 87 88 |
# File 'app/services/partner_service/change_tracker.rb', line 84 def track_update_inventory(params, restaurant_id) service = PartnerService::Trackers::InventoryService.new service.track_update_inventory(params, restaurant_id) config_service(service) end |