Class: EventReporter::SaveTo

Inherits:
Object
  • Object
show all
Defined in:
lib/event_reporter/save_to.rb

Instance Method Summary collapse

Constructor Details

#initialize(input, queue) ⇒ SaveTo

Returns a new instance of SaveTo.



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/event_reporter/save_to.rb', line 7

def initialize(input,queue)
  @input = input
  @queue = queue
  @writer_contents = ""
  if @input == "event_attendees.csv" || @input == "save"
    puts "Saving to default_file.csv"    
    @filename = 'default_file.csv'
    default_filename = 
      File.join(File.dirname(__FILE__),"../../files/default_filename.csv")
    write_csv(default_filename)
  else
    default_filename = 
      File.join(File.dirname(__FILE__),"../../files/", @input)
    parse_user_input(default_filename)
  end
end

Instance Method Details

#parse_user_input(input) ⇒ Object



86
87
88
89
90
91
92
93
94
95
96
97
98
99
# File 'lib/event_reporter/save_to.rb', line 86

def parse_user_input(input)
  filetype = input[-4..-1]
  if filetype == ".csv"
    write_csv(input)
  elsif filetype == "json"
    write_json(input)
  elsif filetype == ".txt"
    write_txt(input)
  elsif filetype == ".xml"
    write_xml(input)
  else
    puts "does not compute"
  end
end

#write_csv(filename) ⇒ Object



34
35
36
37
38
39
40
41
42
# File 'lib/event_reporter/save_to.rb', line 34

def write_csv(filename)
  CSV.open(filename,'w') do |file|
    file << %w"id regdate first_name last_name email_address homephone street city state zipcode"         
    @queue.each do |person|
      file <<  [person[:id],person[:regdate],person[:first_name].capitalize,person[:last_name].capitalize,person[:email],person[:phone],person[:street],person[:city].capitalize,person[:state].upcase,person[:zipcode]]
    end
  end
  puts "Queue Saved to #{filename}"
end

#write_json(filename) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
# File 'lib/event_reporter/save_to.rb', line 44

def write_json(filename)
  begin
    puts @queue.to_json
    File.open(filename,"w") do |file|
      file.puts @queue.to_json
    end
    puts "Queue Saved to #{filename}"
  rescue
    puts "Cannot write to JSON"
  end
end

#write_txt(filename) ⇒ Object



24
25
26
27
28
29
30
31
32
# File 'lib/event_reporter/save_to.rb', line 24

def write_txt(filename)
  File.open(filename, "w") do |file|
    file.puts "id\tregdate\tfirst_name\tlast_name\temail_address\thomephone\tstreet\tcity\tstate\tzipcode"         
    @queue.each do |person|
      file.puts "#{person[:id]}\t#{person[:regdate]}\t#{person[:first_name].capitalize}\t#{person[:last_name].capitalize}\t#{person[:email]}\t#{person[:phone]}\t#{person[:street]}\t#{person[:city].capitalize}\t#{person[:state].upcase}\t#{person[:zipcode]}"
    end          
  end
  puts "Queue Saved to #{filename}"
end

#write_xml(filename) ⇒ Object



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
# File 'lib/event_reporter/save_to.rb', line 56

def write_xml(filename)    
  builder = Nokogiri::XML::Builder.new do |xml|
    xml.root {
      xml.event_attendees {
        @queue.each do |person|
          xml.attendee {
            xml.person_id person[:id]
            xml.registration_date person[:regdate]
            xml.first_name person[:first_name].capitalize
            xml.last_name person[:last_name].capitalize
            xml.email person[:email]
            xml.phone person[:phone]
            xml.address {
              xml.street person[:street]
              xml.city person[:city].capitalize
              xml.state person[:state].upcase
              xml.zipcode person[:zipcode]
            }
          }
        end
      }
    }
  end
  puts builder.to_xml  
  File.open(filename,"w") do |file|
    file.puts builder.to_xml
  end
  puts "Queue Saved to #{filename}"
end