/[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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1186 - (show annotations)
Mon Sep 21 21:29:38 2009 UTC (14 years, 7 months ago) by dpavlin
File size: 2033 byte(s)
assign seat numbers to _confirmed reservation without _seat_number
1 package App::RoomReservation::Confirmation;
2 use Moose;
3
4 extends 'App::RoomReservation';
5
6 with 'App::RoomReservation::Email', 'App::RoomReservation::Messages';
7
8 has token => (
9 is => 'ro',
10 isa => 'Str',
11 required => 1,
12 );
13
14 sub verify_as_markup {
15 my ($self) = @_;
16
17 my $dbh = $self->dbh;
18
19 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 _canceled is false
38 and (
39 _confirmed is false
40 or
41 ( _confirmed is true and _seat_number is null )
42 )
43 });
44
45 my $token = $self->token;
46
47 $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{
52 select 1
53 from reservation
54 where
55 md5(id||email) = ?
56 and _confirmed is true
57 });
58 $sth->execute( $token );
59 }
60
61 if ( $sth->rows == 1 ) {
62
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
67 } else {
68 die qq|<error>Can't find confirmation $token<br>
69 Did you copy-pasted whole URL in your browser?</error>|;
70 }
71 }
72
73 sub cancel_as_markup {
74 my ($self) = @_;
75
76 my $dbh = $self->dbh;
77
78 my $sth = $dbh->prepare(qq{
79 update reservation
80 set
81 _canceled = true,
82 _seat_number = null
83 where
84 md5(id||email) = ?
85 -- and _confirmed is true
86 });
87 $sth->execute( $self->token );
88
89 if ( $sth->rows == 1 ) {
90 qq|
91 Vaš <em>dolazak je odjavljen</em>.
92
93 Hvala što ste omogućili dolazak nekom drugom!
94 |;
95 } else {
96 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;

  ViewVC Help
Powered by ViewVC 1.1.26