예제 #1
0
        public ActionResult BorrarMapa(int idMapa)
        {
            Resultado <int> statusBorrado = new Resultado <int>();

            try
            {
                FacadeMapa.BorraMapaByIdMapa(idMapa);
                statusBorrado.ProcesoExitoso = 1;
            }
            catch (Exception ex)
            {
                statusBorrado.ProcesoExitoso = 2;
                statusBorrado.Mensaje        = ex.Message;
            }
            return(Json(statusBorrado, JsonRequestBehavior.DenyGet));
        }
예제 #2
0
        //// GET: Mapa
        //public ActionResult Index()
        //{

        //    return View();
        //}

        //// GET: Mapa/Details/5
        //public ActionResult Details(int id)
        //{
        //    return View();
        //}

        //// GET: Mapa/Create
        //public ActionResult Create()
        //{
        //    FacadeMapa.ObtenerMapas(); //

        //    return View();
        //}

        //// POST: Mapa/Create
        //[HttpPost]
        //public ActionResult Create(FormCollection collection)
        //{
        //    try
        //    {
        //        // TODO: Add insert logic here

        //        return RedirectToAction("Index");
        //    }
        //    catch
        //    {
        //        return View();
        //    }
        //}

        //// GET: Mapa/Edit/5
        //public ActionResult Edit(int id)
        //{
        //    return View();
        //}

        //// POST: Mapa/Edit/5
        //[HttpPost]
        //public ActionResult Edit(int id, FormCollection collection)
        //{
        //    try
        //    {
        //        // TODO: Add update logic here

        //        return RedirectToAction("Index");
        //    }
        //    catch
        //    {
        //        return View();
        //    }
        //}

        //// GET: Mapa/Delete/5
        //public ActionResult Delete(int id)
        //{
        //    return View();
        //}

        //// POST: Mapa/Delete/5
        //[HttpPost]
        //public ActionResult Delete(int id, FormCollection collection)
        //{
        //    try
        //    {
        //        // TODO: Add delete logic here

        //        return RedirectToAction("Index");
        //    }
        //    catch
        //    {
        //        return View();
        //    }
        //}

        public ActionResult ListarMapas(int Mapa, string ClaveMapa, int Hoja, int Encabezado, string FechaCreacion, string FechaModif)
        {
            Resultado <Mapas> entidad = new Resultado <Mapas>();

            entidad.Lista = new List <Mapas>();

            try
            {
                entidad.Lista          = FacadeMapa.ObtenerMapasByPrefijo(ClaveMapa);
                entidad.ProcesoExitoso = 1;
            }

            catch (Exception ex)
            {
                entidad.ProcesoExitoso = 0;
                entidad.Mensaje        = "Ocurrió un error:" + ex.Message;
            }
            return(Json(entidad, JsonRequestBehavior.DenyGet));
        }
