public void Dispose() { if (transation != null) { transation.Rollback(); } if (_db != null) { _db.Dispose(); } }
public object CargaDatosMVNO(string Periodo) { string ruta = "", nombreArchivo = "", exception = "Error al cargar el archivo."; char separador; bool exitoso = false; int Id = 0; int i = 0; int? numeroCarga = db.DatosTraficoMVNO.Max(x => x.NumeroCarga); if (numeroCarga == null) { numeroCarga = 1; } string periodo = DateTime.ParseExact(Periodo.ToUpper(), "yyyy MMMM", new CultureInfo("es-ES")).ToString("yyyy/MM"); string f = DateTime.ParseExact(periodo, "yyyy/MM", new CultureInfo("es-ES")).ToString("dd/MM/yyyy"); DateTime fecha = Convert.ToDateTime(periodo); object respuesta = null; using (TransactionScope transaction = new TransactionScope()) { try { var traficoMVNO = from archivo in db.CargaDocumento join parametro in db.parametrosCargaDocumento on archivo.Id_Documento equals parametro.idDocumento where archivo.Periodo == periodo && archivo.EstatusCarga == "PC" && archivo.Id_LineaNegocio == 3 select new { parametro.pathURL, parametro.nombreArchivo, archivo.Periodo, archivo.Id, archivo.EstatusCarga, parametro.caracterSeparador }; nombreArchivo = traficoMVNO.SingleOrDefault().nombreArchivo.Replace("YYYYMM", traficoMVNO.SingleOrDefault().Periodo.Replace("/", "")); ruta = traficoMVNO.SingleOrDefault().pathURL + nombreArchivo; Id = traficoMVNO.SingleOrDefault().Id; separador = Convert.ToChar(traficoMVNO.SingleOrDefault().caracterSeparador); string[] lineas = System.IO.File.ReadAllLines(ruta); if (lineas.Count() > 0) { for (i = 0; i < lineas.Count(); i++) { if (lineas[i].Contains("Collection") || lineas[i] == "") { continue; } var linea = lineas[i].Split(separador); var datosMVNOS = new DatosTraficoMVNO { //ID carga Id_Carga = Id, //Collection Collection = ValidaCampo(linea[0], "Collection"), //HOperator HOperator = ValidaCampo(linea[1], "HOperator"), //Operator Operator = ValidaCampo(linea[2], "Operator"), //ReferenceCode ReferenceCode = ValidaCampo(linea[3], "ReferenceCode"), //TransDate TransDate = Convert.ToDateTime(ValidaCampo(linea[4], "TransDate")), //Eventos Eventos = decimal.Parse(ValidaCampo(linea[5], "Eventos")), //IdCollectionServicioRegion IdColleccionServicioRegion = ValidaCampo(linea[6], "IdCollectionServicioRegion"), //Service Service = ValidaCampo(linea[7], "Service"), //Real Real = decimal.Parse(ValidaCampo(linea[8], "Real")), //Duration Duration = decimal.Parse(ValidaCampo(linea[9], "Duration")), //Monto Monto = decimal.Parse(linea[10]), //PrecioUnitario PrecioUnitario = decimal.Parse(linea[11]), //Moneda Moneda = ValidaCampo(linea[12], "Moneda"), //Module Module = ValidaCampo(linea[13], "Module"), //Numero carga NumeroCarga = numeroCarga }; db.DatosTraficoMVNO.Add(datosMVNOS); Log log2 = new Log(); log2.insertaNuevoOEliminado(datosMVNOS, "Nuevo", "DatosTraficoMVNO.html", Request.UserHostAddress); db.SaveChanges(); } CargaDocumento cargaDocumento = db.CargaDocumento.Where(x => x.Id == Id).SingleOrDefault(); cargaDocumento.EstatusCarga = "CC"; cargaDocumento.FechaCarga = DateTime.Now; InsertCargaDocumento(cargaDocumento, fecha); //Log log3 = new Log(); //log3.insertaBitacoraModificacion(cargaDocumento, "Id", cargaDocumento.Id, "CargaDocumento.html", Request.UserHostAddress); db.SaveChanges(); } transaction.Complete(); exitoso = true; } catch (FileNotFoundException) { exception = "El archivo no se encuentra en el directorio especificado."; } catch (UnauthorizedAccessException) { exception = "No tiene permiso para acceder al archivo actual."; } catch (IOException e) when((e.HResult & 0x0000FFFF) == 32) { exception = "Falta el nombre del archivo, o el archivo o directorio está en uso."; } catch (TransactionAbortedException) { exception = "Transacción abortada. Se presentó un error." + " Línea: " + i; } catch (FormatException) { exception = "Error en la conversión de datos." + " Línea: " + i; } finally { if (exitoso) { db.SaveChanges(); respuesta = new { success = true, results = "ok" }; } else { respuesta = new { success = false, results = exception }; } } } db.Dispose(); return(respuesta); }
public object CargaDatosLDI(string Periodo) { string ruta = "", nombreArchivo = "", exception = "Error al cargar el archivo"; object respuesta = null; char separador; bool exitoso = false; int Id = 0, numeroDeLinea = 0, contador = 0; string[] lineas = null; string operadores = "", monedas = "", trafico = ""; string[] arreglo = null; string periodo = DateTime.ParseExact(Periodo.ToUpper(), "yyyy MMMM", new CultureInfo("es-ES")).ToString("yyyy/MM"); DateTime fechaPeriodo = Convert.ToDateTime(periodo); int lineaLDI = 2; List <Claves> listaIDS = new List <Claves>(); List <Errores> listaErrores = new List <Errores>(); List <DatosTraficoLDI> listaTrafico = new List <DatosTraficoLDI>(); List <DatosTraficoLDI> listaTraficoCompleta = new List <DatosTraficoLDI>(); int?numeroCarga = db.DatosTraficoLDI.Max(x => x.NumeroCarga); if (numeroCarga == null) { numeroCarga = 1; } else { numeroCarga = numeroCarga + 1; } List <object> lista = new List <object>(); using (TransactionScope transaction = new TransactionScope()) { try { var traficoLDI = from archivo in db.CargaDocumento join parametro in db.parametrosCargaDocumento on archivo.Id_Documento equals parametro.idDocumento where archivo.Periodo == periodo && archivo.EstatusCarga == "PC" && archivo.Id_LineaNegocio == lineaLDI select new { parametro.pathURL, parametro.nombreArchivo, archivo.Periodo, archivo.Id, archivo.EstatusCarga, parametro.caracterSeparador }; nombreArchivo = traficoLDI.SingleOrDefault().nombreArchivo.Replace("YYYYMM", traficoLDI.SingleOrDefault().Periodo.Replace("/", "")); ruta = traficoLDI.SingleOrDefault().pathURL + nombreArchivo; Id = traficoLDI.SingleOrDefault().Id; separador = Convert.ToChar(traficoLDI.SingleOrDefault().caracterSeparador); lineas = System.IO.File.ReadAllLines(ruta, Encoding.Default).Where(x => !string.IsNullOrWhiteSpace(x)).ToArray(); string[] arrOperador = new string[lineas.Count()]; string[] arrMoneda = new string[lineas.Count()]; string[] arrTrafico = new string[lineas.Count()]; foreach (string linea in lineas) { if (numeroDeLinea > 0) { arreglo = linea.Split(','); if (ValidaLinea(arreglo)) { operadores = operadores + arreglo[4] + ","; monedas = monedas + arreglo[10] + ","; trafico = trafico + arreglo[13] + ","; arrOperador[contador] = arreglo[4]; arrMoneda[contador] = arreglo[10]; arrTrafico[contador] = arreglo[13]; listaTrafico.Add(new DatosTraficoLDI { Id_Carga = Id, Franchise = arreglo[0], Direccion = arreglo[1], Billed_Product = arreglo[2], Rating_Component = arreglo[3], Unit_Cost_User = decimal.Parse(arreglo[5]), Month = DateTime.ParseExact(arreglo[6], "dd/MM/yyyy", new CultureInfo("es-ES")), Calls = decimal.Parse(arreglo[7]), Actual_Usage = decimal.Parse(arreglo[8]), Charge_Usage = decimal.Parse(arreglo[9]), Amount = decimal.Parse(arreglo[11]), Iva = decimal.Parse(arreglo[12]), Sobrecargo = decimal.Parse(arreglo[14]), NumeroCarga = numeroCarga, fecha_contable = fechaPeriodo.Date }); //Código temporal contador++; } else { listaErrores.Add(new Errores { numeroLinea = numeroDeLinea, motivo = "Número de campos insuficiente." }); } } numeroDeLinea++; } //Obtener ID's correspondientes listaIDS = BuscaId(listaTrafico, trafico, operadores, monedas, lineaLDI); //Asigna los Id a los elementos de la lista listaTrafico = ValidaAsignaDatos(listaTrafico, listaIDS, arrOperador, arrMoneda, arrTrafico, listaErrores); listaTraficoCompleta = listaTrafico; if (listaTraficoCompleta.Count() > 0) { DbContext context = db; IC2.DbContextSqlServerExtensions.BulkInsert(context, listaTraficoCompleta, true, "DatosTraficoLDI"); //Log log3 = new Log(); //log3.registraCarga("DatosTraficoLDI.html", Request.UserHostAddress, nombreArchivo); } //Conceptos db.sp_traficoConceptos_Update(fechaPeriodo); //Data Trafico InsertDataTrafico(fechaPeriodo); //Actualiza Carga Documentos CargaDocumento cargaDocumento = db.CargaDocumento.Where(x => x.Id == Id).SingleOrDefault(); cargaDocumento.EstatusCarga = "CC"; cargaDocumento.FechaCarga = DateTime.Now; InsertCargaDocumento(cargaDocumento, fechaPeriodo); //Log log4 = new Log(); //log4.insertaBitacoraModificacion(cargaDocumento, "Id", cargaDocumento.Id, "CargaDocumento.html", Request.UserHostAddress); transaction.Complete(); exitoso = true; } catch (FileNotFoundException) { exception = "El archivo no se encuentra en el directorio especificado."; } catch (UnauthorizedAccessException) { exception = "No tiene permiso para acceder al archivo actual."; } catch (IOException e) when((e.HResult & 0x0000FFFF) == 32) { exception = "Falta el nombre del archivo, o el archivo o directorio está en uso."; } catch (TransactionAbortedException) { exception = "Transacción abortada. Se presentó un error." + " Línea: " + contador; } catch (FormatException) { exception = "Error en la conversión de datos." + " Línea: " + contador; } finally { if (exitoso) { respuesta = new { success = true, results = "ok" }; } else { respuesta = new { success = false, results = exception }; } } } db.SaveChanges(); db.Dispose(); return(respuesta); }