123456789101112131415161718192021222324252627282930313233343536 |
- # Copyright (C) 2012-2024 Zammad Foundation, https://zammad-foundation.org/
- # If a user is assigned to another organization, also assign their latest tickets to it.
- module User::UpdatesTicketOrganization
- extend ActiveSupport::Concern
- included do
- after_create :user_update_ticket_organization
- after_update :user_update_ticket_organization
- end
- private
- def user_update_ticket_organization
- return true if !Setting.get('ticket_organization_reassignment')
- # check if organization has changed
- return true if !saved_change_to_attribute?('organization_id')
- # update last 100 tickets of user
- tickets = Ticket.where(customer_id: id, organization_id: old_organization_id).limit(100)
- tickets.each do |ticket|
- next if ticket.organization_id == organization_id
- Transaction.execute(disable_notification: true, reset_user_id: true) do
- ticket.organization_id = organization_id
- ticket.save!
- end
- end
- end
- def old_organization_id
- previous_changes['organization_id'].first
- end
- end
|