Feat: Automations Actions (#3564)

This commit is contained in:
Tejaswini Chile
2022-01-13 11:21:06 +05:30
committed by GitHub
parent 905fd62974
commit 7df68c6388
13 changed files with 124 additions and 7 deletions

View File

@@ -46,6 +46,8 @@ class AutomationRules::ActionService
TeamNotifications::AutomationNotificationMailer.conversation_creation(@conversation, team, params[:message])
when 'conversation_updated'
TeamNotifications::AutomationNotificationMailer.conversation_updated(@conversation, team, params[:message])
when 'message_created'
TeamNotifications::AutomationNotificationMailer.message_created(@conversation, team, params[:message])
end
end

View File

@@ -21,6 +21,29 @@ class AutomationRules::ConditionsFilterService < FilterService
records.any?
end
def message_conditions(_message)
message_filters = @filters['messages']
@rule.conditions.each_with_index do |query_hash, current_index|
current_filter = message_filters[query_hash['attribute_key']]
@query_string += message_query_string(current_filter, query_hash.with_indifferent_access, current_index)
end
records = Message.where(conversation: @conversation).where(@query_string, @filter_values.with_indifferent_access)
records.any?
end
def message_query_string(current_filter, query_hash, current_index)
attribute_key = query_hash['attribute_key']
query_operator = query_hash['query_operator']
filter_operator_value = filter_operation(query_hash, current_index)
case current_filter['attribute_type']
when 'standard'
" messages.#{attribute_key} #{filter_operator_value} #{query_operator} "
end
end
def conversation_query_string(current_filter, query_hash, current_index)
attribute_key = query_hash['attribute_key']
query_operator = query_hash['query_operator']

View File

@@ -31,10 +31,13 @@ class FilterService
end
def filter_values(query_hash)
if query_hash['attribute_key'] == 'status'
case query_hash['attribute_key']
when 'status'
return Conversation.statuses.values if query_hash['values'].include?('all')
query_hash['values'].map { |x| Conversation.statuses[x.to_sym] }
when 'message_type'
query_hash['values'].map { |x| Message.message_types[x.to_sym] }
else
query_hash['values']
end