private static bool Execute(VW_MOD_POZO mod_pozo) { bool response = false; ModeloProsper.Logger Logger = new ModeloProsper.Logger(mod_pozo.IDMODPOZO); ModeloProsper.Modelo modelo = new ModeloProsper.Modelo(mod_pozo.IDMODPOZO); var factory = new ChannelFactory <Interfaces.IModelo>(new BasicHttpBinding() { SendTimeout = TimeSpan.Parse("0:15:00") }, EndPointModelo); Interfaces.IModelo server = factory.CreateChannel(); WriteLineText("Inicia modelo: " + mod_pozo.POZO); Dictionary <int, int> CatSaps = db.CAT_SAP.ToDictionary(k => k.IDCATSAP, d => d.PROSPER.GetValueOrDefault()); try { Logger.SetEstatus(2); switch (mod_pozo.FUNCION) { case 1: response = modelo.Sensibilidad_BN(); var conds = db.PA_operacionPozosFecha(mod_pozo.IDPOZO).ToList(); PA_operacionPozosFecha_Result cond = conds[0]; var cabezera = db.CabeceraPozoGBN.Where(w => w.bajaLogica == null && w.idPozo == mod_pozo.IDPOZO).SingleOrDefault(); if (response && cabezera != null && cond.FEC_CONDICION == mod_pozo.FECHAMODELO) { var inyeccion = db.DatosInyeccion.Where(w => w.idCabeceraPozoGBN == cabezera.idCabeceraPozoGBN).ToList(); inyeccion.ForEach(e => db.DatosInyeccion.Remove(e)); db.SaveChanges(); var QGI = db.COMPORTAMIENTO_GAS.Where(w => w.IDMODPOZO == mod_pozo.IDMODPOZO).SingleOrDefault(); if (QGI != null) { var QGIDetalles = db.COMPORTAMIENTO_GAS_DETALLES.Where(w => w.IDCOMPORTAMIENTOGAS == QGI.IDCOMPORTAMIENTOGAS).OrderBy(o => o.XAUX).ToList(); if (QGIDetalles.Count > 0) { foreach (var dt in QGIDetalles) { db.DatosInyeccion.Add(new DatosInyeccion() { idCabeceraPozoGBN = cabezera.idCabeceraPozoGBN, qLiq = dt.YAUX.GetValueOrDefault(), qGasBN = dt.XAUX.GetValueOrDefault() }); //Multiplicacion x 1000 fue removida de xaux } db.SaveChanges(); } } cabezera.porc_agua = cond.gastoagua; cabezera.presionCabeza = cond.PRESION_TP.GetValueOrDefault(); cabezera.qGasBN = cond.VOLUMEN_BN.GetValueOrDefault(); cabezera.fecha = cond.FEC_CONDICION.GetValueOrDefault(); db.Entry(cabezera).State = EntityState.Modified; db.SaveChanges(); } break; case 2: response = modelo.Update(); break; default: //ModeloProsper.Modelo modelo = new ModeloProsper.Modelo(mod_pozo.IDMODPOZO); response = modelo.Create(); break; } if (response) { if (mod_pozo.ESTABILIDAD > 0) { var Configuracion = (from config in db.CONFIGURACION where config.IDMODPOZO == mod_pozo.IDMODPOZO && config.Fecha == (db.CONFIGURACION.Where(w => w.IDMODPOZO == mod_pozo.IDMODPOZO && config.ESTATUS == 1).Max(m => m.Fecha)) select config).SingleOrDefault(); //if (Configuracion != null) //{ // Estabilidad(mod_pozo, Configuracion); //} ModeloProsper.Estabilidad estabilidad = new Estabilidad(Configuracion); estabilidad.Execute(); estabilidad.Save(); } Logger.SetEstatus(3, "Ejecución correcta"); WriteLineText("Termina modelo: " + mod_pozo.POZO, "success"); } return(response); } catch (Exception ex) { Logger.SetLog(-1, ex.Message); if ((Logger.Intentos + 1) > Logger.Configuracion.MAXREINTENTOS) //revisar hay observaciones en este algoritmo { Logger.SetEstatus(-1); } else { modelo.Reset(mod_pozo.IDMODPOZO, 0); } WriteLineText(ex.Message, "danger"); return(false); } }
private static bool ExecLocal(Entities_ModeloCI db, VW_MOD_POZO mod_pozo, Modo MError) { bool response = false; ModeloProsper.Logger Logger = new ModeloProsper.Logger(mod_pozo.IDMODPOZO); ModeloProsper.Modelo modelo = new ModeloProsper.Modelo(mod_pozo.IDMODPOZO); try { Logger.SetEstatus(2); switch (mod_pozo.FUNCION) { case 1: response = modelo.Sensibilidad_BN(); var conds = db.PA_operacionPozosFecha(mod_pozo.IDPOZO).ToList(); PA_operacionPozosFecha_Result cond = conds[0]; var cabezera = db.CabeceraPozoGBN.Where(w => w.bajaLogica == null && w.idPozo == mod_pozo.IDPOZO).SingleOrDefault(); if (response && cabezera != null && cond.FEC_CONDICION == mod_pozo.FECHAMODELO) { var inyeccion = db.DatosInyeccion.Where(w => w.idCabeceraPozoGBN == cabezera.idCabeceraPozoGBN).ToList(); inyeccion.ForEach(e => db.DatosInyeccion.Remove(e)); db.SaveChanges(); var QGI = db.COMPORTAMIENTO_GAS.Where(w => w.IDMODPOZO == mod_pozo.IDMODPOZO).SingleOrDefault(); if (QGI != null) { var QGIDetalles = db.COMPORTAMIENTO_GAS_DETALLES.Where(w => w.IDCOMPORTAMIENTOGAS == QGI.IDCOMPORTAMIENTOGAS).OrderBy(o => o.XAUX).ToList(); if (QGIDetalles.Count > 0) { foreach (var dt in QGIDetalles) { db.DatosInyeccion.Add(new DatosInyeccion() { idCabeceraPozoGBN = cabezera.idCabeceraPozoGBN, qLiq = dt.YAUX.GetValueOrDefault(), qGasBN = dt.XAUX.GetValueOrDefault() }); //Multiplicacion x 1000 fue removida de xaux } db.SaveChanges(); } } cabezera.porc_agua = cond.gastoagua; cabezera.presionCabeza = cond.PRESION_TP.GetValueOrDefault(); cabezera.qGasBN = cond.VOLUMEN_BN.GetValueOrDefault(); cabezera.fecha = cond.FEC_CONDICION.GetValueOrDefault(); db.Entry(cabezera).State = EntityState.Modified; db.SaveChanges(); } break; case 2: response = modelo.Update(); break; default: response = modelo.Create(); break; } Logger.SetEstatus(3, "Ejecución correcta"); if (MError == Modo.console) { WriteLineText(mod_pozo.POZO + ": Modelo ejecutado correctamente", "success"); } return(response); } catch (Exception ex) { if (Logger.Configuracion.ESTATUS == 2) { Logger.SetEstatus(-1, ex.Message); } if ((Logger.Intentos + 1) < Logger.Configuracion.MAXREINTENTOS) { modelo.Reset(mod_pozo.IDMODPOZO, 0); } WriteEventLogEntry(System.Diagnostics.EventLogEntryType.Error, 21, mod_pozo.POZO + ": " + ex.Message, MError); return(false); } }