/[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 1120 - (show annotations)
Tue Jun 30 10:26:49 2009 UTC (14 years, 10 months ago) by dpavlin
File size: 2592 byte(s)
check uniqueness of e-mail address
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 sub BUILD {
85 my $self = shift;
86 die "e-mail not verified\n" unless $self->email eq $self->email_verify;
87 my $sth = $self->dbh->prepare(qq{
88 select count(*) from reservation where email = ?
89 });
90 $sth->execute( $self->email );
91 my ($registred) = $sth->fetchrow_array;
92 die "e-mail address ", $self->email, " allready registred\n" if $registred;
93 }
94
95 my @cols = Frey::PPI->new( class => __PACKAGE__ )->attribute_order;
96 warn "# cols = ",join(',', @cols), $/;
97
98 sub token {
99 my $self = shift;
100 my $sth = $self->dbh->prepare(qq{
101 select md5( id || email ) from reservation where email = ?
102 });
103 $sth->execute( $self->email );
104 $sth->fetchrow_array;
105 }
106
107 sub create_as_markup {
108 my ($self) = @_;
109
110 my @vals;
111 my @p;
112
113 map {
114 push @vals, $self->$_;
115 push @p, '?';
116 } @cols;
117
118 my $n = $#cols + 1;
119
120 my $sql
121 = 'insert into reservation ('
122 . join(',', @cols)
123 . ') values ('
124 . join(',', map { '?' } @cols )
125 . ')'
126 ;
127
128 warn "sql: $sql\n";
129
130 my $sth = $self->dbh->prepare( $sql );
131 $sth->execute( @vals );
132
133 return
134 $self->ime . ' ' . $self->prezime
135 . qq| we have accepted your registration!|
136 . qq|
137 <div style="color:red">
138 You have to confirm your e-mail address and registration
139 by clicking on link which should be in your e-mail INBOX shortly
140 </div>
141 |
142 . qq|<a href="/App::RoomReservation::Reservation::Confirmation/verify_as_markup?token=|
143 . $self->token
144 . qq|">verify</a>|
145 . ' or '
146 . qq|<a href="/App::RoomReservation::Reservation::Confirmation/cancel_as_markup?token=|
147 . $self->token
148 . qq|">cancel</a>|
149 ;
150 }
151
152
153 1;

  ViewVC Help
Powered by ViewVC 1.1.26