Ignore:
Timestamp:
03/06/09 03:17:11 (15 years ago)
Author:
nanardon
Message:
  • ballot can be recorded
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/lib/Vote/Model/Vote.pm

    r4 r8  
    127127} 
    128128 
     129sub voting_info_id { 
     130    my ($self, $id, $voteid) = @_; 
     131 
     132    my $sth = $self->db->prepare_cached( 
     133        q{ 
     134        select * from voting where id = ? and poll = ? 
     135        } 
     136    ); 
     137    $sth->execute($id, $voteid); 
     138    my $res = $sth->fetchrow_hashref(); 
     139    $sth->finish; 
     140    $res 
     141} 
     142 
     143sub _register_signing { 
     144    my ($self, $vid, $voteid, $referal) = @_; 
     145 
     146    my $vinfo = $self->voting_info_id($vid, $voteid) or return; 
     147 
     148    my $sth = $self->db->prepare_cached( 
     149        q{ 
     150        insert into signing (key, referal) values (?,?) 
     151        } 
     152    ); 
     153    $sth->execute($vinfo->{key}, $referal) or do { 
     154        $self->db->rollback; 
     155        return; 
     156    }; 
     157 
     158    1; 
     159} 
     160 
     161sub gen_uid { 
     162    unpack("H*", join("", map { chr(rand(256)) } (0..15))) 
     163} 
     164 
     165sub _register_ballot { 
     166    my ($self, $voteid, $choice) = @_; 
     167 
     168    my $addb = $self->db->prepare_cached( 
     169        q{ 
     170        insert into ballot (id, poll) values (?,?) 
     171        } 
     172    ); 
     173    my $uid = gen_uid; 
     174    $addb->execute($uid, $voteid) or do { 
     175        self->db->rollback; 
     176        return; 
     177    }; 
     178 
     179    my $addbc = $self->db->prepare_cached( 
     180        q{ 
     181        insert into ballot_item (id, value) values (?,?) 
     182        } 
     183    ); 
     184    foreach (@{ $choice || []}) { 
     185        $addbc->execute($uid, $_) or do { 
     186            $self->db->rollback; 
     187            return; 
     188        }; 
     189    } 
     190 
     191    $uid; 
     192} 
     193 
     194sub register_ballot { 
     195    my ($self, $vid, $voteid, $choice, $referal) = @_; 
     196 
     197    # First we register voting has voted 
     198    $self->_register_signing($vid, $voteid, $referal) or return; # TODO error ? 
     199 
     200    # registring choices 
     201    my $uid = $self->_register_ballot($voteid, $choice) or return; 
     202 
     203    # everything went fine, saving! 
     204    $self->db->commit; 
     205 
     206    $uid 
     207} 
     208 
     209# Requete de decompte des voix: 
     210 
     211# select count(ballot.id), value from ballot left join ballot_item 
     212# on ballot.id = ballot_item.id where ballot.poll = 1 and invalid = 'false' 
     213# group by value 
     214# order by count 
     215 
    129216=head1 AUTHOR 
    130217 
Note: See TracChangeset for help on using the changeset viewer.