From 3f58f9e6240c9bba602fe00c9f01edbd84ff20a9 Mon Sep 17 00:00:00 2001 From: Andrej Date: Wed, 29 May 2024 17:18:00 +0200 Subject: [PATCH] Update logic for saving update at and modified by on repository row [SCI-10746] --- app/controllers/api/v1/inventory_cells_controller.rb | 1 + app/models/asset.rb | 2 +- app/models/repository_asset_value.rb | 2 +- app/models/repository_cell.rb | 8 +++++++- app/models/repository_checklist_items_value.rb | 11 +++++++++++ app/models/repository_checklist_value.rb | 2 +- app/models/repository_date_time_range_value_base.rb | 2 +- app/models/repository_date_time_value_base.rb | 2 +- app/models/repository_list_value.rb | 2 +- app/models/repository_number_value.rb | 2 +- app/models/repository_status_value.rb | 2 +- app/models/repository_stock_value.rb | 2 +- app/models/repository_text_value.rb | 2 +- .../repository_rows/update_repository_row_service.rb | 1 + 14 files changed, 30 insertions(+), 11 deletions(-) diff --git a/app/controllers/api/v1/inventory_cells_controller.rb b/app/controllers/api/v1/inventory_cells_controller.rb index 1e1820c49..4d88d5a89 100644 --- a/app/controllers/api/v1/inventory_cells_controller.rb +++ b/app/controllers/api/v1/inventory_cells_controller.rb @@ -47,6 +47,7 @@ module Api end def destroy + @inventory_item.update!(last_modified_by: current_user) @inventory_cell.destroy! render body: nil end diff --git a/app/models/asset.rb b/app/models/asset.rb index 9e4056f36..d4241a317 100644 --- a/app/models/asset.rb +++ b/app/models/asset.rb @@ -35,7 +35,7 @@ class Asset < ApplicationRecord has_one :result_asset, inverse_of: :asset, dependent: :destroy has_one :result, through: :result_asset, touch: true has_one :repository_asset_value, inverse_of: :asset, dependent: :destroy - has_one :repository_cell, through: :repository_asset_value + has_one :repository_cell, through: :repository_asset_value, touch: true has_many :report_elements, inverse_of: :asset, dependent: :destroy has_one :asset_text_datum, inverse_of: :asset, dependent: :destroy has_many :asset_sync_tokens, dependent: :destroy diff --git a/app/models/repository_asset_value.rb b/app/models/repository_asset_value.rb index 899149f92..5e9ba015f 100644 --- a/app/models/repository_asset_value.rb +++ b/app/models/repository_asset_value.rb @@ -12,7 +12,7 @@ class RepositoryAssetValue < ApplicationRecord belongs_to :asset, inverse_of: :repository_asset_value, dependent: :destroy - has_one :repository_cell, as: :value, dependent: :destroy, inverse_of: :value + has_one :repository_cell, as: :value, dependent: :destroy, inverse_of: :value, touch: true accepts_nested_attributes_for :repository_cell validates :asset, :repository_cell, presence: true diff --git a/app/models/repository_cell.rb b/app/models/repository_cell.rb index bff0e34d8..443d64089 100644 --- a/app/models/repository_cell.rb +++ b/app/models/repository_cell.rb @@ -5,7 +5,7 @@ class RepositoryCell < ApplicationRecord attr_accessor :importing - belongs_to :repository_row + belongs_to :repository_row, touch: true belongs_to :repository_column belongs_to :value, polymorphic: true, inverse_of: :repository_cell, dependent: :destroy @@ -45,10 +45,16 @@ class RepositoryCell < ApplicationRecord uniqueness: { scope: :repository_column }, unless: :importing + after_touch :update_repository_row_last_modified_by + scope :with_active_reminder, lambda { |user| reminder_repository_cells_scope(self, user) } + def update_repository_row_last_modified_by + repository_row.update!(last_modified_by_id: value.last_modified_by_id) + end + def self.create_with_value!(row, column, data, user) cell = new(repository_row: row, repository_column: column) cell.transaction do diff --git a/app/models/repository_checklist_items_value.rb b/app/models/repository_checklist_items_value.rb index 4ce8b0b58..ee30d7237 100644 --- a/app/models/repository_checklist_items_value.rb +++ b/app/models/repository_checklist_items_value.rb @@ -5,4 +5,15 @@ class RepositoryChecklistItemsValue < ApplicationRecord belongs_to :repository_checklist_value, inverse_of: :repository_checklist_items_values validates :repository_checklist_item, :repository_checklist_value, presence: true + + after_create :touch_repository_checklist_value + before_destroy :touch_repository_checklist_value + + private + + # rubocop:disable Rails/SkipsModelValidations + def touch_repository_checklist_value + repository_checklist_value.touch + end + # rubocop:enable Rails/SkipsModelValidations end diff --git a/app/models/repository_checklist_value.rb b/app/models/repository_checklist_value.rb index 088e9a900..1cbe75933 100644 --- a/app/models/repository_checklist_value.rb +++ b/app/models/repository_checklist_value.rb @@ -7,7 +7,7 @@ class RepositoryChecklistValue < ApplicationRecord inverse_of: :created_repository_checklist_values belongs_to :last_modified_by, foreign_key: 'last_modified_by_id', class_name: 'User', inverse_of: :modified_repository_checklist_values - has_one :repository_cell, as: :value, dependent: :destroy, inverse_of: :value + has_one :repository_cell, as: :value, dependent: :destroy, inverse_of: :value, touch: true has_many :repository_checklist_items_values, dependent: :destroy has_many :repository_checklist_items, -> { order('data ASC') }, through: :repository_checklist_items_values, diff --git a/app/models/repository_date_time_range_value_base.rb b/app/models/repository_date_time_range_value_base.rb index 37ee40321..3f20ebbb7 100644 --- a/app/models/repository_date_time_range_value_base.rb +++ b/app/models/repository_date_time_range_value_base.rb @@ -7,7 +7,7 @@ class RepositoryDateTimeRangeValueBase < ApplicationRecord inverse_of: :created_repository_date_time_values belongs_to :last_modified_by, foreign_key: :last_modified_by_id, class_name: 'User', optional: true, inverse_of: :modified_repository_date_time_values - has_one :repository_cell, as: :value, dependent: :destroy, inverse_of: :value + has_one :repository_cell, as: :value, dependent: :destroy, inverse_of: :value, touch: true accepts_nested_attributes_for :repository_cell validates :repository_cell, :start_time, :end_time, :type, presence: true diff --git a/app/models/repository_date_time_value_base.rb b/app/models/repository_date_time_value_base.rb index 33628610f..18a964eb2 100644 --- a/app/models/repository_date_time_value_base.rb +++ b/app/models/repository_date_time_value_base.rb @@ -7,7 +7,7 @@ class RepositoryDateTimeValueBase < ApplicationRecord inverse_of: :created_repository_date_time_values belongs_to :last_modified_by, foreign_key: :last_modified_by_id, class_name: 'User', optional: true, inverse_of: :modified_repository_date_time_values - has_one :repository_cell, as: :value, dependent: :destroy + has_one :repository_cell, as: :value, dependent: :destroy, touch: true accepts_nested_attributes_for :repository_cell before_save :reset_notification_sent, if: -> { data_changed? } diff --git a/app/models/repository_list_value.rb b/app/models/repository_list_value.rb index 5dda66721..fa5793568 100644 --- a/app/models/repository_list_value.rb +++ b/app/models/repository_list_value.rb @@ -8,7 +8,7 @@ class RepositoryListValue < ApplicationRecord belongs_to :last_modified_by, foreign_key: :last_modified_by_id, class_name: 'User' - has_one :repository_cell, as: :value, dependent: :destroy, inverse_of: :value + has_one :repository_cell, as: :value, dependent: :destroy, inverse_of: :value, touch: true accepts_nested_attributes_for :repository_cell validates :repository_cell, presence: true diff --git a/app/models/repository_number_value.rb b/app/models/repository_number_value.rb index 5e4706687..cb9ac6cb4 100644 --- a/app/models/repository_number_value.rb +++ b/app/models/repository_number_value.rb @@ -5,7 +5,7 @@ class RepositoryNumberValue < ApplicationRecord inverse_of: :created_repository_number_values belongs_to :last_modified_by, foreign_key: :last_modified_by_id, class_name: 'User', inverse_of: :modified_repository_number_values - has_one :repository_cell, as: :value, dependent: :destroy, inverse_of: :value + has_one :repository_cell, as: :value, dependent: :destroy, inverse_of: :value, touch: true accepts_nested_attributes_for :repository_cell validates :repository_cell, :data, presence: true diff --git a/app/models/repository_status_value.rb b/app/models/repository_status_value.rb index b3e64c2c4..86ce3092a 100644 --- a/app/models/repository_status_value.rb +++ b/app/models/repository_status_value.rb @@ -6,7 +6,7 @@ class RepositoryStatusValue < ApplicationRecord inverse_of: :created_repository_status_value belongs_to :last_modified_by, foreign_key: 'last_modified_by_id', class_name: 'User', optional: true, inverse_of: :modified_repository_status_value - has_one :repository_cell, as: :value, dependent: :destroy, inverse_of: :value + has_one :repository_cell, as: :value, dependent: :destroy, inverse_of: :value, touch: true accepts_nested_attributes_for :repository_cell validates :repository_cell, :repository_status_item, presence: true diff --git a/app/models/repository_stock_value.rb b/app/models/repository_stock_value.rb index c2170edd0..fc0d851f6 100644 --- a/app/models/repository_stock_value.rb +++ b/app/models/repository_stock_value.rb @@ -9,7 +9,7 @@ class RepositoryStockValue < ApplicationRecord belongs_to :repository_stock_unit_item, optional: true belongs_to :created_by, class_name: 'User', optional: true, inverse_of: :created_repository_stock_values belongs_to :last_modified_by, class_name: 'User', optional: true, inverse_of: :modified_repository_stock_values - has_one :repository_cell, as: :value, dependent: :destroy, inverse_of: :value + has_one :repository_cell, as: :value, dependent: :destroy, inverse_of: :value, touch: true has_one :repository_row, through: :repository_cell has_many :repository_ledger_records, dependent: :destroy accepts_nested_attributes_for :repository_cell diff --git a/app/models/repository_text_value.rb b/app/models/repository_text_value.rb index 39348a5f1..4b12da3fd 100644 --- a/app/models/repository_text_value.rb +++ b/app/models/repository_text_value.rb @@ -7,7 +7,7 @@ class RepositoryTextValue < ApplicationRecord belongs_to :last_modified_by, foreign_key: :last_modified_by_id, class_name: 'User', inverse_of: :modified_repository_text_values - has_one :repository_cell, as: :value, dependent: :destroy + has_one :repository_cell, as: :value, dependent: :destroy, touch: true accepts_nested_attributes_for :repository_cell validates :repository_cell, presence: true diff --git a/app/services/repository_rows/update_repository_row_service.rb b/app/services/repository_rows/update_repository_row_service.rb index f42463880..0b962b827 100644 --- a/app/services/repository_rows/update_repository_row_service.rb +++ b/app/services/repository_rows/update_repository_row_service.rb @@ -26,6 +26,7 @@ module RepositoryRows @cell = @repository_row.repository_cells.find_by(repository_column_id: @column.id) if @cell.present? && value.blank? + @repository_row.last_modified_by = @user @cell.destroy! @cell = nil @record_updated = true