private List <ResultadoBusquedaPLD> BusquedaListaNegra(string @vchPersonaIncidenciaNombre,
                                                               string @vchPersonaIncidenciaApPat,
                                                               string @vchPersonaIncidenciaApMat,
                                                               string @vchNombreCompleto)
        {
            List <ResultadoBusquedaPLD> results = new List <ResultadoBusquedaPLD>();

            try
            {
                using (VerificadorPDLDataContext dc = new VerificadorPDLDataContext(Helper.ConnectionString()))
                {
                    var query = from item in dc.stp_BuscarListaNegra(@vchPersonaIncidenciaNombre, @vchPersonaIncidenciaApPat, @vchPersonaIncidenciaApMat, @vchNombreCompleto)
                                select new ResultadoBusquedaPLD
                    {
                        VCHIDQEQ                = item.VCHIDQEQ,
                        VCHTIPOLISTA            = item.VCHTIPOLISTA,
                        vchIdentificadorInterno = item.vchIdentificadorInterno,
                        VCHNOMCOMPLETO          = item.VCHNOMCOMPLETO,
                        intTipoTipificacionID   = item.intTipoTipificacionID
                    };
                    results.AddRange(query);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(results);
        }
        public int editarBitacoraPLD(BitacoraPLD _parametros)
        {
            int?RegistroUpdate = 0;

            try
            {
                using (VerificadorPDLDataContext dc = new VerificadorPDLDataContext(Helper.ConnectionString()))
                {
                    dc.stp_CRUDBitacoraPLD(
                        ref RegistroUpdate, (int)CRUD.desbloquearUsuario, _parametros.intBitacoraID, _parametros.vchidqeq,
                        _parametros.vchUsuario, _parametros.vchSucursal, _parametros.intSistema, _parametros.vchPersonaIncidencia,
                        _parametros.vchNombre, _parametros.vchApPaterno, _parametros.vchApMaterno, _parametros.vchNombreBusq, _parametros.vchCliente,
                        _parametros.vchRelacionCliente, _parametros.vchComentario, _parametros.bitAutorizaProc, null, _parametros.bitHomonimo, _parametros.bitEstatus, null, _parametros.vchUsuarioAudit);
                }
                ConfiguracionPLD configuracion = new ConfiguracionPLDDataAccess().ListadoBusquedaConfiguracionPLD((int)_parametros.intTipoTipificacionID, (Int16)_parametros.intSistema).First();
                if (configuracion != null)
                {
                    if ((bool)configuracion.bitBloqueoUsuario)
                    {
                        enviarCorreo(CuentaSistema, Usuario, "", Servidor, Puerto, _parametros.vchUsuario);
                        //enviarCorreo(CuentaSistema, "*****@*****.**", "", "mail.hcasamex.com.mx", 2525, _parametros.vchUsuario);
                        //enviarCorreo("*****@*****.**", "*****@*****.**", "", "mail.hcasamex.com.mx", 2525, _tipoLista(query.First().vchIdentificadorInterno), parametros, item)
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(RegistroUpdate.Value);
        }
        public List <BitacoraPLD> ListadoBusquedaBitacoraPLD(BitacoraPLD bitacora)
        {
            List <BitacoraPLD> results = new List <BitacoraPLD>();

            try
            {
                using (VerificadorPDLDataContext dc = new VerificadorPDLDataContext(Helper.ConnectionString()))
                {
                    int?res   = 0;
                    var query = from item in dc.stp_CRUDBitacoraPLD(
                        ref res, (int)CRUD.leerBusqueda, null, null, bitacora.vchUsuario, null, bitacora.intSistema, null, null, null, null, null, bitacora.vchCliente, null, null, null, null, null, null, bitacora.bitHistorial, null)
                                select new BitacoraPLD()
                    {
                        intBitacoraID           = item.intBitacoraID,
                        vchidqeq                = item.vchidqeq,
                        vchUsuario              = item.vchUsuario,
                        vchSucursal             = item.vchSucursal,
                        intSistema              = item.intSistema,
                        vchPersonaIncidencia    = item.vchPersonaIncidencia,
                        vchNombreCompleto       = item.vchNombre + " " + item.vchApPaterno + " " + item.vchApMaterno,
                        vchNombre               = item.vchNombre,
                        vchApPaterno            = item.vchApPaterno,
                        vchApMaterno            = item.vchApMaterno,
                        vchCliente              = item.vchCliente,
                        vchRelacionCliente      = item.vchRelacionCliente,
                        vchComentario           = item.vchComentario,
                        bitAutorizaProc         = item.bitAutorizaProc,
                        bitHomonimo             = item.bitHomonimo,
                        intTipoTipificacionID   = item.intTipoTipificacionID,
                        datFecha                = item.datFecha,
                        datFechaRespuesta       = item.datFechaRespuesta,
                        vchNombreSistema        = item.vchNombreSistema,
                        vchTipoLista            = item.vchTipoLista,
                        vchIdentificadorInterno = item.vchIdentificadorInterno,
                        vchCorreoHCM            = item.vchCorreoHCM,
                        vchUsuarioAudit         = item.vchUsuarioAudit,
                        vchUsuarioNombre        = item.vchUsuarioNombre
                    };
                    results.AddRange(query);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(results);
        }
        private int escribirBitacora(ResultadoBusquedaPLD _item, BitacoraPLD _parametros)
        {
            int?RegistroInsert = 0;

            try
            {
                using (VerificadorPDLDataContext dc = new VerificadorPDLDataContext(Helper.ConnectionString()))
                {
                    dc.stp_CRUDBitacoraPLD(
                        ref RegistroInsert, (int)CRUD.insertar, null, _item.VCHIDQEQ, _parametros.vchUsuario,
                        _parametros.vchSucursal, _parametros.intSistema, _parametros.vchPersonaIncidencia,
                        _parametros.vchNombre, _parametros.vchApPaterno, _parametros.vchApMaterno, _parametros.vchNombreBusq,
                        _parametros.vchCliente, _parametros.vchRelacionCliente, null, null, null, null, null, null, null
                        );
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(RegistroInsert.Value);
        }
        public List <BitacoraPLD> TotalCorreo()
        {
            List <BitacoraPLD> results = new List <BitacoraPLD>();

            try
            {
                using (VerificadorPDLDataContext dc = new VerificadorPDLDataContext(Helper.ConnectionString()))
                {
                    int?res   = 0;
                    var query = from item in dc.stp_CRUDBitacoraPLD(
                        ref res, (int)CRUD.leerTotalCorreo, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null)
                                select new BitacoraPLD()
                    {
                    };
                    results.AddRange(query);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(results);
        }
        private VerificadorPLD resultadoServicio(List <ResultadoBusquedaPLD> results, BitacoraPLD parametros)
        {
            VerificadorPLD             _resultadoServicio = new VerificadorPLD();
            List <ConfiguracionPLD>    configuracion      = new List <ConfiguracionPLD>();
            ConfiguracionPLDDataAccess ConfiguracionPLDDA = new ConfiguracionPLDDataAccess();
            string cuentasTo;
            string cuentasCC;
            int?   result = 0;

            try
            {
                // Ordena
                var query = from item in results
                            orderby item.vchIdentificadorInterno ascending //primero lista NEGRA, PEP y luego VENC
                            select item;

                //vchidqeq, es identificador único en lista negra: 173802,
                VerificadorPDLDataContext bitacoraDA = new VerificadorPDLDataContext();
                if (results.Count > 0)
                {
                    bitacoraDA.stp_CRUDBitacoraPLD(
                        ref result, (int)CRUD.desbloquearUsuarioServicio, null, results.First().VCHIDQEQ, parametros.vchUsuario, null, parametros.intSistema, null, null, null, null, null, null, null, null, null, null, null, null, false, null);
                }
                //Existe registro con BE - BA en true
                if (result > 0)
                {
                    //respuesta default
                    _resultadoServicio = resultadoDefault();
                    return(_resultadoServicio);
                }

                if (query.Count() != 0 && parametros.intSistema != null)
                {
                    configuracion = ConfiguracionPLDDA.ListadoBusquedaConfiguracionPLD((int)query.First().intTipoTipificacionID, (Int16)parametros.intSistema);
                }
                else
                {
                    if (query.Count() == 0)
                    {
                        _resultadoServicio = resultadoDefault();
                    }
                }

                foreach (ResultadoBusquedaPLD item in query)
                {
                    //manejo de escenarios por configuración: Implementar respuesta por default(normal; BA, BE = true) y escenarios

                    //Tipificacion
                    _resultadoServicio.Tipificacion = query.First().intTipoTipificacionID != null ? (int)query.First().intTipoTipificacionID : 1;

                    //BloqueoUsuario
                    _resultadoServicio.BloqueoUsuario = configuracion.Count != 0 ? configuracion.First().bitBloqueoUsuario : false;

                    //BloqueoProceso   ----- Automatizar
                    _resultadoServicio.BloqueoProceso = configuracion.Count != 0 ? configuracion.First().bitBloqueoProceso : false;

                    //Mensaje
                    _resultadoServicio.Mensaje = configuracion.Count != 0 ? configuracion.First().vchMensaje : "";

                    //CreoBitacora
                    int regresoBitacora = 0;
                    if (configuracion.Count != 0)
                    {
                        if ((bool)configuracion.First().bitBitacora)
                        {
                            regresoBitacora = escribirBitacora(item, parametros);
                            _resultadoServicio.CreoBitacora = regresoBitacora == 0 ? configuracion.First().bitBitacora : regresoBitacora > 0 ? true : false;
                        }
                    }
                    else
                    {
                        _resultadoServicio.CreoBitacora = false;
                    }


                    //EnvioCorreo --- al final se sustituye las listas por el hardcode. Además de agregar la posibilidad de CC
                    if (configuracion.Count != 0)
                    {
                        string servidor = CuentaSistema;

                        cuentasTo = configuracion.First().vchCorreosPara != null?configuracion.First().vchCorreosPara : "";

                        cuentasCC = configuracion.First().vchCorreosCC != null?configuracion.First().vchCorreosCC : "";

                        //correo con uso de parámetros en app.config de testHost
                        _resultadoServicio.EnvioCorreo = regresoBitacora == 0 ? configuracion.First().bitEnvioCorreo : configuracion.First().bitEnvioCorreo == true?enviarCorreo(cuentasTo, CuentaSistema, cuentasCC, Servidor, Puerto, parametros, item, configuracion.First()) : false;
                    }
                    else
                    {
                        _resultadoServicio.EnvioCorreo = false;
                    }


                    if (item.vchIdentificadorInterno == TipoLista.NEGRA.ToString() || item.vchIdentificadorInterno == TipoLista.PEP.ToString())
                    {
                        break;
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }


            return(_resultadoServicio);
        }
        private VerificadorPLD resultadoServicio(List<ResultadoBusquedaPLD> results, BitacoraPLD parametros)
        {
            VerificadorPLD _resultadoServicio = new VerificadorPLD();
            List<ConfiguracionPLD> configuracion = new List<ConfiguracionPLD>();
            ConfiguracionPLDDataAccess ConfiguracionPLDDA = new ConfiguracionPLDDataAccess();
            string cuentasTo;
            string cuentasCC;
            int? result = 0;
            try
            {
                // Ordena
                var query = from item in results
                            orderby item.vchIdentificadorInterno ascending //primero lista NEGRA, PEP y luego VENC
                            select item;

                //vchidqeq, es identificador único en lista negra: 173802, 
                VerificadorPDLDataContext bitacoraDA = new VerificadorPDLDataContext();
                if (results.Count > 0)
                    bitacoraDA.stp_CRUDBitacoraPLD(
                         ref result, (int)CRUD.desbloquearUsuarioServicio, null, results.First().VCHIDQEQ, parametros.vchUsuario, null, parametros.intSistema, null, null, null, null, null, null, null, null, null, null, null, null, false,null);
                //Existe registro con BE - BA en true
                if (result > 0)
                {
                    //respuesta default     
                    _resultadoServicio = resultadoDefault();
                    return _resultadoServicio;
                }
                
                if (query.Count() != 0 && parametros.intSistema != null)
                {
                    configuracion = ConfiguracionPLDDA.ListadoBusquedaConfiguracionPLD((int)query.First().intTipoTipificacionID, (Int16)parametros.intSistema);
                }
                else
                {
                    if (query.Count() == 0)
                        _resultadoServicio = resultadoDefault();
                }

                foreach (ResultadoBusquedaPLD item in query)
                {
                    //manejo de escenarios por configuración: Implementar respuesta por default(normal; BA, BE = true) y escenarios

                    //Tipificacion  
                    _resultadoServicio.Tipificacion = query.First().intTipoTipificacionID != null ? (int)query.First().intTipoTipificacionID : 1;

                    //BloqueoUsuario  
                    _resultadoServicio.BloqueoUsuario = configuracion.Count != 0 ? configuracion.First().bitBloqueoUsuario : false;

                    //BloqueoProceso   ----- Automatizar        
                    _resultadoServicio.BloqueoProceso = configuracion.Count != 0 ? configuracion.First().bitBloqueoProceso : false;

                    //Mensaje  
                    _resultadoServicio.Mensaje = configuracion.Count != 0 ? configuracion.First().vchMensaje : "";

                    //CreoBitacora      
                    int regresoBitacora = 0;
                    if (configuracion.Count != 0)
                    {
                        if ((bool)configuracion.First().bitBitacora)
                        {
                            regresoBitacora = escribirBitacora(item, parametros);
                            _resultadoServicio.CreoBitacora = regresoBitacora == 0 ? configuracion.First().bitBitacora : regresoBitacora > 0 ? true : false;
                        }
                    }
                    else
                    {
                        _resultadoServicio.CreoBitacora = false;
                    }


                    //EnvioCorreo --- al final se sustituye las listas por el hardcode. Además de agregar la posibilidad de CC                       
                    if (configuracion.Count != 0)
                    {
                        string servidor = CuentaSistema;

                        cuentasTo = configuracion.First().vchCorreosPara != null ? configuracion.First().vchCorreosPara : "";
                        cuentasCC = configuracion.First().vchCorreosCC != null ? configuracion.First().vchCorreosCC : "";

                        //correo con uso de parámetros en app.config de testHost
                        _resultadoServicio.EnvioCorreo = regresoBitacora == 0 ? configuracion.First().bitEnvioCorreo : configuracion.First().bitEnvioCorreo == true ? enviarCorreo(cuentasTo, CuentaSistema, cuentasCC, Servidor, Puerto, parametros, item, configuracion.First()) : false;
                    }
                    else
                    {
                        _resultadoServicio.EnvioCorreo = false;
                    }


                    if (item.vchIdentificadorInterno == TipoLista.NEGRA.ToString() || item.vchIdentificadorInterno == TipoLista.PEP.ToString())
                    {
                        break;
                    }
                }
            }
            catch (Exception ex)
            {

                throw ex;
            }


            return _resultadoServicio;
        }
 public int editarBitacoraPLD(BitacoraPLD _parametros)
 {
     int? RegistroUpdate = 0;
     try
     {
         using (VerificadorPDLDataContext dc = new VerificadorPDLDataContext(Helper.ConnectionString()))
         {
             dc.stp_CRUDBitacoraPLD(
                 ref RegistroUpdate, (int)CRUD.desbloquearUsuario, _parametros.intBitacoraID, _parametros.vchidqeq,
                 _parametros.vchUsuario, _parametros.vchSucursal, _parametros.intSistema, _parametros.vchPersonaIncidencia,
                 _parametros.vchNombre, _parametros.vchApPaterno, _parametros.vchApMaterno, _parametros.vchNombreBusq, _parametros.vchCliente,
                 _parametros.vchRelacionCliente, _parametros.vchComentario, _parametros.bitAutorizaProc, null, _parametros.bitHomonimo, _parametros.bitEstatus, null,_parametros.vchUsuarioAudit);
         }
         ConfiguracionPLD configuracion = new ConfiguracionPLDDataAccess().ListadoBusquedaConfiguracionPLD((int)_parametros.intTipoTipificacionID, (Int16)_parametros.intSistema).First();
         if (configuracion != null)
             if ((bool)configuracion.bitBloqueoUsuario)
             {
                 enviarCorreo(CuentaSistema, Usuario, "", Servidor, Puerto, _parametros.vchUsuario);
                 //enviarCorreo(CuentaSistema, "*****@*****.**", "", "mail.hcasamex.com.mx", 2525, _parametros.vchUsuario);
                 //enviarCorreo("*****@*****.**", "*****@*****.**", "", "mail.hcasamex.com.mx", 2525, _tipoLista(query.First().vchIdentificadorInterno), parametros, item)
             }
     }
     catch (Exception ex)
     {
         throw ex;
     }
     return RegistroUpdate.Value;
 }
 public List<BitacoraPLD> TotalCorreo()
 {
     List<BitacoraPLD> results = new List<BitacoraPLD>();
     try
     {
         using (VerificadorPDLDataContext dc = new VerificadorPDLDataContext(Helper.ConnectionString()))
         {
             int? res = 0;
             var query = from item in dc.stp_CRUDBitacoraPLD(
                                ref res, (int)CRUD.leerTotalCorreo, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,null)
                         select new BitacoraPLD() { };
             results.AddRange(query);
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
     return results;
 }
        public List<BitacoraPLD> ListadoBusquedaBitacoraPLD(BitacoraPLD bitacora)
        {
            List<BitacoraPLD> results = new List<BitacoraPLD>();
            try
            {
                using (VerificadorPDLDataContext dc = new VerificadorPDLDataContext(Helper.ConnectionString()))
                {
                    int? res = 0;
                    var query = from item in dc.stp_CRUDBitacoraPLD(
                                       ref res, (int)CRUD.leerBusqueda, null, null, bitacora.vchUsuario, null, bitacora.intSistema, null, null, null, null, null, bitacora.vchCliente, null, null, null, null, null, null, bitacora.bitHistorial,null)
                                select new BitacoraPLD()
                                {
                                    intBitacoraID = item.intBitacoraID,
                                    vchidqeq = item.vchidqeq,
                                    vchUsuario = item.vchUsuario,
                                    vchSucursal = item.vchSucursal,
                                    intSistema = item.intSistema,
                                    vchPersonaIncidencia = item.vchPersonaIncidencia,
                                    vchNombreCompleto = item.vchNombreCompleto/*item.vchNombre +" "+item.vchApPaterno+" "+item.vchApMaterno*/,
                                    vchNombre = item.vchNombre,
                                    vchApPaterno = item.vchApPaterno,
                                    vchApMaterno = item.vchApMaterno,
                                    vchCliente = item.vchCliente,
                                    vchRelacionCliente = item.vchRelacionCliente,
                                    vchComentario = item.vchComentario,
                                    bitAutorizaProc = item.bitAutorizaProc,
                                    bitHomonimo = item.bitHomonimo,
                                    intTipoTipificacionID = item.intTipoTipificacionID,
                                    datFecha = item.datFecha,
                                    datFechaRespuesta = item.datFechaRespuesta,
                                    vchNombreSistema = item.vchNombreSistema,
                                    vchTipoLista = item.vchTipoLista,
                                    vchIdentificadorInterno = item.vchIdentificadorInterno,
                                    vchCorreoHCM = item.vchCorreoHCM,
                                    vchUsuarioAudit=item.vchUsuarioAudit,
                                    vchUsuarioNombre = item.vchUsuarioNombre                                    

                                };
                    results.AddRange(query);
                }
            }
            catch (Exception ex)
            {

                throw ex;
            }
            return results;
        }
 private int escribirBitacora(ResultadoBusquedaPLD _item, BitacoraPLD _parametros)
 {
     int? RegistroInsert = 0;
     try
     {
         using (VerificadorPDLDataContext dc = new VerificadorPDLDataContext(Helper.ConnectionString()))
         {
             dc.stp_CRUDBitacoraPLD(
                 ref RegistroInsert, (int)CRUD.insertar, null, _item.VCHIDQEQ, _parametros.vchUsuario,
                 _parametros.vchSucursal, _parametros.intSistema, _parametros.vchPersonaIncidencia,
                 _parametros.vchNombre, _parametros.vchApPaterno, _parametros.vchApMaterno, _parametros.vchNombreBusq,
                 _parametros.vchCliente, _parametros.vchRelacionCliente, null, null, null, null, null, null,null
                 );
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
     return RegistroInsert.Value;
 }
 private List<ResultadoBusquedaPLD> BusquedaListaNegra(string @vchPersonaIncidenciaNombre,
                                           string @vchPersonaIncidenciaApPat,
                                           string @vchPersonaIncidenciaApMat,
                                           string @vchNombreCompleto)
 {
     List<ResultadoBusquedaPLD> results = new List<ResultadoBusquedaPLD>();
     try
     {
         using (VerificadorPDLDataContext dc = new VerificadorPDLDataContext(Helper.ConnectionString()))
         {
             var query = from item in dc.stp_BuscarListaNegra(@vchPersonaIncidenciaNombre, @vchPersonaIncidenciaApPat, @vchPersonaIncidenciaApMat, @vchNombreCompleto)
                         select new ResultadoBusquedaPLD
                         {
                             VCHIDQEQ = item.VCHIDQEQ,
                             VCHTIPOLISTA = item.VCHTIPOLISTA,
                             vchIdentificadorInterno = item.vchIdentificadorInterno,
                             VCHNOMCOMPLETO = item.VCHNOMCOMPLETO,
                             intTipoTipificacionID = item.intTipoTipificacionID
                         };
             results.AddRange(query);
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
     return results;
 }