예제 #3
0
        public ActionResult EditarMapa(int idMapa)
        {
            try
            {
                mapaTrabajo = new Mapas();
                //Buscamos el los datos del mapa porid
                mapaTrabajo = FacadeMapa.ObtenerMapasById(idMapa);

                //Variables de Mapa
                ViewBag.ClaveMapa    = mapaTrabajo.ClaveMapa;
                ViewBag.NoEncabezado = mapaTrabajo.filaEncabezado;
                ViewBag.NoHoja       = mapaTrabajo.hoja;
                ViewBag.dsarchivo    = mapaTrabajo.dsarchivo.Substring(36, mapaTrabajo.dsarchivo.Length - 36);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(View()); // aquí creo que se tiene que enviar como parámetro la lista map
        }
예제 #4
0
        //Genera un "NUEVO MAPA" de exportación al seleccionar Nuevo en administración y realizar la busqueda del archivo excel seleccionando las columnas y damos guardar en la BD
        public ActionResult GuardarMapa(string DatosExcel, string ClaveMapa, int NoFilaHeaders, int hoja, Boolean IsNuevo)
        {
            Resultado <string> resultado = new Resultado <string>();

            try
            {
                //Validamos la clave del mapa
                if (IsNuevo)
                {
                    List <Mapas> mapasRegistrados = FacadeMapa.VerificarMapa(ClaveMapa);
                    if (mapasRegistrados.Count > 0)
                    {
                        throw new Exception("El Mapa ya se encuentra registrado.");
                    }
                }
                //insertar splite
                string[] columns = DatosExcel.Split('_');
                if (columns.Length < 2)
                {
                    resultado.ProcesoExitoso = 0;
                    resultado.Mensaje        = "Debe Seleccionar por lo menos 2 columnas de mapeo en Excel.";
                    return(Json(resultado, JsonRequestBehavior.DenyGet));
                }
                else
                {
                    Mapas nuevoMapa = new Mapas();
                    nuevoMapa.ClaveMapa      = ClaveMapa;
                    nuevoMapa.hoja           = hoja;
                    nuevoMapa.filaEncabezado = NoFilaHeaders;

                    // Inicializamos EncabezadoMapa para guardar el nombre delencabezado
                    EncabezadoMapas nombreColumna = new EncabezadoMapas();

                    //Iniciamos la carga de documento para obtener los nombres de de los headers.
                    //Creamos una nueva instancia con el archivo 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 hojaEncabezado = pantillaExcel.Workbook.Worksheets[hoja];

                    String[] columnasExcel = DatosExcel.Split('_');
                    foreach (string campoColumna in columnasExcel)
                    {
                        String[] datosColumna  = campoColumna.Split(',');
                        int      numeroColumna = Convert.ToInt32(datosColumna[0]);
                        int      valorColumna  = Convert.ToInt32(datosColumna[1]);

                        String textoColumna = "";
                        if (valorColumna == 1)
                        {
                            if (nuevoMapa.colMayorista == 0)
                            {
                                nuevoMapa.colMayorista     = numeroColumna;
                                nombreColumna.colMayorista = hojaEncabezado.Cells[NoFilaHeaders, numeroColumna].Text.ToUpper();
                            }
                            else
                            {
                                textoColumna = "Mayorista";
                            }
                        }

                        if (valorColumna == 2)
                        {
                            if (nuevoMapa.colPresentacion == 0)
                            {
                                nuevoMapa.colPresentacion     = numeroColumna;
                                nombreColumna.colPresentacion = hojaEncabezado.Cells[NoFilaHeaders, numeroColumna].Text.ToUpper();
                            }
                            else
                            {
                                textoColumna = "Presentacion";
                            }
                        }

                        if (valorColumna == 3)
                        {
                            if (nuevoMapa.colFecha == 0)
                            {
                                nuevoMapa.colFecha     = numeroColumna;
                                nombreColumna.colFecha = hojaEncabezado.Cells[NoFilaHeaders, numeroColumna].Text.ToUpper();
                            }
                            else
                            {
                                textoColumna = "Fecha";
                            }
                        }

                        if (valorColumna == 4)
                        {
                            if (nuevoMapa.colUnidades == 0)
                            {
                                nuevoMapa.colUnidades     = numeroColumna;
                                nombreColumna.colUnidades = hojaEncabezado.Cells[NoFilaHeaders, numeroColumna].Text.ToUpper();
                            }
                            else
                            {
                                textoColumna = "Unidades";
                            }
                        }

                        if (valorColumna == 5)
                        {
                            if (nuevoMapa.colMedico == 0)
                            {
                                nuevoMapa.colMedico     = numeroColumna;
                                nombreColumna.colMedico = hojaEncabezado.Cells[NoFilaHeaders, numeroColumna].Text.ToUpper();
                            }
                            else
                            {
                                textoColumna = "Medico";
                            }
                        }

                        if (valorColumna == 6)
                        {
                            if (nuevoMapa.colEstado == 0)
                            {
                                nuevoMapa.colEstado     = numeroColumna;
                                nombreColumna.colEstado = hojaEncabezado.Cells[NoFilaHeaders, numeroColumna].Text.ToUpper();
                            }
                            else
                            {
                                textoColumna = "Estado";
                            }
                        }

                        if (valorColumna == 7)
                        {
                            if (nuevoMapa.colHospital == 0)
                            {
                                nuevoMapa.colHospital     = numeroColumna;
                                nombreColumna.colHospital = hojaEncabezado.Cells[NoFilaHeaders, numeroColumna].Text.ToUpper();
                            }
                            else
                            {
                                textoColumna = "Hospital";
                            }
                        }

                        if (valorColumna == 8)
                        {
                            if (nuevoMapa.colSucursal == 0)
                            {
                                nuevoMapa.colSucursal     = numeroColumna;
                                nombreColumna.colSucursal = hojaEncabezado.Cells[NoFilaHeaders, numeroColumna].Text.ToUpper();
                            }
                            else
                            {
                                textoColumna = "Sucursal";
                            }
                        }

                        if (valorColumna == 9)
                        {
                            if (nuevoMapa.colLaboratorio == 0)
                            {
                                nuevoMapa.colLaboratorio     = numeroColumna;
                                nombreColumna.colLaboratorio = hojaEncabezado.Cells[NoFilaHeaders, numeroColumna].Text.ToUpper();
                            }
                            else
                            {
                                textoColumna = "Laboratorio";
                            }
                        }

                        if (valorColumna == 10)
                        {
                            if (nuevoMapa.colCiudad == 0)
                            {
                                nuevoMapa.colCiudad     = numeroColumna;
                                nombreColumna.colCiudad = hojaEncabezado.Cells[NoFilaHeaders, numeroColumna].Text.ToUpper();
                            }
                            else
                            {
                                textoColumna = "Ciudad";
                            }
                        }

                        if (valorColumna == 11)
                        {
                            if (nuevoMapa.colColonia == 0)
                            {
                                nuevoMapa.colColonia     = numeroColumna;
                                nombreColumna.colColonia = hojaEncabezado.Cells[NoFilaHeaders, numeroColumna].Text.ToUpper();
                            }
                            else
                            {
                                textoColumna = "Colonia";
                            }
                        }

                        if (valorColumna == 12)
                        {
                            if (nuevoMapa.colDireccion == 0)
                            {
                                nuevoMapa.colDireccion     = numeroColumna;
                                nombreColumna.colDireccion = hojaEncabezado.Cells[NoFilaHeaders, numeroColumna].Text.ToUpper();
                            }
                            else
                            {
                                textoColumna = "Direccion";
                            }
                        }

                        if (valorColumna == 13)
                        {
                            if (nuevoMapa.colCP == 0)
                            {
                                nuevoMapa.colCP     = numeroColumna;
                                nombreColumna.colCP = hojaEncabezado.Cells[NoFilaHeaders, numeroColumna].Text.ToUpper();
                            }
                            else
                            {
                                textoColumna = "CP";
                            }
                        }

                        if (valorColumna == 14)
                        {
                            if (nuevoMapa.colBrick == 0)
                            {
                                nuevoMapa.colBrick     = numeroColumna;
                                nombreColumna.colBrick = hojaEncabezado.Cells[NoFilaHeaders, numeroColumna].Text.ToUpper();
                            }
                            else
                            {
                                textoColumna = "Brick";
                            }
                        }

                        if (textoColumna != String.Empty)
                        {
                            throw new Exception("El campo \"" + textoColumna + "\" ya fue proporcionado en otra columna del Excel.");
                        }
                    }

                    if (nuevoMapa.colUnidades == 0)
                    {
                        resultado.Mensaje = "No se ha seleccionado la columna de Unidades.";
                    }
                    else
                    {
                        //Obtenemos el nombre del documento
                        nuevoMapa.dsarchivo = System.IO.Path.GetFileName(rutaDocumento);
                        if (IsNuevo == true)
                        {
                            int idMapa = FacadeMapa.InsertaMapa(nuevoMapa, nombreColumna);
                        }
                        else
                        {
                            nuevoMapa.mapaId = mapaTrabajo.mapaId;
                            int idMapa = FacadeMapa.modificaMapa(nuevoMapa, nombreColumna);
                        }
                        resultado.ProcesoExitoso = 1;
                    }
                }
            }
            catch (Exception ex)
            {
                resultado.ProcesoExitoso = 0;
                resultado.Mensaje        = ex.Message;
            }
            return(Json(resultado, JsonRequestBehavior.DenyGet));
        }
예제 #5
0
        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));
        }
