<?php
namespace App\Controller;
use Symfony\Bridge\Twig\Mime\TemplatedEmail;
use Symfony\Component\Mailer\Exception\TransportExceptionInterface;
use Symfony\Component\Mime\Address;
use App\Service\FuncionesIvtcotizador;
use App\Entity\Clientes;
use App\Entity\Funciones;
use App\Entity\Usuarios;
use App\Entity\Usuariosavisos;
use App\Entity\Usuarioubicaciones;
use App\Entity\Logusuario;
use App\Entity\Perfiles;
use App\Entity\Perfilfunciones;
use App\Entity\Usuariosfavoritos;
use App\Repository\ClientefuncionesRepository;
use App\Repository\ClientesRepository;
use App\Repository\FuncionesRepository;
use App\Repository\OrigenesRepository;
use App\Repository\PerfilesRepository;
use App\Repository\PerfilfuncionesRepository;
use App\Repository\SeccionesRepository;
use App\Repository\UbicacionesRepository;
use App\Repository\UsuariosavisosRepository;
use App\Repository\UsuariosfavoritosRepository;
use App\Repository\UsuariosRepository;
use App\Repository\UsuarioubicacionesRepository;
trait UsuariosProcesosTrait
{
/**
* Method procUsuariosUsuarios
*
* @param array $paraProceso
*
* @return array
*/
private function procUsuariosUsuarios($paraProceso): array
{
$cliente = $paraProceso['cliente'];
$registry = $paraProceso['registry'];
$requestStack = $paraProceso['requestStack'];
$usuariosRepo = new UsuariosRepository($registry, $requestStack);
$perfilesRepo = new PerfilesRepository($registry);
$fi = new FuncionesIvtcotizador();
///
$controladorA = explode('\\', get_called_class());
$_n = $fi->get_n($registry, end($controladorA), __FUNCTION__, $cliente);
$rotulos = [
"titulo" => $_n['Usuarios'] ?? 'Usuarios',
'exportar' => $_n['exportar'] ?? 'Exportar',
'nuevo' => $_n['nuevo'] ?? 'Nuevo',
'claUsuario' => $_n['claUsuario'] ?? 'Usuario',
'eliminar' => $_n['eliminar'] ?? 'Eliminar',
'totalDeUsuarios' => $_n['totalDeUsuarios'] ?? 'Total de Usuarios',
'nomUsuario' => $_n['nomUsuario'] ?? 'Nombre de Usuario',
'acceso' => $_n['acceso'] ?? 'Acceso',
'normal' => $_n['normal'] ?? 'Normal',
'movil' => $_n['movil'] ?? 'Móvil',
'recolectorDeDatos' => $_n['recolectorDeDatos'] ?? 'Recolector de datos',
'cambiarContrasena' => $_n['cambiarContrasena'] ?? 'Cambiar Contraseña',
'nomPerfil' => $_n['nomPerfil'] ?? 'Perfil',
'nomTipo' => $_n['nomTipo'] ?? 'Acceso',
'activar' => $_n['activar'] ?? 'Activar',
'activarTip' => $_n['activarTip'] ?? 'Activa al usuario seleccionado',
'activarConfirmar' => $_n['activarConfirmar'] ?? '¿Está seguro de querer activar a este usuario?',
'desactivar' => $_n['desactivar'] ?? 'Desactivar',
'desactivarTip' => $_n['desactivarTip'] ?? 'Desactiva al usuario seleccionado',
'desactivarConfirmar' => $_n['desactivarConfirmar'] ?? '¿Está seguro de querer desactivar a este usuario?',
'cambiarContra' => $_n['cambiarContra'] ?? 'Cambiar contraseña',
'cambiarContraTip' => $_n['cambiarContraTip'] ?? 'Cambia la contraseña del usuario seleccionado',
'avisos' => $_n['avisos'] ?? 'Configuración de avisos',
'avisosTip' => $_n['avisosTip'] ?? 'Cambia la configuración de avisos del usuario seleccionado',
'fecha' => $_n['fecha'] ?? 'Fecha',
];
$valoresDB = $usuariosRepo->findForGrid($cliente);
$perfiles = $perfilesRepo->findForClaCatalogoIndiceEsClave($cliente);
$tipos = $usuariosRepo->findForClaTipo($cliente);
$mostrarCuales = [Usuarios::_claTipoNormal, Usuarios::_claTipoMovil, Usuarios::_claTipoRecolectorDatos];
$valores = [];
$enLista = ['claUsuario', 'nomUsuario', 'id', 'claPerfil', 'claTipo', 'activo'];
$cuentas = [];
foreach ($valoresDB as $x => $campos) {
$mostrar = false;
$array = [];
foreach ($campos as $y => $campo) {
if (in_array($campo['alias'], $enLista)) {
$array[$campo['alias']] = $campo['valor'];
}
//perfil
if ($campo['alias'] == 'claPerfil') {
$array['nomPerfil'] = $perfiles[$campo['valor']] ?? '';
}
//tipo
if ($campo['alias'] == 'claTipo') {
$array['nomTipo'] = $tipos[$campo['valor']] ?? '';
if (in_array($campo['valor'], $mostrarCuales)) {
$mostrar = true;
}
}
$array['eliminar'] = true;
if ($campo['alias'] == 'claUsuario') {
$cuentas[$campo['valor']] = 0;
}
}
if ($mostrar) {
$valores[] = $array;
}
}
foreach ($valores as $v => $valor) {
$claUsuario = $valor["claUsuario"];
$cuenta = 0;
if (isset($cuentas[$claUsuario])) {
$cuenta = $cuentas[$claUsuario];
}
if ($cuenta > 0) {
$valores[$v]['eliminar'] = false;
}
}
///
$html = [
"titulo" => $rotulos["titulo"],
];
///
$generales = [];
$generales['fecha'] = date($fi->getFormatoFecha(1) , $fi->ivtCotizadorTiempo());
///
$catalogos = [];
//la data
$data = [];
$data['generales'] = $generales;
$data['rotulos'] = $rotulos;
$data['html'] = $html;
$data['valores'] = $valores;
$data['catalogos'] = $catalogos;
return $data;
}
/**
* Method procUsuariosEditar
*
* @param array $paraProceso
*
* @return array
*/
private function procUsuariosEditar($paraProceso): array
{
$registry = $paraProceso['registry'];
$requestStack = $paraProceso['requestStack'];
$sesion = $paraProceso['sesion'];
$usuariosRepo = new UsuariosRepository($registry, $requestStack);
$perfilesRepo = new perfilesRepository($registry);
$ubicacionesRepo = new UbicacionesRepository($registry);
$cliente = $paraProceso['cliente'];
$claUsuario = $paraProceso['claUsuario'];
$fi = new FuncionesIvtcotizador();
///
$generales = [];
$generales['claUsuario'] = $claUsuario;
$generales['nuevo'] = strlen($claUsuario) > 0 ? self::_editar : self::_nuevo;
$generales['multiUbicacion'] = isset($sesion->get('parametros')['MultiUbicacion']) ? $sesion->get('parametros')['MultiUbicacion'] : '0';
///
$controladorA = explode('\\', get_called_class());
$_n = $fi->get_n($registry, end($controladorA), __FUNCTION__, $cliente);
$rotulos = [
'nuevoUsuario' => $_n['nuevoUsuario'] ?? 'Nuevo Usuario',
'editarUsuario' => $_n['editarUsuario'] ?? 'Modificar Usuario',
'cancelar' => $_n['cancelar'] ?? 'Cancelar',
'nomUsuario' => $_n['nomUsuario'] ?? 'Usuario',
'claUsuario' => $_n['claUsuario'] ?? 'Clave',
'correo' => $_n['correo'] ?? 'Correo',
'contra' => $_n['contra'] ?? 'Contraseña',
'confirmacion' => $_n['confirmacion'] ?? 'Confirmación',
'guardar' => $_n['guardar'] ?? 'Guardar',
'nomUsuarioAviso' => $_n['nomUsuarioAviso'] ?? 'Indique el usuario',
'claUsuarioAviso' => $_n['claUsuarioAviso'] ?? 'Indique la clave de usuario',
'correoAviso' => $_n['correoAviso'] ?? 'Indique un correo válido',
'contraAviso' => $_n['contraAviso'] ?? 'Indique la contraseña',
'confirmacionAviso' => $_n['confirmacionAviso'] ?? 'Indique la confirmación',
'noCoinciden' => $_n['noCoinciden'] ?? 'La contraseña y la confirmación no coinciden',
'error' => $_n['error'] ?? 'Revise los campos',
'ubicacion' => $_n['ubicacion'] ?? 'Ubicación',
'region' => $_n['region'] ?? 'Región',
'centro' => $_n['centro'] ?? 'Centro',
'nomTipoNormal' => $_n['nomTipoNormal'] ?? 'Normal',
'nomTipoRecolector' => $_n['nomTipoRecolector'] ?? 'Recolector de datos',
'tipoAcceso' => $_n['tipoAcceso'] ?? 'Tipo de acceso',
'perfil' => $_n['perfil'] ?? 'Perfil',
'noCumple' => $_n['noCumple'] ?? 'La contraseña no cumple con las reglas. Mínimo 8 carácteres, mínimo un número',
];
///
$html = [];
$html["nuevo"] = $generales['nuevo'];
$html["multiUbicacion"] = $generales['multiUbicacion'];
//////
if ($generales['nuevo'] == self::_editar) { // es string
$rotulos['titulo'] = $rotulos['editarUsuario'];
$valoresFor = $usuariosRepo->findForEditar($cliente, $claUsuario);
} else {
$rotulos['titulo'] = $rotulos['nuevoUsuario'];
$valoresFor = $usuariosRepo->findForNuevo();
}
$valores = [];
foreach ($valoresFor as $v => $valor) {
$valores[$valor['alias']] = $valor['valor'];
}
$valores['nivelClave'] = $ubicacionesRepo->getUbicacionNivel($cliente, $valores['claUbicacion']) . '|' . $valores['claUbicacion'];
$catalogos = [];
$claMatriz = $ubicacionesRepo->findForMatriz($cliente);
$catalogos['ubicaciones'] = $ubicacionesRepo->getUbicacionesArray($cliente, $claMatriz, $rotulos['region'], $rotulos['centro']);
$catalogos['perfiles'] = $perfilesRepo->findForCatalogo($cliente);
$usuariosTipos = [];
$usuariosTipos[] = ['claTipo' => Usuarios::_claTipoNormal, 'nomTipo' => $rotulos['nomTipoNormal']];
//$usuariosTipos[] = ['claTipo' => Usuarios::_claTipoRecolectorDatos, 'nomTipo' => $rotulos['nomTipoRecolector']];
$catalogos['tipos'] = $usuariosTipos;
//la data
$data = [];
$data['generales'] = $generales;
$data['rotulos'] = $rotulos;
$data['html'] = $html;
$data['valores'] = $valores;
$data['catalogos'] = $catalogos;
return $data;
}
/**
* Method procUsuariosEnviar
*
* @param array $paraProceso
*
* @return array
*/
private function procUsuariosEnviar($paraProceso): array
{
$entityManager = $this->getDoctrine()->getManager();
$fi = new FuncionesIvtcotizador();
$registry = $paraProceso['registry'];
$requestStack = $paraProceso['requestStack'];
$hasher = $paraProceso['hasher'];
$cliente = $paraProceso['cliente'];
$claUsuario = $paraProceso['claUsuario'];
$datosRequest = $paraProceso['datosRequest'];
$contra = $paraProceso['contra'];
$nuevo = $paraProceso['nuevo'];
$sesion = $paraProceso['sesion'];
///
$usuariosRepo = new UsuariosRepository($registry, $requestStack);
$perfilesRepo = new PerfilesRepository($registry);
///
$controladorA = explode('\\', get_called_class());
$_n = $fi->get_n($registry, end($controladorA), __FUNCTION__, $cliente);
$rotulos = [
'usuarioAgregado' => $_n['usuarioAgregado'] ?? 'Nuevo usuario agregado con éxito',
'usuarioActualizado' => $_n['usuarioActualizado'] ?? 'Usuario actualizado con éxito',
'usuarioNoExiste' => $_n['usuarioNoExiste'] ?? 'El usuario no existe',
'usuarioYaExiste' => $_n['usuarioYaExiste'] ?? 'El usuario ya existe',
'nomTipoNormal' => $_n['nomTipoNormal'] ?? 'Normal',
'nomTipoRecolector' => $_n['nomTipoRecolector'] ?? 'Recolector de datos',
];
$resultado = 1;
$mensaje = $rotulos['usuarioAgregado'];
$dataGrid = [];
$usuariosCuenta = $usuariosRepo->createQueryBuilder('s')
->select('count(s.clausuario)')
->where('s.clausuario = :claUsuario')
->setParameters(['claUsuario' => $claUsuario])
->getQuery()
->getSingleScalarResult();
if ($usuariosCuenta > 0 && $nuevo == self::_nuevo) {
$mensaje = $rotulos['usuarioYaExiste'];
$resultado = -2;
}
if ($resultado == 1) {
$usuario = new Usuarios();
if ($nuevo == self::_editar) {
$mensaje = $rotulos['usuarioActualizado'];
$usuario = $usuariosRepo->findForClausuario($cliente, $claUsuario);
if ($usuario == null) {
$resultado = -1;
$mensaje = $rotulos['usuarioNoExiste'];
}
}
}
if ($resultado == 1) {
$camposContinuar = ['id', 'nuevo'];
$camposSoloNuevo = ['clacliente', 'contra2', 'contra3', 'clausuario', 'fecha'];
$camposParaGrid = ['clausuario', 'nomusuario', 'activo'];
$camposInfo = $usuariosRepo->getDataArray();
foreach ($datosRequest as $d => $valor) {
$campo = strtolower($d);
if ($campo == 'nivelclave') { //viene como nivel|claUbicacion
$valor = explode('|', $valor)[1];
$campo = 'claubicacion';
}
if (in_array($campo, $camposContinuar)) {
continue;
}
if (in_array($campo, $camposParaGrid)) {
$dataGrid[$d] = $valor;
}
if ($nuevo == self::_nuevo) {
if ($campo == 'clacliente') {
$valor = $cliente;
}
if ($campo == 'activo') {
$valor = '1';
}
if ($campo == 'fecha') {
$valor = $fi->ivtCotizadorTiempoDT();
}
} else {
if (in_array($campo, $camposSoloNuevo)) {
continue;
}
}
//valida el tipo de dato
$metaData = $fi->getCampoMetadata($camposInfo, $campo);
$columnaTipoDato = $metaData['columnaTipoDato'];
$valorDefault = $metaData['valorDefault'];
$tipoDato = gettype($valor);
if ($tipoDato != $columnaTipoDato) {
if ($columnaTipoDato == 'integer') {
if ($tipoDato == 'string') {
$valor = str_replace(',', '', $valor);
$valor = str_replace(' ', '', $valor);
$valor = (int) $valor;
}
}
if ($columnaTipoDato == 'float') {
if ($tipoDato == 'string') {
$valor = str_replace(',', '', $valor);
$valor = str_replace(' ', '', $valor);
$valor = (float) $valor;
}
}
}
$campoSet = "set" . ucfirst($campo);
$usuario->$campoSet($valor);
}
$entityManager->persist($usuario);
$entityManager->flush();
if ($nuevo == self::_nuevo && strlen($contra) > 0) {
$contra = $hasher->hashPassword($usuario, $contra);
$usuario->setPassword($contra);
$usuario->setContra($contra);
$usuario->setContra1($contra);
$usuario->setContra2('');
$usuario->setContra3('');
$usuario->setRoles([]);
$entityManager->persist($usuario);
$entityManager->flush();
//MultiUbicacion
$multiUbicacion = $sesion->get('parametros')['MultiUbicacion'] ?? '0';
if ($multiUbicacion == '1') {
$multi = new Usuarioubicaciones();
$multi->setClacliente($cliente)
->setClausuario($usuario->getClausuario())
->setClaubicacion($usuario->getClaubicacion());
$entityManager->persist($multi);
$entityManager->flush();
}
}
$dataGrid['nomTipo'] = '';
switch ($usuario->getClatipo()) {
case Usuarios::_claTipoNormal:
$dataGrid['nomTipo'] = $rotulos['nomTipoNormal'];
break;
case Usuarios::_claTipoRecolectorDatos:
$dataGrid['nomTipo'] = $rotulos['nomTipoRecolector'];
break;
}
$dataGrid['claUsuario'] = $usuario->getClausuario();
$dataGrid['activo'] = $usuario->getActivo();
$dataGrid['nomPerfil'] = $perfilesRepo->findForNombre($cliente, $usuario->getClaperfil());
}
//la data
$data = [];
$data['resultado'] = $resultado;
$data['mensaje'] = $mensaje;
$data['dataGrid'] = $dataGrid;
return $data;
}
/**
* Method procUsuariosMultiUbicaciones
*
* @param array $paraProceso
*
* @return void
*/
private function procUsuariosMultiUbicaciones($paraProceso)
{
$entityManager = $this->getDoctrine()->getManager();
$fi = new FuncionesIvtcotizador();
$registry = $paraProceso['registry'];
$usuarioUbiRepo = new UsuarioubicacionesRepository($registry);
$ubicacionesRepo = new UbicacionesRepository($registry);
$cliente = $paraProceso['cliente'];
$claUsuario = $paraProceso['claUsuario'];
///
$controladorA = explode('\\', get_called_class());
$_n = $fi->get_n($registry, end($controladorA), __FUNCTION__, $cliente);
$rotulos = [
'nomUbicacion' => $_n['nomUbicacion'] ?? 'Ubicación',
'ubicacion' => $_n['ubicacion'] ?? 'Ubicación',
'region' => $_n['region'] ?? 'Región',
'centro' => $_n['centro'] ?? 'Centro',
'agregar' => $_n['agregar'] ?? 'Agregar',
'eliminar' => $_n['eliminar'] ?? 'Eliminar',
'eliminarTip' => $_n['eliminarTip'] ?? 'Elimina la ubicación seleccionada',
'eliminarConfirmar' => $_n['eliminarConfirmar'] ?? '¿Está seguro de querer eliminar esta ubicación?',
];
$ubicaciones = $ubicacionesRepo->findForIndiceEsClaveConNivel($cliente);
$valoresDB = $usuarioUbiRepo->findForGrid($cliente, $claUsuario);
$valores = [];
$enLista = ['claUsuario', 'claUbicacion', 'claUsuarioUbicacion'];
$cuentas = [];
foreach ($valoresDB as $x => $campos) {
$array = [];
foreach ($campos as $y => $campo) {
if (in_array($campo['alias'], $enLista)) {
$array[$campo['alias']] = $campo['valor'];
}
//nomUbicacion
if ($campo['alias'] == 'claUbicacion') {
$array['nomUbicacion'] = $ubicaciones[$campo['valor']] ?? '';
}
$array['eliminar'] = true;
if ($campo['alias'] == 'claUsuarioUbicacion') {
$cuentas[$campo['valor']] = 0;
}
}
$valores[] = $array;
}
$catalogos = [];
$claMatriz = $ubicacionesRepo->findForMatriz($cliente);
$catalogos['ubicaciones'] = $ubicacionesRepo->getUbicacionesArray($cliente, $claMatriz, $rotulos['region'], $rotulos['centro']);
$generales = [];
$generales['claUsuario'] = $claUsuario;
//la data
$data = [];
$data['rotulos'] = $rotulos;
$data['valores'] = $valores;
$data['catalogos'] = $catalogos;
$data['generales'] = $generales;
return $data;
}
/**
* Method procMultiUbicacionesEnviar
*
* @param array $paraProceso
*
* @return array
*/
private function procMultiUbicacionesEnviar($paraProceso): array
{
$entityManager = $this->getDoctrine()->getManager();
$fi = new FuncionesIvtcotizador();
$registry = $paraProceso['registry'];
$usuarioUbiRepo = new UsuarioubicacionesRepository($registry);
$ubicacionesRepo = new UbicacionesRepository($registry);
$cliente = $paraProceso['cliente'];
$datosRequest = $paraProceso['datosRequest'];
$nuevo = $paraProceso['nuevo'];
$claUsuario = $paraProceso['claUsuario'];
$claUbicacion = $paraProceso['claUbicacion'];
///
$controladorA = explode('\\', get_called_class());
$_n = $fi->get_n($registry, end($controladorA), __FUNCTION__, $cliente);
$rotulos = [
'agregada' => $_n['agregada'] ?? 'Ubicación agregada con éxito',
'ubicacionYaAgregada' => $_n['ubicacionYaAgregada'] ?? 'Ubicación previamente agregada',
];
$resultado = 1;
$mensaje = $rotulos['agregada'];
$dataGrid = [];
$ubiCuenta = $usuarioUbiRepo->createQueryBuilder('s')
->select('count(s.clausuario)')
->where('s.clausuario = :claUsuario')
->andWhere('s.claubicacion = :claUbicacion')
->setParameters(['claUsuario' => $claUsuario, 'claUbicacion' => $claUbicacion])
->getQuery()
->getSingleScalarResult();
if ($ubiCuenta > 0) {
$mensaje = $rotulos['ubicacionYaAgregada'];
$resultado = -2;
}
if ($resultado == 1) {
$usuUbi = new Usuarioubicaciones();
$camposContinuar = [];
$camposSoloNuevo = ['clacliente'];
$camposParaGrid = ['claubicacion'];
$camposInfo = $usuarioUbiRepo->getDataArray();
foreach ($datosRequest as $d => $valor) {
$campo = strtolower($d);
if ($campo == 'claubicacion') { //viene como nivel|claUbicacion
$valor = explode('|', $valor)[1];
$campo = 'claubicacion';
}
if (in_array($campo, $camposContinuar)) {
continue;
}
if (in_array($campo, $camposParaGrid)) {
$dataGrid[$d] = $valor;
}
if ($nuevo == self::_nuevo) {
if ($campo == 'clacliente') {
$valor = $cliente;
}
} else {
if (in_array($campo, $camposSoloNuevo)) {
continue;
}
}
//valida el tipo de dato
$metaData = $fi->getCampoMetadata($camposInfo, $campo);
$columnaTipoDato = $metaData['columnaTipoDato'];
$valorDefault = $metaData['valorDefault'];
$tipoDato = gettype($valor);
if ($tipoDato != $columnaTipoDato) {
if ($columnaTipoDato == 'integer') {
if ($tipoDato == 'string') {
$valor = str_replace(',', '', $valor);
$valor = str_replace(' ', '', $valor);
$valor = (int) $valor;
}
}
if ($columnaTipoDato == 'float') {
if ($tipoDato == 'string') {
$valor = str_replace(',', '', $valor);
$valor = str_replace(' ', '', $valor);
$valor = (float) $valor;
}
}
}
$campoSet = "set" . ucfirst($campo);
$usuUbi->$campoSet($valor);
}
$usuUbi->setClacliente($cliente);
$entityManager->persist($usuUbi);
$entityManager->flush();
$dataGrid['nomUbicacion'] = $ubicacionesRepo->findForNombreConNivel($usuUbi->getClacliente(), $usuUbi->getClaubicacion());
}
//la data
$data = [];
$data['resultado'] = $resultado;
$data['mensaje'] = $mensaje;
$data['dataGrid'] = $dataGrid;
return $data;
}
/**
* Method procMultiUbicacionesEliminar
*
* @param array $paraProceso
*
* @return void
*/
private function procMultiUbicacionesEliminar($paraProceso)
{
$entityManager = $this->getDoctrine()->getManager();
$fi = new FuncionesIvtcotizador();
$registry = $paraProceso['registry'];
$usuarioUbiRepo = new UsuarioubicacionesRepository($registry);
$claUsuarioUbicacion = $paraProceso['claUsuarioUbicacion'];
///
$controladorA = explode('\\', get_called_class());
$_n = $fi->get_n($registry, end($controladorA), __FUNCTION__, $cliente);
$rotulos = [
'exito' => $_n['exito'] ?? 'Ubicación eliminada',
'noExiste' => $_n['noExiste'] ?? 'No existe la ubicación',
];
$resultado = 1;
$mensaje = $rotulos['exito'];
$usuUbi = $usuarioUbiRepo->find($claUsuarioUbicacion);
if ($usuUbi == null) {
$resultado = -1;
$mensaje = $rotulos['noExiste'];
}
if ($resultado == 1) {
$entityManager->remove($usuUbi);
$entityManager->flush();
}
//la data
$data = [];
$data['resultado'] = $resultado;
$data['mensaje'] = $mensaje;
return $data;
}
/**
* Method procUsuariosDesactivar
*
* @param array $paraProceso
*
* @return array
*/
private function procUsuariosDesactivar($paraProceso): array
{
$entityManager = $this->getDoctrine()->getManager();
$fi = new FuncionesIvtcotizador();
$registry = $paraProceso['registry'];
$requestStack = $paraProceso['requestStack'];
$usuariosRepo = new UsuariosRepository($registry, $requestStack);
$cliente = $paraProceso['cliente'];
$datosRequest = $paraProceso['datosRequest'];
$claUsuario = $paraProceso['claUsuario'];
///
$controladorA = explode('\\', get_called_class());
$_n = $fi->get_n($registry, end($controladorA), __FUNCTION__, $cliente);
$rotulos = [
'exito' => $_n['exito'] ?? 'Usuario desactivado',
'usuarioNoExiste' => $_n['usuarioNoExiste'] ?? 'El usuario no existe',
];
$resultado = 1;
$mensaje = $rotulos['exito'];
$dataGrid = [];
$usuario = $usuariosRepo->findForClausuario($cliente, $claUsuario);
if ($usuario == null) {
$resultado = -1;
$mensaje = $rotulos['usuarioNoExiste'];
}
if ($resultado == 1) {
$usuario->setActivo('0');
$entityManager->persist($usuario);
$entityManager->flush();
$dataGrid['claUsuario'] = $usuario->getClausuario();
$dataGrid['activo'] = $usuario->getActivo();
}
//la data
$data = [];
$data['resultado'] = $resultado;
$data['mensaje'] = $mensaje;
$data['dataGrid'] = $dataGrid;
return $data;
}
/**
* Method procUsuariosActivar
*
* @param array $paraProceso
*
* @return array
*/
private function procUsuariosActivar($paraProceso): array
{
$entityManager = $this->getDoctrine()->getManager();
$fi = new FuncionesIvtcotizador();
$registry = $paraProceso['registry'];
$requestStack = $paraProceso['requestStack'];
$usuariosRepo = new UsuariosRepository($registry, $requestStack);
$cliente = $paraProceso['cliente'];
$datosRequest = $paraProceso['datosRequest'];
$claUsuario = $paraProceso['claUsuario'];
///
$controladorA = explode('\\', get_called_class());
$_n = $fi->get_n($registry, end($controladorA), __FUNCTION__, $cliente);
$rotulos = [
'exito' => $_n['exito'] ?? 'Usuario activado',
'usuarioNoExiste' => $_n['usuarioNoExiste'] ?? 'El usuario no existe',
];
$resultado = 1;
$mensaje = $rotulos['exito'];
$dataGrid = [];
$usuario = $usuariosRepo->findForClausuario($cliente, $claUsuario);
if ($usuario == null) {
$resultado = -1;
$mensaje = $rotulos['usuarioNoExiste'];
}
if ($resultado == 1) {
$usuario->setActivo('1');
$entityManager->persist($usuario);
$entityManager->flush();
$dataGrid['claUsuario'] = $usuario->getClausuario();
$dataGrid['activo'] = $usuario->getActivo();
}
//la data
$data = [];
$data['resultado'] = $resultado;
$data['mensaje'] = $mensaje;
$data['dataGrid'] = $dataGrid;
return $data;
}
/**
* Method procUsuariosCambiarContra
*
* @param array $paraProceso
*
* @return array
*/
private function procUsuariosCambiarContra($paraProceso): array
{
$fi = new FuncionesIvtcotizador();
$claUsuario = $paraProceso['claUsuario'];
$registry = $paraProceso['registry'];
$cliente = $paraProceso['cliente'];
///
$controladorA = explode('\\', get_called_class());
$_n = $fi->get_n($registry, end($controladorA), __FUNCTION__, $cliente);
$rotulos = [
'titulo' => $_n['Cambiar contraseña'] ?? 'Cambiar contraseña',
'clave' => $_n['clave'] ?? 'Clave',
'contra' => $_n['contra'] ?? 'Contraseña',
'confirmacion' => $_n['confirmacion'] ?? 'Confirmación',
'guardar' => $_n['guardar'] ?? 'Guardar',
'contraAviso' => $_n['contraAviso'] ?? 'Indique la contraseña',
'confirmacionAviso' => $_n['confirmacionAviso'] ?? 'Indique la confirmación',
'noCoinciden' => $_n['noCoinciden'] ?? 'La contraseña y la confirmación no coinciden',
'error' => $_n['error'] ?? 'Revise los campos',
'noCumple' => $_n['noCumple'] ?? 'La contraseña no cumple con las reglas. Mínimo 8 carácteres, mínimo un número',
'caracteres' => $_n['caracteres'] ?? 'Mínimo 8 caracteres',
'minuscula' => $_n['minuscula'] ?? 'Una minúscula',
'mayuscula' => $_n['mayuscula'] ?? 'Una mayúscula',
'numero' => $_n['numero'] ?? 'Un número',
'reglas' => $_n['reglas'] ?? 'Reglas de contraseñas',
];
$valores = [];
$valores['claUsuario'] = $claUsuario;
///
$html = [
"titulo" => $rotulos["titulo"],
];
///
$generales = [];
//la data
$data = [];
$data['generales'] = $generales;
$data['rotulos'] = $rotulos;
$data['html'] = $html;
$data['valores'] = $valores;
return $data;
}
/**
* Method procUsuariosCambiarContraEnviar
*
* @param array $paraProceso
*
* @return array
*/
private function procUsuariosCambiarContraEnviar($paraProceso): array
{
$entityManager = $this->getDoctrine()->getManager();
$fi = new FuncionesIvtcotizador();
$registry = $paraProceso['registry'];
$requestStack = $paraProceso['requestStack'];
$usuariosRepo = new UsuariosRepository($registry, $requestStack);
$hasher = $paraProceso['hasher'];
$cliente = $paraProceso['cliente'];
$claUsuario = $paraProceso['claUsuario'];
$contra = $paraProceso['contra'];
$contraActual = $paraProceso['contraActual'];
$id = $paraProceso['id'];
///
$controladorA = explode('\\', get_called_class());
$_n = $fi->get_n($registry, end($controladorA), __FUNCTION__, $cliente);
$rotulos = [
'exito' => $_n['exito'] ?? 'Contraseña cambiada con éxito',
'usuarioNoExiste' => $_n['usuarioNoExiste'] ?? 'El usuario no existe',
'noCoincide' => $_n['noCoincide'] ?? 'La contraseña actual no coincide',
];
$resultado = 1;
$mensaje = $rotulos['exito'];
if (strlen($contraActual) > 0) {
$usuario = $usuariosRepo->find($id);
} else {
$usuario = $usuariosRepo->findForClausuario($cliente, $claUsuario);
}
if ($usuario == null) {
$resultado = -1;
$mensaje = $rotulos['usuarioNoExiste'];
}
if ($resultado == 1) {
if (strlen($contraActual) > 0) {
$compara = $hasher->isPasswordValid($usuario, $contraActual);
if (!$compara) {
$resultado = -2;
$mensaje = $rotulos['noCoincide'];
}
}
}
if ($resultado == 1) {
$contra1 = $usuario->getContra1();
$contra2 = $usuario->getContra2();
$contra3 = $usuario->getContra3();
$contra = $hasher->hashPassword($usuario, $contra);
$usuario->setPassword($contra);
$usuario->setContra($contra);
$usuario->setContra1($contra);
$usuario->setContra2($contra1);
$usuario->setContra3($contra2);
$usuario->setFecha($fi->ivtCotizadorTiempoDT());
$entityManager->persist($usuario);
$entityManager->flush();
}
//la data
$data = [];
$data['resultado'] = $resultado;
$data['mensaje'] = $mensaje;
return $data;
}
/**
* Method procAvisosAgregar
*
* @param array $paraProceso
*
* @return array
*/
private function procAvisosAgregar($paraProceso): array
{
$entityManager = $this->getDoctrine()->getManager();
$fi = new FuncionesIvtcotizador();
$registry = $paraProceso['registry'];
$usuariosAvisosRepo = new UsuariosavisosRepository($registry);
$cliente = $paraProceso['cliente'];
$claUsuario = $paraProceso['claUsuario'];
$claSeccion = $paraProceso['claSeccion'];
///
$controladorA = explode('\\', get_called_class());
$_n = $fi->get_n($registry, end($controladorA), __FUNCTION__, $cliente);
$rotulos = [
'exito' => $_n['exito'] ?? 'Sección agregada con éxito',
'seccionYaAgregada' => $_n['seccionYaAgregada'] ?? 'Sección previamente agregada',
];
$resultado = 1;
$mensaje = $rotulos['exito'];
$dataGrid = [];
$seccionCuenta = $usuariosAvisosRepo->createQueryBuilder('s')
->select('count(s.claaviso)')
->where('s.clausuario = :claUsuario')
->andWhere('s.clatipoorigen = :claTipoOrigen')
->setParameters(['claUsuario' => $claUsuario, 'claTipoOrigen' => $claSeccion])
->getQuery()
->getSingleScalarResult();
if ($seccionCuenta > 0) {
$mensaje = $rotulos['seccionYaAgregada'];
$resultado = -2;
}
if ($resultado == 1) {
$entityManager = $this->getDoctrine()->getManager();
$qb = $entityManager->createQueryBuilder();
$qb->select('p')
->from('App\Entity\Secciones', 'p')
->where('p.claseccion = :claSeccion')
->setParameters(['claSeccion' => $claSeccion]);
$query = $qb->getQuery();
$res = $query->getResult();
$claOrigen = 0;
foreach ($res as $re) {
$claOrigen = $re->getClaorigen();
}
$usuAviso = new Usuariosavisos();
$usuAviso->setClacliente($cliente);
$usuAviso->setClaorigen($claOrigen);
$usuAviso->setClatipoorigen($claSeccion);
$usuAviso->setClausuario($claUsuario);
$entityManager->persist($usuAviso);
$entityManager->flush();
}
//la data
$data = [];
$data['resultado'] = $resultado;
$data['mensaje'] = $mensaje;
$data['dataGrid'] = $dataGrid;
return $data;
}
/**
* Method procAvisosQuitar
*
* @param array $paraProceso
*
* @return array
*/
private function procAvisosQuitar($paraProceso): array
{
$entityManager = $this->getDoctrine()->getManager();
$fi = new FuncionesIvtcotizador();
$registry = $paraProceso['registry'];
$usuariosAvisosRepo = new UsuariosavisosRepository($registry);
$cliente = $paraProceso['cliente'];
$claUsuario = $paraProceso['claUsuario'];
$claSeccion = $paraProceso['claSeccion'];
///
$controladorA = explode('\\', get_called_class());
$_n = $fi->get_n($registry, end($controladorA), __FUNCTION__, $cliente);
$rotulos = [
'exito' => $_n['exito'] ?? 'Sección quitada',
];
$resultado = 1;
$mensaje = $rotulos['exito'];
$dataGrid = [];
$res = $usuariosAvisosRepo->createQueryBuilder('s')
->where('s.clausuario = :claUsuario')
->andWhere('s.clatipoorigen = :claTipoOrigen')
->setParameters(['claUsuario' => $claUsuario, 'claTipoOrigen' => $claSeccion])
->getQuery()
->getResult();
$claAviso = 0;
foreach ($res as $re) {
$claAviso = $re->getClaaviso();
}
if ($claAviso > 0) {
$usuAviso = $usuariosAvisosRepo->find($claAviso);
$entityManager->remove($usuAviso);
$entityManager->flush();
}
//la data
$data = [];
$data['resultado'] = $resultado;
$data['mensaje'] = $mensaje;
$data['dataGrid'] = $dataGrid;
return $data;
}
/**
* Method procUsuariosAvisos
*
* @param array $paraProceso
*
* @return void
*/
private function procUsuariosAvisos($paraProceso)
{
$entityManager = $this->getDoctrine()->getManager();
$fi = new FuncionesIvtcotizador();
$registry = $paraProceso['registry'];
$usuariosAvisosRepo = new UsuariosavisosRepository($registry);
$origenesRepo = new OrigenesRepository($registry);
$seccionesRepo = new SeccionesRepository($registry);
$cliente = $paraProceso['cliente'];
$claUsuario = $paraProceso['claUsuario'];
///
$controladorA = explode('\\', get_called_class());
$_n = $fi->get_n($registry, end($controladorA), __FUNCTION__, $cliente);
$rotulos = [
'origen' => $_n['origen'] ?? 'Origen',
'seccion' => $_n['seccion'] ?? 'Sección',
'titulo' => $_n['titulo'] ?? 'Configuración de avisos',
];
$origenes = $origenesRepo->findForCatalogoIndiceEsClave();
$secciones = $seccionesRepo->findForCatalogoIndiceEsClave();
$valoresDB = $usuariosAvisosRepo->findForGrid($cliente, $claUsuario);
$valores = [];
$enLista = ['claOrigen', 'claTipoOrigen'];
foreach ($valoresDB as $x => $campos) {
$array = [];
foreach ($campos as $y => $campo) {
if (in_array($campo['alias'], $enLista)) {
$array[$campo['alias']] = $campo['valor'];
}
//nomOrigen
if ($campo['alias'] == 'claOrigen') {
$array['nomOrigen'] = $origenes[$campo['valor']] ?? '';
}
//claTipoOrigen
if ($campo['alias'] == 'claTipoOrigen') {
$array['nomTipoOrigen'] = $secciones[$campo['valor']] ?? '';
}
$array['eliminar'] = true;
}
$valores[] = $array;
}
$valoresFalta = [];
$seccionesRS = $seccionesRepo->findForRS();
foreach ($origenes as $claOrigen => $nomOrigen) {
foreach ($seccionesRS as $seccion) {
if ($seccion->getClaorigen() == $claOrigen) {
$ya = false;
foreach ($valores as $x => $valor) {
if ($valor['claOrigen'] == $claOrigen && $valor['claTipoOrigen'] == $seccion->getClaseccion()) {
$ya = true;
}
}
if (!$ya) {
$array = [];
$array['claOrigen'] = $claOrigen;
$array['claTipoOrigen'] = $seccion->getClaseccion();
$array['nomOrigen'] = $origenes[$claOrigen] ?? '';
$array['nomTipoOrigen'] = $secciones[$seccion->getClaseccion()] ?? '';
$valoresFalta[] = $array;
}
}
}
}
$catalogos = [];
$generales = [];
$generales['claUsuario'] = $claUsuario;
//la data
$data = [];
$data['rotulos'] = $rotulos;
$data['valores'] = $valores;
$data['valoresFalta'] = $valoresFalta;
$data['catalogos'] = $catalogos;
$data['generales'] = $generales;
return $data;
}
/**
* Method procUsuariosmenuPrincipal
*
* @param array $paraProceso
*
* @return void
*/
private function procUsuariosmenuPrincipal($paraProceso)
{
$entityManager = $this->getDoctrine()->getManager();
$fi = new FuncionesIvtcotizador();
$cliente = $paraProceso['cliente'];
$usuarioFunciones = $paraProceso['usuarioFunciones'];
$tipoUsuario = $paraProceso['tipoUsuario'];
///
// $controladorA = explode('\\', get_called_class());
// $_n = $fi->get_n($registry, end($controladorA), __FUNCTION__, $cliente);
//para nomenclatura utilizar queries directamente
$rotulos = [
'menu' => $_n['menu'] ?? 'Menú',
];
///
$qb = $entityManager->createQueryBuilder();
$qb->select('p')
->from('App\Entity\Funciones', 'p');
$query = $qb->getQuery();
$funcionesRS = $query->getResult();
$funciones = [];
foreach ($funcionesRS as $funcion) {
$funciones[$funcion->getClafuncion()] = [
'descripcion' => $funcion->getDescripcion(),
'padre' => $funcion->getPadre(),
'comando' => $funcion->getComando(),
'imagen' => $funcion->getImagen(),
'idTipo' => $funcion->getIdtipo(),
];
}
$modulos = [];
$subModulos = [];
foreach ($usuarioFunciones as $claFuncion => $descripcion) {
if (strlen($claFuncion) == 2) {
if (isset($funciones[$claFuncion])) {
$modulos[] = [
'claModulo' => $claFuncion,
'nomModulo' => $funciones[$claFuncion]['descripcion']
];
}
} else {
if (isset($funciones[$claFuncion])) {
if ( strlen($funciones[$claFuncion]['padre']) == 2 && strlen($funciones[$claFuncion]['comando']) > 2 ) {
$array = [];
$array['claSubModulo'] = $claFuncion;
$array['nomSubModulo'] = $funciones[$claFuncion]['descripcion'];
$array['claModulo'] = $funciones[$claFuncion]['padre'];
$array['comando'] = $funciones[$claFuncion]['comando'];
$array['imagen'] = $funciones[$claFuncion]['imagen'];
$agregar = false;
if($tipoUsuario == Usuarios::_claTipoRecolectorDatos){
if( $funciones[$claFuncion]['idTipo'] == Funciones::_idTipoColectorDatos){
$agregar = true;
}
}else{
if( $funciones[$claFuncion]['idTipo'] == Funciones::_idTipoNormal){
$agregar = true;
}
}
if($agregar){
$subModulos[] = $array;
}
}
}
}
}
//la data
$data = [];
$data['modulos'] = $modulos;
$data['subModulos'] = $subModulos;
$data['rotulos'] = $rotulos;
return $data;
}
/**
* Method procUsuariosmenuFavoritos
*
* @param array $paraProceso
*
* @return void
*/
private function procUsuariosmenuFavoritos($paraProceso){
$entityManager = $this->getDoctrine()->getManager();
$cliente = $paraProceso['cliente'];
$claUsuario = $paraProceso['claUsuario'];
///
$qb = $entityManager->createQueryBuilder();
$qb->select('p')
->from('App\Entity\Usuariosfavoritos', 'p')
->where('p.clausuario = :claUsuario')
->andWhere('p.clacliente = :cliente')
->setParameters(['claUsuario' => $claUsuario, 'cliente' => $cliente]);
$query = $qb->getQuery();
$favoritosRS = $query->getResult();
$in = [];
foreach ($favoritosRS as $favo) {
$in[] = $favo->getClafuncion();
}
$qb = $entityManager->createQueryBuilder();
$qb->select('p')
->from('App\Entity\Funciones', 'p')
->where('p.clafuncion in (:in)')
->setParameters(['in' => $in]);
$query = $qb->getQuery();
$funcionesRS = $query->getResult();
$funciones = [];
foreach ($funcionesRS as $funcion) {
$funciones[$funcion->getClafuncion()] = [
'descripcion' => $funcion->getDescripcion(),
'padre' => $funcion->getPadre(),
'comando' => $funcion->getComando(),
'imagen' => $funcion->getImagen(),
'idTipo' => $funcion->getIdtipo(),
'toolTip' => $funcion->getTooltip(),
];
}
$favoritos = [];
foreach ($favoritosRS as $favo) {
$claFuncion = $favo->getClafuncion();
if (isset($funciones[$claFuncion])) {
if ( strlen($funciones[$claFuncion]['padre']) == 2 && strlen($funciones[$claFuncion]['comando']) > 2 ) {
$array = [];
$array['claFuncion'] = $claFuncion;
$array['descripcion'] = $funciones[$claFuncion]['descripcion'];
$array['claModulo'] = $funciones[$claFuncion]['padre'];
$array['comando'] = $funciones[$claFuncion]['comando'];
$array['imagen'] = $funciones[$claFuncion]['imagen'];
$array['toolTip'] = $funciones[$claFuncion]['toolTip'];
$favoritos[] = $array;
}
}
}
//la data
$data = [];
$data['favoritos'] = $favoritos;
return $data;
}
/**
* Method procUsuariosmenuFavoritosAgregar
*
* @param array $paraProceso
*
* @return void
*/
private function procUsuariosmenuFavoritosAgregar($paraProceso){
$entityManager = $this->getDoctrine()->getManager();
$fi = new FuncionesIvtcotizador();
$registry = $paraProceso['registry'];
$cliente = $paraProceso['cliente'];
$claUsuario = $paraProceso['claUsuario'];
$claFuncion = $paraProceso['claFuncion'];
$usuariosfavoritosRepo = new UsuariosfavoritosRepository($registry);
$funcionesRepo = new FuncionesRepository($registry);
///
$controladorA = explode('\\', get_called_class());
$_n = $fi->get_n($registry, end($controladorA), __FUNCTION__, $cliente);
$rotulos = [
'exito' => $_n['exito'] ?? 'Favorito agregado con éxito',
'maximoAlcanzado' => $_n['maximoAlcanzado'] ?? 'Máximo de favoritos alcanzado',
'repetido' => $_n['repetido'] ?? 'La función ya fue agregada previamente',
];
$resultado = 1;
$mensaje = $rotulos['exito'];
//no repetir
$favoritosCuenta = $usuariosfavoritosRepo->createQueryBuilder('s')
->select('count(s.clafavorito)')
->where('s.clausuario = :claUsuario')
->andWhere('s.clacliente = :cliente')
->andWhere('s.clafuncion = :claFuncion')
->setParameters(['claUsuario' => $claUsuario, 'cliente' => $cliente, 'claFuncion' => $claFuncion])
->getQuery()
->getSingleScalarResult();
if($favoritosCuenta > 0){
$resultado = -1;
$mensaje = $rotulos['repetido'];
}
if($resultado == 1){
//maximo 10
$favoritosCuenta = $usuariosfavoritosRepo->createQueryBuilder('s')
->select('count(s.clafavorito)')
->where('s.clausuario = :claUsuario')
->andWhere('s.clacliente = :cliente')
->setParameters(['claUsuario' => $claUsuario, 'cliente' => $cliente])
->getQuery()
->getSingleScalarResult();
if($favoritosCuenta > 9){
$resultado = -2;
$mensaje = $rotulos['maximoAlcanzado'];
}
}
$dataGrid = [];
if($resultado == 1){
$favorito = new Usuariosfavoritos();
$favorito->setClacliente($cliente);
$favorito->setClausuario($claUsuario);
$favorito->setClafuncion($claFuncion);
$entityManager->persist($favorito);
$entityManager->flush();
$dataGrid['descripcion'] = '';
$dataGrid['imagen'] = '';
$dataGrid['toolTip'] = '';
$dataGrid['comando'] = '';
$dataGrid['padre'] = '';
$funcionesRS = $funcionesRepo->findForRS($claFuncion);
foreach ($funcionesRS as $fun) {
$dataGrid['descripcion'] = $fun->getDescripcion();
$dataGrid['imagen'] = $fun->getImagen();
$dataGrid['toolTip'] = $fun->getTooltip();
$dataGrid['comando'] = $fun->getComando();
$dataGrid['padre'] = $fun->getPadre();
}
}
//la data
$data = [];
$data['resultado'] = $resultado;
$data['mensaje'] = $mensaje;
$data['dataGrid'] = $dataGrid;
return $data;
}
/**
* Method procUsuariosmenuFavoritosQuitar
*
* @param array $paraProceso
*
* @return void
*/
private function procUsuariosmenuFavoritosQuitar($paraProceso){
$entityManager = $this->getDoctrine()->getManager();
$fi = new FuncionesIvtcotizador();
$registry = $paraProceso['registry'];
$cliente = $paraProceso['cliente'];
$claUsuario = $paraProceso['claUsuario'];
$claFuncion = $paraProceso['claFuncion'];
$usuariosfavoritosRepo = new UsuariosfavoritosRepository($registry);
///
$controladorA = explode('\\', get_called_class());
$_n = $fi->get_n($registry, end($controladorA), __FUNCTION__, $cliente);
$rotulos = [
'exito' => $_n['exito'] ?? 'Favorito removido',
'noExiste' => $_n['noExiste'] ?? 'Favorito no existe',
];
$resultado = 1;
$mensaje = $rotulos['exito'];
//claFavorito
$qb = $entityManager->createQueryBuilder();
$qb->select('s')
->from('App\Entity\Usuariosfavoritos', 's')
->where('s.clausuario = :claUsuario')
->andWhere('s.clacliente = :cliente')
->andWhere('s.clafuncion = :claFuncion')
->setParameters(['claUsuario' => $claUsuario, 'cliente' => $cliente, 'claFuncion' => $claFuncion]);
$query = $qb->getQuery();
$favoritosRS = $query->getResult();
$claFavorito = 0;
foreach ($favoritosRS as $favo) {
$claFavorito = $favo->getClafavorito();
}
if($claFavorito == 0){
$resultado = -1;
$mensaje = $rotulos['noExiste'];
}
if($resultado == 1){
$favorito = $usuariosfavoritosRepo->find($claFavorito);
$entityManager->remove($favorito);
$entityManager->flush();
}
//la data
$data = [];
$data['resultado'] = $resultado;
$data['mensaje'] = $mensaje;
return $data;
}
/**
* Method procUsuariosSubMenu
*
* @param array $paraProceso
*
* @return void
*/
private function procUsuariosSubMenu($paraProceso){
$entityManager = $this->getDoctrine()->getManager();
$cliente = $paraProceso['cliente'];
$claUsuario = $paraProceso['claUsuario'];
$subMenuRama = $paraProceso['subMenuRama'];
$usuarioFunciones = $paraProceso['usuarioFunciones'];
///
$subMenuRama = strlen($subMenuRama) > 0 ? $subMenuRama : 'XXX';
$qb = $entityManager->createQueryBuilder();
$qb->select('p')
->from('App\Entity\Funciones', 'p')
->where('p.clafuncion like :like')
->setParameters(['like' => $subMenuRama . "%"]);
$query = $qb->getQuery();
$funcionesRS = $query->getResult();
$funciones = [];
foreach ($funcionesRS as $funcion) {
$funciones[$funcion->getClafuncion()] = [
'descripcion' => $funcion->getDescripcion(),
'padre' => $funcion->getPadre(),
'comando' => $funcion->getComando(),
'imagen' => $funcion->getImagen(),
'idTipo' => $funcion->getIdtipo(),
'toolTip' => $funcion->getTooltip(),
];
}
$subMenu = [];
foreach ($usuarioFunciones as $claFuncion => $funcion) {
if (isset($funciones[$claFuncion])) {
if ( strlen($funciones[$claFuncion]['padre']) == 2 && strlen($funciones[$claFuncion]['comando']) > 2 ) {
$array = [];
$array['claFuncion'] = $claFuncion;
$array['descripcion'] = $funciones[$claFuncion]['descripcion'];
$array['claModulo'] = $funciones[$claFuncion]['padre'];
$array['comando'] = $funciones[$claFuncion]['comando'];
$array['imagen'] = $funciones[$claFuncion]['imagen'];
$array['toolTip'] = $funciones[$claFuncion]['toolTip'];
$subMenu[] = $array;
}
}
}
//la data
$data = [];
$data['subMenu'] = $subMenu;
return $data;
}
/**
* Method procUsuariosMenuUsuario
*
* @param array $paraProceso
*
* @return void
*/
private function procUsuariosMenuUsuario($paraProceso){
$fi = new FuncionesIvtcotizador();
$registry = $paraProceso['registry'];
$claUsuario = $paraProceso['claUsuario'];
$cliente = $paraProceso['cliente'];
$nomUsuario = $paraProceso['nomUsuario'];
$ubicacionesRepo = new UbicacionesRepository($registry);
$claUbicacion = $paraProceso['claUbicacion'];
$clienteIdTipo = $paraProceso['clienteIdTipo'];
$sesion = $paraProceso['sesion'];
///
$controladorA = explode('\\', get_called_class());
$_n = $fi->get_n($registry, end($controladorA), __FUNCTION__, $cliente);
$rotulos = [
'salir' => $_n['salir'] ?? 'Salir de IVTCotizador',
'ubicacion' => $_n['ubicacion'] ?? 'Ubicación',
'contra' => $_n['contra'] ?? 'Contraseña',
'contraCambio' => $_n['contraCambio'] ?? 'Cambio de contraseña',
'ubicacionCambio' => $_n['ubicacionCambio'] ?? 'Cambio de ubicación',
'perfilCliente' => $_n['perfilCliente'] ?? 'Perfil empresa',
'perfilClienteTip' => $_n['perfilClienteTip'] ?? 'Datos generales de la empresa',
'avisoPrivacidad' => $_n['avisoPrivacidad'] ?? 'Aviso de privacidad',
'terminos' => $_n['terminos'] ?? 'Términos y condiciones',
];
$valores = [
'nomUsuario' => $nomUsuario,
'nomUbicacion' => $ubicacionesRepo->findForNombre($cliente, $claUbicacion),
'clienteIdTipo' => $clienteIdTipo,
];
$generales = [];
$generales['multiUbicacion'] = isset($sesion->get('parametros')['MultiUbicacion']) ? $sesion->get('parametros')['MultiUbicacion'] : '0';
//la data
$data = [];
$data['rotulos'] = $rotulos;
$data['valores'] = $valores;
$data['generales'] = $generales;
return $data;
}
/**
* Method procUsuariosContraCambiar
*
* @param array $paraProceso
*
* @return void
*/
private function procUsuariosContraCambiar($paraProceso){
$fi = new FuncionesIvtcotizador();
$registry = $paraProceso['registry'];
$cliente = $paraProceso['cliente'];
///
$controladorA = explode('\\', get_called_class());
$_n = $fi->get_n($registry, end($controladorA), __FUNCTION__, $cliente);
$rotulos = [
'guardar' => $_n['guardar'] ?? 'Guardar',
'titulo' => $_n['titulo'] ?? 'Cambio de contraseña',
'contraActual' => $_n['contraActual'] ?? 'Contraseña actual',
'contra' => $_n['contra'] ?? 'Nueva contraseña',
'confirmacion' => $_n['confirmacion'] ?? 'Confirmación',
'contraActualAviso' => $_n['contraActualAviso'] ?? 'Indique la contraseña actual',
'contraAviso' => $_n['contraAviso'] ?? 'Indique la nueva contraseña',
'confirmacionAviso' => $_n['confirmacionAviso'] ?? 'Indique la confirmación',
'noCoinciden' => $_n['noCoinciden'] ?? 'La contraseña y la confirmación no coinciden',
'reglas' => $_n['reglas'] ?? 'Reglas de contraseñas',
'caracteres' => $_n['caracteres'] ?? 'Mínimo ocho caracteres',
'minuscula' => $_n['minuscula'] ?? 'Por lo menos una minúscula',
'mayuscula' => $_n['mayuscula'] ?? 'Por lo menos una mayúscula',
'numero' => $_n['numero'] ?? 'Por lo menos un número',
'noCumple' => $_n['noCumple'] ?? 'La contraseña no cumple con las reglas. Mínimo 8 carácteres, mínimo un número',
'cerrar' => $_n['cerrar'] ?? 'Cerrar',
];
$valores = [
'contraActual' => '',
'contra' => '',
];
//la data
$data = [];
$data['rotulos'] = $rotulos;
$data['valores'] = $valores;
return $data;
}
/**
* Method procLogin
*
* @param $paraProceso $paraProceso [explicite description]
*
* @return void
*/
private function procLogin($paraProceso){
$entityManager = $this->getDoctrine()->getManager();
$fi = new FuncionesIvtcotizador();
$registry = $paraProceso['registry'];
//$HTTP_HOST = $paraProceso['HTTP_HOST'];
$lastUsername = $paraProceso['lastUsername'];
///
//$clientesRepo = new ClientesRepository($registry);
//$usuariosRepo = new UsuariosRepository($registry, $requestStack);
///
//$claStatus = 0;
//$servidorDatos = $fi->servidorDatos($HTTP_HOST);
//$claCliente = 0;
//$usuario = $usuariosRepo->findForCorreoSinCliente($correo);
// switch ($servidorDatos['tipo']) {
// case 'subDominio':
// $clientes = $clientesRepo->findBySubdominio($servidorDatos['subDominio']);
// foreach ($clientes as $cliente) {
// $claCliente = $cliente->getClacliente();
// $claStatus = $cliente->getClastatus();
// break;
// }
// break;
// }
///
$controladorA = explode('\\', get_called_class());
$_n = $fi->get_n($registry, end($controladorA), __FUNCTION__, 0);
$rotulos = [
'entrar' => $_n['entrar'] ?? 'Entrar',
'nomUsuario' => $_n['nomUsuario'] ?? 'Usuario',
'contra' => $_n['contra'] ?? 'Contraseña',
'nomUsuarioAviso' => $_n['nomUsuarioAviso'] ?? 'Indique el usuario',
'contraAviso' => $_n['contraAviso'] ?? 'Indique la contraseña',
'olvido' => $_n['olvido'] ?? '¿Olvidaste la contraseña?',
'titulo' => $_n['titulo'] ?? 'Bienvenido',
'olvidoTitulo' => $_n['olvidoTitulo'] ?? 'Recuperación de contraseña',
'recuperar' => $_n['recuperar'] ?? 'Recuperar',
'cancelar' => $_n['cancelar'] ?? 'Cancelar',
'correo' => $_n['correo'] ?? 'Correo',
'correoAviso' => $_n['correoAviso'] ?? 'Indique el correo',
'errorInstancia' => $_n['errorInstancia'] ?? 'Error en la instancia',
'cerrar' => $_n['cerrar'] ?? 'Cerrar',
'errorUsuario' => $_n['errorUsuario'] ?? 'Error en usuario o contraseña',
//'cuentaSuspendida' => $_n['cuentaSuspendida'] ?? 'Cuenta suspendida',
];
$valores = [
'nomUsuario' => $lastUsername,
];
$generales = [];
$cerrar = $rotulos['cerrar'];
$errorCredenciales = $rotulos['errorUsuario'];
$error = false;
// $plantilla = 'usuarios/login.twig';
// if ($claCliente == 0) {
// $errorCredenciales = $rotulos['errorInstancia'];
// $error = true;
// $plantilla = 'usuarios/loginCuentaSuspendida.twig';
// } else {
// $error = false;
// if ($claStatus != Clientes::_claStatusActivo) {
// $errorCredenciales = $rotulos['cuentaSuspendida'];
// $error = true;
// $plantilla = 'usuarios/loginCuentaSuspendida.twig';
// }
// }
///
$data = [];
$data['rotulos'] = $rotulos;
$data['valores'] = $valores;
$data['generales'] = $generales;
//$data['claCliente'] = $claCliente;
$data['cerrar'] = $cerrar;
$data['errorCredenciales'] = $errorCredenciales;
//$data['plantilla'] = $plantilla;
$data['error'] = $error;
return $data;
}
/**
* Method procUbicacionCambiar
*
* @param array $paraProceso
*
* @return void
*/
private function procUbicacionCambiar($paraProceso)
{
$entityManager = $this->getDoctrine()->getManager();
$fi = new FuncionesIvtcotizador();
$registry = $paraProceso['registry'];
$usuarioUbiRepo = new UsuarioubicacionesRepository($registry);
$ubicacionesRepo = new UbicacionesRepository($registry);
$cliente = $paraProceso['cliente'];
$claUsuario = $paraProceso['claUsuario'];
$claUbicacion = $paraProceso['claUbicacion'];
///
$controladorA = explode('\\', get_called_class());
$_n = $fi->get_n($registry, end($controladorA), __FUNCTION__, $cliente);
$rotulos = [
'titulo' => $_n['titulo'] ?? 'Cambio de ubicación',
'nomUbicacion' => $_n['nomUbicacion'] ?? 'Ubicación',
'ubicacion' => $_n['ubicacion'] ?? 'Ubicación',
'region' => $_n['region'] ?? 'Región',
'centro' => $_n['centro'] ?? 'Centro',
'agregar' => $_n['agregar'] ?? 'Agregar',
'cambiar' => $_n['cambiar'] ?? 'Cambiar',
'cambiarTip' => $_n['cambiarTip'] ?? 'Cambia a la ubicación seleccionada',
];
$ubicaciones = $ubicacionesRepo->findForIndiceEsClaveConNivel($cliente);
$valoresDB = $usuarioUbiRepo->findForGrid($cliente, $claUsuario);
$valores = [];
$enLista = ['claUsuario', 'claUbicacion', 'claUsuarioUbicacion'];
$cuentas = [];
foreach ($valoresDB as $x => $campos) {
$array = [];
$agregar = true;
foreach ($campos as $y => $campo) {
if (in_array($campo['alias'], $enLista)) {
$array[$campo['alias']] = $campo['valor'];
}
//nomUbicacion
if ($campo['alias'] == 'claUbicacion') {
$array['nomUbicacion'] = $ubicaciones[$campo['valor']] ?? '';
if($campo['valor'] == $claUbicacion){
$agregar = false;
}
}
$array['eliminar'] = true;
if ($campo['alias'] == 'claUsuarioUbicacion') {
$cuentas[$campo['valor']] = 0;
}
}
if($agregar){
$valores[] = $array;
}
}
$generales = [];
$generales['claUsuario'] = $claUsuario;
//la data
$data = [];
$data['rotulos'] = $rotulos;
$data['valores'] = $valores;
$data['generales'] = $generales;
return $data;
}
/**
* Method procUbicacionCambiarEnviar
*
* @param array $paraProceso
*
* @return array
*/
private function procUbicacionCambiarEnviar($paraProceso): array
{
$fi = new FuncionesIvtcotizador();
$registry = $paraProceso['registry'];
$usuarioUbiRepo = new UsuarioubicacionesRepository($registry);
$ubicacionesRepo = new UbicacionesRepository($registry);
$cliente = $paraProceso['cliente'];
$sesion = $paraProceso['sesion'];
$claUsuarioUbicacion = $paraProceso['claUsuarioUbicacion'];
///
$controladorA = explode('\\', get_called_class());
$_n = $fi->get_n($registry, end($controladorA), __FUNCTION__, $cliente);
$rotulos = [
'exito' => $_n['exito'] ?? 'Ubicación cambiada con éxito',
'noExiste' => $_n['noExiste'] ?? 'La ubicación no existe',
];
$resultado = 1;
$mensaje = $rotulos['exito'];
$usuarioUbicacion = $usuarioUbiRepo->find($claUsuarioUbicacion);
if ($usuarioUbicacion == null) {
$resultado = -1;
$mensaje = $rotulos['noExiste'];
}
if ($resultado == 1) {
//$sesion->set('claUbicacion', $usuarioUbicacion->getClaubicacion());
$claUbicacion = $usuarioUbicacion->getClaubicacion();
$nomUbicacion = $ubicacionesRepo->findForNombre($cliente, $claUbicacion);
}
//la data
$data = [];
$data['resultado'] = $resultado;
$data['mensaje'] = $mensaje;
$data['claUbicacion'] = $claUbicacion;
$data['nomUbicacion'] = $nomUbicacion;
return $data;
}
/**
* Method procUsuariosPerfiles
*
* @param $paraProceso $paraProceso [explicite description]
*
* @return array
*/
private function procUsuariosPerfiles($paraProceso): array
{
$fi = new FuncionesIvtcotizador();
$registry = $paraProceso['registry'];
$requestStack = $paraProceso['requestStack'];
$usuarioFunciones = $paraProceso['usuarioFunciones'];
$cliente = $paraProceso['cliente'];
///
$perfilesRepo = new PerfilesRepository($registry);
$usuariosRepo = new UsuariosRepository($registry, $requestStack);
$funcionesRepo = new FuncionesRepository($registry);
///
$controladorA = explode('\\', get_called_class());
$_n = $fi->get_n($registry, end($controladorA), __FUNCTION__, $cliente);
$rotulos = [
'titulo' => $_n['titulo'] ?? 'Perfiles',
'exportar' => $_n['exportar'] ?? 'Exportar',
'nuevo' => $_n['nuevo'] ?? 'Nuevo',
'perfil' => $_n['perfil'] ?? 'Perfil',
'perfiles' => $_n['perfiles'] ?? 'Perfiles',
'eliminarConfirmar' => $_n['eliminarConfirmar'] ?? '¿Está seguro de querer eliminar este perfil?',
'opciones' => $_n['opciones'] ?? 'Opciones',
'opcionesTip' => $_n['opcionesTip'] ?? 'Opciones del perfil',
'eliminar' => $_n['eliminar'] ?? 'Eliminar',
'eliminarTip' => $_n['eliminarTip'] ?? 'Elimina al perfil seleccionado',
];
$valoresDB = $perfilesRepo->findForGrid($cliente);
$valores = [];
$enLista = ['claPerfil', 'nomPerfil'];
$cuentas = [];
foreach ($valoresDB as $x => $campos) {
$array = [];
foreach ($campos as $y => $campo) {
if (in_array($campo['alias'], $enLista)) {
$array[$campo['alias']] = $campo['valor'];
}
$array['eliminar'] = true;
if ($campo['alias'] == 'claPerfil') {
$cuentas[$campo['valor']] = 0;
}
}
$valores[] = $array;
}
$usuarios = $usuariosRepo->findForCatalogoRS($cliente);
foreach ($usuarios as $usuario) {
$cuentas[$usuario->getClaperfil()]++;
}
foreach ($valores as $v => $valor) {
$claPerfil = $valor["claPerfil"];
$cuenta = 0;
if (isset($cuentas[$claPerfil])) {
$cuenta = $cuentas[$claPerfil];
}
if ($cuenta > 0) {
$valores[$v]['eliminar'] = false;
}
}
///
$html = [
"titulo" => $rotulos['titulo'],
];
$funcionesRegistro = $funcionesRepo->findForHijas('20T01', 2);
foreach ($funcionesRegistro as $claFuncion => $fun) {
$funcionesRegistro[$claFuncion]['conDerecho'] = false;
foreach ($usuarioFunciones as $claFun => $nomFuncion){
if($claFuncion == $claFun){
$funcionesRegistro[$claFuncion]['conDerecho'] = true;
break;
}
}
}
//la data
$data = [];
$data['rotulos'] = $rotulos;
$data['valores'] = $valores;
$data['funcionesRegistro'] = $funcionesRegistro;
$data['html'] = $html;
return $data;
}
/**
* Method procUsuariosPerfilesEditar
*
* @param $paraProceso $paraProceso [explicite description]
*
* @return array
*/
private function procUsuariosPerfilesEditar($paraProceso): array
{
$fi = new FuncionesIvtcotizador();
$registry = $paraProceso['registry'];
$cliente = $paraProceso['cliente'];
$claPerfil = $paraProceso['claPerfil'];
///
$perfilesRepo = new PerfilesRepository($registry);
///
$generales = [];
$generales['claPerfil'] = $claPerfil;
$generales['nuevo'] = $claPerfil > 0 ? 0 : 1;
///
$controladorA = explode('\\', get_called_class());
$_n = $fi->get_n($registry, end($controladorA), __FUNCTION__, $cliente);
$rotulos = [
'nuevoPerfil' => $_n['nuevoPerfil'] ?? 'Nuevo perfil',
'editarPerfil' => $_n['editarPerfil'] ?? 'Modificar perfil',
'cancelar' => $_n['cancelar'] ?? 'Cancelar',
'nomPerfil' => $_n['nomPerfil'] ?? 'Perfil',
'guardar' => $_n['guardar'] ?? 'Guardar',
'nomPerfilAviso' => $_n['nomPerfilAviso'] ?? 'Indique el perfil',
'error' => $_n['error'] ?? 'Revise los campos',
];
///
$html = [];
$html["nuevo"] = $claPerfil > 0 ? self::_editar : self::_nuevo;
///
if ($claPerfil > 0) {
$rotulos['titulo'] = $rotulos['editarPerfil'];
$valoresFor = $perfilesRepo->findForEditar($cliente, $claPerfil);
} else {
$rotulos['titulo'] = $rotulos['nuevoPerfil'];
$valoresFor = $perfilesRepo->findForNuevo();
}
$valores = [];
foreach ($valoresFor as $v => $valor) {
$valores[$valor['alias']] = $valor['valor'];
}
//la data
$data = [];
$data['rotulos'] = $rotulos;
$data['valores'] = $valores;
$data['generales'] = $generales;
$data['html'] = $html;
return $data;
}
/**
* Method procUsuariosPerfilesEnviar
*
* @param $paraProceso $paraProceso [explicite description]
*
* @return array
*/
private function procUsuariosPerfilesEnviar($paraProceso): array
{
$entityManager = $this->getDoctrine()->getManager();
$registry = $paraProceso['registry'];
$cliente = $paraProceso['cliente'];
$perfilesRepo = new PerfilesRepository($registry);
$claPerfil = $paraProceso['claPerfil'];
$nuevo = $paraProceso['nuevo'];
$data = $paraProceso['data'];
$fi = new FuncionesIvtcotizador();
///
$controladorA = explode('\\', get_called_class());
$_n = $fi->get_n($registry, end($controladorA), __FUNCTION__, $cliente);
$rotulos = [
'exito' => $_n['exito'] ?? 'Perfil actualizado con éxito',
'noExiste' => $_n['noExiste'] ?? 'El perfil no existe',
];
$resultado = 1;
$mensaje = $rotulos['exito'];
$perfil = new Perfiles();
if ($nuevo == self::_editar) {
$perfil = $perfilesRepo->find($claPerfil);
if ($perfil == null) {
$resultado = -1;
$mensaje = $rotulos['noExiste'];
}
}
$dataGrid = [];
if ($resultado == 1) {
$camposContinuar = ['claperfil', 'nuevo'];
$camposSoloNuevo = ['clacliente'];
$camposParaGrid = ['nomperfil'];
foreach ($data as $d => $valor) {
$campo = strtolower($d);
if (in_array($campo, $camposContinuar)) {
continue;
}
if (in_array($campo, $camposParaGrid)) {
$dataGrid[$d] = $valor;
}
if ($nuevo == 1) {
if ($campo == 'clacliente') {
$valor = $cliente;
}
} else {
if (in_array($campo, $camposSoloNuevo)) {
continue;
}
}
$campoSet = "set" . ucfirst($campo);
$perfil->$campoSet($valor);
}
$entityManager->persist($perfil);
$entityManager->flush();
$dataGrid['claPerfil'] = $perfil->getClaperfil();
}
//la data
$data = [];
$data['resultado'] = $resultado;
$data['mensaje'] = $mensaje;
$data['dataGrid'] = $dataGrid;
return $data;
}
/**
* Method procUsuariosPerfilesOpciones
*
* @param $paraProceso $paraProceso [explicite description]
*
* @return array
*/
private function procUsuariosPerfilesOpciones($paraProceso): array
{
$fi = new FuncionesIvtcotizador();
$registry = $paraProceso['registry'];
$cliente = $paraProceso['cliente'];
$perfilesRepo = new PerfilesRepository($registry);
$perfilFuncionesRepo = new PerfilfuncionesRepository($registry);
$clienteFuncionesRepo = new ClientefuncionesRepository($registry);
$funcionesRepo = new FuncionesRepository($registry);
$claPerfil = $paraProceso['claPerfil'];
///
$generales = [];
$generales['claPerfil'] = $claPerfil;
///
$controladorA = explode('\\', get_called_class());
$_n = $fi->get_n($registry, end($controladorA), __FUNCTION__, $cliente);
$rotulos = [
'aplicarSubNiveles' => $_n['aplicarSubNiveles'] ?? 'Aplicar a subNiveles',
'opciones' => $_n['opciones'] ?? 'Opciones del perfil',
];
$rotulos["nomPerfil"] = $perfilesRepo->findForNombre($cliente, $claPerfil);
///
$html = [];
$funcionesPerfil = $perfilFuncionesRepo->findForClaCliente($cliente, $claPerfil);
$funcionesCliente = $clienteFuncionesRepo->findForCatalogo($cliente);
$funciones = [];
$funNivel1 = $funcionesRepo->findForNivel(1);
$funNivel2 = $funcionesRepo->findForNivel(2);
$funNivel3 = $funcionesRepo->findForNivel(3);
$funNivel4 = $funcionesRepo->findForNivel(4);
$funNivel5 = $funcionesRepo->findForNivel(5);
$funNivel6 = $funcionesRepo->findForNivel(6);
$funNivel7 = $funcionesRepo->findForNivel(7);
foreach ($funNivel1 as $claFuncion => $fun) {
$fun['seleccionada'] = false;
$fun['title'] = $fun['descripcion'];
$fun['claFuncion'] = $claFuncion;
$fun['folder'] = true;
$fun['expanded'] = false;
$fun['extraClasses'] = 'no-seleccionada';
$fun['children'] = [];
foreach ($funNivel2 as $claFuncion2 => $fun2) {
if ($claFuncion == $fun2['padre']) {
$fun2['seleccionada'] = false;
$fun2['title'] = $fun2['descripcion'];
$fun2['claFuncion'] = $claFuncion2;
$fun2['expanded'] = false;
$fun2['extraClasses'] = 'no-seleccionada';
$fun2['children'] = [];
foreach ($funNivel3 as $claFuncion3 => $fun3) {
if ($claFuncion2 == $fun3['padre']) {
$fun3['seleccionada'] = false;
$fun3['title'] = $fun3['descripcion'];
$fun3['claFuncion'] = $claFuncion3;
$fun3['expanded'] = false;
$fun3['extraClasses'] = 'no-seleccionada';
$fun3['children'] = [];
foreach ($funNivel4 as $claFuncion4 => $fun4) {
if ($claFuncion3 == $fun4['padre']) {
$fun4['seleccionada'] = false;
$fun4['title'] = $fun4['descripcion'];
$fun4['claFuncion'] = $claFuncion4;
$fun4['expanded'] = false;
$fun4['extraClasses'] = 'no-seleccionada';
$fun4['children'] = [];
foreach ($funNivel5 as $claFuncion5 => $fun5) {
if ($claFuncion4 == $fun5['padre']) {
$fun5['seleccionada'] = false;
$fun5['title'] = $fun5['descripcion'];
$fun5['claFuncion'] = $claFuncion5;
$fun5['expanded'] = false;
$fun5['extraClasses'] = 'no-seleccionada';
$fun5['children'] = [];
foreach ($funNivel6 as $claFuncion6 => $fun6) {
if ($claFuncion5 == $fun6['padre']) {
$fun6['seleccionada'] = false;
$fun6['title'] = $fun6['descripcion'];
$fun6['claFuncion'] = $claFuncion6;
$fun6['expanded'] = false;
$fun6['extraClasses'] = 'no-seleccionada';
$fun6['children'] = [];
foreach ($funNivel7 as $claFuncion7 => $fun7) {
if ($claFuncion6 == $fun7['padre']) {
$fun7['seleccionada'] = false;
$fun7['title'] = $fun7['descripcion'];
$fun7['claFuncion'] = $claFuncion7;
$fun7['expanded'] = false;
$fun7['extraClasses'] = 'no-seleccionada';
$fun7['children'] = [];
if (in_array($claFuncion7, $funcionesCliente)) {
$fun6['children'][] = $fun7;
}
}
}//nivel 7
if (in_array($claFuncion6, $funcionesCliente)) {
$fun5['children'][] = $fun6;
}
}
}//nivel 6
if (in_array($claFuncion5, $funcionesCliente)) {
$fun4['children'][] = $fun5;
}
}
}//nivel 5
if (in_array($claFuncion4, $funcionesCliente)) {
$fun3['children'][] = $fun4;
}
}
}//nivel 4
if (in_array($claFuncion3, $funcionesCliente)) {
$fun2['children'][] = $fun3;
}
}
}//nivel 3
if (in_array($claFuncion2, $funcionesCliente)) {
$fun['children'][] = $fun2;
}
}
}//nivel 2
if (in_array($claFuncion, $funcionesCliente)) {
$funciones[] = $fun;
}
}
foreach ($funcionesPerfil as $cliFun) {
$claFuncion = $cliFun->getClaFuncion();
foreach ($funciones as $clave => $fun) {
if ($claFuncion == $fun['claFuncion']) {
$funciones[$clave]['seleccionada'] = true;
$funciones[$clave]['extraClasses'] = 'seleccionada';
break;
} else {
foreach ($fun['children'] as $clave2 => $fun2) {
if ($claFuncion == $fun2['claFuncion']) {
$funciones[$clave]['children'][$clave2]['seleccionada'] = true;
$funciones[$clave]['children'][$clave2]['extraClasses'] = 'seleccionada';
break;
} else {
foreach ($fun2['children'] as $clave3 => $fun3) {
if ($claFuncion == $fun3['claFuncion']) {
$funciones[$clave]['children'][$clave2]['children'][$clave3]['seleccionada'] = true;
$funciones[$clave]['children'][$clave2]['children'][$clave3]['extraClasses'] = 'seleccionada';
break;
} else {
foreach ($fun3['children'] as $clave4 => $fun4) {
if ($claFuncion == $fun4['claFuncion']) {
$funciones[$clave]['children'][$clave2]['children'][$clave3]['children'][$clave4]['seleccionada'] = true;
$funciones[$clave]['children'][$clave2]['children'][$clave3]['children'][$clave4]['extraClasses'] = 'seleccionada';
break;
} else {
foreach ($fun4['children'] as $clave5 => $fun5) {
if ($claFuncion == $fun5['claFuncion']) {
$funciones[$clave]['children'][$clave2]['children'][$clave3]['children'][$clave4]['children'][$clave5]['seleccionada'] = true;
$funciones[$clave]['children'][$clave2]['children'][$clave3]['children'][$clave4]['children'][$clave5]['extraClasses'] = 'seleccionada';
break;
} else {
foreach ($fun5['children'] as $clave6 => $fun6) {
if ($claFuncion == $fun6['claFuncion']) {
$funciones[$clave]['children'][$clave2]['children'][$clave3]['children'][$clave4]['children'][$clave5]['children'][$clave6]['seleccionada'] = true;
$funciones[$clave]['children'][$clave2]['children'][$clave3]['children'][$clave4]['children'][$clave5]['children'][$clave6]['extraClasses'] = 'seleccionada';
break;
}
foreach ($fun6['children'] as $clave7 => $fun7) {
if ($claFuncion == $fun7['claFuncion']) {
$funciones[$clave]['children'][$clave2]['children'][$clave3]['children'][$clave4]['children'][$clave5]['children'][$clave6]['children'][$clave7]['seleccionada'] = true;
$funciones[$clave]['children'][$clave2]['children'][$clave3]['children'][$clave4]['children'][$clave5]['children'][$clave6]['children'][$clave7]['extraClasses'] = 'seleccionada';
break;
}
}
}
}
}
}
}
}
}
}
}
}
}
}
//la data
$data = [];
$data['rotulos'] = $rotulos;
$data['generales'] = $generales;
$data['funciones'] = $funciones;
$data['html'] = $html;
return $data;
}
/**
* Method procUsuariosPerfilesOpcionesEnviar
*
* @param $paraProceso $paraProceso [explicite description]
*
* @return array
*/
private function procUsuariosPerfilesOpcionesEnviar($paraProceso): array
{
$entityManager = $this->getDoctrine()->getManager();
$fi = new FuncionesIvtcotizador();
$registry = $paraProceso['registry'];
$cliente = $paraProceso['cliente'];
$claPerfil = $paraProceso['claPerfil'];
$funciones = $paraProceso['funciones'];
$seleccionada = $paraProceso['seleccionada'];
///
$seleccionada = $seleccionada == 'true' ? true : false;
///
$controladorA = explode('\\', get_called_class());
$_n = $fi->get_n($registry, end($controladorA), __FUNCTION__, $cliente);
$rotulos = [
'exito' => $_n['exito'] ?? 'Funciones guardadas con éxito',
];
$resultado = 1;
$mensaje = $rotulos['exito'];
$funA = explode('|', $funciones);
foreach ($funA as $x => $fun) {
if (strlen($fun) > 0) {
if ($seleccionada) {
$funcion = new Perfilfunciones();
$funcion->setClacliente($cliente);
$funcion->setClaperfil($claPerfil);
$funcion->setClafuncion($fun);
$entityManager->persist($funcion);
$entityManager->flush();
} else {
//elimina
$qb = $entityManager->createQueryBuilder();
$qb->delete()
->from('App\Entity\Perfilfunciones', 'p')
->where('p.clafuncion = :claFuncion')
->andWhere('p.clacliente = :claCliente')
->andWhere('p.claperfil = :claPerfil')
->setParameters(['claFuncion' => $fun, 'claPerfil' => $claPerfil, 'claCliente' => $cliente])
->getQuery()
->getResult();
//elimina de favoritos
$qb = $entityManager->createQueryBuilder();
$qb->delete()
->from('App\Entity\Usuariosfavoritos', 'p')
->where('p.clafuncion = :claFuncion')
->andWhere('p.clacliente = :claCliente')
->setParameters(['claFuncion' => $fun, 'claCliente' => $claPerfil])
->getQuery()
->getResult();
}
}
}
//la data
$data = [];
$data['resultado'] = $resultado;
$data['mensaje'] = $mensaje;
return $data;
}
/**
* Method procUsuariosPerfilesEliminar
*
* @param $paraProceso $paraProceso [explicite description]
*
* @return array
*/
private function procUsuariosPerfilesEliminar($paraProceso): array
{
$entityManager = $this->getDoctrine()->getManager();
$fi = new FuncionesIvtcotizador();
$registry = $paraProceso['registry'];
$claPerfil = $paraProceso['claPerfil'];
$cliente = $paraProceso['cliente'];
$perfilesRepo = new PerfilesRepository($registry);
///
$resultado = 1;
///
$controladorA = explode('\\', get_called_class());
$_n = $fi->get_n($registry, end($controladorA), __FUNCTION__, $cliente);
$rotulos = [
'exito' => $_n['exito'] ?? 'Perfil eliminado',
'noExiste' => $_n['noExiste'] ?? 'Perfil no existe',
];
$mensaje = $rotulos['exito'];
$perfil = $perfilesRepo->find($claPerfil);
if ($perfil == null) {
$resultado = -1;
$mensaje = $rotulos['noExiste'];
} else {
//elimina opciones
$qb = $entityManager->createQueryBuilder();
$qb->delete()
->from('App\Entity\Perfilfunciones', 'k')
->where('k.claperfil = :claPerfil')
->setParameters(['claPerfil' => $claPerfil,]);
$query = $qb->getQuery();
$query->execute();
//elimina al perfil
$entityManager->remove($perfil);
$entityManager->flush();
}
//la data
$data = [];
$data['resultado'] = $resultado;
$data['mensaje'] = $mensaje;
return $data;
}
/**
* Method procContraRecuperarEnviar
*
* @param $paraProceso $paraProceso [explicite description]
*
* @return array
*/
private function procContraRecuperarEnviar($paraProceso): array
{
$entityManager = $this->getDoctrine()->getManager();
$fi = new FuncionesIvtcotizador();
$registry = $paraProceso['registry'];
$requestStack = $paraProceso['requestStack'];
$correo = $paraProceso['correo'];
$hasher = $paraProceso['hasher'];
$mailer = $paraProceso['mailer'];
///
$usuariosRepo = new UsuariosRepository($registry, $requestStack);
///
$resultado = 1;
///
//aplicar solo _idioma
$controladorA = explode('\\', get_called_class());
$_n = $fi->get_nSoloIdioma($registry, end($controladorA), __FUNCTION__);
$rotulos = [
'contraEnviada' => $_n['contraEnviada'] ?? 'Contraseña enviada',
'noExiste' => $_n['noExiste'] ?? 'El usuario no existe',
];
$mensaje = $rotulos['contraEnviada'];
$sesion = $this->get('session');
$cliente = $sesion->get('claCliente');
$usuario = $usuariosRepo->findForCorreoSinCliente($correo);
$contra = '';
$error = '';
if ($usuario == null) {
$resultado = -1;
$mensaje = $rotulos['noExiste'];
} else {
$contra = $fi->olvidoContra();
$contraH = $hasher->hashPassword($usuario, $contra);
$usuario->setContra($contraH);
$usuario->setPassword($contraH);
$entityManager->persist($usuario);
$entityManager->flush();
///enviar correo
///
// solo _idioma
$controladorA = explode('\\', get_called_class());
$_n = $fi->get_nSoloIdioma($registry, end($controladorA), __FUNCTION__);
$rotulos = [
'titulo' => $_n['titulo'] ?? 'Recuperacion de contraseña',
'nuevaContra' => $_n['nuevaContra'] ?? 'Nueva contraseña',
'contra' => $_n['contra'] ?? 'Contraseña',
];
$email = (new TemplatedEmail())
->from(new Address($fi::_mailMotorUsuario, $fi::_mailMotorNombre))
->to($correo)
->subject($rotulos['titulo'])
->htmlTemplate('usuarios/correoOlvidoContra.twig')
->context([
'contra' => $contra,
'rotulos' => $rotulos,
]);
try {
$envio = $mailer->send($email);
} catch (TransportExceptionInterface $e) {
$error = $e->getMessage();
}
}
//la data
$data = [];
$data['resultado'] = $resultado;
$data['mensaje'] = $mensaje;
$data['error'] = $error;
return $data;
}
}//fin trait