Restructure omni services and add Chatwoot research snapshot

This commit is contained in:
Ruslan Bakiev
2026-02-21 11:11:27 +07:00
parent edea7a0034
commit b73babbbf6
7732 changed files with 978203 additions and 32 deletions

View File

@@ -0,0 +1,56 @@
# == Schema Information
#
# Table name: labels
#
# id :bigint not null, primary key
# color :string default("#1f93ff"), not null
# description :text
# show_on_sidebar :boolean
# title :string
# created_at :datetime not null
# updated_at :datetime not null
# account_id :bigint
#
# Indexes
#
# index_labels_on_account_id (account_id)
# index_labels_on_title_and_account_id (title,account_id) UNIQUE
#
class Label < ApplicationRecord
include RegexHelper
include AccountCacheRevalidator
belongs_to :account
validates :title,
presence: { message: I18n.t('errors.validations.presence') },
format: { with: UNICODE_CHARACTER_NUMBER_HYPHEN_UNDERSCORE },
uniqueness: { scope: :account_id }
after_update_commit :update_associated_models
default_scope { order(:title) }
before_validation do
self.title = title.downcase if attribute_present?('title')
end
def conversations
account.conversations.tagged_with(title)
end
def messages
account.messages.where(conversation_id: conversations.pluck(:id))
end
def reporting_events
account.reporting_events.where(conversation_id: conversations.pluck(:id))
end
private
def update_associated_models
return unless title_previously_changed?
Labels::UpdateJob.perform_later(title, title_previously_was, account_id)
end
end