/[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/Reservation/Confirmation.pm revision 1098 by dpavlin, Sun Jun 28 22:14:22 2009 UTC branches/zimbardo/lib/App/RoomReservation/Confirmation.pm revision 1181 by dpavlin, Tue Jul 7 22:07:51 2009 UTC
# Line 1  Line 1 
1  package App::RoomReservation::Reservation::Confirmation;  package App::RoomReservation::Confirmation;
2  use Moose;  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 12  has token => ( Line 14  has token => (
14  sub verify_as_markup {  sub verify_as_markup {
15          my ($self) = @_;          my ($self) = @_;
16    
17          my $sth = $self->dbh->prepare(qq{          my $dbh = $self->dbh;
18                  update reservation set _confirmed = true  
19                  where md5(id||email) = ? and _confirmed is false          my $size = $self->room->seats;
20    
21            my $sth = $dbh->prepare(qq{
22                    update reservation
23                    set
24                            _confirmed = true,
25                            _seat_number = (
26                                    select
27                                            min(seat.nr)
28                                    from (select generate_series(1,$size) as nr) as seat
29                                    full join reservation on reservation._seat_number = seat.nr
30                                    where id is null
31                                    group by seat.nr
32                                    order by seat.nr asc
33                                    limit 1
34                            )
35                    where
36                            md5(id||email) = ?
37                            and _confirmed is false
38                            and _canceled is false
39          });          });
40          $sth->execute( $self->token );  
41            my $token = $self->token;
42    
43            $sth->execute( $token );
44    
45            if ( $sth->rows == 0 ) {
46                    warn "can't confirm ", $self->token, " check if it's allready confirmed";
47                    $sth = $dbh->prepare(qq{
48                            select 1
49                            from reservation
50                            where
51                                    md5(id||email) = ?
52                                    and _confirmed is true
53                    });
54                    $sth->execute( $token );
55            }
56    
57          if ( $sth->rows == 1 ) {          if ( $sth->rows == 1 ) {
58                  qq|Your <em>reservation has been confirmed</em> and seat is waiting for you|;  
59                    die qq|<error>can't find account associated with $token</error>| unless $sth->rows == 1;
60    
61                    return $self->seat_confirmation_message( token => $token );
62    
63          } else {          } else {
64                  qq|We have problem with your confirmation|                  die qq|<error>Can't find confirmation $token<br>
65                            Did you copy-pasted whole URL in your browser?</error>|;
66          }          }
67  }  }
68    
69  sub cancel_as_markup {  sub cancel_as_markup {
70          my ($self) = @_;          my ($self) = @_;
71    
72          my $sth = $self->dbh->prepare(qq{          my $dbh = $self->dbh;
73                  update reservation set _confirmed = false  
74                  where md5(id||email) = ? and _confirmed is true          my $sth = $dbh->prepare(qq{
75                    update reservation
76                    set
77                            _canceled = true,
78                            _seat_number = null
79                    where
80                            md5(id||email) = ?
81    --                      and _confirmed is true
82          });          });
83          $sth->execute( $self->token );          $sth->execute( $self->token );
84    
85          if ( $sth->rows == 1 ) {          if ( $sth->rows == 1 ) {
86                  qq|Your <em>reservation is canceled</em>, thanks for your effort to provide seat to somebody else|;                  qq|
87                            Vaš <em>dolazak je odjavljen</em>.
88    
89                            Hvala što ste omogućili dolazak nekom drugom!
90                    |;
91          } else {          } else {
92                  qq|We have problem with cancelation|                  die qq|<error>Can't find reservation which you are trying to cancel.<br>
93                            Did you copy-pasted whole URL in your browser?</error>|;
94          }          }
95  }  }
96    
97    __PACKAGE__->meta->make_immutable;
98    no Moose;
99    
100  1;  1;

Legend:
Removed from v.1098  
changed lines
  Added in v.1181

  ViewVC Help
Powered by ViewVC 1.1.26