예제 #6
0
        public string ValidarHeaders(ExcelWorksheet hojaTrabajo, Mapas mapaExtraccion, int idproceso)
        {
            string ErrorHeader = "";

            try
            {
                EncabezadoMapas datosencabezado  = FacadeMapa.ConsultaEncabezadoByllmapa(mapaExtraccion.mapaId);
                int             FilaInicial      = mapaExtraccion.filaEncabezado;
                Boolean         isCorrectHeaders = true;
                string          HeaderArchivo    = "";
                string          HeaderMapa       = "";
                if (mapaExtraccion.colMayorista != 0)
                {
                    //Cargamos los datos a validar.
                    HeaderMapa    = limpiaHeader(datosencabezado.colMayorista);
                    HeaderArchivo = limpiaHeader(hojaTrabajo.Cells[FilaInicial, mapaExtraccion.colMayorista].Text);
                    if (HeaderArchivo != HeaderMapa)
                    {
                        isCorrectHeaders = false;
                        //Actualizamos el log del mapa con el error
                        ErrorHeader = ErrorHeader + Constantes.MESAJE_ERROR_HEADERS_MAPA.Replace("[HEADER_AR]", HeaderArchivo).Replace("[HEADER_MAP]", HeaderMapa) + " <br />";
                        ActualizaProcesoMapa(idproceso, mapaExtraccion.mapaId, 0, null, Constantes.MESAJE_ERROR_HEADERS_MAPA.Replace("[HEADER_AR]", HeaderArchivo).Replace("[HEADER_MAP]", HeaderMapa));
                    }
                }

                if (mapaExtraccion.colPresentacion != 0)
                {
                    HeaderMapa    = limpiaHeader(datosencabezado.colPresentacion);
                    HeaderArchivo = limpiaHeader(hojaTrabajo.Cells[FilaInicial, mapaExtraccion.colPresentacion].Text);
                    if (HeaderArchivo != HeaderMapa)
                    {
                        isCorrectHeaders = false;
                        //Actualizamos el log del mapa con el error
                        ErrorHeader = ErrorHeader + Constantes.MESAJE_ERROR_HEADERS_MAPA.Replace("[HEADER_AR]", HeaderArchivo).Replace("[HEADER_MAP]", HeaderMapa) + " <br />";
                        ActualizaProcesoMapa(idproceso, mapaExtraccion.mapaId, 0, null, Constantes.MESAJE_ERROR_HEADERS_MAPA.Replace("[HEADER_AR]", HeaderArchivo).Replace("[HEADER_MAP]", HeaderMapa));
                    }
                }

                if (mapaExtraccion.colFecha != 0)
                {
                    HeaderMapa    = limpiaHeader(datosencabezado.colFecha);
                    HeaderArchivo = limpiaHeader(hojaTrabajo.Cells[FilaInicial, mapaExtraccion.colFecha].Text);
                    if (HeaderArchivo != HeaderMapa)
                    {
                        isCorrectHeaders = false;
                        //Actualizamos el log del mapa con el error
                        ErrorHeader = ErrorHeader + Constantes.MESAJE_ERROR_HEADERS_MAPA.Replace("[HEADER_AR]", HeaderArchivo).Replace("[HEADER_MAP]", HeaderMapa) + " <br />";
                        ActualizaProcesoMapa(idproceso, mapaExtraccion.mapaId, 0, null, Constantes.MESAJE_ERROR_HEADERS_MAPA.Replace("[HEADER_AR]", HeaderArchivo).Replace("[HEADER_MAP]", HeaderMapa));
                    }
                }

                if (mapaExtraccion.colUnidades != 0)
                {
                    HeaderMapa    = limpiaHeader(datosencabezado.colUnidades);
                    HeaderArchivo = limpiaHeader(hojaTrabajo.Cells[FilaInicial, mapaExtraccion.colUnidades].Text);
                    if (HeaderArchivo != HeaderMapa)
                    {
                        isCorrectHeaders = false;
                        //Actualizamos el log del mapa con el error
                        ErrorHeader = ErrorHeader + Constantes.MESAJE_ERROR_HEADERS_MAPA.Replace("[HEADER_AR]", HeaderArchivo).Replace("[HEADER_MAP]", HeaderMapa) + " <br />";
                        ActualizaProcesoMapa(idproceso, mapaExtraccion.mapaId, 0, null, Constantes.MESAJE_ERROR_HEADERS_MAPA.Replace("[HEADER_AR]", HeaderArchivo).Replace("[HEADER_MAP]", HeaderMapa));
                    }
                }

                if (mapaExtraccion.colMedico != 0)
                {
                    HeaderMapa    = limpiaHeader(datosencabezado.colMedico);
                    HeaderArchivo = limpiaHeader(hojaTrabajo.Cells[FilaInicial, mapaExtraccion.colMedico].Text);
                    if (HeaderArchivo != HeaderMapa)
                    {
                        isCorrectHeaders = false;
                        //Actualizamos el log del mapa con el error
                        ErrorHeader = ErrorHeader + Constantes.MESAJE_ERROR_HEADERS_MAPA.Replace("[HEADER_AR]", HeaderArchivo).Replace("[HEADER_MAP]", HeaderMapa) + " <br />";
                        ActualizaProcesoMapa(idproceso, mapaExtraccion.mapaId, 0, null, Constantes.MESAJE_ERROR_HEADERS_MAPA.Replace("[HEADER_AR]", HeaderArchivo).Replace("[HEADER_MAP]", HeaderMapa));
                    }
                }

                if (mapaExtraccion.colEstado != 0)
                {
                    HeaderMapa    = limpiaHeader(datosencabezado.colEstado);
                    HeaderArchivo = limpiaHeader(hojaTrabajo.Cells[FilaInicial, mapaExtraccion.colEstado].Text);
                    if (HeaderArchivo != HeaderMapa)
                    {
                        isCorrectHeaders = false;
                        //Actualizamos el log del mapa con el error
                        ErrorHeader = ErrorHeader + Constantes.MESAJE_ERROR_HEADERS_MAPA.Replace("[HEADER_AR]", HeaderArchivo).Replace("[HEADER_MAP]", HeaderMapa) + " <br />";
                        ActualizaProcesoMapa(idproceso, mapaExtraccion.mapaId, 0, null, Constantes.MESAJE_ERROR_HEADERS_MAPA.Replace("[HEADER_AR]", HeaderArchivo).Replace("[HEADER_MAP]", HeaderMapa));
                    }
                }

                if (mapaExtraccion.colHospital != 0)
                {
                    HeaderMapa    = limpiaHeader(datosencabezado.colHospital);
                    HeaderArchivo = limpiaHeader(hojaTrabajo.Cells[FilaInicial, mapaExtraccion.colHospital].Text);
                    if (HeaderArchivo != HeaderMapa)
                    {
                        isCorrectHeaders = false;
                        //Actualizamos el log del mapa con el error
                        ErrorHeader = ErrorHeader + Constantes.MESAJE_ERROR_HEADERS_MAPA.Replace("[HEADER_AR]", HeaderArchivo).Replace("[HEADER_MAP]", HeaderMapa) + " <br />";
                        ActualizaProcesoMapa(idproceso, mapaExtraccion.mapaId, 0, null, Constantes.MESAJE_ERROR_HEADERS_MAPA.Replace("[HEADER_AR]", HeaderArchivo).Replace("[HEADER_MAP]", HeaderMapa));
                    }
                }

                if (mapaExtraccion.colSucursal != 0)
                {
                    HeaderMapa    = limpiaHeader(datosencabezado.colSucursal);
                    HeaderArchivo = limpiaHeader(hojaTrabajo.Cells[FilaInicial, mapaExtraccion.colSucursal].Text);
                    if (HeaderArchivo != HeaderMapa)
                    {
                        isCorrectHeaders = false;
                        //Actualizamos el log del mapa con el error
                        ErrorHeader = ErrorHeader + Constantes.MESAJE_ERROR_HEADERS_MAPA.Replace("[HEADER_AR]", HeaderArchivo).Replace("[HEADER_MAP]", HeaderMapa) + " <br />";
                        ActualizaProcesoMapa(idproceso, mapaExtraccion.mapaId, 0, null, Constantes.MESAJE_ERROR_HEADERS_MAPA.Replace("[HEADER_AR]", HeaderArchivo).Replace("[HEADER_MAP]", HeaderMapa));
                    }
                }

                if (mapaExtraccion.colLaboratorio != 0)
                {
                    HeaderMapa    = limpiaHeader(datosencabezado.colLaboratorio);
                    HeaderArchivo = limpiaHeader(hojaTrabajo.Cells[FilaInicial, mapaExtraccion.colLaboratorio].Text);
                    if (HeaderArchivo != HeaderMapa)
                    {
                        isCorrectHeaders = false;
                        //Actualizamos el log del mapa con el error
                        ErrorHeader = ErrorHeader + Constantes.MESAJE_ERROR_HEADERS_MAPA.Replace("[HEADER_AR]", HeaderArchivo).Replace("[HEADER_MAP]", HeaderMapa) + " <br />";
                        ActualizaProcesoMapa(idproceso, mapaExtraccion.mapaId, 0, null, Constantes.MESAJE_ERROR_HEADERS_MAPA.Replace("[HEADER_AR]", HeaderArchivo).Replace("[HEADER_MAP]", HeaderMapa));
                    }
                }

                if (mapaExtraccion.colCiudad != 0)
                {
                    HeaderMapa    = limpiaHeader(datosencabezado.colCiudad);
                    HeaderArchivo = limpiaHeader(hojaTrabajo.Cells[FilaInicial, mapaExtraccion.colCiudad].Text);
                    if (HeaderArchivo != HeaderMapa)
                    {
                        isCorrectHeaders = false;
                        //Actualizamos el log del mapa con el error
                        ErrorHeader = ErrorHeader + Constantes.MESAJE_ERROR_HEADERS_MAPA.Replace("[HEADER_AR]", HeaderArchivo).Replace("[HEADER_MAP]", HeaderMapa) + " <br />";
                        ActualizaProcesoMapa(idproceso, mapaExtraccion.mapaId, 0, null, Constantes.MESAJE_ERROR_HEADERS_MAPA.Replace("[HEADER_AR]", HeaderArchivo).Replace("[HEADER_MAP]", HeaderMapa));
                    }
                }

                if (mapaExtraccion.colColonia != 0)
                {
                    HeaderMapa    = limpiaHeader(datosencabezado.colColonia);
                    HeaderArchivo = limpiaHeader(hojaTrabajo.Cells[FilaInicial, mapaExtraccion.colColonia].Text);
                    if (HeaderArchivo != HeaderMapa)
                    {
                        isCorrectHeaders = false;
                        //Actualizamos el log del mapa con el error
                        ErrorHeader = ErrorHeader + Constantes.MESAJE_ERROR_HEADERS_MAPA.Replace("[HEADER_AR]", HeaderArchivo).Replace("[HEADER_MAP]", HeaderMapa) + " <br />";
                        ActualizaProcesoMapa(idproceso, mapaExtraccion.mapaId, 0, null, Constantes.MESAJE_ERROR_HEADERS_MAPA.Replace("[HEADER_AR]", HeaderArchivo).Replace("[HEADER_MAP]", HeaderMapa));
                    }
                }

                if (mapaExtraccion.colDireccion != 0)
                {
                    HeaderMapa    = limpiaHeader(datosencabezado.colDireccion);
                    HeaderArchivo = limpiaHeader(hojaTrabajo.Cells[FilaInicial, mapaExtraccion.colDireccion].Text);
                    if (HeaderArchivo != HeaderMapa)
                    {
                        isCorrectHeaders = false;
                        //Actualizamos el log del mapa con el error
                        ErrorHeader = ErrorHeader + Constantes.MESAJE_ERROR_HEADERS_MAPA.Replace("[HEADER_AR]", HeaderArchivo).Replace("[HEADER_MAP]", HeaderMapa) + " <br />";
                        ActualizaProcesoMapa(idproceso, mapaExtraccion.mapaId, 0, null, Constantes.MESAJE_ERROR_HEADERS_MAPA.Replace("[HEADER_AR]", HeaderArchivo).Replace("[HEADER_MAP]", HeaderMapa));
                    }
                }

                if (mapaExtraccion.colCP != 0)
                {
                    HeaderMapa    = limpiaHeader(datosencabezado.colCP);
                    HeaderArchivo = limpiaHeader(hojaTrabajo.Cells[FilaInicial, mapaExtraccion.colCP].Text);
                    if (HeaderArchivo != HeaderMapa)
                    {
                        isCorrectHeaders = false;
                        //Actualizamos el log del mapa con el error
                        ErrorHeader = ErrorHeader + Constantes.MESAJE_ERROR_HEADERS_MAPA.Replace("[HEADER_AR]", HeaderArchivo).Replace("[HEADER_MAP]", HeaderMapa) + " <br />";
                        ActualizaProcesoMapa(idproceso, mapaExtraccion.mapaId, 0, null, Constantes.MESAJE_ERROR_HEADERS_MAPA.Replace("[HEADER_AR]", HeaderArchivo).Replace("[HEADER_MAP]", HeaderMapa));
                    }
                }
                if (mapaExtraccion.colBrick != 0)
                {
                    HeaderMapa    = limpiaHeader(datosencabezado.colBrick);
                    HeaderArchivo = limpiaHeader(hojaTrabajo.Cells[FilaInicial, mapaExtraccion.colBrick].Text);
                    if (HeaderArchivo != HeaderMapa)
                    {
                        isCorrectHeaders = false;
                        //Actualizamos el log del mapa con el error
                        ErrorHeader = ErrorHeader + Constantes.MESAJE_ERROR_HEADERS_MAPA.Replace("[HEADER_AR]", HeaderArchivo).Replace("[HEADER_MAP]", HeaderMapa) + " <br />";
                        ActualizaProcesoMapa(idproceso, mapaExtraccion.mapaId, 0, null, Constantes.MESAJE_ERROR_HEADERS_MAPA.Replace("[HEADER_AR]", HeaderArchivo).Replace("[HEADER_MAP]", HeaderMapa));
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(ErrorHeader);
        }
예제 #7
0
        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));
        }