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($idOrg) { $vdt = new Validate\QuickValidator(array($this, 'notFound')); $vdt->test($idOrg, new Validate\Rule\NumNatural()); $organismo = Organismo::findOrFail($idOrg); if ($organismo->funcionarios_count > 0) { echo 'lala1'; throw new TurnbackException('Para eliminar un organismo no debe haber funcionarios dentro de este.'); } $organismo->delete(); AdminlogCtrl::createLog('', 3, 'del', $this->session->user('id'), $organismo); $this->flash('success', 'El organismo fue eliminado exitosamente.'); $this->redirectTo('shwAdmOrganis'); }