/// <summary>
        /// The RecreateAll.
        /// </summary>
        /// <returns>The <see cref="bool"/>.</returns>
        public static bool RecreateAll()
        {
            DateTime dateUpdate   = DateTime.Now.Date;
            DateTime fechaCalculo = DateTime.Now.Date;

            if (recalculando == true)
            {
                return(false);
            }
            recalculando = true;
            lCacheBalances.Clear();
            lCacheActionResult.Clear();
            DB.InsertaEvento("Inicia RecreateAll" + DateTime.Now.ToString());
            DB.DatosClimaticosSiarForceRefresh();
            NPoco.Database          db          = DB.ConexionOptiaqua;
            List <Models.Temporada> lTemporadas = DB.TemporadasList();

            foreach (Models.Temporada temporada in lTemporadas)
            {
                string idTemporada = temporada.IdTemporada;
                if (dateUpdate >= temporada.FechaFinal)
                {
                    fechaCalculo = temporada.FechaFinal;
                }
                else
                {
                    fechaCalculo = dateUpdate;
                }
                Dictionary <string, CacheUnidadCultivo> cacheTemporada = new Dictionary <string, CacheUnidadCultivo>();
                lCacheBalances.Add(idTemporada, cacheTemporada);
                List <string>  lIdUnidadCultivo = db.Fetch <string>($"SELECT DISTINCT IdUnidadCultivo from UnidadCultivoCultivo WHERE IdTemporada=@0", idTemporada);
                BalanceHidrico bh = null;
                foreach (string idUC in lIdUnidadCultivo)
                {
                    //try {
                    //DB.InsertaEvento("item " + idTemporada + " " + idUC +" "+  DateTime.Now.ToString());
                    bh = BalanceHidrico.Balance(idUC, fechaCalculo, true, false);
                    if (bh != null)
                    {
                        cacheTemporada.Add(idUC, new CacheUnidadCultivo {
                            Fecha = dateUpdate, Balance = bh
                        });
                    }
                    //} catch (Exception) {

                    //}
                }
            }
            DB.InsertaEvento("Finaliza RecreateAll" + DateTime.Now.ToString());
            recalculando = false;
            return(true);
        }
        /// <summary>
        /// The Add.
        /// </summary>
        /// <param name="bh">The bh<see cref="BalanceHidrico"/>.</param>
        /// <param name="fecha">The fecha<see cref="DateTime"/>.</param>
        internal static void Add(BalanceHidrico bh, DateTime fecha)
        {
            if (bh == null)
            {
                return;
            }
            string idUC        = bh.unidadCultivoDatosHidricos.IdUnidadCultivo;
            string idTemporada = DB.TemporadaDeFecha(idUC, fecha);

            if (!lCacheBalances.Keys.Contains(idTemporada))
            {
                lCacheBalances.Add(idTemporada, new Dictionary <string, CacheUnidadCultivo>());
            }
            Dictionary <string, CacheUnidadCultivo> cacheTemporada = lCacheBalances[idTemporada];

            cacheTemporada.Remove(idUC);
            cacheTemporada.Add(idUC, new CacheUnidadCultivo {
                Fecha = fecha, Balance = bh
            });
        }
Пример #3
0
        /// <summary>
        /// The Balance.
        /// </summary>
        /// <param name="idUC">The idUC<see cref="string"/>.</param>
        /// <param name="fecha">The fecha<see cref="DateTime"/>.</param>
        /// <param name="actualizaFechasEtapas">The actualizaFechasEtapas<see cref="bool"/>.</param>
        /// <param name="usarCache">The usarCache<see cref="bool"/>.</param>
        /// <returns>The <see cref="BalanceHidrico"/>.</returns>
        public static BalanceHidrico Balance(string idUC, DateTime fecha, bool actualizaFechasEtapas = true, bool usarCache = true)
        {
#if DEBUG
            usarCache = false;
#endif
            BalanceHidrico bh = null;
            if (usarCache == true)
            {
                bh = CacheDatosHidricos.Balance(idUC, fecha);
            }
            if (bh == null)
            {
                UnidadCultivoDatosHidricos dh = new UnidadCultivoDatosHidricos(idUC, fecha);
                bh = new BalanceHidrico(dh, actualizaFechasEtapas, dh.FechaFinalDeEstudio());
                if (usarCache)
                {
                    CacheDatosHidricos.Add(bh, fecha);
                }
            }
            return(bh);
        }
