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