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)); }
//// 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)); }
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 }
//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)); }
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)); }
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); }
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)); }