Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        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);
            }
        }