9eb861a3b7
* Custom attributes * Custom Attrs Manifest * Fix dropdown values for custom attributes * Handle edit mode for custom attributes * Ported duplicate logic to a mixin * fix Code climate issue * Fix Codeclimate complexity warning * Bug fix - Custom attributes getting duplicated * Bug fixes and Code Climate issue fix * Code Climate Issues Breakdown * Fix test spec * Add labels for Custom attributes in dropdown * Refactor * Refactor Automion mixin * Refactor Mixin * Refactor getOperator * Fix getOperatorType * File name method refactor * Refactor appendNewCondition * spec update * Refactor methods * Mixin Spec update * Automation Mixins Test Specs * Mixin Spec Rerun * Automation validations mixin spec * Automation helper test spec * Send custom_attr key * Fix spec fixtures * fix: Changes for custom attribute type and lower case search * fix: Specs * fix: Specs * fix: Ruby version change * fix: Ruby version change * Removes Lowercased values and fix label value in api payload * Fix specs * Fixed Query Spec * Removed disabled labels if no attributes are present * Code Climate Fixes * fix: custom attribute with indifferent access * fix: custom attribute with indifferent access * Fix specs * Minor label fix * REtrigger circle ci build * Update app/javascript/shared/mixins/specs/automationMixin.spec.js * Update app/javascript/shared/mixins/specs/automationMixin.spec.js * fix: Custom attribute case insensitivity search * Add missing reset action method to input * Set team_input to single select instead of multiple * fix: remove value case check for date,boolean and number data type * fix: cognitive complexity * fix: cognitive complexity * fix: Fixed activity message for automation system * fix: Fixed activity message for automation system * fix: Fixed activity message for automation system * fix: codeclimate * fix: codeclimate * fix: action cable events for label update * fix: codeclimate, conversation modela number of methods * fix: codeclimate, conversation modela number of methods * fix: codeclimate, conversation modela number of methods * fix: codeclimate, conversation modela number of methods * Fix margin bottom for attachment button * Remove margin bottom to avoid conflict from macros * Fix automation action query generator using the right key * fix: not running message created event for activity message * fix: not running message created event for activity message * codeclimate fix * codeclimate fix * codeclimate fix * Update app/javascript/dashboard/mixins/automations/methodsMixin.js Co-authored-by: Sivin Varghese <64252451+iamsivin@users.noreply.github.com> * Update app/javascript/shared/mixins/specs/automationHelper.spec.js Co-authored-by: Sivin Varghese <64252451+iamsivin@users.noreply.github.com> * Update app/javascript/dashboard/helper/automationHelper.js Co-authored-by: Sivin Varghese <64252451+iamsivin@users.noreply.github.com> * Update app/javascript/dashboard/mixins/automations/methodsMixin.js Co-authored-by: Sivin Varghese <64252451+iamsivin@users.noreply.github.com> Co-authored-by: Pranav Raj S <pranav@chatwoot.com> Co-authored-by: Tejaswini <tejaswini@chatwoot.com> Co-authored-by: Sivin Varghese <64252451+iamsivin@users.noreply.github.com> Co-authored-by: Sojan Jose <sojan@pepalo.com> Co-authored-by: Muhsin Keloth <muhsinkeramam@gmail.com>
115 lines
4.2 KiB
Ruby
115 lines
4.2 KiB
Ruby
module ActivityMessageHandler
|
|
extend ActiveSupport::Concern
|
|
|
|
private
|
|
|
|
def create_activity
|
|
user_name = Current.user.name if Current.user.present?
|
|
status_change_activity(user_name) if saved_change_to_status?
|
|
create_label_change(label_activity_message_ownner(user_name)) if saved_change_to_label_list?
|
|
end
|
|
|
|
def status_change_activity(user_name)
|
|
return send_automation_activity if Current.executed_by.present?
|
|
|
|
create_status_change_message(user_name)
|
|
end
|
|
|
|
def activity_message_params(content)
|
|
{ account_id: account_id, inbox_id: inbox_id, message_type: :activity, content: content }
|
|
end
|
|
|
|
def create_status_change_message(user_name)
|
|
content = if user_name
|
|
I18n.t("conversations.activity.status.#{status}", user_name: user_name)
|
|
elsif Current.contact.present? && resolved?
|
|
I18n.t('conversations.activity.status.contact_resolved', contact_name: Current.contact.name.capitalize)
|
|
elsif resolved?
|
|
I18n.t('conversations.activity.status.auto_resolved', duration: auto_resolve_duration)
|
|
end
|
|
|
|
::Conversations::ActivityMessageJob.perform_later(self, activity_message_params(content)) if content
|
|
end
|
|
|
|
def send_automation_activity
|
|
content = I18n.t("conversations.activity.status.#{status}", user_name: 'Automation System')
|
|
::Conversations::ActivityMessageJob.perform_later(self, activity_message_params(content)) if content
|
|
end
|
|
|
|
def create_label_added(user_name, labels = [])
|
|
return unless labels.size.positive?
|
|
|
|
params = { user_name: user_name, labels: labels.join(', ') }
|
|
content = I18n.t('conversations.activity.labels.added', **params)
|
|
|
|
::Conversations::ActivityMessageJob.perform_later(self, activity_message_params(content)) if content
|
|
end
|
|
|
|
def create_label_removed(user_name, labels = [])
|
|
return unless labels.size.positive?
|
|
|
|
params = { user_name: user_name, labels: labels.join(', ') }
|
|
content = I18n.t('conversations.activity.labels.removed', **params)
|
|
|
|
::Conversations::ActivityMessageJob.perform_later(self, activity_message_params(content)) if content
|
|
end
|
|
|
|
def create_muted_message
|
|
return unless Current.user
|
|
|
|
params = { user_name: Current.user.name }
|
|
content = I18n.t('conversations.activity.muted', **params)
|
|
|
|
::Conversations::ActivityMessageJob.perform_later(self, activity_message_params(content)) if content
|
|
end
|
|
|
|
def create_unmuted_message
|
|
return unless Current.user
|
|
|
|
params = { user_name: Current.user.name }
|
|
content = I18n.t('conversations.activity.unmuted', **params)
|
|
|
|
::Conversations::ActivityMessageJob.perform_later(self, activity_message_params(content)) if content
|
|
end
|
|
|
|
def generate_team_change_activity_key
|
|
key = team_id ? 'assigned' : 'removed'
|
|
key += '_with_assignee' if key == 'assigned' && saved_change_to_assignee_id? && assignee
|
|
key
|
|
end
|
|
|
|
def generate_team_name_for_activity
|
|
previous_team_id = previous_changes[:team_id][0]
|
|
Team.find_by(id: previous_team_id)&.name if previous_team_id.present?
|
|
end
|
|
|
|
def create_team_change_activity(user_name)
|
|
return unless user_name
|
|
|
|
key = generate_team_change_activity_key
|
|
params = { assignee_name: assignee&.name, team_name: team&.name, user_name: user_name }
|
|
params[:team_name] = generate_team_name_for_activity if key == 'removed'
|
|
content = I18n.t("conversations.activity.team.#{key}", **params)
|
|
|
|
::Conversations::ActivityMessageJob.perform_later(self, activity_message_params(content)) if content
|
|
end
|
|
|
|
def generate_assignee_change_activity_content(user_name)
|
|
params = { assignee_name: assignee&.name, user_name: user_name }.compact
|
|
key = assignee_id ? 'assigned' : 'removed'
|
|
key = 'self_assigned' if self_assign? assignee_id
|
|
I18n.t("conversations.activity.assignee.#{key}", **params)
|
|
end
|
|
|
|
def create_assignee_change_activity(user_name)
|
|
return unless user_name
|
|
|
|
content = generate_assignee_change_activity_content(user_name)
|
|
::Conversations::ActivityMessageJob.perform_later(self, activity_message_params(content)) if content
|
|
end
|
|
|
|
def label_activity_message_ownner(user_name)
|
|
user_name = 'Automation System' if !user_name && Current.executed_by.present?
|
|
user_name
|
|
end
|
|
end
|