Example #1
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);
        }
Example #2
0
        /// <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);
        }