Class: Smalltalk::Conversation

Inherits:
Object
  • Object
show all
Defined in:
lib/smalltalk/conversation.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(messages) ⇒ Conversation

Returns a new instance of Conversation.



7
8
9
10
11
12
# File 'lib/smalltalk/conversation.rb', line 7

def initialize(messages)
  self.messages = messages
  self.sender = messages.first.sender
  self.recipient = messages.first.recipient
  self.viewed = messages.all?{|m| m.viewed?}
end

Instance Attribute Details

#messagesObject

Returns the value of attribute messages.



5
6
7
# File 'lib/smalltalk/conversation.rb', line 5

def messages
  @messages
end

#ownerObject

Returns the value of attribute owner.



5
6
7
# File 'lib/smalltalk/conversation.rb', line 5

def owner
  @owner
end

#recipientObject

Returns the value of attribute recipient.



5
6
7
# File 'lib/smalltalk/conversation.rb', line 5

def recipient
  @recipient
end

#senderObject

Returns the value of attribute sender.



5
6
7
# File 'lib/smalltalk/conversation.rb', line 5

def sender
  @sender
end

#viewedObject

Returns the value of attribute viewed.



5
6
7
# File 'lib/smalltalk/conversation.rb', line 5

def viewed
  @viewed
end

Class Method Details

.for(messenger) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/smalltalk/conversation.rb', line 14

def self.for(messenger)
  time_range = (Date.today - 45.days).beginning_of_day..Date.today.end_of_day
  
  hash = Smalltalk::Message.visible.for(messenger).created_between(time_range).order("created_at DESC").group_by do |m|
    if messenger == m.sender
      "#{m.recipient_type}#{m.recipient_id}"
    else
      "#{m.sender_type}#{m.sender_id}"
    end
  end

  hash.map do |k, v|
    c = Conversation.new(v)
    c.owner = messenger
    c
  end
end