Пример #4
0
        /// <summary>
        /// Retorna listado de datos hídricos filtrados por los parámetros indicados.
        /// Pasar '' como parametro en blanco si no se desea filtrar.
        /// </summary>
        /// <param name="idRegante">idCliente<see cref="int?"/>.</param>
        /// <param name="idUnidadCultivo">idUnidadCultivo<see cref="string"/>.</param>
        /// <param name="idMunicipio">idMunicipio<see cref="int?"/>.</param>
        /// <param name="idCultivo">idCultivo<see cref="string"/>.</param>
        /// <param name="fechaStr">fecha.</param>
        /// <param name="roleUsuario">.</param>
        /// <param name="idUsuario">.</param>
        /// <returns><see cref="object"/>.</returns>
        public static object DatosHidricosList(int?idRegante, string idUnidadCultivo, int?idMunicipio, string idCultivo, string fechaStr, string roleUsuario, int idUsuario)
        {
            List <DatosEstadoHidrico> ret = new List <DatosEstadoHidrico>();
            List <string>             lIdUnidadCultivo = null;

            idUnidadCultivo = idUnidadCultivo.Unquoted();
            if (idUnidadCultivo != "")
            {
                lIdUnidadCultivo = new List <string> {
                    idUnidadCultivo
                }
            }
            ;
            else
            {
                lIdUnidadCultivo = DB.ListaUnidadesCultivoQueCumplenFiltro(idMunicipio, idCultivo, idRegante);
            }

            if (!DateTime.TryParse(fechaStr, out DateTime dFecha))
            {
                dFecha = DateTime.Now.Date;
            }

            // De todas las Unidades de Cultivo quitar las que el usuario no puede ver.
            List <string> lValidas = new List <string>();

            if (roleUsuario == "admin")
            {
                lValidas = lIdUnidadCultivo;
            }
            else if (roleUsuario == "asesor")
            {
                List <string> lAsesorUCList = DB.AsesorUnidadCultivoList(idUsuario);
                lValidas = lIdUnidadCultivo.Intersect(lAsesorUCList).ToList();
            }
            else    // usuario
            {
                foreach (string uc in lIdUnidadCultivo)
                {
                    string idTemporada = DB.TemporadaDeFecha(uc, dFecha);
                    if (DB.LaUnidadDeCultivoPerteneceAlReganteEnLaTemporada(uc, idUsuario, idTemporada))
                    {
                        lValidas.Add(uc);
                    }
                }
            }

            DatosEstadoHidrico         datosEstadoHidrico = null;
            UnidadCultivoDatosHidricos dh = null;
            BalanceHidrico             bh = null;
            List <GeoLocParcela>       lGeoLocParcelas = null;

            foreach (string idUc in lValidas)
            {
                try {
                    lGeoLocParcelas = null;
                    string idTemporada = DB.TemporadaDeFecha(idUc, dFecha);
                    if (idTemporada != null)
                    {
                        lGeoLocParcelas = DB.GeoLocParcelasList(idUc, idTemporada);
                        bh = BalanceHidrico.Balance(idUc, dFecha);
                        datosEstadoHidrico            = bh.DatosEstadoHidrico(dFecha);
                        datosEstadoHidrico.GeoLocJson = Newtonsoft.Json.JsonConvert.SerializeObject(lGeoLocParcelas);
                        ret.Add(datosEstadoHidrico);
                    }
                } catch (Exception ex) {
                    dh = bh.unidadCultivoDatosHidricos;
                    dh.ObtenerMunicicioParaje(out string provincias, out string municipios, out string parajes);
                    datosEstadoHidrico = new DatosEstadoHidrico {
                        Fecha           = dFecha,
                        Pluviometria    = dh.Pluviometria,
                        TipoRiego       = dh.TipoRiego,
                        FechaSiembra    = dh.FechaSiembra(),
                        Cultivo         = dh.CultivoNombre,
                        Estacion        = dh.EstacionNombre,
                        IdEstacion      = dh.IdEstacion,
                        IdRegante       = dh.IdRegante,
                        IdUnidadCultivo = idUc,
                        Municipios      = municipios,
                        Parajes         = parajes,
                        Regante         = dh.ReganteNombre,
                        Alias           = dh.Alias,
                        Eficiencia      = dh.EficienciaRiego,
                        IdCultivo       = dh.IdCultivo,
                        IdTemporada     = dh.IdTemporada,
                        IdTipoRiego     = dh.IdTipoRiego,
                        NIF             = dh.ReganteNif,
                        Telefono        = dh.ReganteTelefono,
                        TelefonoSMS     = dh.ReganteTelefonoSMS,
                        SuperficieM2    = dh.UnidadCultivoExtensionM2,
                        NParcelas       = dh.NParcelas,
                        Textura         = "",
                        GeoLocJson      = Newtonsoft.Json.JsonConvert.SerializeObject(lGeoLocParcelas),
                        Status          = "ERROR:" + ex.Message
                    };
                    ret.Add(datosEstadoHidrico);
                }
            }
            return(ret);
        }