public GetComposizioneMezzi(IGetStatoMezzi getMezziPrenotati, OrdinamentoMezzi ordinamentoMezzi, IGetMezziUtilizzabili getMezziUtilizzabili, IGetListaSquadre getSquadre) { _getMezziUtilizzabili = getMezziUtilizzabili; _getSquadre = getSquadre; _getMezziPrenotati = getMezziPrenotati; _ordinamentoMezzi = ordinamentoMezzi; }
public GetComposizioneMezzi(IGetStatoMezzi getMezziPrenotati, OrdinamentoMezzi ordinamentoMezzi) { _getMezziPrenotati = getMezziPrenotati; _ordinamentoMezzi = ordinamentoMezzi; }
public List <ComposizioneMezzi> Get(ComposizioneMezziQuery query) { MapFromFlottaToMezziMarker mapper = new MapFromFlottaToMezziMarker(); List <MezzoMarker> ListaMezzi = new List <MezzoMarker>(); var filepath = CostantiJson.FlottaMezzi; string json; using (var r = new StreamReader(filepath)) { json = r.ReadToEnd(); } List <MapperMezziFromGeoFleet> FlottaMezzi = JsonConvert.DeserializeObject <List <MapperMezziFromGeoFleet> >(json); ListaMezzi = mapper.MappaFlottaMezziSuMezziMarker(FlottaMezzi).Where(x => x.Mezzo.Distaccamento.Codice == query.CodiceSede).ToList(); List <ComposizioneMezzi> composizioneMezzi = GeneraListaComposizioneMezzi(ListaMezzi); string[] generiMezzi; string[] statiMezzi; string codiceDistaccamento; if ((query.Filtro.CodiceDistaccamento?.Length > 0 && !string.IsNullOrEmpty(query.Filtro.CodiceDistaccamento[0])) || (query.Filtro.CodiceMezzo?.Length > 0 && !string.IsNullOrEmpty(query.Filtro.CodiceMezzo)) || ((query.Filtro.CodiceSquadra?.Length > 0) && !string.IsNullOrEmpty(query.Filtro.CodiceSquadra[0])) || (query.Filtro.CodiceStatoMezzo?.Length > 0 && !string.IsNullOrEmpty(query.Filtro.CodiceStatoMezzo[0])) || (query.Filtro.CodiceTipoMezzo?.Length > 0 && !string.IsNullOrEmpty(query.Filtro.CodiceTipoMezzo[0]))) { if (query.Filtro.CodiceSquadra?.Length > 0 && !string.IsNullOrEmpty(query.Filtro.CodiceSquadra[0])) { var path = CostantiJson.SquadreComposizione; string jsonSquadre; using (var r = new StreamReader(path)) { jsonSquadre = r.ReadToEnd(); } var composizioneSquadre = JsonConvert.DeserializeObject <List <ComposizioneSquadre> >(jsonSquadre); var squadra = composizioneSquadre.Find(x => query.Filtro.CodiceSquadra.Any(x.Squadra.Id.Equals)); if (squadra != null) { codiceDistaccamento = squadra.Squadra.Distaccamento.Codice; composizioneMezzi = composizioneMezzi.Where(x => (x.Mezzo.Distaccamento.Codice == codiceDistaccamento)).ToList(); } } var pathFiltri = CostantiJson.Filtri; string jsonFiltri; using (var r = new StreamReader(pathFiltri)) { jsonFiltri = r.ReadToEnd(); } var filtri = JsonConvert.DeserializeObject <API.Models.Classi.Filtri.Filtri>(jsonFiltri); if (query.Filtro.CodiceDistaccamento?.Length > 0 && !string.IsNullOrEmpty(query.Filtro.CodiceDistaccamento[0])) { composizioneMezzi = composizioneMezzi.Where(x => query.Filtro.CodiceDistaccamento.Any(x.Mezzo.Distaccamento.Codice.Equals)).ToList(); } if (query.Filtro.CodiceStatoMezzo?.Length > 0 && !string.IsNullOrEmpty(query.Filtro.CodiceStatoMezzo[0])) { statiMezzi = filtri.Stati.Where(x => query.Filtro.CodiceStatoMezzo.Any(x.Id.Equals)).Select(x => x.Descrizione).ToArray(); composizioneMezzi = composizioneMezzi.Where(x => statiMezzi.Any(x.Mezzo.Stato.Equals)).ToList(); } if (query.Filtro.CodiceTipoMezzo?.Length > 0 && !string.IsNullOrEmpty(query.Filtro.CodiceTipoMezzo[0])) { generiMezzi = filtri.GeneriMezzi.Where(x => query.Filtro.CodiceTipoMezzo.Any(x.Id.Equals)).Select(x => x.Descrizione).ToArray(); composizioneMezzi = composizioneMezzi.Where(x => generiMezzi.Any(x.Mezzo.Genere.Equals)).ToList(); } if (!string.IsNullOrEmpty(query.Filtro.CodiceMezzo)) { composizioneMezzi = composizioneMezzi.Where(x => x.Mezzo.Codice == query.Filtro.CodiceMezzo).ToList(); } var ordinamento = new OrdinamentoMezzi(); foreach (var composizione in composizioneMezzi) { composizione.IndiceOrdinamento = ordinamento.GetIndiceOrdinamento(query.Filtro.IdRichiesta, composizione, composizione.Mezzo.IdRichiesta); composizione.IdRichiesta = composizione.Mezzo.IdRichiesta; composizione.Id = composizione.Mezzo.Codice; if (composizione.IstanteScadenzaSelezione < DateTime.Now) { composizione.IstanteScadenzaSelezione = null; } } return(composizioneMezzi.OrderByDescending(x => x.IndiceOrdinamento).ToList()); } else { var ordinamento = new OrdinamentoMezzi(); foreach (var composizione in composizioneMezzi) { composizione.IndiceOrdinamento = ordinamento.GetIndiceOrdinamento(query.Filtro.IdRichiesta, composizione, composizione.Mezzo.IdRichiesta); composizione.IdRichiesta = composizione.Mezzo.IdRichiesta; composizione.Id = composizione.Mezzo.Codice; if (composizione.IstanteScadenzaSelezione < DateTime.Now) { composizione.IstanteScadenzaSelezione = null; } } return(composizioneMezzi.OrderByDescending(x => x.IndiceOrdinamento).ToList()); } }