Пример #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 adminFuncionarios($id)
 {
     $vdt = new Validate\Validator();
     $vdt->addRule('id', new Validate\Rule\NumNatural())->addRule('entrantes', new Validate\Rule\Regex('/^\\[\\d*(?:,\\d+)*\\]$/'))->addRule('salientes', new Validate\Rule\Regex('/^\\[\\d*(?:,\\d+)*\\]$/'));
     $req = $this->request;
     $data = array_merge(array('id' => $id), $req->post());
     if (!$vdt->validate($data)) {
         throw new TurnbackException('Configuración inválida.');
     }
     $organismo = Organismo::findOrFail($id);
     $funcionarios = $organismo->funcionarios;
     $actuales = array();
     foreach ($funcionarios as $funcionario) {
         $actuales[] = (int) $funcionario->usuario_id;
     }
     $entrantes = json_decode($vdt->getData('entrantes'));
     $salientes = json_decode($vdt->getData('salientes'));
     if (array_intersect($actuales, $entrantes)) {
         throw new TurnbackException('Configuración inválida.');
     }
     if (array_diff($salientes, $actuales)) {
         throw new TurnbackException('Configuración inválida.');
     }
     if ($salientes) {
         Funcionario::whereIn('usuario_id', $salientes)->delete();
         Usuario::whereIn('id', $salientes)->update(array('es_funcionario' => false));
         AdminlogCtrl::createLog(implode(',', $salientes), 4, 'del', $this->session->user('id'), $organismo);
         foreach ($salientes as $saliente) {
             $log = UserlogCtrl::createLog('delFuncion', $saliente, $organismo);
             NotificacionCtrl::createNotif($saliente, $log);
         }
     }
     if ($entrantes) {
         Usuario::whereIn('id', $entrantes)->increment('puntos', 30);
         AdminlogCtrl::createLog(implode(',', $entrantes), 4, 'new', $this->session->user('id'), $organismo);
         foreach ($entrantes as $entrante) {
             $funcionario = new Funcionario();
             $funcionario->usuario_id = $entrante;
             $funcionario->organismo_id = $id;
             $funcionario->save();
             $log = UserlogCtrl::createLog('newFuncion', $entrante, $organismo);
             NotificacionCtrl::createNotif($entrante, $log);
         }
     }
     $this->flash('success', 'Se han modificado los funcionarios del organismo exitosamente.');
     $this->redirectTo('shwAdmOrganis');
 }
Пример #3
0
 public function eliminar($idDoc)
 {
     $vdt = new Validate\QuickValidator(array($this, 'notFound'));
     $vdt->test($idDoc, new Validate\Rule\NumNatural());
     $documento = Documento::with(array('contenido', 'parrafos'))->findOrFail($idDoc);
     $documento->delete();
     UserlogCtrl::createLog('delDocumen', $this->session->user('id'), $documento);
     $this->flash('success', 'El documento ha sido eliminado exitosamente.');
     $this->redirectTo('shwIndex');
 }
Пример #4
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');
 }
Пример #5
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));
 }
Пример #6
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');
 }
Пример #7
0
 public function eliminar($idNov)
 {
     $vdt = new Validate\QuickValidator(array($this, 'notFound'));
     $vdt->test($idNov, new Validate\Rule\NumNatural());
     $novedad = Novedad::with(array('contenido', 'comentarios.votos'))->findOrFail($idNov);
     $novedad->delete();
     UserlogCtrl::createLog('delNovedad', $this->session->user('id'), $novedad);
     $this->flash('success', 'La novedad ha sido eliminada exitosamente.');
     $this->redirectTo('shwIndex');
 }