event_manager 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/event_manager.rb +97 -0
- 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: []
|