public function comentar($tipoRaiz, $idRaiz) { $vdt = new Validate\Validator(); $vdt->addRule('idRaiz', new Validate\Rule\NumNatural())->addRule('tipoRaiz', new Validate\Rule\InArray(['Propuesta', 'Problematica', 'Comentario', 'ParrafoDocumento', 'Novedad', 'Evento']))->addRule('cuerpo', new Validate\Rule\MinLength(4))->addRule('cuerpo', new Validate\Rule\MaxLength(2048))->addFilter('tipoRaiz', 'ucfirst'); $req = $this->request; $data = array_merge($req->post(), ['idRaiz' => $idRaiz, 'tipoRaiz' => $tipoRaiz]); if (!$vdt->validate($data)) { throw new TurnbackException($vdt->getErrors()); } $comentable = call_user_func($vdt->getData('tipoRaiz') . '::findOrFail', $vdt->getData('idRaiz')); if ($vdt->getData('tipoRaiz') == 'Comentario' && $comentable->comentable_type == 'Comentario') { throw new TurnbackException('No puede responderse una respuesta.'); } $autor = $this->session->getUser(); $comentario = new Comentario(); $comentario->cuerpo = $vdt->getData('cuerpo'); $comentario->autor()->associate($autor); $comentario->comentable()->associate($comentable); $comentario->save(); $raiz = $comentable->raiz; $raiz->contenido()->increment('puntos', 3); $autor->increment('puntos', 5); $log = UserlogCtrl::createLog('newComenta', $autor->id, $raiz); NotificacionCtrl::createNotif($raiz->contenido->autor_id, $log); $this->flash('success', 'Su comentario fue enviado exitosamente.'); $this->redirect($req->getReferrer()); }
public function crear() { $req = $this->request; $vdt = $this->validarNovedad($req->post()); $autor = $this->session->getUser(); $novedad = new Novedad(); $novedad->cuerpo = $vdt->getData('cuerpo'); $novedad->save(); $contenido = new Contenido(); $contenido->titulo = $vdt->getData('titulo'); $contenido->puntos = 0; $contenido->categoria_id = $vdt->getData('categoria'); $contenido->autor()->associate($autor); $contenido->contenible()->associate($novedad); $partido = $autor->partido; if (isset($partido) && $vdt->getData('asociar')) { $contenido->impulsor()->associate($partido); } $contenido->save(); TagCtrl::updateTags($contenido, TagCtrl::getTagIds($vdt->getData('tags'))); $log = UserlogCtrl::createLog('newNovedad', $autor->id, $novedad); if ($contenido->impulsor) { NotificacionCtrl::createNotif($partido->afiliados()->lists('id'), $log); } $this->flash('success', 'Su novedad fue creada exitosamente.'); $this->redirectTo('shwNovedad', array('idNov' => $novedad->id)); }
public function adminModeradores($idPat) { $vdt = new Validate\Validator(); $vdt->addRule('idPat', new Validate\Rule\NumNatural())->addRule('salientes', new Validate\Rule\Regex('/^\\[\\d*(?:,\\d+)*\\]$/')); $req = $this->request; $data = array_merge(array('idPat' => $idPat), $req->post()); if (!$vdt->validate($data)) { throw new TurnbackException($vdt->getErrors()); } $patrulla = Patrulla::findOrFail($idPat); $salientes = json_decode($vdt->getData('salientes')); if (in_array($this->session->user('id'), $salientes)) { throw new TurnbackException('No puede quitarse a sí mismo de una patrulla.'); } $patrulla->moderadores()->whereIn('id', $salientes)->update(['patrulla_id' => null]); $log = AdminlogCtrl::createLog(implode(',', $salientes), 6, 'del', $this->session->user('id'), $patrulla); NotificacionCtrl::createNotif($salientes, $log); $this->flash('success', 'Los moderadores han sido removidos de la patrulla exitosamente.'); $this->redirectTo('shwAdmModerad', ['idPat' => $idPat]); }
public function verifCiudadano() { $vdt = new Validate\Validator(); $vdt->addRule('entrantes', new Validate\Rule\Regex('/^\\[\\d+(?:,\\d+)*\\]$/')); $req = $this->request; if (!$vdt->validate($req->post())) { throw new TurnbackException('Configuración inválida.'); } $entrantes = json_decode($vdt->getData('entrantes')); Usuario::whereIn('id', $entrantes)->whereNull('verified_at')->increment('puntos', 100, array('verified_at' => Carbon\Carbon::now())); foreach ($entrantes as $entrante) { $log = AdminlogCtrl::createLog('', 7, 'new', $this->session->user('id'), $entrante, 'Usuario'); NotificacionCtrl::createNotif($entrante, $log); } $this->flash('success', 'Se han verificado los ciudadanos seleccionados exitosamente.'); $this->redirectTo('shwAdmVrfUsuario'); }
public function eliminar($idPro) { $vdt = new Validate\QuickValidator(array($this, 'notFound')); $vdt->test($idPro, new Validate\Rule\NumNatural()); $problemat = Problematica::with(['contenido', 'comentarios.votos'])->findOrFail($idPro); $votantes = $problemat->votos()->lists('usuario_id'); $problemat->delete(); $log = UserlogCtrl::createLog('delProblem', $this->session->user('id'), $problemat); NotificacionCtrl::createNotif($votantes, $log); $this->flash('success', 'La problematica ha sido eliminada exitosamente.'); $this->redirectTo('shwIndex'); }
public function cambiarRol($idPar) { $vdt = new Validate\Validator(); $vdt->addRule('idPar', new Validate\Rule\NumNatural())->addRule('idUsu', new Validate\Rule\NumNatural())->addRule('jefe', new Validate\Rule\InArray(array(1, 0))); $req = $this->request; $data = array_merge(array('idPar' => $idPar), $req->post()); if (!$vdt->validate($data)) { throw new TurnbackException($vdt->getErrors()); } $partido = Partido::findOrFail($vdt->getData('idPar')); // TODO que pasa si el usuario no está en el partido? $usuario = Usuario::where(array('id' => $vdt->getData('idUsu'), 'partido_id' => $vdt->getData('idPar')))->first(); if ($usuario->id == $partido->creador_id) { throw new TurnbackException('No se puede cambiar el rol del creador del grupo.'); } else { if (is_null($usuario)) { throw new TurnbackException($usuario->identidad . ' no pertenece al grupo.'); } else { if (!($usuario->es_jefe xor $vdt->getData('jefe'))) { throw new TurnbackException('Configuración inválida.'); } } } $usuario->es_jefe = $vdt->getData('jefe'); $usuario->save(); $notificados = $partido->afiliados()->lists('id'); $log = UserlogCtrl::createLog($usuario->es_jefe ? 'newJefPart' : 'delJefPart', $usuario->id, $partido); NotificacionCtrl::createNotif($notificados, $log); $msg = $usuario->es_jefe ? ' comenzó a ' : ' dejó de '; $this->flash('success', $usuario->identidad . $msg . 'ser jefe del grupo.'); $this->redirectTo('shwModifRolPartido', array('idPar' => $idPar)); }
public function eliminar($idEve) { $vdt = new Validate\QuickValidator(array($this, 'notFound')); $vdt->test($idEve, new Validate\Rule\NumNatural()); $evento = Evento::with(['contenido', 'comentarios.votos'])->findOrFail($idEve); $usuarios = $evento->usuarios()->lists('usuario_id'); $evento->delete(); $log = UserlogCtrl::createLog('delEventoo', $this->session->user('id'), $evento); NotificacionCtrl::createNotif($usuarios, $log); $this->flash('success', 'El evento ha sido eliminado exitosamente.'); $this->redirectTo('shwIndex'); }