event_manager 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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: []
|