Ejemplo n.º 1
0
        public void ProcessRequest(HttpContext context)
        {
            string FILA = context.Request["FILA"];

            string FECHA_HORA = context.Request["FECHA_HORA"];

            try
            {
                //=======================================================
                // DECLARACION DE VARIABLES
                //=======================================================
                SMetodos Servicio = new SMetodos();
                List <oSP_READ_INTERFAZ> ListaInterfaz = new List <oSP_READ_INTERFAZ>();
                oSP_READ_INTERFAZ        INTERFAZ      = new oSP_READ_INTERFAZ();


                string OPCION = context.Request["OPCION"];

                //=======================================================
                // VALIDACION DE DATOS
                //=======================================================
                string CODIGO_INTERFAZ = context.Request["CODIGO_INTERFAZ"];

                int ID_GRUPO_CARGA;
                int ID_INTERFAZ;

                try
                {
                    ID_INTERFAZ = Convert.ToInt32(context.Request["ID_INTERFAZ"]);
                }
                catch (Exception)
                {
                    ID_INTERFAZ = 0;
                }

                try
                {
                    ID_GRUPO_CARGA = Convert.ToInt32(context.Request["ID_GRUPO_CARGA"]);
                }
                catch (Exception)
                {
                    ID_GRUPO_CARGA = 0;
                }

                if (string.IsNullOrEmpty(CODIGO_INTERFAZ))
                {
                    throw new Exception("CODIGO DE INTERFAZ NO ENVIADO");
                }

                if (ID_INTERFAZ == 0)
                {
                    throw new Exception("ID DE INTERFAZ NO ENVIADO");
                }

                iSP_READ_INTERFAZ ParametrosInputInterfaz = new iSP_READ_INTERFAZ();
                ParametrosInputInterfaz.ID_INTERFAZ = ID_INTERFAZ;

                ListaInterfaz = Servicio.SP_READ_INTERFAZ(ParametrosInputInterfaz);

                if (ListaInterfaz == null && ListaInterfaz.Count <= 0)
                {
                    throw new Exception("LA INTERFAZ CON EL ID " + ID_INTERFAZ + " NO EXISTE");
                }

                INTERFAZ = ListaInterfaz.First();

                if (OPCION.Equals("I"))
                {
                    //===========================================================
                    // DECLARACION DE VARIABLES
                    //===========================================================
                    string KEY_ZIP             = "RUTA_7_ZIP";// @"C:\Program Files\7-Zip\7zG.exe";
                    string KEY_ZIP_POWER_SHELL = "RUTA_POWER_SHELL";

                    oSP_READ_RUTAS_CONFIGURACION_X_LLAVE RUTA_ZIP         = RUTA_CONFIGURACION(KEY_ZIP);
                    oSP_READ_RUTAS_CONFIGURACION_X_LLAVE RUTA_POWER_SHELL = RUTA_CONFIGURACION(KEY_ZIP_POWER_SHELL);


                    if (ID_GRUPO_CARGA == 0)
                    {
                        throw new Exception("GRUPO DE CARGA NO ENVIADO");
                    }
                    string RUTA = context.Server.MapPath("~/archivoCarga/");

                    //=======================================================
                    // VERIFICAMOS QUE EXISTA LA CARPETA
                    //=======================================================
                    if (!Directory.Exists(RUTA))
                    {
                        Directory.CreateDirectory(RUTA);
                    }

                    //===========================================================
                    // LECTURA DE ARCHIVOS
                    //===========================================================
                    if (context.Request.Files.Count > 0)
                    {
                        //=======================================================
                        // RESCATAMOS EL ARCHIVO
                        //=======================================================
                        HttpPostedFile file = context.Request.Files[0];


                        //=======================================================
                        // VERIFICAMOS LA EXTENSION DEL ARCHIVO
                        //=======================================================
                        string EXTENSION = System.IO.Path.GetExtension(file.FileName);

                        if (!EXTENSION.ToLower().Equals(".txt") && !EXTENSION.ToLower().Equals(".csv"))
                        {
                            throw new Exception("DEBE SELECCIONAR UN ARCHIVO CON EXTENSION .txt o .csv");
                        }

                        //=======================================================
                        // SETEAMOS EL NUEVO NOMBRE DEL ARCHIVO
                        //=======================================================
                        string NOMBRE_ARCHIVO = Path.GetFileNameWithoutExtension(file.FileName);

                        //Entidad.CAMPO= Regex.Replace(Entidad.CAMPO, @"[^a-zA-Z0-9 ]+", "");
                        //Entidad.CAMPO = Entidad.CAMPO.Replace(" ", "_");

                        //transformación UNICODE
                        NOMBRE_ARCHIVO = NOMBRE_ARCHIVO.Normalize(NormalizationForm.FormD);
                        //coincide todo lo que no sean letras y números ascii o espacio
                        //y lo reemplazamos por una cadena vacía.
                        Regex reg = new Regex("[^a-zA-Z0-9 _]");
                        NOMBRE_ARCHIVO = reg.Replace(NOMBRE_ARCHIVO, "");
                        NOMBRE_ARCHIVO = NOMBRE_ARCHIVO.Replace(" ", "_");
                        NOMBRE_ARCHIVO = NOMBRE_ARCHIVO.ToUpper();

                        //=======================================================
                        // GUARDAMOS EL ARCHIVO
                        //=======================================================
                        string ORIGEN = RUTA + NOMBRE_ARCHIVO + EXTENSION;
                        file.SaveAs(ORIGEN);

                        //string RUTA_DIRECTORIO = CREA_DIRECTORIO(INTERFAZ);

                        string DESTINO = RUTA + NOMBRE_ARCHIVO + ".zip";

                        //=======================================================
                        // SE DESCOMPRIME EL PROYECTO Y SE ALMACENA
                        //=======================================================
                        try
                        {
                            ProcessStartInfo pro = new ProcessStartInfo();
                            pro.WindowStyle            = ProcessWindowStyle.Hidden;
                            pro.FileName               = '"' + RUTA_ZIP.RUTA + '"';
                            pro.Arguments              = " a " + '"' + DESTINO + '"' + " " + '"' + ORIGEN + '"';
                            pro.UseShellExecute        = false;
                            pro.RedirectStandardOutput = true;
                            pro.RedirectStandardError  = true;

                            using (Process proc = new Process())
                            {
                                proc.StartInfo          = pro;
                                proc.ErrorDataReceived += P_CaptureError;
                                proc.Start();
                                proc.WaitForExit();
                            }
                        }
                        catch
                        {
                            throw new Exception("PROBLEMAS AL COMPRIMIR EL ARCHIVO " + file.FileName);
                        }

                        //=======================================================================================
                        // DECLARACION DE VARIABLES
                        //=======================================================================================
                        oSP_READ_RUTAS_X_FTP_X_LLAVE RUTA_FTP = new oSP_READ_RUTAS_X_FTP_X_LLAVE();
                        oSP_READ_FTP_X_LLAVE         FTP      = new oSP_READ_FTP_X_LLAVE();

                        //=======================================================================================
                        // OBTENEMOS DATOS DEL FTP
                        //=======================================================================================
                        FTP = LEER_FTP();

                        //=======================================================================================
                        // OBTENEMOS DATOS DE LAS RUTAS
                        //=======================================================================================
                        RUTA_FTP = LEER_RUTA_FTP(FTP.ID_FTP);

                        bool ESTADO;

                        //=======================================================================================
                        // MANDAMOS EL ARCHIVO AL SFTP
                        //=======================================================================================
                        INPUT_FTP_JSON_ALO ObjetoInput_UP = new INPUT_FTP_JSON_ALO();
                        ObjetoInput_UP.R_FTP.KEY      = FTP.KEY_SSH;
                        ObjetoInput_UP.R_FTP.SERVIDOR = FTP.SERVIDOR;
                        ObjetoInput_UP.R_FTP.USUARIO  = FTP.USUARIO;
                        ObjetoInput_UP.R_FTP.PASSWORD = FTP.PASSWORD;

                        ObjetoInput_UP.R_FILE_FTP.FILE = NOMBRE_ARCHIVO + ".zip";
                        ObjetoInput_UP.R_FILE_FTP.RUTA = RUTA_FTP.RUTA;

                        ObjetoInput_UP.R_FILE_LOCAL.FILE = NOMBRE_ARCHIVO + ".zip";
                        ObjetoInput_UP.R_FILE_LOCAL.RUTA = RUTA;

                        using (UHttpFileServer HttpU = new UHttpFileServer())
                        {
                            HttpU.UploadFile(UConfiguracion.F_POST_UPLOAD_FILE, UConfiguracion.F_POST_UPLOAD_FTP, ObjetoInput_UP);
                            ESTADO = true;
                        }

                        if (ESTADO)
                        {
                            //=======================================================
                            // CONSTRUCCION DE OBJETO TABLA_CARGA
                            //=======================================================
                            iSP_CREATE_TABLA_CARGA ParametrosInputTablaCarga = new iSP_CREATE_TABLA_CARGA();
                            ParametrosInputTablaCarga.ID_INTERFAZ  = ID_INTERFAZ;
                            ParametrosInputTablaCarga.COMPRESION   = "ZIP";
                            ParametrosInputTablaCarga.FILENAME     = NOMBRE_ARCHIVO + EXTENSION;
                            ParametrosInputTablaCarga.RUTA_FISICA  = " ";
                            ParametrosInputTablaCarga.NOMBRE_TABLA = "FILE_" + CODIGO_INTERFAZ + "_" + FECHA_HORA + "_" + ID_INTERFAZ;
                            ParametrosInputTablaCarga.ID_EJECUCION = 0;

                            //=======================================================
                            // LLAMADA A SERVICIO
                            //=======================================================
                            oSP_CREATE_TABLA_CARGA TABLA_CARGA = Servicio.SP_CREATE_TABLA_CARGA(ParametrosInputTablaCarga);

                            if (TABLA_CARGA.ID_EJECUCION != 0 || TABLA_CARGA.ID_EJECUCION != -1)
                            {
                                //=======================================================
                                // CONSTRUCCION DE OBJETO DETALLE_GRUPO_CARGA
                                //=======================================================
                                iSP_CREATE_DETALLE_GRUPO_CARGA ParametrosInputGrupoCarga = new iSP_CREATE_DETALLE_GRUPO_CARGA();
                                ParametrosInputGrupoCarga.ID_EJECUCION   = TABLA_CARGA.ID_EJECUCION;
                                ParametrosInputGrupoCarga.ID_GRUPO_CARGA = ID_GRUPO_CARGA;

                                //=======================================================
                                // LLAMADA A SERVICIO
                                //=======================================================
                                oSP_RETURN_STATUS ESTADO_DETALLE_GRUPO = Servicio.SP_CREATE_DETALLE_GRUPO_CARGA(ParametrosInputGrupoCarga);


                                if (ESTADO_DETALLE_GRUPO.RETURN_VALUE == 1)
                                {
                                    //=======================================================
                                    // CONSTRUCCION DE OBJETO ESTADO_INTERFAZ
                                    //=======================================================
                                    iSP_UPDATE_ESTADO_INTERFAZ ParametrosInputEstadoInterfaz = new iSP_UPDATE_ESTADO_INTERFAZ();
                                    ParametrosInputEstadoInterfaz.ID_INTERFAZ        = ID_INTERFAZ;
                                    ParametrosInputEstadoInterfaz.ID_ESTADO_INTERFAZ = (int)T_ESTADO_INTERFAZ.COPIADA;

                                    //=======================================================
                                    // LLAMADA A SERVICIO
                                    //=======================================================
                                    oSP_RETURN_STATUS ESTADO_INTERFAZ = Servicio.SP_UPDATE_ESTADO_INTERFAZ(ParametrosInputEstadoInterfaz);
                                }
                            }
                            else
                            {
                                throw new Exception("NO SE A GENERADO EL PROCESO");
                            }

                            //===============================================================================
                            // ACTUALIZACION DE CANTIDAD DE REGISTROS
                            //===============================================================================

                            int CONTADOR = 0;
                            using (StreamReader sr = new StreamReader(ORIGEN, System.Text.Encoding.Default))
                            {
                                if (INTERFAZ.HEADER)
                                {
                                    sr.ReadLine();
                                }

                                string line = String.Empty;
                                while ((line = sr.ReadLine()) != null)
                                {
                                    CONTADOR++;
                                }
                            }

                            iSP_UPDATE_ROW_EJECUCION ParametrosInputRow = new iSP_UPDATE_ROW_EJECUCION();
                            ParametrosInputRow.ID_EJECUCION = TABLA_CARGA.ID_EJECUCION;
                            ParametrosInputRow.ROW_TOTAL    = CONTADOR;

                            Servicio.SP_UPDATE_ROW_EJECUCION(ParametrosInputRow);


                            //===========================================================
                            // CONSTRUCCION DE OBJETO
                            //===========================================================
                            iSP_UPDATE_GRUPO_CARGA_ESTADO ParametrosInput = new iSP_UPDATE_GRUPO_CARGA_ESTADO();
                            ParametrosInput.ID_ESTADO_CARGA = (int)T_ESTADO_GRUPO_CARGA.SIN_ESTADO;
                            ParametrosInput.ID_GRUPO_CARGA  = ID_GRUPO_CARGA;
                            ParametrosInput.MENSAJE         = " ";

                            //===========================================================
                            // LLAMADA A SERVICIO
                            //===========================================================
                            Servicio.SP_UPDATE_GRUPO_CARGA_ESTADO(ParametrosInput);

                            //===========================================================
                            // ELIMINAMOS ARCHIVO EN LA RUTA TEMPORAL
                            //===========================================================
                            try
                            {
                                FileInfo INFO = new FileInfo(ORIGEN);
                                INFO.Delete();
                            }
                            catch
                            {
                                throw new Exception("NO EXISTE EL ARCHIVO EN LA RUTA TEMPORAL: " + ORIGEN);
                            }

                            //===========================================================
                            // ELIMINAMOS ARCHIVO EN LA RUTA TEMPORAL
                            //===========================================================
                            try
                            {
                                FileInfo INFO = new FileInfo(DESTINO);
                                INFO.Delete();
                            }
                            catch
                            {
                                throw new Exception("NO EXISTE EL ARCHIVO EN LA RUTA TEMPORAL: " + DESTINO);
                            }
                        }
                        else
                        {
                            throw new Exception("NO SE A GUARDADO EL ARCHIVO " + NOMBRE_ARCHIVO + " EN LA RUTA DE RESPALDO ");
                        }


                        context.Response.ContentType = "text/plain";
                        context.Response.Write("OK|" + FILA + "|" + "ARCHIVO SUBIDO EXITOSAMANTE.");
                    }
                }
            }
            catch (Exception e)
            {
                context.Response.ContentType = "text/plain";
                context.Response.Write("ERROR|" + FILA + "|" + e.Message);
            }
        }