/[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 1147 - (show annotations)
Wed Jul 1 17:35:48 2009 UTC (14 years, 9 months ago) by dpavlin
File size: 2780 byte(s)
added url_for to genrate and verify urls
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 with 'App::RoomReservation::Email';
15
16 use lib 'lib';
17 use Frey::PPI;
18
19 has ime => (
20 is => 'rw',
21 isa => 'Str',
22 required => 1,
23 );
24
25 has prezime => (
26 is => 'rw',
27 isa => 'Str',
28 required => 1,
29 );
30
31 has institucija => (
32 is => 'rw',
33 isa => 'Str',
34 required => 1,
35 );
36
37 has zanimanje => (
38 is => 'rw',
39 isa => 'Str',
40 required => 1,
41 );
42
43 has grad => (
44 is => 'rw',
45 isa => 'Str',
46 required => 1,
47 );
48
49 has drzava => (
50 is => 'rw',
51 isa => 'Str',
52 required => 1,
53 );
54
55 has telefon => (
56 is => 'rw',
57 isa => 'Str',
58 required => 1,
59 );
60
61 has mobitel => (
62 is => 'rw',
63 isa => 'Str',
64 required => 1,
65 );
66
67 has email => (
68 is => 'rw',
69 isa => 'Email',
70 required => 1,
71 );
72
73 has email_verify => (
74 is => 'rw',
75 isa => 'Email',
76 required => 1,
77 );
78
79 has _confirmed => (
80 is => 'rw',
81 isa => 'Bool',
82 # required => 1,
83 default => sub { 0 },
84 );
85
86 has _seat_number => (
87 is => 'rw',
88 isa => 'Int',
89 );
90
91 sub BUILD {
92 my $self = shift;
93 die "e-mail not verified\n" unless $self->email eq $self->email_verify;
94 my $sth = $self->dbh->prepare(qq{
95 select count(*) from reservation where email = ?
96 });
97 $sth->execute( $self->email );
98 my ($registred) = $sth->fetchrow_array;
99 die "e-mail address ", $self->email, " allready registred\n" if $registred;
100 }
101
102 my @cols = Frey::PPI->new( class => __PACKAGE__ )->attribute_order;
103 warn "# cols = ",join(',', @cols), $/;
104
105 sub token {
106 my $self = shift;
107 my $sth = $self->dbh->prepare(qq{
108 select md5( id || email ) from reservation where email = ?
109 });
110 $sth->execute( $self->email );
111 $sth->fetchrow_array;
112 }
113
114 sub create_as_markup {
115 my ($self) = @_;
116
117 my @vals;
118 my @p;
119
120 map {
121 push @vals, $self->$_;
122 push @p, '?';
123 } @cols;
124
125 my $n = $#cols + 1;
126
127 my $sql
128 = 'insert into reservation ('
129 . join(',', @cols)
130 . ') values ('
131 . join(',', map { '?' } @cols )
132 . ')'
133 ;
134
135 warn "sql: $sql\n";
136
137 my $sth = $self->dbh->prepare( $sql );
138 $sth->execute( @vals );
139
140 my $url = $self->url_for( 'Confirmation/verify_as_markup?token=' . $self->token );
141
142 $self->send( $self->email,
143 'Confirm your reservation for lecture', <<__EMAIL__
144 Please click following link to confirm your reservation for lecture
145 and get seat assigned to you.
146
147 $url
148 __EMAIL__
149 );
150
151 return
152 $self->ime . ' ' . $self->prezime
153 . qq| we have accepted your registration!|
154 . qq|
155 <div style="color:red">
156 You have to confirm your e-mail address and registration
157 by clicking on link which should be in your e-mail INBOX shortly
158 </div>
159 |
160 ;
161 }
162
163 __PACKAGE__->meta->make_immutable;
164 no Moose;
165 no Moose::Util::TypeConstraints;
166
167 1;

  ViewVC Help
Powered by ViewVC 1.1.26