41 lines
1.2 KiB
Ruby
41 lines
1.2 KiB
Ruby
# Plain Ruby class to help build a data structure that lists
|
|
# each member and the amount of time and money they spent.
|
|
class MemberSpent
|
|
attr_accessor :user
|
|
attr_accessor :hours
|
|
attr_accessor :spent
|
|
|
|
# New data structure to hold the Member's data
|
|
def initialize(options = { })
|
|
self.user = options[:user] || nil
|
|
self.hours = options[:hours] || 0.0
|
|
self.spent = options[:spent] || 0.0
|
|
end
|
|
|
|
# Get all the Members, their hours used, and their money spent
|
|
def self.find_all_by_deliverable(deliverable)
|
|
membership = []
|
|
return membership unless deliverable.issues.size > 0
|
|
|
|
|
|
project = deliverable.project
|
|
time_entries = deliverable.issues.collect(&:time_entries).flatten
|
|
|
|
|
|
project.members.each do |member|
|
|
member_time_entries = time_entries.select { |tl| tl.user_id == member.user.id}
|
|
|
|
spent = member_time_entries.collect(&:cost).sum
|
|
hours = member_time_entries.collect(&:hours).sum
|
|
|
|
membership << MemberSpent.new({
|
|
:user => member.user,
|
|
:hours => hours,
|
|
:spent => spent
|
|
}) unless hours == 0.0
|
|
end
|
|
|
|
return membership
|
|
end
|
|
end
|