Exemplo n.º 1
0
        /// <summary>
        ///   il metodo restituisce una lista di mezzi in servizio associati ad una determinata sede
        /// </summary>
        /// <param name="codiceSede">il codice sede</param>
        /// <returns>Lista di MezziInServizio</returns>
        public List <MezzoInServizio> Get(string[] CodiciSede)
        {
            var mezzi      = _getMezziUtilizzabili.Get(CodiciSede.ToList());
            var statoMezzi = _getStatoMezzi.Get(CodiciSede);

            var listaMezzoInServizio = mezzi.Result.Select(mezzo =>
            {
                var statoOperativoMezzi = statoMezzi.Find(x => x.CodiceMezzo.Equals(mezzo.Codice));
                mezzo.Stato             = statoOperativoMezzi != null ? statoOperativoMezzi.StatoOperativo : Costanti.MezzoInSede;
                mezzo.IdRichiesta       = statoOperativoMezzi?.CodiceRichiesta;
                var mezzoMarker         = new MezzoMarker()
                {
                    Mezzo         = mezzo,
                    InfoRichiesta = _getInfoRichiesta.GetInfoRichiestaFromCodiceRichiestaMezzo(mezzo.IdRichiesta)
                };
                var mezzoInServizio = new MezzoInServizio()
                {
                    Mezzo = mezzoMarker
                };

                if (mezzo.IdRichiesta != null)
                {
                    var richiesta = _getRichiestaById.GetByCodice(mezzo.IdRichiesta);
                    if (richiesta != null)
                    {
                        foreach (var partenza in richiesta.Partenze)
                        {
                            if (partenza.Partenza.Mezzo.Codice == mezzo.Codice)
                            {
                                mezzoInServizio.Squadre = partenza.Partenza.Squadre;
                            }
                        }
                    }
                }
                else
                {
                    mezzoInServizio.Squadre = null;
                }

                return(mezzoInServizio);
            });

            return(listaMezzoInServizio
                   .OrderBy(c => c.Mezzo.Mezzo.Stato == Costanti.MezzoInSede)
                   .ToList());
        }
Exemplo n.º 2
0
        /// <summary>
        ///   il metodo la classe recupera le informazioni dei mezzi e la loro posizione georeferenziata.
        /// </summary>
        /// <param name="filtroAreaMappa">un area mappa</param>
        /// <returns>Lista di MezziMarker</returns>
        public List <MezzoMarker> GetListaMezziMarker(AreaMappa filtroAreaMappa)
        {
            var listaMezziFilter = new List <MezzoMarker>();
            var listaMezzi       = new List <Mezzo>();

            if (!filtroAreaMappa.FiltroMezzi.FiltraPerAreaMappa)
            {
                listaMezzi = _getMezziUtilizzabili.Get(filtroAreaMappa.CodiceSede).Result;
            }
            else
            {
                listaMezzi = _getMezziUtilizzabiliByAreaMappa.Get(filtroAreaMappa).Result;
            }

            var listaMezziMarker = listaMezzi.Where(m => m != null).Select(mezzo => new MezzoMarker()
            {
                Mezzo         = mezzo,
                InfoRichiesta = _getInfoRichiesta.GetInfoRichiestaFromCodiceRichiestaMezzo(mezzo.IdRichiesta)
            }).ToList();

            if (filtroAreaMappa.BottomLeft == null)
            {
                return(listaMezziMarker);
            }

            listaMezziFilter.AddRange(listaMezziMarker.Where(mezzo => mezzo.Mezzo.Coordinate.Latitudine >= filtroAreaMappa.BottomLeft.Latitudine && mezzo.Mezzo.Coordinate.Latitudine <= filtroAreaMappa.TopRight.Latitudine && mezzo.Mezzo.Coordinate.Longitudine >= filtroAreaMappa.BottomLeft.Longitudine && mezzo.Mezzo.Coordinate.Longitudine <= filtroAreaMappa.TopRight.Longitudine));

            var listaMezziMarkerRaggruppata = new List <MezzoMarker>();

            var listaMezziFiltrataPerStato       = new List <MezzoMarker>();
            var listaMezziFitrataPerStatoEGenere = new List <MezzoMarker>();
            var listaMezziFiltrataPerGenere      = new List <MezzoMarker>();

            if (filtroAreaMappa.FiltroMezzi.Stato.Any())
            {
                foreach (var stato in filtroAreaMappa.FiltroMezzi.Stato)
                {
                    listaMezziFiltrataPerStato.AddRange(listaMezziFilter.FindAll(x => x.Mezzo.Stato.Equals(stato)));
                }

                if (!filtroAreaMappa.FiltroMezzi.Tipologia.Any())
                {
                    listaMezziFilter = listaMezziFiltrataPerStato;
                }
            }
            if (filtroAreaMappa.FiltroMezzi.Tipologia.Any())
            {
                foreach (var genere in filtroAreaMappa.FiltroMezzi.Tipologia)
                {
                    listaMezziFiltrataPerGenere.AddRange(listaMezziFilter.FindAll(x => x.Mezzo.Genere.Equals(genere)));
                }
                if (!filtroAreaMappa.FiltroMezzi.Stato.Any())
                {
                    listaMezziFilter = listaMezziFiltrataPerGenere;
                }
            }

            if (filtroAreaMappa.FiltroMezzi.Tipologia.Any() && filtroAreaMappa.FiltroMezzi.Stato.Any())
            {
                listaMezziFilter = listaMezziFiltrataPerStato.FindAll(x => listaMezziFiltrataPerGenere.Contains(x));
            }

            return(listaMezziFilter);
            //return GroupListaMezziMarker.Group(listaMezziFilter); //TODO da integrare con la clusterizzazione.
        }