38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
# File 'app/models/wco_email/conversation.rb', line 38
def self.load_conversations_messages_tag_by_params_and_profile params, current_profile
@conversations = WcoEmail::Conversation.all
if params[:tagname]
@tag = Wco::Tag.find_by slug: params[:tagname]
@conversations = @conversations.where( :tag_ids.in => [ @tag.id ] )
end
if params[:tagname_not]
@tag_not = Wco::Tag.find_by slug: params[:tagname_not]
@conversations = @conversations.where( :tag_ids.nin => [ @tag_not.id ] )
end
if params[:subject].present?
@conversations = @conversations.where({ subject: /.*#{params[:subject]}.*/i })
end
if params[:from_email].present?
@conversations = @conversations.where({ from_emails: /.*#{params[:from_email]}.*/i })
end
if params[:lead_id].present?
@conversations = @conversations.where( lead_ids: params[:lead_id] )
end
@conversations = @conversations.where(
).includes(
:leads,
:tags
).order_by( latest_at: :desc
).page( params[:conv_page] ).per( current_profile.per_page )
conversation_ids = @conversations.map &:id
messages = WcoEmail::Message.where(
:conversation_id.in => conversation_ids,
read_at: nil,
)
@messages_hash = {}
messages.map do |msg|
@messages_hash[msg.id.to_s] = msg
end
return [ @conversations, @messages_hash, @tag ]
end
|