/[Frey]/trunk/lib/App/RoomReservation/Reservation.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 /trunk/lib/App/RoomReservation/Reservation.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1121 - (show annotations)
Tue Jun 30 13:24:03 2009 UTC (14 years, 9 months ago) by dpavlin
File size: 2646 byte(s)
allocate seat number after confirmation
1 package App::RoomReservation::Reservation;
2 use Moose;
3
4 use Moose::Util::TypeConstraints;
5 use Regexp::Common qw[Email::Address];
6
7 subtype 'Email',
8 as 'Str',
9 where { /^$RE{Email}{Address}$/ },
10 message { "$_ is not valid e-mail" };
11
12 extends 'App::RoomReservation';
13
14 use lib 'lib';
15 use Frey::PPI;
16
17 has ime => (
18 is => 'rw',
19 isa => 'Str',
20 required => 1,
21 );
22
23 has prezime => (
24 is => 'rw',
25 isa => 'Str',
26 required => 1,
27 );
28
29 has institucija => (
30 is => 'rw',
31 isa => 'Str',
32 required => 1,
33 );
34
35 has zanimanje => (
36 is => 'rw',
37 isa => 'Str',
38 required => 1,
39 );
40
41 has grad => (
42 is => 'rw',
43 isa => 'Str',
44 required => 1,
45 );
46
47 has drzava => (
48 is => 'rw',
49 isa => 'Str',
50 required => 1,
51 );
52
53 has telefon => (
54 is => 'rw',
55 isa => 'Str',
56 required => 1,
57 );
58
59 has mobitel => (
60 is => 'rw',
61 isa => 'Str',
62 required => 1,
63 );
64
65 has email => (
66 is => 'rw',
67 isa => 'Email',
68 required => 1,
69 );
70
71 has email_verify => (
72 is => 'rw',
73 isa => 'Email',
74 required => 1,
75 );
76
77 has _confirmed => (
78 is => 'rw',
79 isa => 'Bool',
80 # required => 1,
81 default => sub { 0 },
82 );
83
84 has _seat_number => (
85 is => 'rw',
86 isa => 'Int',
87 );
88
89 sub BUILD {
90 my $self = shift;
91 die "e-mail not verified\n" unless $self->email eq $self->email_verify;
92 my $sth = $self->dbh->prepare(qq{
93 select count(*) from reservation where email = ?
94 });
95 $sth->execute( $self->email );
96 my ($registred) = $sth->fetchrow_array;
97 die "e-mail address ", $self->email, " allready registred\n" if $registred;
98 }
99
100 my @cols = Frey::PPI->new( class => __PACKAGE__ )->attribute_order;
101 warn "# cols = ",join(',', @cols), $/;
102
103 sub token {
104 my $self = shift;
105 my $sth = $self->dbh->prepare(qq{
106 select md5( id || email ) from reservation where email = ?
107 });
108 $sth->execute( $self->email );
109 $sth->fetchrow_array;
110 }
111
112 sub create_as_markup {
113 my ($self) = @_;
114
115 my @vals;
116 my @p;
117
118 map {
119 push @vals, $self->$_;
120 push @p, '?';
121 } @cols;
122
123 my $n = $#cols + 1;
124
125 my $sql
126 = 'insert into reservation ('
127 . join(',', @cols)
128 . ') values ('
129 . join(',', map { '?' } @cols )
130 . ')'
131 ;
132
133 warn "sql: $sql\n";
134
135 my $sth = $self->dbh->prepare( $sql );
136 $sth->execute( @vals );
137
138 return
139 $self->ime . ' ' . $self->prezime
140 . qq| we have accepted your registration!|
141 . qq|
142 <div style="color:red">
143 You have to confirm your e-mail address and registration
144 by clicking on link which should be in your e-mail INBOX shortly
145 </div>
146 |
147 . qq|<a href="/App::RoomReservation::Reservation::Confirmation/verify_as_markup?token=|
148 . $self->token
149 . qq|">verify</a>|
150 . ' or '
151 . qq|<a href="/App::RoomReservation::Reservation::Confirmation/cancel_as_markup?token=|
152 . $self->token
153 . qq|">cancel</a>|
154 ;
155 }
156
157
158 1;

  ViewVC Help
Powered by ViewVC 1.1.26