/// <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); }
/// <summary> /// DatosEstadoHidrico. /// </summary> /// <param name="fecha">The fecha<see cref="DateTime"/>.</param> /// <returns>The <see cref="DatosEstadoHidrico"/>.</returns> public DatosEstadoHidrico DatosEstadoHidrico(DateTime fecha) { if (fecha > DateTime.Today) { fecha = DateTime.Today; } if (fecha > unidadCultivoDatosHidricos.FechaFinalDeEstudio()) { fecha = unidadCultivoDatosHidricos.FechaFinalDeEstudio(); } LineaBalance linBalAFecha = LineasBalance.Find(x => x.Fecha == fecha); if (linBalAFecha == null) { linBalAFecha = LineasBalance.Last(); fecha = (DateTime)linBalAFecha.Fecha; } unidadCultivoDatosHidricos.ObtenerMunicicioParaje(out string provincias, out string municipios, out string parajes); DatosEstadoHidrico ret = new DatosEstadoHidrico { Fecha = fecha, Eficiencia = unidadCultivoDatosHidricos.EficienciaRiego, Alias = unidadCultivoDatosHidricos.Alias, IdCultivo = unidadCultivoDatosHidricos.IdCultivo, SuperficieM2 = unidadCultivoDatosHidricos.UnidadCultivoExtensionM2, IdTemporada = unidadCultivoDatosHidricos.IdTemporada, IdTipoRiego = unidadCultivoDatosHidricos.IdTipoRiego, NParcelas = unidadCultivoDatosHidricos.NParcelas, Regante = unidadCultivoDatosHidricos.ReganteNombre, NIF = unidadCultivoDatosHidricos.ReganteNif, Municipios = municipios, Parajes = parajes, Telefono = unidadCultivoDatosHidricos.ReganteTelefono, TelefonoSMS = unidadCultivoDatosHidricos.ReganteTelefonoSMS, Pluviometria = unidadCultivoDatosHidricos.Pluviometria, TipoRiego = unidadCultivoDatosHidricos.TipoRiego, FechaSiembra = unidadCultivoDatosHidricos.FechaSiembra(), Cultivo = unidadCultivoDatosHidricos.CultivoNombre, IdUnidadCultivo = unidadCultivoDatosHidricos.IdUnidadCultivo, Estacion = unidadCultivoDatosHidricos.EstacionNombre, IdRegante = unidadCultivoDatosHidricos.IdRegante, IdEstacion = unidadCultivoDatosHidricos.IdEstacion, SumaLluvia = SumaLluvias(fecha), SumaRiego = SumaRiegosMm(fecha), AguaUtil = AguaUtil(fecha), RegarEnNDias = RegarEnNDias(fecha), AguaUtilTotal = AguaUtilTotal(fecha), Consumo = SumaEtc(fecha), CapacidadDeCampo = linBalAFecha.CapacidadCampo, PuntoDeMarchited = linBalAFecha.PuntoMarchitez, AguaUtilOptima = AguaUtilOptima(fecha), AguaPerdida = AguaPerdida(fecha), AguaTotalPerdidaDrenaje = AguaTotalPerdidaDrenaje(fecha), CosteAgua = CosteAgua(fecha), NDiasEstres = NDIasEstres(fecha), NumDiasEstresPorDrenaje = NumDiasEstresPorDrenaje(fecha), EstadoHidrico = IndiceEstres(fecha), Textura = unidadCultivoDatosHidricos.TipoSueloDescripcion, IndiceEstres = linBalAFecha.IndiceEstres, DescripcionEstres = linBalAFecha.DescripcionEstres, ColorEstres = linBalAFecha.ColorEstres, MensajeEstres = linBalAFecha.MensajeEstres, NumCambiosDeEtapaPendientesDeConfirmar = NumCambiosDeEtapaPendientesDeConfirmar(fecha), Status = "OK", }; return(ret); }