event_manager 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/event_manager.rb +97 -0
  3. metadata +44 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: c7189a929693cbe15c6c787b17f2f5361b8446d9
4
+ data.tar.gz: 578ac774ee0f43ba5f8ea34b04cf973bd457d30d
5
+ SHA512:
6
+ metadata.gz: 464de50cfe0e6d43ec269ab428cca93f96e81b258ac9f3d24654056b1b8a94446ba63141bbb46a345172a27ded365c0cc184564a4945415ca88741cb8708b0bf
7
+ data.tar.gz: a2eb6d0b11fdbf70d8510b00d0654d7550848288d3149d63f42db23237714a83a85077f4e5890e887883b091750f63506dc5950642e9ba926d8072b1f1dc6ac6
@@ -0,0 +1,97 @@
1
+ require "csv"
2
+ require "sunlight/congress"
3
+ require "erb"
4
+ require "date"
5
+
6
+ class EventManager
7
+
8
+ def initialize(input_file = "event_attendees.csv")
9
+ puts "EventManager initialized."
10
+ input_file = input_file
11
+ hours = {}
12
+ days = {}
13
+ (1..24).each {|x| hours[x] = 0}
14
+ (0..6).each {|x| days[x] = 0}
15
+ Sunlight::Congress.api_key = "e179a6973728c4dd3fb1204283aaccb5"
16
+ main(input_file, hours, days)
17
+ end
18
+
19
+
20
+ private
21
+
22
+ def main(input_file, hours, days)
23
+ if(File.file?(input_file))
24
+
25
+ contents = CSV.open input_file, headers: true, header_converters: :symbol
26
+
27
+ template_letter = File.read "lib/form_letter.erb"
28
+ erb_template1 = ERB.new template_letter
29
+
30
+ contents.each do |row|
31
+ id = row[0]
32
+ name = row[:first_name]
33
+ zipcode = clean_zipcode(row[:zipcode])
34
+ phone = clean_phone_number(row[:homephone])
35
+ regdate = row[:regdate]
36
+ datetime = DateTime.strptime(regdate , '%m/%d/%Y %H:%M')
37
+
38
+ hours[datetime.hour.to_i] += 1; 0
39
+ days[datetime.wday.to_i] += 1; 0
40
+
41
+ legislators = legislators_by_zipcode(zipcode)
42
+ form_letter = erb_template1.result(binding)
43
+ save_letters(id,form_letter)
44
+ end
45
+
46
+ template_charts = File.read "lib/form_charts.erb"
47
+ erb_template2 = ERB.new template_charts
48
+ form_charts = erb_template2.result(binding)
49
+ save_registration_statistics(form_charts)
50
+ else
51
+ puts "Error loading input data file! File not found."
52
+ end
53
+ end
54
+
55
+ def clean_zipcode(zipcode)
56
+ zipcode.to_s.rjust(5,"0")[0..4]
57
+ end
58
+
59
+ def legislators_by_zipcode(zipcode)
60
+ Sunlight::Congress::Legislator.by_zipcode(zipcode)
61
+ end
62
+
63
+ def save_letters(id, form_letter)
64
+ Dir.mkdir("output") unless Dir.exists?("output")
65
+
66
+ filename = "output/thanks_#{id}.html"
67
+
68
+ File.open(filename,'w') do |file|
69
+ file.puts form_letter
70
+ end
71
+ end
72
+
73
+ def save_registration_statistics(form_charts)
74
+ Dir.mkdir("output") unless Dir.exists?("output")
75
+
76
+ filename = "output/registration_statistics.html"
77
+
78
+ File.open(filename,'w') do |file|
79
+ file.puts form_charts
80
+ end
81
+ end
82
+
83
+ def clean_phone_number(number)
84
+ number = number.gsub(/[^0-9a-z ]/i, '').gsub(/\s+/, "")
85
+ if(number.length < 10 || number.length > 11)
86
+ number = "none";
87
+ elsif(number.length == 11)
88
+ if(number[0] == "1")
89
+ number = number[1..-1];
90
+ else
91
+ number = "none";
92
+ end
93
+ end
94
+ number
95
+ end
96
+
97
+ end
metadata ADDED
@@ -0,0 +1,44 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: event_manager
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Alex Nikolov
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-06-16 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Event Manager gem
14
+ email: lexx_sc2@yahoo.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/event_manager.rb
20
+ homepage: http://rubygems.org/gems/event_manager
21
+ licenses:
22
+ - none
23
+ metadata: {}
24
+ post_install_message:
25
+ rdoc_options: []
26
+ require_paths:
27
+ - lib
28
+ required_ruby_version: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ required_rubygems_version: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - ">="
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ requirements: []
39
+ rubyforge_project:
40
+ rubygems_version: 2.2.2
41
+ signing_key:
42
+ specification_version: 4
43
+ summary: Event Manager
44
+ test_files: []