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

Annotation of /trunk/lib/App/RoomReservation/Reservation.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1121 - (hide 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 dpavlin 1086 package App::RoomReservation::Reservation;
2     use Moose;
3    
4 dpavlin 1118 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 dpavlin 1098 extends 'App::RoomReservation';
13 dpavlin 1086
14 dpavlin 1095 use lib 'lib';
15     use Frey::PPI;
16    
17 dpavlin 1086 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 dpavlin 1118 isa => 'Email',
68 dpavlin 1086 required => 1,
69     );
70    
71     has email_verify => (
72     is => 'rw',
73 dpavlin 1118 isa => 'Email',
74 dpavlin 1086 required => 1,
75     );
76    
77     has _confirmed => (
78     is => 'rw',
79     isa => 'Bool',
80 dpavlin 1118 # required => 1,
81 dpavlin 1086 default => sub { 0 },
82     );
83    
84 dpavlin 1121 has _seat_number => (
85     is => 'rw',
86     isa => 'Int',
87     );
88    
89 dpavlin 1104 sub BUILD {
90     my $self = shift;
91     die "e-mail not verified\n" unless $self->email eq $self->email_verify;
92 dpavlin 1120 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 dpavlin 1104 }
99    
100 dpavlin 1095 my @cols = Frey::PPI->new( class => __PACKAGE__ )->attribute_order;
101     warn "# cols = ",join(',', @cols), $/;
102    
103 dpavlin 1098 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 dpavlin 1095 sub create_as_markup {
113 dpavlin 1086 my ($self) = @_;
114    
115 dpavlin 1095 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 dpavlin 1098 my $sth = $self->dbh->prepare( $sql );
136 dpavlin 1095 $sth->execute( @vals );
137    
138 dpavlin 1098 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 dpavlin 1086 }
156    
157 dpavlin 1098
158 dpavlin 1086 1;

  ViewVC Help
Powered by ViewVC 1.1.26