Beispiel #1
0
        public void Set(UscitaGAC uscita)
        {
            GetToken getToken  = new GetToken(_client, _configuration, _memoryCache, _writeLog, _httpContext);
            var      lstUscite = new List <UscitaGAC>()
            {
                uscita
            };

            var requestManager = new HttpRequestManager <List <Response> >(_client, _memoryCache, _writeLog, _httpContext, _configuration);

            requestManager.Configure();

            var jsonString = JsonConvert.SerializeObject(lstUscite);
            var content    = new StringContent(jsonString);
            var uri        = new Uri(_configuration.GetSection("UrlExternalApi").GetSection("GacApi").Value + Costanti.GacUscitaMezzo);

            var result = requestManager.PutAsync(uri, content, getToken.GeneraToken()).Result;
        }
Beispiel #2
0
        public async Task <List <Mezzo> > Get(List <string> sedi, string genereMezzo = null, string codiceMezzo = null, List <MessaggioPosizione> posizioneFlotta = null)
        {
            var pinNodi            = sedi.Select(s => new PinNodo(s, true));
            var ListaCodiciComandi = new List <string>();
            var ListaCodiciSedi    = new List <string>();
            var listaSediAlberate  = _getAlberaturaUnitaOperative.ListaSediAlberata();

            foreach (var figlio in listaSediAlberate.GetSottoAlbero(pinNodi))
            {
                var    codice  = figlio.Codice;
                string codiceE = "";
                codiceE = ListaCodiciSedi.Find(x => x.Equals(codice));
                if (string.IsNullOrEmpty(codiceE))
                {
                    if (!ListaCodiciComandi.Contains(codice.Split('.')[0]))
                    {
                        ListaCodiciComandi.Add(codice.Split('.')[0]);
                    }
                    ListaCodiciSedi.Add(codice);
                }
            }

            var ListaPosizioneFlotta = new List <MessaggioPosizione>();

            if (posizioneFlotta == null)
            {
                ListaPosizioneFlotta = _getPosizioneFlotta.Get(0).Result;
            }
            else
            {
                ListaPosizioneFlotta = posizioneFlotta;
            }

            var ListaAnagraficaMezzo = GetAnagraficaMezziByCodComando(ListaCodiciComandi).Result;

            var ListaMezzi = new List <Mezzo>();

            #region LEGGO DA API ESTERNA

            GetToken getToken = new GetToken(_client, _configuration, _memoryCache, _writeLog, _httpContext);
            var      token    = getToken.GeneraToken();

            var lstMezziDto = new List <MezzoDTO>();
            try
            {
                Parallel.ForEach(sedi, sede =>
                {
                    var httpManager = new HttpRequestManager <List <MezzoDTO> >(_client, _memoryCache, _writeLog, _httpContext, _configuration);
                    httpManager.Configure("Mezzi_" + sede);

                    var lstSediQueryString = string.Join("&codiciSedi=", ListaCodiciSedi.Where(s => sede.Contains(s.Split(".")[0])).ToArray());
                    var url = new Uri($"{_configuration.GetSection("UrlExternalApi").GetSection("GacApi").Value}{Classi.Costanti.GacGetMezziUtilizzabili}?codiciSedi={lstSediQueryString}");
                    lock (lstMezziDto)
                        lstMezziDto.AddRange(httpManager.GetAsync(url, token).Result);
                });
            }
            catch (Exception e)
            {
                throw new Exception("Elenco dei mezzi non disponibile");
            }

            #endregion LEGGO DA API ESTERNA

            //MAPPING
            ListaMezzi = lstMezziDto.Select(m =>
            {
                //if (!mezzoFake.Equals("CMOB"))
                //{
                var anagraficaMezzo = ListaAnagraficaMezzo.Find(x => x.Targa.Equals(m.Descrizione));
                var mezzo           = MapMezzo(anagraficaMezzo, m);
                if (mezzo != null)
                {
                    //listaMezziBySedeAppo.Add(mezzo);
                    ListaMezzi.Add(mezzo);
                }
                //}
                return(mezzo);
            }).ToList();

            ListaMezzi = ListaMezzi.Select(mezzo =>
            {
                var CoordinateMezzoGeoFleet = ListaPosizioneFlotta.Find(x => x.CodiceMezzo.Equals(mezzo.Codice));

                if (CoordinateMezzoGeoFleet == null)
                {
                    mezzo.Coordinate     = mezzo.Distaccamento.Coordinate;
                    mezzo.CoordinateFake = true;
                }
                else
                {
                    mezzo.Coordinate     = new Coordinate(CoordinateMezzoGeoFleet.Localizzazione.Lat, CoordinateMezzoGeoFleet.Localizzazione.Lon);
                    mezzo.CoordinateFake = false;
                }

                return(mezzo);
            }).ToList();

            return(GetListaMezziConStatoAggiornat(ListaMezzi));
        }