/// <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 listaMezzoInServizio = new List <MezzoInServizio>(); var listaCodiciSede = CodiciSede.ToList(); var codiceSedeIniziali = listaCodiciSede[0]; var mezzi = _getMezziUtilizzabili.Get(listaCodiciSede.ToHashSet().ToList()).Result; var statoMezzi = new List <StatoOperativoMezzo>(); foreach (var codsede in listaCodiciSede) { statoMezzi.AddRange(_getStatoMezzi.Get(codsede)); } foreach (var mezzo in mezzi) { 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.GetInfoRichiestaFromIdRichiestaMezzo(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; } listaMezzoInServizio.Add(mezzoInServizio); } return(listaMezzoInServizio); }
public List <MezzoInServizio> Get(string[] codiceSede) { var filepath = CostantiJson.Mezzo; var getRichiestaById = new GetRichiestaById(); string json; using (var r = new StreamReader(filepath)) { json = r.ReadToEnd(); } var codiceSedeIniziali = codiceSede[0]; var mezzi = JsonConvert.DeserializeObject <List <Mezzo> >(json).FindAll(x => x.Stato != Costanti.MezzoFuoriServizio); var listaMezzoInServizio = new List <MezzoInServizio>(); foreach (var mezzo in mezzi.FindAll(x => x.Distaccamento.Codice .StartsWith(codiceSedeIniziali))) { var mezzoMarker = new MezzoMarker() { Mezzo = mezzo, InfoRichiesta = _getInfoRichiesta.GetInfoRichiestaFromIdRichiestaMezzo(mezzo.IdRichiesta) }; var mezzoInServizio = new MezzoInServizio { Mezzo = mezzoMarker }; if (mezzoInServizio.Mezzo.Mezzo.IdRichiesta != null) { var richiesta = getRichiestaById.GetByCodice(mezzoInServizio.Mezzo.Mezzo.IdRichiesta); foreach (var partenza in richiesta.Partenze) { if (partenza.Partenza.Mezzo.Codice == mezzoInServizio.Mezzo.Mezzo.Codice) { mezzoInServizio.Squadre = partenza.Partenza.Squadre; } } } else { mezzoInServizio.Squadre = null; } listaMezzoInServizio.Add(mezzoInServizio); } return(listaMezzoInServizio); }
/// <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 filepath = CostantiJson.Mezzo; string json; using (var r = new StreamReader(filepath)) { json = r.ReadToEnd(); } var listaMezzi = JsonConvert.DeserializeObject <List <Mezzo> >(json); var listaMezziMarker = new List <MezzoMarker>(); foreach (var mezzo in listaMezzi) { var mezzoMarker = new MezzoMarker() { Mezzo = mezzo, InfoRichiesta = _getInfoRichiesta.GetInfoRichiestaFromIdRichiestaMezzo(mezzo.IdRichiesta) }; listaMezziMarker.Add(mezzoMarker); } if (filtroAreaMappa == 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 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()) { return(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()) { return(listaMezziFiltrataPerGenere); } } if (filtroAreaMappa.FiltroMezzi.Tipologia.Any() && filtroAreaMappa.FiltroMezzi.Stato.Any()) { return(listaMezziFitrataPerStatoEGenere = listaMezziFiltrataPerStato.FindAll(x => listaMezziFiltrataPerGenere.Contains(x))); } return(listaMezziFilter); }
/// <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 = _getMezziUtilizzabili.Get(filtroAreaMappa.CodiceSede).Result; var listaMezziMarker = new List <MezzoMarker>(); foreach (var mezzo in listaMezzi) { var mezzoMarker = new MezzoMarker() { Mezzo = mezzo, InfoRichiesta = _getInfoRichiesta.GetInfoRichiestaFromIdRichiestaMezzo(mezzo.IdRichiesta) }; listaMezziMarker.Add(mezzoMarker); } 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. }