Some checks failed
Lock Threads / action (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Publish Chatwoot EE docker images / build (linux/amd64, ubuntu-latest) (push) Has been cancelled
Publish Chatwoot EE docker images / build (linux/arm64, ubuntu-22.04-arm) (push) Has been cancelled
Publish Chatwoot EE docker images / merge (push) Has been cancelled
Publish Chatwoot CE docker images / build (linux/amd64, ubuntu-latest) (push) Has been cancelled
Publish Chatwoot CE docker images / build (linux/arm64, ubuntu-22.04-arm) (push) Has been cancelled
Publish Chatwoot CE docker images / merge (push) Has been cancelled
Run Chatwoot CE spec / lint-backend (push) Has been cancelled
Run Chatwoot CE spec / lint-frontend (push) Has been cancelled
Run Chatwoot CE spec / frontend-tests (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (0, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (1, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (10, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (11, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (12, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (13, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (14, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (15, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (2, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (3, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (4, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (5, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (6, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (7, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (8, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (9, 16) (push) Has been cancelled
Run Linux nightly installer / nightly (push) Has been cancelled
- Add Logistics component with progress tracking - Add OrderDetail component for order information - Support data-driven steps and actions - Add blue color scale to widget SCSS - Fix node overflow and progress bar rendering issues - Add English translations for dashboard components Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
51 lines
1.3 KiB
Ruby
51 lines
1.3 KiB
Ruby
class AccountDeletionService
|
|
attr_reader :account, :soft_deleted_users
|
|
|
|
def initialize(account:)
|
|
@account = account
|
|
@soft_deleted_users = []
|
|
end
|
|
|
|
def perform
|
|
Rails.logger.info("Deleting account #{account.id} - #{account.name} that was marked for deletion")
|
|
|
|
soft_delete_orphaned_users
|
|
send_compliance_notification
|
|
DeleteObjectJob.perform_later(account)
|
|
end
|
|
|
|
private
|
|
|
|
def send_compliance_notification
|
|
AdministratorNotifications::AccountComplianceMailer.with(
|
|
account: account,
|
|
soft_deleted_users: soft_deleted_users
|
|
).account_deleted(account).deliver_later
|
|
end
|
|
|
|
def soft_delete_orphaned_users
|
|
account.users.each do |user|
|
|
# Find all account_users for this user excluding the current account
|
|
other_accounts = user.account_users.where.not(account_id: account.id).count
|
|
|
|
# If user has no other accounts, soft delete them
|
|
next unless other_accounts.zero?
|
|
|
|
# Soft delete user by appending -deleted.com to email
|
|
original_email = user.email
|
|
user.email = "#{original_email}-deleted.com"
|
|
user.skip_reconfirmation!
|
|
user.save!
|
|
|
|
user_info = {
|
|
id: user.id.to_s,
|
|
original_email: original_email
|
|
}
|
|
|
|
soft_deleted_users << user_info
|
|
|
|
Rails.logger.info("Soft deleted user #{user.id} with email #{original_email}")
|
|
end
|
|
end
|
|
end
|