コード例 #1
0
        public List <ComposizioneMezzi> Get(ComposizioneMezziQuery query)
        {
            var listaMezzi = new List <Mezzo>();

            var    filepath = CostantiJson.Mezzo;
            string json;

            using (var r = new StreamReader(filepath))
            {
                json = r.ReadToEnd();
            }

            //listaMezzi = JsonConvert.DeserializeObject<List<Mezzo>>(json);

            var composizioneMezzi = JsonConvert.DeserializeObject <List <ComposizioneMezzi> >(json);

            string[] generiMezzi;
            string[] statiMezzi;
            string   codiceDistaccamento;

            //foreach (var composizione in composizioneMezzi)
            //{
            //    composizione.IndiceOrdinamento = _ordinamentoMezzi.GetIndiceOrdinamento(query.Filtro.IdRichiesta, composizione, composizione.Mezzo.CoordinateFake, composizione.Mezzo.IdRichiesta);
            //    composizione.Id = composizione.Mezzo.Codice;

            //    if (composizione.IstanteScadenzaSelezione < DateTime.Now)
            //    {
            //        composizione.IstanteScadenzaSelezione = null;
            //    }
            //}

            var composizioneMezziPrenotati = GetComposizioneMezziPrenotati(composizioneMezzi, query.CodiceSede);

            return(composizioneMezziPrenotati.Where(c => c.Mezzo.Distaccamento.Codice.Equals(query.CodiceSede)).OrderByDescending(x => x.IndiceOrdinamento).ToList());
        }
コード例 #2
0
        public async Task <IActionResult> Post(FiltriComposizionePartenza filtri)
        {
            var    codiceSede   = Request.Headers["codicesede"];
            var    headerValues = Request.Headers["HubConnectionId"];
            string ConId        = headerValues.FirstOrDefault();

            var query = new ComposizioneMezziQuery()
            {
                Filtro     = filtri,
                CodiceSede = codiceSede
            };

            if (ModelState.IsValid)
            {
                try
                {
                    List <ComposizioneMezzi> composizioneMezzi = handler.Handle(query).ComposizioneMezzi;
                    return(Ok());
                }
                catch
                {
                    return(BadRequest());
                }
            }
            else
            {
                return(BadRequest());
            }
        }
コード例 #3
0
ファイル: GetComposizioneMezzi.cs プロジェクト: somaliz/sovvf
        public List <ComposizioneMezzi> Get(ComposizioneMezziQuery query)
        {
            List <string> ListaSedi = new List <string>();

            ListaSedi.Add(query.CodiceSede);
            List <Mezzo> ListaMezzi = _getMezziUtilizzabili.Get(ListaSedi).Result;

            var composizioneMezzi = GeneraListaComposizioneMezzi(ListaMezzi);

            string[] generiMezzi;
            string[] statiMezzi;
            string   codiceDistaccamento;

            foreach (var composizione in composizioneMezzi)
            {
                composizione.IndiceOrdinamento = _ordinamentoMezzi.GetIndiceOrdinamento(query.Filtro.IdRichiesta, composizione, composizione.Mezzo.IdRichiesta);
                composizione.Id = composizione.Mezzo.Codice;

                if (composizione.IstanteScadenzaSelezione < DateTime.Now)
                {
                    composizione.IstanteScadenzaSelezione = null;
                }
            }

            var composizioneMezziPrenotati = GetComposizioneMezziPrenotati(composizioneMezzi, query.CodiceSede);

            return(composizioneMezziPrenotati.OrderByDescending(x => x.IndiceOrdinamento).ToList());
        }
コード例 #4
0
        /// <summary>
        ///   Query che estrae i valori dei Box presenti in Home Page
        /// </summary>
        /// <param name="query">Filtri utilizzati per l'estrazione</param>
        /// <returns>Elenco dei mezzi disponibili</returns>
        public ComposizionePartenzaAvanzataResult Handle(ComposizionePartenzaAvanzataQuery query)
        {
            Log.Debug("Inizio elaborazione Composizione partenza avanzata Handler");

            var composizioneMezziquery = new ComposizioneMezziQuery
            {
                Filtro     = query.Filtro,
                CodiceSede = query.CodiceSede
            };

            var composizioneSquadreQuery = new ComposizioneSquadreQuery
            {
                Filtro     = query.Filtro,
                CodiceSede = query.CodiceSede
            };

            var composizioneAvanzata = new Classi.Composizione.ComposizionePartenzaAvanzata()
            {
                ComposizioneMezzi   = this._composizioneMezzihandler.Handle(composizioneMezziquery).ComposizioneMezzi,
                ComposizioneSquadre = this._composizioneSquadrehandler.Handle(composizioneSquadreQuery).ComposizioneSquadre,
            };

            Log.Debug("Fine elaborazione Composizione partenza avanzata Handler");

            return(new ComposizionePartenzaAvanzataResult()
            {
                ComposizionePartenzaAvanzata = composizioneAvanzata
            });
        }
コード例 #5
0
        public async Task <IActionResult> Post(FiltriComposizionePartenza filtri)
        {
            var    headerValues = Request.Headers["HubConnectionId"];
            string ConId        = headerValues.FirstOrDefault();

            var query = new ComposizioneMezziQuery()
            {
                Filtro = filtri
            };

            if (ModelState.IsValid)
            {
                try
                {
                    List <ComposizioneMezzi> composizioneMezzi = new List <ComposizioneMezzi>();
                    composizioneMezzi = handler.Handle(query).ComposizioneMezzi;

                    await _NotificationHub.Clients.Client(ConId).SendAsync("NotifyGetComposizioneMezzi", composizioneMezzi);

                    return(Ok());
                }
                catch
                {
                    return(BadRequest());
                }
            }
            else
            {
                return(BadRequest());
            }
        }
