class WcoEmail::Conversation
def self.load_conversations_messages_tag_by_params_and_profile params, current_profile
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, :messages, :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
def cache_key
def cache_key "#{self.class.name} #{id.to_s} #{updated_at}" end
def to_s
def to_s "#{subject} (#{messages.length})" end
def unread?
def unread? status == STATUS_UNREAD end