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 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'); }
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'); }
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'); }
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'); }