Subversion Repositories VORC

Rev

Rev 125 | Rev 173 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
124 - 1
#!/usr/bin/perl
2
 
159 - 3
$ENV{SERVER_NAME} = "volunteers.rollercon.com";
4
warn "Server Name: ".$ENV{SERVER_NAME};
5
 
124 - 6
use strict;
7
use cPanelUserConfig;
8
use RollerCon;
9
use WebDB;
10
 
11
my $dbh = WebDB::connect ();
12
my $tmpdir = "/tmp/";
13
my $DEBUG = 0;
14
 
15
my $inputfile = shift // "";
16
 
17
if ($inputfile) {
18
	process_file ($inputfile);
19
} else {
20
	error ("No input file specified.");
21
}
22
 
23
$dbh->disconnect ();
24
 
25
 
26
 
27
sub process_file  {
28
	my $uploadedfile = shift or error ("No file passed to 'process_file()'");
29
	my @errors = ();
30
  my $mime_type;
31
  my $serve_url;
32
 
33
  logit (0, "Bulk Uploaded MVP Passes from file $uploadedfile");
34
 
35
  print "Processing file [$uploadedfile]...\n" if $DEBUG;
36
  open(INPUT, $uploadedfile) or error ("Could not open file [$uploadedfile]!");
37
 
38
  my @columnlabels = split /,/, <INPUT>;
39
  @columnlabels = map { s/[^\x00-\x7f]//g; WebDB::trim ($_) } @columnlabels;
40
  error ("File not read!") unless scalar @columnlabels;
41
#  pop @columnlabels;
42
 
43
#  my @AcceptableColumns = qw(event_name order_date ticket_type id first_name last_name email derby_name);
44
#  @columnlabels = @AcceptableColumns;
45
 
46
  my $fields = join ", ", qw(event_name order_date ticket_type id first_name last_name email derby_name);
47
  my $values = join ", ", map { '?' } 0..7;
48
  my $sth = $dbh->prepare ("replace into ticket ($fields) values ($values)");
49
 
50
  while (<INPUT>) {
51
    chomp;
52
 
53
    my @R = map { s/[^\x00-\x7f]//g; WebDB::trim ($_) } split /,/;
54
 
55
    my %mvpticket;
56
    @mvpticket{@columnlabels} = @R;
57
 
58
    delete_ticket($mvpticket{'Registration Number'}) and next unless $mvpticket{'Cancelled'} eq "FALSE"; #actually... if a ticket is cancelled, I should delete it and unmatch.
59
 
60
    # Fix date format for MySQL: 11/23/2022 15:49
61
    if ($mvpticket{'Order Date'} !~ /\d{4}-\d{2}-\d{2} \d{1,2}:\d{2}/) {
62
      my ($date, $time) = split / /, $mvpticket{'Order Date'};
63
      my ($m, $d, $y) = split /\//, $date;
64
      $mvpticket{'Order Date'} = "$y-$m-$d $time";
65
    }
66
 
67
    print "inserting: ", join (" ", @R), "\n" if $DEBUG;
68
    $sth->execute ( $mvpticket{'Event Name'}, $mvpticket{'Order Date'}, $mvpticket{'Ticket Type'}, $mvpticket{'Registration Number'}, $mvpticket{'Attendee First Name'}, $mvpticket{'Attendee Last Name'}, $mvpticket{'Attendee Email'}, $mvpticket{'Attendee Skate Name'} ) or error($sth->errstr);
69
  }
70
  print "DONE!\n\n" if $DEBUG;
71
 
72
  print "Updating RCid -> MVP Ticket links... " if $DEBUG;
73
  $dbh->do ("replace into RCid_ticket_link select official.RCid, id, year(now()) from official join v_ticket on official.email = v_ticket.email and official.real_name = v_ticket.full_name");
74
  print "DONE!\n\n" if $DEBUG;
75
}
76
 
77
sub delete_ticket {
78
  my $badticket = shift // error ("delete_ticket() called without a target ticket!");
79
 
80
  print "DELETING: ", $badticket, " (ticket cancelled)\n" if $DEBUG;
81
  $dbh->do ("delete from ticket where id = ?", undef, $badticket);
82
  $dbh->do ("delete from RCid_ticket_link where year = year(now()) and MVPid = ?", undef, $badticket);
83
}
84
 
85
sub error {
86
	my $msg = shift;
87
	logit (0, "Problem with Bulk MVP Pass upload: ".$msg);
88
	print "Error: $msg\n";
89
	exit (1);
90
}