public OperacionesOracle()
        {
            PIMX_EncryptionServices encryptor = new PIMX_EncryptionServices();

            user         = encryptor.DecryptString128Bit(ConfigurationManager.AppSettings.Get("oraUser").ToString(), ConfigurationManager.AppSettings.Get("gsHexSeed").ToString()).Replace("\0", "");
            password     = encryptor.DecryptString128Bit(ConfigurationManager.AppSettings.Get("oraPassword").ToString(), ConfigurationManager.AppSettings.Get("gsHexSeed").ToString()).Replace("\0", "");
            ipDataBase   = encryptor.DecryptString128Bit(ConfigurationManager.AppSettings.Get("ipDataBase").ToString(), ConfigurationManager.AppSettings.Get("gsHexSeed").ToString()).Replace("\0", "");
            portDataBase = encryptor.DecryptString128Bit(ConfigurationManager.AppSettings.Get("portDataBase").ToString(), ConfigurationManager.AppSettings.Get("gsHexSeed").ToString()).Replace("\0", "");
            sidDataBase  = encryptor.DecryptString128Bit(ConfigurationManager.AppSettings.Get("sidDataBase").ToString(), ConfigurationManager.AppSettings.Get("gsHexSeed").ToString()).Replace("\0", "");
            dataSource   = "(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = " + ipDataBase + ")(PORT = " + portDataBase + "))(CONNECT_DATA = (SID = " + sidDataBase + ")))";

            /*
             * user = ConfigurationManager.AppSettings.Get("oraUser").ToString();
             * password =ConfigurationManager.AppSettings.Get("oraPassword").ToString();
             * ipDataBase = ConfigurationManager.AppSettings.Get("ipDataBase").ToString();
             * portDataBase = ConfigurationManager.AppSettings.Get("portDataBase").ToString();
             * sidDataBase = ConfigurationManager.AppSettings.Get("sidDataBase").ToString();
             * dataSource = "(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = " + ipDataBase + ")(PORT = " + portDataBase + "))(CONNECT_DATA = (SID = " + sidDataBase + ")))";
             */
        }
        public string RECIBE(byte[] ArchivoZip, string Usuario, string Password, string idTramite, string idExpediente, string nss)
        {
            int     paso    = 0;
            Monitor monitor = new Monitor();

            string mensaje = "";

            try
            {
                monitor.SaveLog(Usuario, idTramite, nss, idExpediente, "Inicia RECIBE", nombreLog);
                monitor.SaveRequest(Usuario, idTramite, nss, idExpediente, ArchivoZip, nombreLog);
                paso += 1;
            }
            catch (Exception ex)
            {
                monitor.SaveLog(Usuario, idTramite, nss, idExpediente, "Inicia RECIBE", nombreLog);
                monitor.SaveLog("Error RECIBE", string.Format("Paso:{0}, Erorr:{1}", paso.ToString(), ex.Message), nombreLog);
            }

            string  nombreImagenes     = "";
            ZipFile zip                = new ZipFile();
            string  fecha              = "";
            string  existe             = "0";
            string  directorioImagenes = "";

            try
            {
                PIMX_EncryptionServices encryptor = new PIMX_EncryptionServices();
                string usuarioDencriptado         = encryptor.DecryptString128Bit(ConfigurationManager.AppSettings.Get("userWinston").ToString(), ConfigurationManager.AppSettings.Get("gsHexSeed").ToString()).Replace("\0", "");
                string contraDencriptada          = encryptor.DecryptString128Bit(ConfigurationManager.AppSettings.Get("pswWinston").ToString(), ConfigurationManager.AppSettings.Get("gsHexSeed").ToString()).Replace("\0", "");
                paso += 1;

                //VALIDA SI EL USUARIO Y CONTRASEÑA SON CORRECTOS
                if (Usuario == usuarioDencriptado && Password == contraDencriptada)
                {
                    OperacionesOracle oracle   = new OperacionesOracle();
                    string            msjError = oracle.out_error;

                    //EJECUTA SP DE ORACLE QUE VERIFICA SI EL EXPEDIENTE EXISTE EN LA BD
                    existe             = oracle.verificaExpediente(idExpediente);
                    directorioImagenes = oracle.obtenerRutas(idTramite);

                    //VALIDA SI EXISTE EL EXPEDIENTE
                    if (existe == "1")
                    {
                        #region < Z I P >

                        //NOMENCLATURA ZIP
                        //afore(3)idtramite(2)curp(18)tipotrabajdor(1)countImagenes(2)fechaenvio(8(añoMesDia))constante(3).zip
                        string afore          = "";
                        string curp           = "";
                        string tipoTrabajador = "";
                        string fechaEnvio     = "";
                        string constanteAfore = "000";
                        bool   zipnuevo       = false;
                        string nombreZipFinal = "";

                        mensaje = "CONVERTIR ARCHIVO EN BYTES";
                        byte[] bytes = new byte[ArchivoZip.Length];
                        bytes = ArchivoZip;

                        try
                        {
                            mensaje = "GUARDAR ARCHIVO ORIGINAL EN EL SERVIDOR DE IMAGENES";
                            //mensaje = "ESCRIBIR ARREGLO DE BYTES";
                            File.WriteAllBytes(directorioImagenes + "archivo.zip" + idExpediente, bytes);
                            mensaje = "ESCRITURA BYTES EXITOSA";
                        }
                        catch (Exception ex)
                        {
                            oracle.guardaEstatus(idExpediente, "RECIBE", mensaje + ex.Message, "");
                            mensaje = "02 - AL ESCRIBIR EN EL DIRECTORIO, " + mensaje + "\n" + ex.Message;
                            monitor.SaveLog(mensaje, "Servicio ejecutado", nombreLog);
                            return(mensaje);
                        }
                        try
                        {
                            mensaje = "LEE ZIP DEL SERVIDOR DE IMAGENES";
                            zip     = ZipFile.Read(directorioImagenes + "archivo.zip" + idExpediente);

                            mensaje = "CONTAR LAS IMAGENES";
                            int totalEntries = zip.Entries.Count;
                            //CONVIERTE A STRING EL NUMERO DE IMAGENES PARA ANEXARLO AL NOMBRE DEL ZIP
                            string imagenesCuenta = totalEntries.ToString();
                            //EL NOMBRE DEL ZIP LLEVA LA CANTIDAD DE IMAGENES EN EL EN 2 DIGITOS, SI SON
                            //MENOS DE 10 SE LE AGREGA UN CERO PARA APEGARSE A LA NOMENCLATURA DEL ZIP
                            if (totalEntries < 10)
                            {
                                imagenesCuenta = "0" + imagenesCuenta;
                            }

                            mensaje = "DESCOMPRIMIR EL ZIP Y/O MANDAR CADENA DE NOMBRE DE IMAGENES";
                            //GUARDA LOS NOMBRES DE LAS IMAGENES EN UNA CADENA. |||VARIABLE: "nombreImagenes"|||
                            // Y GUARDA LAS IMAGENES EN EL SERVIDOR DE IMAGENES (DESCOMPRESIÓN DE ZIP)
                            foreach (ZipEntry archivo in zip.Entries)
                            {
                                nombreImagenes = nombreImagenes + archivo.FileName + "#";
                                archivo.Extract(directorioImagenes);
                            }

                            mensaje = "SE EXTRAJERON LAS IMAGENES";
                            //OBTIENE LA INFORMACION DESGLOSADA DE LA IMAGEN PARA RENOMBRAR EL ZIP
                            afore          = nombreImagenes.Substring(0, 3);
                            curp           = nombreImagenes.Substring(5, 18);
                            tipoTrabajador = nombreImagenes.Substring(23, 1);
                            fechaEnvio     = nombreImagenes.Substring(27, 8);
                            constanteAfore = nombreImagenes.Substring(35, 3);

                            zip.Dispose();

                            mensaje        = "CONCATENAR NOMBRE FINAL";
                            nombreZipFinal = afore + idTramite + curp + tipoTrabajador + imagenesCuenta + fechaEnvio + constanteAfore;

                            mensaje = "RENOMBRADO";
                            System.IO.File.Move(directorioImagenes + "archivo.zip" + idExpediente,
                                                directorioImagenes + nombreZipFinal + ".zip");
                            //afore(3)idtramite(2)curp(18)tipotrabajdor(1)countImagenes(2)fechaenvio(8(añoMesDia))constante(3).zip
                            zipnuevo = true;
                            zip.Dispose();
                        }
                        catch (Exception ex)
                        {
                            oracle.guardaEstatus(idExpediente, "RECIBE", mensaje + ex.Message, "");
                            zip.Dispose();
                            //borra archivos y zip
                            if (zipnuevo == false)
                            {
                                BorraImagenes(nombreImagenes, directorioImagenes, "archivo.zip", true);
                            }
                            else
                            {
                                BorraImagenes(nombreImagenes, directorioImagenes, nombreZipFinal, true);
                            }

                            mensaje = "02 - ERROR EN CONVERSIONES DEL ZIP, " + mensaje + "\n" + ex.ToString();
                            monitor.SaveLog(mensaje, "Servicio ejecutado", nombreLog);
                            return(mensaje);
                        }

                        #endregion

                        #region < P A R A M E T R O S   O R A C L E >

                        OperacionesOracle objCon = new OperacionesOracle();
                        OracleConnection  cn     = objCon.connect();
                        OracleParameter   op     = null;
                        OracleCommand     cmd    = cn.CreateCommand();
                        string            estado = " ";
                        try
                        {
                            mensaje         = "CREAR LOS COMANDOS ORACLE";
                            cmd.CommandType = System.Data.CommandType.StoredProcedure;

                            mensaje         = "ASIGNAR VARIABLES DE ENTRADA";
                            cmd.CommandText = "BFP_IMAGENES_EXPELEC_PKG.act_estatus_llegada_imagenes";
                            cmd.Parameters.Add("p_id_tramite", OracleDbType.Varchar2).Value = idTramite;

                            mensaje = "EXPEDIENTE O NSS";
                            cmd.Parameters.Add("p_id_expediente", OracleDbType.Varchar2).Value = idExpediente;
                            cmd.Parameters.Add("p_id_nss", OracleDbType.Varchar2).Value        = nss;

                            mensaje = "NOMBRE ARCHIVO O ESTATUS";
                            cmd.Parameters.Add("p_nom_archivo_zip", OracleDbType.Varchar2).Value = nombreZipFinal + ".zip";
                            cmd.Parameters.Add("p_estatus", OracleDbType.Varchar2).Value         = estado;

                            mensaje = "CADENA DE ARCHIVOS";
                            cmd.Parameters.Add("p_archivos", OracleDbType.Varchar2).Value = nombreImagenes;

                            mensaje = "RUTA";
                            cmd.Parameters.Add("p_ruta", OracleDbType.Varchar2).Value = directorioImagenes;

                            mensaje      = "CREAR VARIABLE DE SALIDA (FECHA)";
                            op           = new OracleParameter("p_fecha", OracleDbType.Varchar2);
                            op.Direction = ParameterDirection.Output;
                            op.Size      = 4000;
                            cmd.Parameters.Add(op);

                            mensaje = "CONVERTIR FECHA A STRING";
                            cmd.ExecuteNonQuery();
                            fecha = op.Value.ToString();

                            mensaje = "FECHA ASIGNADA" + fecha;

                            cn.Dispose();
                            cn.Close();
                        }

                        catch (Exception ex)
                        {
                            BorraImagenes(nombreImagenes, directorioImagenes, nombreZipFinal, true);

                            cn.Dispose();
                            cn.Close();
                            mensaje = "02 - Error en la conexion " + mensaje + "\n" + ex.Message;
                            monitor.SaveLog(mensaje, "Servicio ejecutado", nombreLog);
                            return(mensaje);
                        }

                        #endregion

                        try
                        {
                            if (fecha.Substring(0, 2) == "01")
                            {
                                //BORRAR IMAGENES PERO NO EL ZIP
                                mensaje = "INTENTAR BORRAR EL ZIP";
                                monitor.SaveLog(mensaje, "Servicio ejecutado", nombreLog);
                                BorraImagenes(nombreImagenes, directorioImagenes, nombreZipFinal, false);
                                return(fecha);
                            }
                            else
                            {
                                //BORRA TODO
                                mensaje = "INTENTAR BORRAR EL ZIP Y LAS IMAGENES";
                                monitor.SaveLog(mensaje, "Servicio ejecutado", nombreLog);
                                BorraImagenes(nombreImagenes, directorioImagenes, nombreZipFinal, true);
                                return(fecha);
                            }
                        }

                        catch (Exception ex)
                        {
                            mensaje = "ERROR AL PREGUNTAR EL 01 EN LA FECHA";
                            mensaje = "02 - " + fecha + "\n" + mensaje + "\n" + ex.ToString();
                            monitor.SaveLog(mensaje, "Servicio ejecutado", nombreLog);
                            return(mensaje);
                        }
                    }

                    else
                    {
                        mensaje = "02 - No existe expediente";
                        monitor.SaveLog(mensaje, "Servicio ejecutado", nombreLog);
                        return(mensaje);
                    }
                }
                else
                {
                    mensaje = "Usuario o contraseña incorrectos";
                    monitor.SaveLog(mensaje, "Servicio ejecutado", nombreLog);
                    return(mensaje);
                }
            }
            catch (Exception ex)
            {
                mensaje = string.Format("ERROR AL EJECUTAR RECIBE: PASO:{0}, ERORR:{1}", paso.ToString(), ex.Message.ToString());
                monitor.SaveLog(mensaje, "Servicio ejecutado", nombreLog);
                return(mensaje);
            }

            monitor.SaveLog(mensaje, "Servicio ejecutado", nombreLog);
            return(mensaje);
        }