コード例 #6
0
        public ComposizioneMezziResult GetMarkerFromId(FiltriComposizionePartenza filtro)
        {
            var query = new ComposizioneMezziQuery()
            {
                Filtro = filtro
            };

            return(handler.Handle(query));
        }
コード例 #7
0
        public List <ComposizioneMezzi> Get(ComposizioneMezziQuery query)
        {
            List <string> ListaSedi = new List <string>();

            ListaSedi.Add(query.CodiceSede);
            List <Mezzo> ListaMezzi = _getMezziUtilizzabili.Get(ListaSedi).Result;

            var composizioneMezzi = GeneraListaComposizioneMezzi(ListaMezzi);
            var ListaSquadre      = _getSquadre.Get(ListaSedi).Result;

            string[] generiMezzi;
            string[] statiMezzi;
            string   codiceDistaccamento;

            foreach (var composizione in composizioneMezzi)
            {
                composizione.IndiceOrdinamento = _ordinamentoMezzi.GetIndiceOrdinamento(query.Filtro.IdRichiesta, composizione, composizione.Mezzo.CoordinateFake, composizione.Mezzo.IdRichiesta);
                composizione.Id = composizione.Mezzo.Codice;

                if (composizione.IstanteScadenzaSelezione < DateTime.Now)
                {
                    composizione.IstanteScadenzaSelezione = null;
                }
            }

            var composizioneMezziPrenotati = GetComposizioneMezziPrenotati(composizioneMezzi, query.CodiceSede);
            //Per i mezzi con coordinate Fake nella property  i Km  e la TempoPercorrenza vengono impostati i  valori medi della collection
            decimal totaleKM = 0;
            decimal totaleTempoPercorrenza = 0;

            foreach (var composizione in composizioneMezziPrenotati)
            {
                totaleKM = totaleKM + Convert.ToDecimal(composizione.Km.Replace(".", ","));
                totaleTempoPercorrenza = totaleTempoPercorrenza + Convert.ToDecimal(composizione.TempoPercorrenza.Replace(".", ","));
            }

            string mediaDistanza         = Math.Round((totaleKM / composizioneMezzi.Count), 2).ToString(CultureInfo.InvariantCulture);
            string mediaTempoPercorrenza = Math.Round((totaleTempoPercorrenza / composizioneMezzi.Count), 2).ToString(CultureInfo.InvariantCulture);

            foreach (var composizione in composizioneMezziPrenotati)
            {
                if (composizione.Mezzo.CoordinateFake)
                {
                    composizione.Km = mediaDistanza;
                    composizione.TempoPercorrenza  = mediaTempoPercorrenza;
                    composizione.IndiceOrdinamento = _ordinamentoMezzi.GetIndiceOrdinamento(query.Filtro.IdRichiesta, composizione, composizione.Mezzo.CoordinateFake, composizione.Mezzo.IdRichiesta);
                    composizione.Km = null;
                    composizione.TempoPercorrenza = null;
                }
            }
            return(composizioneMezziPrenotati.OrderByDescending(x => x.IndiceOrdinamento).ToList());
        }
コード例 #8
0
        public async Task <IActionResult> Post(FiltriComposizionePartenza filtri)
        {
            var    codiceSede   = Request.Headers["codicesede"];
            var    headerValues = Request.Headers["HubConnectionId"];
            string ConId        = headerValues.FirstOrDefault();

            var query = new ComposizioneMezziQuery()
            {
                Filtro     = filtri,
                CodiceSede = codiceSede
            };

            if (ModelState.IsValid)
            {
                try
                {
                    List <ComposizioneMezzi> composizioneMezzi = handler.Handle(query).ComposizioneMezzi;
                    return(Ok());
                }
                catch (Exception ex)
                {
                    if (ex.Message.Contains(Costanti.UtenteNonAutorizzato))
                    {
                        return(StatusCode(403, new { message = Costanti.UtenteNonAutorizzato }));
                    }
                    else if (ex.Message.Contains("404"))
                    {
                        return(StatusCode(404, new { message = "Servizio non raggiungibile. Riprovare più tardi" }));
                    }
                    else
                    {
                        return(BadRequest(new { message = ex.Message }));
                    }
                }
            }
            else
            {
                return(BadRequest());
            }
        }
コード例 #9
0
        /// <summary>
        ///   Query che estrae i valori dei Box presenti in Home Page
        /// </summary>
        /// <param name="query">Filtri utilizzati per l'estrazione</param>
        /// <returns>Elenco dei mezzi disponibili</returns>
        public ComposizionePartenzaAvanzataResult Handle(ComposizionePartenzaAvanzataQuery query)
        {
            var composizioneMezziquery = new ComposizioneMezziQuery
            {
                Filtro     = query.Filtro,
                CodiceSede = query.CodiceSede
            };
            var composizioneSquadreQuery = new ComposizioneSquadreQuery
            {
                Filtro = query.Filtro
            };

            var composizioneAvanzata = new Classi.Composizione.ComposizionePartenzaAvanzata()
            {
                ComposizioneMezzi   = this._composizioneMezzihandler.Handle(composizioneMezziquery).ComposizioneMezzi,
                ComposizioneSquadre = this._composizioneSquadrehandler.Handle(composizioneSquadreQuery).ComposizioneSquadre,
            };

            return(new ComposizionePartenzaAvanzataResult()
            {
                ComposizionePartenzaAvanzata = composizioneAvanzata
            });
        }
コード例 #10
0
        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());
            }
        }