12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- # Copyright (C) 2012-2023 Zammad Foundation, https://zammad-foundation.org/
- class CollectionUpdateJob < ApplicationJob
- include HasActiveJobLock
- def lock_key
- # "CollectionUpdateJob/:model"
- "#{self.class.name}/#{arguments[0]}"
- end
- def perform(model)
- model = model.safe_constantize
- return if model.blank?
- assets = {}
- all = []
- model.reorder(id: :asc).find_each do |record|
- assets = record.assets(assets)
- all.push record.attributes_with_association_ids
- end
- return if all.blank?
- Sessions.list.each do |client_id, data|
- next if client_id.blank?
- user_id = data&.dig(:user, 'id')
- next if user_id.blank?
- # check permission based access
- if model.collection_push_permission_value.present?
- user = User.lookup(id: user_id)
- next if !user&.permissions?(model.collection_push_permission_value)
- end
- Rails.logger.debug { "push assets for push_collection #{model} for user #{user_id}" }
- Sessions.send(client_id, {
- data: assets,
- event: 'loadAssets',
- })
- Rails.logger.debug { "push push_collection #{model} for user #{user_id}" }
- Sessions.send(client_id, {
- event: 'resetCollection',
- data: {
- model.to_app_model => all,
- },
- })
- end
- end
- end
|