public static function boot() { parent::boot(); static::deleting(function ($comentario) { $answerIds = $comentario->respuestas()->lists('id'); if ($answerIds) { VotoComentario::whereIn('comentario_id', $answerIds)->delete(); $comentario->respuestas()->delete(); } $comentario->votos()->delete(); return true; }); }
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()); }
public static function boot() { parent::boot(); static::deleting(function ($documento) { TagCtrl::updateTags($evento->contenido, array()); foreach ($documento->parrafos as $parrafo) { $CommentIds = $parrafo->comentarios()->lists('id'); if ($CommentIds) { $AnswerIds = Comentario::where('comentable_type', 'Comentario')->whereIn('comentable_id', $CommentIds)->lists('id'); if ($AnswerIds) { VotoComentario::whereIn('comentario_id', $AnswerIds)->delete(); Comentario::whereIn('id', $AnswerIds)->delete(); } VotoComentario::whereIn('comentario_id', $CommentIds)->delete(); $parrafo->comentarios()->delete(); } $parrafo->delete(); } $documento->versiones()->delete(); $documento->contenido->delete(); return true; }); }