Example #1
0
 public static int ActualizaLogProcesoMapa(ProcesoMapas datosMapa)
 {
     try
     {
         return(new RepositorioProcesos().ActualizaLogProcesoMapa(datosMapa));
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
        public void ConsultaLog(string dslog)
        {
            Resultado <Procesos> resultadoArchivo = new Resultado <Procesos>();

            try
            {
                ProcesoMapas verLog = new ProcesoMapas();
                verLog.dslogMapa = dslog;

                FacadeProceso.ActualizaLogProcesoMapa(verLog);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        private void ActualizaProcesoMapa(int llproceso, int llmapa, int llestatus, string dsarchivo, string dslog)
        {
            try
            {
                ProcesoMapas updateProceso = new ProcesoMapas();
                updateProceso.llproceso     = llproceso;
                updateProceso.llmapa        = llmapa;
                updateProceso.llestatusMapa = llestatus;
                updateProceso.dsarchivo     = dsarchivo;
                updateProceso.dslogMapa     = dslog;

                FacadeProceso.ActualizaLogProcesoMapa(updateProceso);
            }catch (Exception ex)
            {
                throw ex;
            }
        }
Example #4
0
 public int ActualizaLogProcesoMapa(ProcesoMapas datosMapa)
 {
     try
     {
         return(base._ProviderDB.ExecuteNonQuery("spUpdLogProcesoMapa", new DbParameter[]
         {
             DataFactory.GetObjParameter(GlobalConfiguration.ProviderDB, "@llproceso", DbType.Int32, datosMapa.llproceso),
             DataFactory.GetObjParameter(GlobalConfiguration.ProviderDB, "@llmapa", DbType.Int32, datosMapa.llmapa),
             DataFactory.GetObjParameter(GlobalConfiguration.ProviderDB, "@dslogMapa", DbType.String, datosMapa.dslogMapa),
             DataFactory.GetObjParameter(GlobalConfiguration.ProviderDB, "@llestatusMapa", DbType.String, datosMapa.llestatusMapa),
             DataFactory.GetObjParameter(GlobalConfiguration.ProviderDB, "@dsarchivo", DbType.String, datosMapa.dsarchivo)
         }));
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
        public ActionResult ConsultarProceso(String mesProceso)
        {
            Resultado <ProcesoMapas> resultadoDetalle = new Resultado <ProcesoMapas>();

            //Inicializamos la variable que representa el proceso ejecutado actualmente.
            procesoTrabajo = new ProcesoMapas();
            try
            {
                DateTime fechaProceso = Convert.ToDateTime(DateTime.ParseExact(mesProceso, "dd/MM/yyyy", CultureInfo.CurrentUICulture.DateTimeFormat));

                //Consultamos los procesos erroneos
                List <ProcesoMapas> ProcesoError = FacadeErrores.ConsultaErrores(fechaProceso.Date.Year, fechaProceso.Date.Month);
                resultadoDetalle.Listado = ProcesoError.ToList();
                //Agregamos los errores a la vista principal
                resultadoDetalle.Lista = ProcesoError.ToList();

                //Consultamos los datos en base de datos
                List <ProcesoMapas> mapasProceso = FacadeProceso.ConsultaProcesoByFecha(fechaProceso.Date.Year, fechaProceso.Date.Month);

                resultadoDetalle.Listado.AddRange(mapasProceso.Where(x => x.llestatusMapa == Constantes.ID_ESTATUS_INICIADO || x.llestatusMapa == Constantes.ID_ESTATUS_ERROR).ToList());
                resultadoDetalle.Lista.AddRange(mapasProceso.ToList());
                resultadoDetalle.Lista = resultadoDetalle.Lista.OrderBy(x => x.fcinicio).ToList();

                // Si no existen registros agregamos como proceso exitoso 2 para indicar que no se cargen los GRIDS
                if (mapasProceso.Count == 0)
                {
                    resultadoDetalle.ProcesoExitoso = 2;
                }
                else
                {
                    procesoTrabajo.llproceso        = mapasProceso[0].llproceso;
                    resultadoDetalle.ProcesoExitoso = 1;
                }
            }
            catch (Exception ex)
            {
                resultadoDetalle.ProcesoExitoso = 0;
                resultadoDetalle.Mensaje        = ex.Message;
            }
            return(Json(resultadoDetalle, JsonRequestBehavior.DenyGet));
        }
        public ActionResult ProcesarArchivo(String mesProceso)
        {
            Resultado <Catalogo> resultadoArchivo = new Resultado <Catalogo>();
            int IdPro  = 0;
            int llmapa = 0;

            try
            {
                DateTime fechaProceso = Convert.ToDateTime(DateTime.ParseExact(mesProceso, "dd/MM/yyyy", CultureInfo.CurrentUICulture.DateTimeFormat));
                mapaTrabajo = new ProcesoMapas();
                //agregamos el .exe

                //Validar Campos de pantalla.
                Boolean isCorrecto   = true;
                string  mensajeError = "";
                //Obtenemos el prefigo del arvhivo
                resultadoArchivo.ProcesoExitoso = 0;
                if (Request.Files.Count == 0)
                {
                    isCorrecto = false;
                    resultadoArchivo.Mensaje = "Debes seleccionar un archivo para ejecutar.";
                    return(Json(resultadoArchivo, JsonRequestBehavior.DenyGet));
                }

                string[] sufijo = Request.Files[0].FileName.Split('_');
                if (!Request.Files[0].FileName.ToUpper().EndsWith(".XLS") && !Request.Files[0].FileName.ToUpper().EndsWith(".XLSX"))
                {
                    isCorrecto   = false;
                    mensajeError = "Seleccione un archivo correcto en formato Excel.";
                }

                //// Si no existe ningun mapa ejecutado mandamos mensaje para que ejecuten primero la carga mensual
                List <ProcesoMapas> procesomapa = FacadeProceso.ConsultaProcesoByFecha(fechaProceso.Date.Year, fechaProceso.Date.Month);
                if (procesomapa.Count == 0)
                {
                    //throw new Exception("No se ha encontrado ningún mapa, ejecute primero el proceso mensual para cargar los mapas.");
                    //1 Insert Procesos
                    Procesos proceso2  = new Procesos();
                    DateTime fechaHoy2 = DateTime.Now;
                    proceso2.boprocesomanual = true;
                    proceso2.fcinicio        = fechaHoy2.ToString("dd/MM/yyyy");
                    proceso2.dslog           = "Se inicia carga manual";
                    proceso2.dsmes           = fechaProceso.Date.Month;
                    proceso2.dsanio          = Convert.ToInt32(fechaProceso.Date.ToString("yyyy"));
                    IdPro = FacadeProceso.InsertarMvProceso(proceso2);
                }

                if (!isCorrecto)
                {
                    Procesos formato = new Procesos();
                    resultadoArchivo.Mensaje = mensajeError;
                    return(Json(resultadoArchivo, JsonRequestBehavior.DenyGet));
                }


                string datoPrefijo = sufijo[0];


                //Obtenemos el mapa a cargar por el prefijo
                List <Mapas> mapas = FacadeMapa.ObtenerMapasByPrefijo(datoPrefijo);

                //1 Insert Procesos
                Procesos proceso  = new Procesos();
                DateTime fechaHoy = DateTime.Now;
                proceso.boprocesomanual = true;
                proceso.fcinicio        = fechaHoy.ToString("dd/MM/yyyy");
                proceso.dslog           = "Se inicia carga manual";
                proceso.dsmes           = fechaProceso.Date.Month;
                proceso.dsanio          = Convert.ToInt32(fechaProceso.Date.ToString("yyyy"));
                IdPro = FacadeProceso.InsertarMvProceso(proceso);

                if (mapas.Count == 0)
                {
                    //inserta log
                    Procesos lg = new Procesos();
                    proceso.dslog = ("Error sin ejecutar:");
                    resultadoArchivo.ProcesoExitoso = 3;
                    resultadoArchivo.Mensaje        = "No se ha encontrado el mapa asociado";
                }
                else
                {
                    //Validamos si el mapa existe
                    if (procesomapa.Where(x => x.llproceso == IdPro && x.llmapa == mapas.First().mapaId&& x.llestatusMapa == 2).Count() > 0)
                    {
                        throw new Exception("El mapa ya se ha cargado para este proceso.");
                    }

                    //Cargamos el archivo en temporales
                    string rutaDocumento = HostingEnvironment.MapPath("~/Temporal/" + Guid.NewGuid().ToString() + System.IO.Path.GetExtension(Request.Files[0].FileName));
                    Request.Files[0].SaveAs(rutaDocumento);

                    Mapas mapaExtraccion = mapas.First();

                    ActualizaProcesoMapa(IdPro, mapaExtraccion.mapaId, 4, Request.Files[0].FileName, "Inicia el proceso de extracción del archivo \"" + Request.Files[0].FileName + "\"");
                    ActualizaProcesoMapa(IdPro, mapaExtraccion.mapaId, 0, null, "Mapa encontrado \"" + mapaExtraccion.ClaveMapa + "\"");

                    mapaTrabajo.llproceso = IdPro;
                    mapaTrabajo.llmapa    = mapaExtraccion.mapaId;

                    //2 inserta proceso_mapa mapa-proceso
                    Procesos proMapa = new Procesos();
                    proMapa.IdMapa     = mapaExtraccion.mapaId;
                    proMapa.llprocesos = IdPro;
                    int IdPros = FacadeProceso.InsertaProcMapas(proMapa);



                    //Modificamos la seccion de tareas con EPPlus
                    //Creamos una nueva instancia con el archiv que utilizaremos como plantilla.
                    ExcelPackage pantillaExcel = new ExcelPackage(new FileInfo(rutaDocumento));

                    //Creamos un objecto tipo ExcelWorksheet que sera en la que vamos a trabajar.
                    ExcelWorksheet hojaTrabajo = pantillaExcel.Workbook.Worksheets[mapaExtraccion.hoja];

                    //Validamos los encabezados
                    string statusError = ValidarHeaders(hojaTrabajo, mapaExtraccion, IdPro);
                    if (statusError != String.Empty)
                    {
                        resultadoArchivo.ProcesoExitoso = 4;
                        resultadoArchivo.Mensaje        = "Los encabezados no coinciden con el mapa configurado  <br/>" + statusError;
                        ActualizaProcesoMapa(IdPro, llmapa, 3, null, "La validación de encabezados terminó con errores.");
                        return(Json(resultadoArchivo, JsonRequestBehavior.DenyGet));
                    }
                    //Datos del excel
                    //Llamamos la consulta del excel.
                    List <Catalogo> datosCatalogo = DatosExcel(hojaTrabajo, mapaExtraccion, IdPro);

                    // Actualizamos el estatus del mapa
                    ActualizaProcesoMapa(IdPro, mapaExtraccion.mapaId, 1, null, "Mapa procesado correctamente.");

                    resultadoArchivo.Lista          = datosCatalogo;
                    resultadoArchivo.ProcesoExitoso = 1;
                }
            }
            catch (Exception ex)
            {
                //Actualizamos el estatus del mapa
                if (IdPro != 0 && llmapa != 0)
                {
                    ActualizaProcesoMapa(IdPro, llmapa, 3, null, ex.Message);
                }

                resultadoArchivo.ProcesoExitoso = 0;
                resultadoArchivo.Mensaje        = ex.Message;
            }
            return(Json(resultadoArchivo, JsonRequestBehavior.DenyGet));
        }
 // GET: Extraccion
 public ActionResult Index()
 {
     procesoTrabajo = new ProcesoMapas();
     return(View());
 }
        public ActionResult ProcesarCarpeta(String mesProceso)
        {
            Resultado <ProcesoMapas> resultadoArchivo = new Resultado <ProcesoMapas>();

            try
            {
                DateTime fechaProceso = Convert.ToDateTime(DateTime.ParseExact(mesProceso, "dd/MM/yyyy", CultureInfo.CurrentUICulture.DateTimeFormat));
                Procesos proceso      = new Procesos();
                DateTime fechaHoy     = DateTime.Now;
                proceso.boprocesomanual = false;
                proceso.dslog           = "";
                proceso.dsmes           = fechaProceso.Date.Month;
                proceso.dsanio          = Convert.ToInt32(fechaProceso.Date.ToString("yyyy"));
                int IdPro = FacadeProceso.InsertarMvProceso(proceso);
                procesoTrabajo           = new ProcesoMapas();
                procesoTrabajo.llproceso = IdPro;
                //Validamos el tipo de acceso a archivos.
                String        tipoAccesoArchivos = ConfigurationManager.AppSettings["usarFTP"];
                List <string> archivos;
                if (tipoAccesoArchivos.Equals("true"))
                {
                    //Obtenemos los archivos del FTP
                    archivos = InteraccionFTP.obtenerListaArchivos(FacadeFTP.ConsultaFTP(), fechaProceso.Date.ToString("yyyy"), Convert.ToString(fechaProceso.Date.Month));
                }
                else
                {
                    //Obtenemos los datos de la carpeta y almacenamos los procedimientos de mapas.
                    string mes = Convert.ToString(fechaProceso.Date.Month);
                    if (fechaProceso.Date.Month < 10)
                    {
                        mes = "0" + mes;
                    }
                    String[] archivosRuta = System.IO.Directory.GetFiles(ConfigurationManager.AppSettings["RutaDocumentos"] + fechaProceso.Date.ToString("yyyy") + "//" + mes);

                    archivos = new List <string>(archivosRuta);
                }

                if (archivos.Count == 0)
                {
                    resultadoArchivo.ProcesoExitoso = 0;
                    resultadoArchivo.Mensaje        = "No se han encontrado archivos a procesar.";
                    return(Json(resultadoArchivo, JsonRequestBehavior.DenyGet));
                }

                //recorremos todos los archivos y los escribimos en consola
                List <ProcesoMapas> ListaProcesosMapas = new List <ProcesoMapas>();
                foreach (var rutaarchivo in archivos)
                {
                    Console.WriteLine(rutaarchivo);
                    String       archivo     = System.IO.Path.GetFileName(rutaarchivo);
                    ProcesoMapas procesoMapa = new ProcesoMapas();
                    procesoMapa.llproceso = IdPro;
                    procesoMapa.dsarchivo = archivo;



                    //Obtenemos el prefigo del arvhivo
                    string[] sufijo      = archivo.Split('_');
                    string   datoPrefijo = sufijo[0];
                    //Obtenemos el mapa a cargar por el prefijo
                    List <Mapas> mapas = FacadeMapa.BuscaMapa(datoPrefijo);


                    if (mapas.Count == 0)
                    {
                        // update log no hay mapa
                        procesoMapa.dslogMapa     = "No se ha encontrado el mapa asociado";
                        procesoMapa.llestatusMapa = 3;
                        FacadeErrores.InsertaErrorMapa(IdPro, archivo);
                    }
                    else
                    {
                        //Verificamos si el mapa ya esta cargado en catalogo.
                        List <ProcesoMapas> mapa = FacadeProceso.ConsultaAllProcesoMapaByIdproceso(procesoTrabajo.llproceso).Where(x => x.llmapa == mapas.First().mapaId&& x.llestatusMapa == 2).ToList();

                        if (mapa.Count() > 0)
                        {
                            procesoMapa.llmapa        = mapa.First().llmapa;
                            procesoMapa.fcinicio      = mapa.First().fcinicio;
                            procesoMapa.llestatusMapa = mapa.First().llestatusMapa;
                            procesoMapa.dsmapa        = mapa.First().dsmapa;
                        }
                        else
                        {
                            //Cargamos el archivo en temporales
                            string rutaDocumento = HostingEnvironment.MapPath("~/Temporal/" + Guid.NewGuid().ToString() + System.IO.Path.GetExtension(archivo));

                            System.IO.File.Copy(rutaarchivo, rutaDocumento, true);
                            //Request.Files[0].SaveAs(rutaDocumento);

                            Mapas mapaExtraccion = mapas.First();

                            //si mapa extraccion es igual 86 imprime laa linea
                            Console.WriteLine(rutaarchivo);
                            procesoMapa.llmapa    = mapaExtraccion.mapaId;
                            procesoMapa.dsmapa    = mapaExtraccion.ClaveMapa;
                            procesoMapa.dslogMapa = "Inicia el proceso de extracción del archivo + " + archivo;
                            procesoMapa.dslogMapa = procesoMapa.dslogMapa + "Mapa encontrado" + mapaExtraccion.ClaveMapa;
                            //Inserta proceso mapa///////////////////////////////verificar
                            Procesos proMapa = new Procesos();
                            proMapa.IdMapa     = mapaExtraccion.mapaId;
                            proMapa.llprocesos = IdPro;

                            //Datos del excel
                            List <Catalogo> datosCatalogo = new List <Catalogo>();
                            try
                            {
                                int IdPros = FacadeProceso.InsertaProcMapas(proMapa);
                                procesoMapa.fcinicio = DateTime.Now.ToString();
                                //Actualizamos el inicio del mapa
                                ActualizaProcesoMapa(IdPro, mapaExtraccion.mapaId, 4, archivo, "Inicia el proceso de extracción del archivo " + archivo);
                                ActualizaProcesoMapa(IdPro, mapaExtraccion.mapaId, 0, null, "Mapa encontrado " + mapaExtraccion.ClaveMapa);


                                //Modificamos la seccion de tareas con EPPlus
                                //Creamos una nueva instancia con el archiv que utilizaremos como plantilla.
                                ExcelPackage pantillaExcel = new ExcelPackage(new FileInfo(rutaDocumento));
                                //Creamos un objecto tipo ExcelWorksheet que sera en la que vamos a trabajar.
                                ExcelWorksheet hojaTrabajo = pantillaExcel.Workbook.Worksheets[mapaExtraccion.hoja];

                                //Validamos los encabezados
                                string statusError = ValidarHeaders(hojaTrabajo, mapaExtraccion, IdPro);
                                if (statusError != String.Empty)
                                {
                                    throw new Exception("La validación de encabezados terminó con errores.");
                                }

                                //Obtenemos los datos del exel
                                datosCatalogo             = DatosExcel(hojaTrabajo, mapaExtraccion, IdPro);
                                procesoMapa.llestatusMapa = 1;
                                ActualizaProcesoMapa(IdPro, mapaExtraccion.mapaId, 1, null, "Mapa procesado correctamente.");
                            }
                            catch (Exception ex)
                            {
                                string errorMessage = ex.Message;
                                procesoMapa.dslogMapa     = (procesoMapa.dslogMapa + errorMessage);
                                procesoMapa.llestatusMapa = 3;
                                //Actualizamos el estatus a error
                                ActualizaProcesoMapa(IdPro, mapaExtraccion.mapaId, 3, null, errorMessage);
                            }


                            procesoMapa.catalogos = datosCatalogo;
                        }
                    }
                    ListaProcesosMapas.Add(procesoMapa);
                }
                resultadoArchivo.Lista = ListaProcesosMapas;
                //Recuperamos los archivos que no se encontro mapa.
                resultadoArchivo.Listado = FacadeErrores.ConsultaErrores(fechaProceso.Date.Year, fechaProceso.Date.Month);
                foreach (ProcesoMapas mapaerror in ListaProcesosMapas.Where(x => x.llestatusMapa == 4 || x.llestatusMapa == 3).ToList())
                {
                    if (resultadoArchivo.Listado.Where(x => x.llmapa == mapaerror.llmapa).Count() == 0)
                    {
                        resultadoArchivo.Listado.Add(mapaerror);
                    }
                }



                resultadoArchivo.ProcesoExitoso = 1;
            }
            catch (Exception ex)
            {
                resultadoArchivo.ProcesoExitoso = 0;
                resultadoArchivo.Mensaje        = ex.Message;
            }
            return(Json(resultadoArchivo, JsonRequestBehavior.DenyGet));
        }