package Vote::Model::Vote; use strict; use warnings; use base 'Catalyst::Model'; use DBI; =head1 NAME Vote::Model::Vote - Catalyst Model =head1 DESCRIPTION Catalyst Model. =cut sub new { my ($class) = @_; my $db = DBI->connect( 'dbi:Pg:' . Vote->config->{db}, undef, undef, { RaiseError => 0, AutoCommit => 0, PrintWarn => 0, PrintError => 1, } ) or return; bless { db => $db, }, $class; } sub db { $_[0]->{db} } sub list_running_vote { my ($self) = @_; my $sth = $self->db->prepare_cached( q{ select id from poll where start < now() and "end" > now() } ); $sth->execute; my @id; while(my $res = $sth->fetchrow_hashref) { push(@id, $res->{id}); } @id } sub vote_status { my ($self, $id) = @_; my $sth = $self->db->prepare_cached( q{ select start < now() as before "end" > now() as after where id = ? } ); $sth->execute($id); my $res = $sth->fetchrow_hashref; $sth->finish; $res or return; if ($res->{before}) { return 'BEFORE'; } elsif ($res->{after}) { return 'AFTER'; } else { return 'RUNNING'; } } sub vote_info { my ($self, $id) = @_; my $sth = $self->db->prepare_cached( q{ select * from poll where id = ? } ); $sth->execute($id); my $res = $sth->fetchrow_hashref; $sth->finish; $res } sub vote_signing { my ($self, $id) = @_; my $sth = $self->db->prepare_cached( q{ select * from voting left join signing on signing.key = voting.key where poll = ? order by voting.id } ); $sth->execute($id); my @people; while (my $res = $sth->fetchrow_hashref) { push(@people, $res); } @people } =head1 AUTHOR Thauvin Olivier =head1 LICENSE This library is free software, you can redistribute it and/or modify it under the same terms as Perl itself. =cut 1;