Class: Member

Inherits:
Object
  • Object
show all
Includes:
Mongoid::Document, Mongoid::Timestamps
Defined in:
lib/trello_effort_tracker/member.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.build_from(trello_member) ⇒ Object



16
17
18
19
20
# File 'lib/trello_effort_tracker/member.rb', line 16

def self.build_from(trello_member)
  trello_member_id = trello_member.id
  trello_member.attributes.delete(:id)
  new(trello_member.attributes.merge(trello_id: trello_member_id))
end

Instance Method Details

#==(other) ⇒ Object



38
39
40
41
42
43
# File 'lib/trello_effort_tracker/member.rb', line 38

def ==(other)
  return true if other.equal?(self)
  return false unless other.kind_of?(self.class)

  username == other.username
end

#at_usernameObject



22
23
24
# File 'lib/trello_effort_tracker/member.rb', line 22

def at_username
  "@#{username}"
end

#avatar_urlObject



26
27
28
# File 'lib/trello_effort_tracker/member.rb', line 26

def avatar_url
  trello_member.avatar_url(size: :small)
end

#effort_spent(from_date = nil) ⇒ Object Also known as: effort_spent_since



30
31
32
33
34
35
# File 'lib/trello_effort_tracker/member.rb', line 30

def effort_spent(from_date=nil)
  cards = TrackedCard.where("efforts.members.username" => username)
  efforts = cards.map(&:efforts).compact.flatten
  efforts = efforts.select {|e| e.date >= from_date} if from_date
  efforts.select { |effort| effort.include?(self) }.inject(0) { |total, effort| total + effort.amount_per_member }
end

#eql?(other) ⇒ Boolean

Returns:

  • (Boolean)


45
46
47
48
# File 'lib/trello_effort_tracker/member.rb', line 45

def eql?(other)
  return false unless other.instance_of?(self.class)
  username == other.username
end

#hashObject



50
51
52
# File 'lib/trello_effort_tracker/member.rb', line 50

def hash
  username.hash
end