Beispiel #1
0
 public function votar($idCom)
 {
     $vdt = new Validate\Validator();
     $vdt->addRule('idCom', new Validate\Rule\NumNatural())->addRule('valor', new Validate\Rule\InArray(array(-1, 1)));
     $req = $this->request;
     $data = array_merge(array('idCom' => $idCom), $req->post());
     if (!$vdt->validate($data)) {
         throw new TurnbackException($vdt->getErrors());
     }
     $usuario = $this->session->getUser();
     $comentario = Comentario::findOrFail($idCom);
     $voto = VotoComentario::firstOrNew(array('comentario_id' => $comentario->id, 'usuario_id' => $usuario->id));
     if (!$voto->exists) {
         $voto->valor = $vdt->getData('valor');
         $voto->save();
         $comentario->increment('votos', $voto->valor);
         $comentario->autor()->increment('puntos', $voto->valor);
     } else {
         throw new TurnbackException('No puede votar dos veces el mismo comentario.');
     }
     $this->flash('success', 'Su voto fue registrado exitosamente.');
     $this->redirect($req->getReferrer());
 }