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