예제 #1
0
 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());
 }
예제 #2
0
 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));
 }
예제 #3
0
 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]);
 }
예제 #4
0
 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');
 }
예제 #5
0
 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');
 }
예제 #6
0
 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));
 }
예제 #7
0
 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');
 }