public MezzoPrenotato Get(SbloccaMezzoPrenotatoCommand command) { //TODO PARTE CHIAMATA DB //TODO DA MODIFICARE CON LA CONNESSIONE AL DB PER IL REPERIMENTO DEI DATI DEFINITIVI //DATI FAKE - ORA LI LEGGO DA FILE List <ComposizioneMezzi> mezzi = new List <ComposizioneMezzi>(); ComposizioneMezzi mezzo = new ComposizioneMezzi(); MezzoPrenotato mezzoPrenotato = new MezzoPrenotato(); string filepath = "Fake/MezziComposizione.json"; string json; using (StreamReader r = new StreamReader(filepath)) { json = r.ReadToEnd(); } mezzi = JsonConvert.DeserializeObject <List <ComposizioneMezzi> >(json); mezzo = mezzi.Where(x => x.Mezzo.Codice.Equals(command.MezzoPrenotato.mezzoComposizione.Mezzo.Codice)).FirstOrDefault(); mezzi.Remove(mezzo); mezzo.IstanteScadenzaSelezione = null; mezzi.Add(mezzo); mezzi.Sort(delegate(ComposizioneMezzi x, ComposizioneMezzi y) { return(Convert.ToInt32(x.TempoPercorrenza).CompareTo(Convert.ToInt32(y.TempoPercorrenza))); }); string fileText = System.IO.File.ReadAllText(@"Fake/MezziComposizione.json"); string jsonNew = JsonConvert.SerializeObject(mezzi); System.IO.File.WriteAllText(@"Fake/MezziComposizione.json", jsonNew); mezzoPrenotato.mezzoComposizione = mezzo; mezzoPrenotato.mezzoComposizione.Id = command.MezzoPrenotato.mezzoComposizione.Id; mezzoPrenotato.codiceSede = command.CodiceSede; return(mezzoPrenotato); }
private async Task <ComposizioneMezzi> GetDistanceByGoogle(ComposizioneMezzi composizione, RichiestaAssistenza richiesta) { var origine = $"origins={ composizione.Mezzo.Coordinate.Latitudine.ToString().Replace(",", ".")},{ composizione.Mezzo.Coordinate.Longitudine.ToString().Replace(",", ".")}"; var destination = $"destinations={ richiesta.Localita.Coordinate.Latitudine.ToString().Replace(",", ".")},{ richiesta.Localita.Coordinate.Longitudine.ToString().Replace(",", ".")}"; var mode = "mode=Driving"; var sensor = "sensor=false"; StringContent queryString = new StringContent(""); var response = await _client.PostAsync(_configuration.GetSection("UrlExternalApi").GetSection("DistanceMatrix").Value + $"&{origine}&{destination}&{mode}&{sensor}", queryString).ConfigureAwait(false); response.EnsureSuccessStatusCode(); using HttpContent content = response.Content; string data = await content.ReadAsStringAsync().ConfigureAwait(false); var distanza = JsonConvert.DeserializeObject <DistanceMatrix>(data); if (distanza.Rows[0].Elements[0].Distance != null) { //LE Value sono espresse in SECONDI composizione.Km = distanza.Rows[0].Elements[0].Distance.Text.ToString().Substring(0, distanza.Rows[0].Elements[0].Distance.Text.ToString().Length - 2); composizione.TempoPercorrenza = (distanza.Rows[0].Elements[0].Duration.Value / 60).ToString(); } else { composizione.Km = "100"; composizione.TempoPercorrenza = "50"; } return(composizione); }
public Mezzo Get(String CodiceMezzo) { ComposizioneMezzi composizione = new ComposizioneMezzi(); List <ComposizioneMezzi> ListaComposizione = new List <ComposizioneMezzi>(); MezzoPrenotato mezzoPrenotato = new MezzoPrenotato(); string filepath = "Fake/MezziComposizione.json"; string json; using (StreamReader r = new StreamReader(filepath)) { json = r.ReadToEnd(); } ListaComposizione = JsonConvert.DeserializeObject <List <ComposizioneMezzi> >(json); composizione = ListaComposizione.Where(x => x.Mezzo.Codice.Equals(CodiceMezzo)).FirstOrDefault(); return(composizione.Mezzo); }
public decimal GetIndiceOrdinamento(string IdRichiesta, ComposizioneMezzi composizione, string IdRichiestaOrigine = null) { int ValoreIntOriginePerSganciamento = 0; decimal ValoreAdeguatezzaMezzo; var richiestaDestinazione = _getRichiestaById.GetById(IdRichiesta); if (IdRichiestaOrigine != null) { var richiestaOrigine = _getRichiestaById.GetById(IdRichiestaOrigine); ValoreIntOriginePerSganciamento = GeneraValoreSganciamento(richiestaOrigine.Tipologie); } ValoreAdeguatezzaMezzo = GeneraValoreAdeguatezzaMezzo(richiestaDestinazione.Tipologie, composizione.Mezzo.Genere); composizione = GetDistanceByGoogle(composizione, richiestaDestinazione).Result; return(100 / (1 + Convert.ToDecimal(composizione.TempoPercorrenza.Replace(".", ",")) / 5400) + ValoreIntOriginePerSganciamento + ValoreAdeguatezzaMezzo); }
public decimal GetIndiceOrdinamento(string IdRichiesta, ComposizioneMezzi composizione, string IdRichiestaOrigine = null) { int ValoreIntOriginePerSganciamento = 0; decimal ValoreAdeguatezzaMezzo; decimal IndiceOrdinamento = 0; GetRichiestaById getRichiesta = new GetRichiestaById(); RichiestaAssistenza richiestaDestinazione = getRichiesta.Get(IdRichiesta); RichiestaAssistenza richiestaOrigine = new RichiestaAssistenza(); if (IdRichiestaOrigine != null) { richiestaOrigine = getRichiesta.Get(IdRichiestaOrigine); ValoreIntOriginePerSganciamento = GeneraValoreSganciamento(richiestaOrigine.Tipologie); } ValoreAdeguatezzaMezzo = GeneraValoreAdeguatezzaMezzo(richiestaDestinazione.Tipologie, composizione.Mezzo.Genere); IndiceOrdinamento = 100 / (1 + (Convert.ToDecimal(composizione.TempoPercorrenza.Replace(".", ",")) / 5400)) + ValoreIntOriginePerSganciamento + ValoreAdeguatezzaMezzo; return(IndiceOrdinamento); }
public decimal GetIndiceOrdinamento(string IdRichiesta, ComposizioneMezzi composizione, bool CoordinateFake, string IdRichiestaOrigine = null) { int ValoreIntOriginePerSganciamento = 0; decimal ValoreAdeguatezzaMezzo; var richiestaDestinazione = _getRichiestaById.GetById(IdRichiesta); if (IdRichiestaOrigine != null) { var richiestaOrigine = _getRichiestaById.GetByCodice(IdRichiestaOrigine); ValoreIntOriginePerSganciamento = -200; // Hard Coded perchè le tipologie verranno prese da un servizio Esterno e questo valore è sempre uguale } ValoreAdeguatezzaMezzo = GeneraValoreAdeguatezzaMezzo(richiestaDestinazione.Tipologie, composizione.Mezzo.Genere); if (!CoordinateFake) { composizione = GetDistanceByGoogle(composizione, richiestaDestinazione).Result; } return(100 / (1 + Convert.ToDecimal(composizione.TempoPercorrenza.Replace(".", ",")) / 5400) + ValoreIntOriginePerSganciamento + ValoreAdeguatezzaMezzo); }
private List <ComposizioneMezzi> GeneraListaComposizioneMezzi(List <Mezzo> listaMezzi) { var listaComposizione = new List <ComposizioneMezzi>(); Random random = new Random(); foreach (var mezzo in listaMezzi) { string kmGen = random.Next(1, 60).ToString(); double TempoPer = Convert.ToDouble(kmGen.Replace(".", ",")) / 1.75; var composizione = new ComposizioneMezzi() { Mezzo = mezzo, Km = kmGen, TempoPercorrenza = Math.Round(TempoPer, 2).ToString(CultureInfo.InvariantCulture), }; listaComposizione.Add(composizione); } return(listaComposizione); }
public List <ComposizioneSquadre> Get(ComposizioneSquadreQuery query) { //TODO PARTE CHIAMATA DB //TODO DA MODIFICARE CON LA CONNESSIONE AL DB PER IL REPERIMENTO DEI DATI DEFINITIVI //DATI FAKE - ORA LI LEGGO DA FILE string filepath = CostantiJson.SquadreComposizione; string json; using (StreamReader r = new StreamReader(filepath)) { json = r.ReadToEnd(); } List <ComposizioneMezzi> composizioneMezzi = new List <ComposizioneMezzi>(); ComposizioneMezzi mezzo = new ComposizioneMezzi(); var codiceDistaccamento = ""; List <ComposizioneSquadre> composizioneSquadre = JsonConvert.DeserializeObject <List <ComposizioneSquadre> >(json); string[] generiMezzi = new string[50]; string[] statiMezzi = new string[50]; API.Models.Classi.Filtri.Filtri filtri = new API.Models.Classi.Filtri.Filtri(); string pathFiltri = CostantiJson.Filtri; string jsonFiltri; using (StreamReader r = new StreamReader(pathFiltri)) { jsonFiltri = r.ReadToEnd(); } filtri = JsonConvert.DeserializeObject <API.Models.Classi.Filtri.Filtri>(jsonFiltri); if ((query.Filtro.CodiceDistaccamento?.Length > 0 && !string.IsNullOrEmpty(query.Filtro.CodiceDistaccamento[0])) || (!string.IsNullOrEmpty(query.Filtro.CodiceMezzo) && !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 (!string.IsNullOrEmpty(query.Filtro.CodiceMezzo) && !string.IsNullOrEmpty(query.Filtro.CodiceMezzo)) { string path = CostantiJson.MezziComposizione; string jsonMezzi; using (StreamReader r = new StreamReader(path)) { jsonMezzi = r.ReadToEnd(); } composizioneMezzi = JsonConvert.DeserializeObject <List <ComposizioneMezzi> >(jsonMezzi); mezzo = composizioneMezzi.Find(x => x.Mezzo.Codice == query.Filtro.CodiceMezzo); if (mezzo != null) { 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(); if (!statiMezzi.Any(mezzo.Mezzo.Stato.Equals)) { mezzo = null; composizioneSquadre = null; } } if (query.Filtro.CodiceDistaccamento?.Length > 0 && !string.IsNullOrEmpty(query.Filtro.CodiceDistaccamento[0])) { if (!query.Filtro.CodiceDistaccamento.Any(mezzo.Mezzo.Distaccamento.Codice.Equals)) { mezzo = null; composizioneSquadre = null; } } 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(); if (!generiMezzi.Any(mezzo.Mezzo.Genere.Equals)) { mezzo = null; composizioneSquadre = null; } } codiceDistaccamento = mezzo.Mezzo.Distaccamento.Codice; if (mezzo.Mezzo.IdRichiesta != null) { GetRichiestaById getRichiesta = new GetRichiestaById(); RichiestaAssistenza richiesta = getRichiesta.Get(mezzo.Mezzo.IdRichiesta); var ListaSquadre = richiesta.Partenze.Where(x => x.Partenza.Mezzo.Codice.Equals(mezzo.Id)).Select(x => x.Partenza.Squadre); composizioneSquadre = composizioneSquadre.Where(x => ListaSquadre.Any(x.Squadra.Equals)).ToList(); } else { composizioneSquadre = composizioneSquadre.Where(x => x.Squadra.Distaccamento.Codice == codiceDistaccamento).ToList(); } } } if (query.Filtro.CodiceDistaccamento?.Length > 0 && !string.IsNullOrEmpty(query.Filtro.CodiceDistaccamento[0])) { composizioneSquadre = composizioneSquadre.Where(x => (query.Filtro.CodiceDistaccamento.Any(x.Squadra.Distaccamento.Codice.Equals))).ToList(); } if (query.Filtro.CodiceSquadra?.Length > 0 && !string.IsNullOrEmpty(query.Filtro.CodiceSquadra[0])) { composizioneSquadre = composizioneSquadre.Where(x => (query.Filtro.CodiceSquadra.Any(x.Squadra.Id.Equals))).ToList(); } return(composizioneSquadre); } else { return(composizioneSquadre); } }