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