/[Frey]/branches/zimbardo/lib/App/RoomReservation/Confirmation.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /branches/zimbardo/lib/App/RoomReservation/Confirmation.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

trunk/lib/App/RoomReservation/Confirmation.pm revision 1122 by dpavlin, Tue Jun 30 13:31:51 2009 UTC branches/zimbardo/lib/App/RoomReservation/Confirmation.pm revision 1186 by dpavlin, Mon Sep 21 21:29:38 2009 UTC
# Line 3  use Moose; Line 3  use Moose;
3    
4  extends 'App::RoomReservation';  extends 'App::RoomReservation';
5    
6    with 'App::RoomReservation::Email', 'App::RoomReservation::Messages';
7    
8  has token => (  has token => (
9          is => 'ro',          is => 'ro',
10          isa => 'Str',          isa => 'Str',
# Line 14  sub verify_as_markup { Line 16  sub verify_as_markup {
16    
17          my $dbh = $self->dbh;          my $dbh = $self->dbh;
18    
19            my $size = $self->room->seats;
20    
21          my $sth = $dbh->prepare(qq{          my $sth = $dbh->prepare(qq{
22                  update reservation                  update reservation
23                  set                  set
# Line 21  sub verify_as_markup { Line 25  sub verify_as_markup {
25                          _seat_number = (                          _seat_number = (
26                                  select                                  select
27                                          min(seat.nr)                                          min(seat.nr)
28                                  from (select generate_series(1,600) as nr) as seat                                  from (select generate_series(1,$size) as nr) as seat
29                                  full join reservation on reservation._seat_number = seat.nr                                  full join reservation on reservation._seat_number = seat.nr
30                                  where id is null                                  where id is null
31                                  group by seat.nr                                  group by seat.nr
32                                  order by seat.nr asc                                  order by seat.nr asc
33                                  limit 1                                  limit 1
34                          )                          )
35                  where md5(id||email) = ? and _confirmed is false                  where
36                            md5(id||email) = ?
37                            and _canceled is false
38                            and (
39                                    _confirmed is false
40                                    or
41                                    ( _confirmed is true and _seat_number is null )
42                            )
43          });          });
44    
45          $sth->execute( $self->token );          my $token = $self->token;
46    
47          if ( $sth->rows == 1 ) {          $sth->execute( $token );
48    
49            if ( $sth->rows == 0 ) {
50                    warn "can't confirm ", $self->token, " check if it's allready confirmed";
51                  $sth = $dbh->prepare(qq{                  $sth = $dbh->prepare(qq{
52                          select ime||' '||prezime,_seat_number                          select 1
53                          from reservation                          from reservation
54                          where md5(id||email) = ? and _confirmed is true and _seat_number is not null                          where
55                                    md5(id||email) = ?
56                                    and _confirmed is true
57                  });                  });
58                    $sth->execute( $token );
59            }
60    
61                  $sth->execute( $self->token );          if ( $sth->rows == 1 ) {
62                  my ($name, $seat) = $sth->fetchrow_array;  
63                    die qq|<error>can't find account associated with $token</error>| unless $sth->rows == 1;
64    
65                    return $self->seat_confirmation_message( token => $token );
66    
                 qq|  
                         $name, <em>reservation has been confirmed</em> and seat number <big>$seat</big> is waiting for you.  
                         <br>  
                         Please print this notice and show it when entering lecture.  
                 |;  
67          } else {          } else {
68                  die "Problem with confirmation.\n";                  die qq|<error>Can't find confirmation $token<br>
69                            Did you copy-pasted whole URL in your browser?</error>|;
70          }          }
71  }  }
72    
# Line 62  sub cancel_as_markup { Line 78  sub cancel_as_markup {
78          my $sth = $dbh->prepare(qq{          my $sth = $dbh->prepare(qq{
79                  update reservation                  update reservation
80                  set                  set
81                          _confirmed = false,                          _canceled = true,
82                          _seat_number = null                          _seat_number = null
83                  where md5(id||email) = ? and _confirmed is true                  where
84                            md5(id||email) = ?
85    --                      and _confirmed is true
86          });          });
87          $sth->execute( $self->token );          $sth->execute( $self->token );
88    
89          if ( $sth->rows == 1 ) {          if ( $sth->rows == 1 ) {
90                  qq|Your <em>reservation is canceled</em>, thanks for your effort to provide seat to somebody else|;                  qq|
91                            Vaš <em>dolazak je odjavljen</em>.
92    
93                            Hvala što ste omogućili dolazak nekom drugom!
94                    |;
95          } else {          } else {
96                  die "Problem with cancelation.\n";                  die qq|<error>Can't find reservation which you are trying to cancel.<br>
97                            Did you copy-pasted whole URL in your browser?</error>|;
98          }          }
99  }  }
100    
101    __PACKAGE__->meta->make_immutable;
102    no Moose;
103    
104  1;  1;

Legend:
Removed from v.1122  
changed lines
  Added in v.1186

  ViewVC Help
Powered by ViewVC 1.1.26