- Notifications
You must be signed in to change notification settings - Fork 49
/
Copy pathpartners.rake
44 lines (40 loc) · 1.28 KB
/
partners.rake
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
namespace:partnersdo
task:load=>:environmentdo
require'csv'
require'open-uri'
open("")do |file|
CSV.parse(file,:headers=>true)do |row|
username=row[0]
user=User.find_by_username(username)
user.partner_asm_username=row[1]
user.partner_slack_username=row[2]
user.partner_email=row[3]
user.partner_last_contribution_at=Date.strptime(row[4],"%m/%d/%Y")
user.partner_coins=row[5]
user.save!
end
end
end
task:update=>:environmentdo
flatten_to_latest(Github.user_pr_log).eachdo |username,contribution_date|
ifuser=User.where(github: username).first
user.partner_last_contribution_at=contribution_date
user.save!
end
end
end
defflatten_to_latest(results)
results.inject({})do |users,row|
user_id=row[:username]
ifusers[user_id].blank? || users[user_id] < row[:created_at]
users[user_id]=row[:created_at]
end
users
end
end
task:email=>:environmentdo
User.where("partner_coins IS NOT NULL AND partner_last_contribution_at < ?",1.year.ago).all.eachdo |user|
UserMailer.partnership_expired(user).deliver_now
end
end
end