Changeset 8 for trunk/lib/Vote/Model/Vote.pm
- Timestamp:
- 03/06/09 03:17:11 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/lib/Vote/Model/Vote.pm
r4 r8 127 127 } 128 128 129 sub 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 143 sub _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 161 sub gen_uid { 162 unpack("H*", join("", map { chr(rand(256)) } (0..15))) 163 } 164 165 sub _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 194 sub 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 129 216 =head1 AUTHOR 130 217
Note: See TracChangeset
for help on using the changeset viewer.