Subversion Repositories VORC

Rev

Rev 125 | Go to most recent revision | Details | Last modification | View Log | RSS feed

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