insert email into borrower_message_preferences
[ferlib2koha.git] / ferweb-import-report.pl
1 #!/usr/bin/perl -w
2
3 use strict;
4 use DBI;
5 use Data::Dump qw/dump/;
6 use Algorithm::CheckDigits;
7 use Text::Unaccent;
8 use DateTime;
9 use XML::Simple;
10
11 my $ferweb_csv = 'report_62836_1026_Aktivni_studenti.csv';
12 my $dt = DateTime->now()->add( years => 1 );
13 $dt->set( month => 10, day => 31 ); # next year, 31.10.
14 my $new_dateexpiry = $ARGV[0] || $dt->ymd;
15
16 warn "# new_dateexpiry: $new_dateexpiry\n";
17
18 die "$ferweb_csv : $!" unless -r $ferweb_csv;
19
20 my $koha_conf = XMLin('/etc/koha/sites/fer/koha-conf.xml');
21
22 my $c = DBI->connect("dbi:CSV:","","", { RaiseError => 1, f_ext => '.csv', f_encoding => 'utf-8', csv_sep_char => ';' }) || die $dbi::errstr;
23 my $k = DBI->connect("dbi:mysql:database=" . $koha_conf->{config}->{database}, $koha_conf->{config}->{user}, $koha_conf->{config}->{pass},
24  { RaiseError => 1, AutoCommit => 0, mysql_enable_utf8 => 1 }) || die $DBI::errstr;
25
26 my $ferweb_table = $ferweb_csv;
27 $ferweb_table =~ s/\.csv//i;
28
29 my $s = $c->prepare(qq{
30 select * from $ferweb_table
31 });
32 $s->execute;
33
34 my $user_exists = $k->prepare(qq{
35 select * from borrowers where cardnumber = ?
36 });
37
38 my $insert_user = $k->prepare(qq{
39 insert into borrowers 
40 (cardnumber, categorycode, userid, firstname, surname, branchcode, email, dateexpiry)
41 values
42 (?,'S',?,?,?,'SRE',?,'2021-12-13')
43 });
44
45 my $update_dateexpiry = $k->prepare(qq{
46 update borrowers
47 set dateexpiry = ?
48 where cardnumber = ?
49 });
50
51 my $update_userid = $k->prepare(qq{
52 update borrowers
53 set userid = ?
54 where cardnumber = ?
55 });
56
57 my $update_email = $k->prepare(qq{
58 update borrowers
59 set email = ?
60 where cardnumber = ?
61 });
62
63 my $stat;
64
65 while( my $row = $s->fetchrow_hashref ) {
66
67 #       warn "# row = ",dump($row),$/;
68
69         my $cardnumber = 'S' . $row->{jmbag};
70
71         $user_exists->execute( $cardnumber );
72
73         if ( $user_exists->rows ) {
74                 my $user = $user_exists->fetchrow_hashref;
75 #               warn "# koha borrower = ",dump($user);
76                 print "UPD ";
77                 $stat->{updated}++;
78                 $update_dateexpiry->execute( $new_dateexpiry, $cardnumber );
79                 if ( $user->{userid} ne $row->{nick} ) {
80                         $stat->{nick_update}++;
81                         warn "UPDATE userid ", $user->{userid}, " => ", $row->{nick}, $/;
82                         $update_userid->execute( $row->{nick}, $cardnumber );
83                 }
84                 if ( $user->{email} ne $row->{email} ) {
85                         $stat->{email_update}++;
86                         warn "UPDATE email ", $user->{email}, " => ", $row->{email}, $/;
87                         $update_email->execute( $row->{email}, $cardnumber );
88                 }
89         } elsif ( ! $row->{nick} ) {
90                 warn "NEW (without nick) ",dump($row);
91                 $stat->{new_no_nick}++;
92                 print "NC? ";
93                 $insert_user->execute( $cardnumber, $cardnumber, $row->{ime}, $row->{prezime}, $row->{email} || $cardnumber );
94         } else {
95                 warn "NEW: ",dump($row);
96                 $insert_user->execute( $cardnumber, $row->{nick}, $row->{ime}, $row->{prezime}, $row->{email} );
97                 $stat->{new}++;
98                 print "NEW ";
99         }
100
101         print join(" "
102                 , $row->{jmbag}
103                 , $row->{nick}
104                 , $row->{email}
105         ),$/;
106
107 }
108
109 $k->commit unless $ENV{DEBUG};
110
111 warn "# stat ", dump( $stat ),$/;