-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathqueue.rb
More file actions
91 lines (75 loc) · 2.46 KB
/
queue.rb
File metadata and controls
91 lines (75 loc) · 2.46 KB
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
$LOAD_PATH << './'
require 'csv'
require 'elements'
require 'data_parser'
require 'search'
module EventReporter
class Queue
OUTPUT_HEADERS = ["regdate", "first_name", "last_name", "email_address", "homephone", "street", "city", "state", "zipcode"]
def initialize
if Search.results == []
@@current_queue = []
else
@@current_queue = @@current_queue
end
end
def self.current_queue
@@current_queue
end
def self.current_queue=(search_results)
@@current_queue = search_results
end
def call(params)
if params[0] == "count"
puts "Number of entries in queue: #{@@current_queue.size}"
elsif params[0] == "clear"
puts "Clearing your queue."
Search.new
@@current_queue = []
elsif params[1] == "by" && params[0] == "print"
print_by(params[2])
elsif params[0] == "print"
print_by("regdate")
elsif params[0] == "save"
filename = params[2]
output = CSV.open(filename, "w") do |output|
output << OUTPUT_HEADERS
@@current_queue.each do |line|
output << [line.regdate, line.first_name, line.last_name, line.email_address, line.homephone, line.street, line.city, line.state, line.zipcode]
end
end
puts "Data written to output file"
end
end
def print_by(sorting_parameter)
puts "LAST NAME".ljust(16) +
"FIRST NAME".ljust(20) +
"EMAIL".ljust(40) +
"ZIPCODE".ljust(20) +
"CITY".ljust(24) +
"STATE".ljust(20) +
"ADDRESS"
@@current_queue = @@current_queue.sort_by{|line| line.send(sorting_parameter).to_sym}
@@current_queue.each do |line|
puts "#{line.last_name}".capitalize.ljust(16) +
"#{line.first_name}".capitalize.ljust(20) +
"#{line.email_address}".capitalize.ljust(40) +
"#{line.zipcode}".capitalize.ljust(20) +
"#{line.city}".capitalize.ljust(24) +
"#{line.state}".upcase.ljust(20) +
"#{line.street}"
end
end
def self.valid_parameters_for_queue?(parameters)
if !%w(count clear print save).include?(parameters[0])
false
elsif parameters[0] == "print"
parameters.count == 1 || (parameters[1] == "by" && parameters.count == 3 )
elsif parameters[0] == "save"
parameters[1] == "to" && parameters.count == 3
else
true
end
end
end
end