public function process($confirmation = false)
 {
     $user = $this->createUser();
     $this->form->setData($user);
     if ('POST' === $this->request->getMethod()) {
         $this->form->bind($this->request);
         //var_dump($this->form->getErrorsAsString(10));die;
         if ($this->form->isValid()) {
             $tmp = $user->getId();
             //Si es update
             if (empty($tmp)) {
                 $user->setAuditUserIns($this->auditUser);
                 $user->setAuditDateIns(new \DateTime());
                 $tmp = $this->entId;
                 if (!empty($tmp)) {
                     $entidadDao = new EntidadDao($this->container->get("doctrine"));
                     $entidad = $entidadDao->getEntidad($this->entId);
                     $user->setEntidad($entidad);
                 }
                 //Si es Insert
             } else {
                 $userDao = new UserDao($this->container->get("doctrine"));
                 //Se obtiene el registro de la BD
                 $tmp = $userDao->getUserEspecifico($user->getId());
                 //Se le asigna al Formulario
                 $this->form->setData($tmp);
                 //Se realiza un merge con lo que se envio en el Request
                 $this->form->bindRequest($this->request);
                 $user = $tmp;
                 $tmp->setAuditUserUpd($this->auditUser);
                 $tmp->setAuditDateUpd(new \DateTime());
             }
             $rolDao = new RolDao($this->container->get("doctrine"));
             //Se asignan roles dependiendo del usuario interno
             if ($this->userInterno == 'false') {
                 $user->setRols($rolDao->getRolesEspecificos($user->getEntidad()->getEntImportador(), $user->getEntidad()->getEntProductor(), $user->getEntidad()->getEntComprador(), $user->getEntidad()->getEntCompVend(), $user->getUserTipo(), $user->getUserInterno(), $user->getUserInternoTipo()));
             } else {
                 $user->setRols($rolDao->getRolesEspecificos(false, false, false, false, $user->getUserTipo(), $user->getUserInterno(), $user->getUserInternoTipo()));
             }
             //Hacer busqueda de los roles segun los campos de tipos y obtener el listado de objetos.
             $this->onSuccess($user, $confirmation);
             // do your custom logic here
             return true;
         }
     }
     return false;
 }
 public function deleteOpcSeleccRolAction()
 {
     $idRol = $this->getRequest()->get('reg');
     $idOpc = $this->getRequest()->get('opc');
     $rolDao = new RolDao($this->getDoctrine());
     $rolDao->deleteOpcSeleccRol($idRol, $idOpc);
     return $this->opcionesAsignadasAction();
 }
 public function mantEntidadEdicionAction(Request $request)
 {
     $autorizadoDNM = null;
     $autorizadoDNMText = null;
     $entidadTmp = new Entidad();
     $form = $this->createForm(new EntidadType(), $entidadTmp);
     $form->bindRequest($request);
     $entidad = new Entidad();
     $entidadDao = new EntidadDao($this->getDoctrine());
     $listadoDNMDao = new ListadoDNMDao($this->getDoctrine());
     $listadoMHDao = new ListadoMHDao($this->getDoctrine());
     $user = $this->get('security.context')->getToken()->getUser();
     $errores = null;
     //Validaciones de NIT de Representante y Empresa
     $tmpEntidad = $entidadDao->getRepresentanteByNIT($entidadTmp->getEntRepNit(), $entidadTmp->getEntId());
     if ($tmpEntidad != null) {
         $errores = 'ERROR: El NIT del representante "' . $entidadTmp->getEntRepNit() . '" ya existe como representante de la empresa con nombre comercial "' . $tmpEntidad->getEntNombComercial() . '".';
     }
     $tmpEntidad = $entidadDao->getRepresentanteByNIT($entidadTmp->getEntNit(), $entidadTmp->getEntId());
     if ($tmpEntidad != null) {
         $errores = 'ERROR: El NIT de la empresa "' . $entidadTmp->getEntNit() . '" ya existe como representante de la empresa con nombre comercial "' . $tmpEntidad->getEntNombComercial() . '"';
     }
     $tmpEntidad = $entidadDao->getEntidadByNIT($entidadTmp->getEntRepNit(), $entidadTmp->getEntId());
     if ($tmpEntidad != null) {
         $errores = 'ERROR: El NIT del representante "' . $entidadTmp->getEntRepNit() . '" ya existe como NIT de la empresa con nombre comercial "' . $tmpEntidad->getEntNombComercial() . '".';
     }
     /*
             $tmpEntidad = $entidadDao->getEntidadByNIT($entidadTmp->getEntNit(), $entidadTmp->getEntId());
             if($tmpEntidad != null){
                 $errores = 'ERROR: El NIT de la empresa "'.$entidadTmp->getEntNit().'" ya existe como representante de la empresa con nombre comercial "'.$tmpEntidad->getEntNombComercial().'"';
             }/**/
     //Validacion para verificar que el NIT/NRC se encuentran registrados en el listado de MH
     $tmpEntidad = $listadoMHDao->getEntidadByNITNRC($entidadTmp->getEntNit(), $entidadTmp->getEntNrc(), $entidadTmp->getEntTipoPersona());
     if ($tmpEntidad === false) {
         $errores = 'ERROR: La combinación Tipo Persona-NIT-NRC de la empresa no existe en el listado del Ministerio de Hacienda';
     }
     /**********************/
     if ($entidadTmp->getEntId()) {
         $entidad = $entidadDao->getEntidad($entidadTmp->getEntId());
         //#### Auditoría
         $entidad->setAuditUserUpd($user->getUsername());
         $entidad->setAuditDateUpd(new \DateTime());
         //## Mensaje de validacion de DNM
         $year = new \DateTime();
         $autorizadoDNM = $listadoDNMDao->estaAutorizado($year->format('Y') + 0, $entidad->getEntNrc(), $entidad->getEntNit());
         if (!$autorizadoDNM) {
             $autorizadoDNMText = ListadoDNMDao::$MSG_ERROR_DNM_NOAUTH;
         }
     } else {
         //#### Auditoría
         $entidad->setAuditUserIns($user->getUsername());
         $entidad->setAuditDateIns(new \DateTime());
     }
     $form = $this->createForm(new EntidadType(), $entidad);
     $form->bindRequest($request);
     $errores = $this->validarFormulario($entidad);
     if ($form->isValid() && $errores == null) {
         $entidad->setEntYear($entidad->getEntVenc()->format("Y"));
         $entidad->setEntRegMinsal(strtoupper($entidad->getEntRegMinsal()));
         $entidad->setEntRegDgii(strtoupper($entidad->getEntRegDgii()));
         $entidad->setEntGiro(strtoupper($entidad->getEntGiro()));
         $entidad->setEntEmail(strtoupper($entidad->getEntEmail()));
         $entidad->setEntNombre(strtoupper($entidad->getEntNombre()));
         $entidad->setEntNombComercial(strtoupper($entidad->getEntNombComercial()));
         $entidad->setEntRepNombre(strtoupper($entidad->getEntRepNombre()));
         $entidad->setEntDireccionMatriz(strtoupper($entidad->getEntDireccionMatriz()));
         $entidad->setEntUsosAlcohol(strtoupper($entidad->getEntUsosAlcohol()));
         $entidad->setEntComentario(strtoupper($entidad->getEntComentario()));
         //Eliminar cuotas de importación y compras locales
         if (!$entidad->getEntImportador() || !$entidad->getEntComprador()) {
             //Se realiza una busqueda de todas las cuotas que no cumplen con el nuevo perfil (Importador, Productor, Comprador Local)
             //Luego se dejan eliminadas logicamente en la BD
             foreach ($entidad->getCuotas() as $cuota) {
                 if (($cuota->getCuoTipo() == 'I' && !$entidad->getEntImportador() || $cuota->getCuoTipo() == 'L' && !$entidad->getEntComprador()) && $cuota->getAuditDeleted() == false) {
                     $cuota->setAuditDeleted(true);
                     $cuota->setAuditUserUpd($user->getUsername());
                     $cuota->setAuditDateUpd(new \DateTime());
                 }
             }
         }
         //Se verifican todos los usuarios asociados a la Entidad/Empresa para que se actualicen los roles
         //de acuerdo a las actividades de la empresa y la de cada uno de los usuarios
         $i = 0;
         $usuarios = array();
         foreach ($entidad->getUsers() as $usuario) {
             $rolDao = new RolDao($this->getDoctrine());
             $usuario->setRols($rolDao->getRolesEspecificos($entidad->getEntImportador(), $entidad->getEntProductor(), $entidad->getEntComprador(), $entidad->getEntCompVend(), $usuario->getUserTipo(), $usuario->getUserInterno(), $usuario->getUserInternoTipo()));
             $usuarios[$i] = $usuario;
             $i += 1;
         }
         $entidad->setUsers($usuarios);
         $entidadDao->editEntidad($entidad);
         if ($entidadTmp->getEntId()) {
             $this->get('session')->setFlash('notice', 'Los datos se han guardado con éxito!!!');
             return $this->redirect($this->generateUrl('MinSalSCAAdminBundle_mantCargarEntidad', array('entId' => $entidad->getEntId())));
         } else {
             $this->get('session')->setFlash('notice', 'Los datos se han guardado con éxito!!!');
             $opciones = $this->getRequest()->getSession()->get('opciones');
             $formReg = $this->container->get('fos_user.registration.form');
             //$form = $this->createForm(new RegistrationFormType(), $usuario);
             $usuario = new User();
             if ($entidad->getEntTipoPersona() === 'N') {
                 $usuario->setEmail($entidad->getEntEmail());
                 $usuario->setUserNit($entidad->getEntNit());
                 $usuario->setUserTelefono($entidad->getEntTel());
                 $usuario->setUserPrimerNombre($entidad->getEntNombre());
                 $usuario->setUserApellidos($entidad->getEntNombre());
                 $usuario->setUserCargo('Representante');
             } else {
                 //$usuario->setEmail($entidad->getEntEmail());
                 if ($entidad->getEntTipoDoc() == 'D') {
                     $usuario->setUserDui($entidad->getEntRepDoc());
                 }
                 $usuario->setUserNit($entidad->getEntRepNit());
                 $usuario->setUserTelefono($entidad->getEntTel());
                 $usuario->setUserPrimerNombre($entidad->getEntRepNombre());
                 $usuario->setUserApellidos($entidad->getEntRepNombre());
                 $usuario->setUserCargo('Representante');
             }
             $formReg->setData($usuario);
             return $this->render('MinSalSCAUsersBundle:Registration:register.html.twig', array('opciones' => $opciones, 'form' => $formReg->createView(), 'entId' => $entidad->getEntId(), 'entHabilitado' => $entidad->getEntHabilitado(), 'autorizadoDNM' => $autorizadoDNM, 'autorizadoDNMText' => $autorizadoDNMText, 'userInterno' => 'false', 'entNombre' => $entidad->getEntNombre()));
         }
     } else {
         if ($errores == null) {
             $errores = '**** ERROR **** Existen errores con el formulario, por favor revise los valores ingresados';
         }
         $this->get('session')->setFlash('notice', $errores);
         $opciones = $this->getRequest()->getSession()->get('opciones');
         return $this->render('MinSalSCAAdminBundle:Entidad:showEntidad.html.twig', array('opciones' => $opciones, 'form' => $form->createView(), 'entId' => $entidad->getEntId(), 'entHabilitado' => $entidad->getEntHabilitado(), 'autorizadoDNM' => $autorizadoDNM, 'autorizadoDNMText' => $autorizadoDNMText));
     }
 }
 private function updateAction($request)
 {
     $opciones = $request->getSession()->get('opciones');
     $userInterno = $request->get("userInterno");
     $id = $request->get("fos_user_registration_form");
     $auditUser = $this->container->get('security.context')->getToken()->getUser();
     $confirmationEnabled = $this->container->getParameter('fos_user.registration.confirmation.enabled');
     $entId = '';
     $entNombre = '';
     if ($userInterno == 'false') {
         $entId = $request->get("entId");
         $entidadDao = new EntidadDao($this->container->get("doctrine"));
         //fos_user.user_manager
         $entNombre = $entidadDao->getEntidad($entId)->getEntNombre();
     }
     $user = new User();
     $userDao = new UserDao($this->container->get("doctrine"));
     $user = $userDao->getUserEspecifico($id['id']);
     $form = $this->container->get('fos_user.registration.form');
     //$form = $this->createForm(new RegistrationFormType(), $usuario);
     $form->setData($user);
     $form->bindRequest($request);
     if ($form->isValid()) {
         $rolDao = new RolDao($this->container->get("doctrine"));
         //Se asignan roles dependiendo del usuario interno
         if ($userInterno == 'false') {
             $user->setRols($rolDao->getRolesEspecificos($user->getEntidad()->getEntImportador(), $user->getEntidad()->getEntProductor(), $user->getEntidad()->getEntComprador(), $user->getEntidad()->getEntCompVend(), $user->getUserTipo(), $user->getUserInterno(), $user->getUserInternoTipo()));
         } else {
             $user->setRols($rolDao->getRolesEspecificos(false, false, false, false, $user->getUserTipo(), $user->getUserInterno(), $user->getUserInternoTipo()));
         }
         $this->onSuccess($user, $confirmationEnabled);
         $user = $userDao->updateUsuario($user, $auditUser->getUsername());
         $this->container->get('session')->setFlash('notice', '#### El usuario "' . $user->getUsername() . '" ha actualizado ####');
         $route = 'MinSalSCAUsersBundle_mantMostrarUsuarios';
         $url = $this->container->get('router')->generate($route, array('userInterno' => $userInterno, 'entId' => $entId, 'entNombre' => $entNombre, 'opciones' => $opciones));
         return new RedirectResponse($url);
     }
     //FOSUserBundle:Registration:register.html
     return $this->container->get('templating')->renderResponse('MinSalSCAUsersBundle:Registration:register.html.' . $this->getEngine(), array('form' => $form->createView(), 'userInterno' => $userInterno, 'entId' => $entId, 'entNombre' => $entNombre, 'opciones' => $opciones));
 }