Esempio n. 1
0
        /// <summary>
        ///   Il metodo accetta in firma il command, e aggiorna i dati relativi alla conferma della partenza
        /// </summary>
        /// <param name="command">il command in ingresso</param>
        /// <returns>ConfermaPartenze</returns>
        public ConfermaPartenze Update(ConfermaPartenzeCommand command)
        {
            var conferma = new ConfermaPartenze();

            _updateRichiesta.UpDate(command.ConfermaPartenze.richiesta);
            var tipologia = _getTipologieByCodice.Get(command.ConfermaPartenze.richiesta.Tipologie)[0];

            foreach (var partenza in command.ConfermaPartenze.Partenze)
            {
                var dataMovintazione = DateTime.UtcNow;

                //_setMovimentazione.Set(partenza.Mezzo.Codice, DateTime.UtcNow, command.ConfermaPartenze.IdRichiesta, tipologia.Codice, tipologia.Descrizione); //TODO IMPLEMENTARE CON GAC
                _setStatoOperativoMezzo.Set(command.ConfermaPartenze.CodiceSede, partenza.Mezzo.Codice, Costanti.MezzoInViaggio, command.ConfermaPartenze.IdRichiesta);

                foreach (var squadra in partenza.Squadre)
                {
                    _setStatoSquadra.SetStato(squadra.Codice, command.ConfermaPartenze.IdRichiesta, Costanti.MezzoInViaggio, command.ConfermaPartenze.CodiceSede);
                }
            }

            conferma.CodiceSede  = command.ConfermaPartenze.CodiceSede;
            conferma.IdRichiesta = command.ConfermaPartenze.IdRichiesta;
            conferma.richiesta   = command.ConfermaPartenze.richiesta;
            return(conferma);
        }
Esempio n. 2
0
        public async Task <IActionResult> Post(ConfermaPartenze conferma)
        {
            conferma.CodiceSede  = Request.Headers["codicesede"];
            conferma.IdOperatore = Request.Headers["IdUtente"];

            var command = new ConfermaPartenzeCommand()
            {
                ConfermaPartenze = conferma
            };

            try
            {
                handler.Handle(command);

                return(Ok());
            }
            catch (Exception ex)
            {
                ex = ex.GetBaseException();

                if (ex.Message.Contains(Costanti.UtenteNonAutorizzato))
                {
                    return(StatusCode(403, new { message = Costanti.UtenteNonAutorizzato }));
                }
                else
                {
                    return(BadRequest(new { message = ex.Message }));
                }
            }
        }
        public async Task <IActionResult> Post(ConfermaPartenze conferma)
        {
            var codiceSede = Request.Headers["codicesede"];

            conferma.CodiceSede = codiceSede;

            var command = new ConfermaPartenzeCommand()
            {
                ConfermaPartenze = conferma,
            };

            try
            {
                handler.Handle(command);

                return(Ok());
            }
            catch (Exception ex)
            {
                return(BadRequest());
            }
        }
Esempio n. 4
0
        public async Task SendNotification(ModificaPartenzaCommand command)
        {
            var SediDaNotificare = new List <string>();

            if (command.Richiesta.CodSOAllertate != null)
            {
                SediDaNotificare = _getGerarchiaToSend.Get(command.Richiesta.CodSOCompetente, command.Richiesta.CodSOAllertate.ToArray());
            }
            else
            {
                SediDaNotificare = _getGerarchiaToSend.Get(command.Richiesta.CodSOCompetente);
            }

            var confermaPartenza = new ConfermaPartenze()
            {
                CodiceSede  = command.CodSede.First(),
                IdOperatore = command.IdOperatore,
                IdRichiesta = command.Richiesta.Id,
                Chiamata    = _mapperSintesi.Map(command.Richiesta),
                Partenze    = command.Richiesta.lstPartenze,
                richiesta   = command.Richiesta
            };

            Parallel.ForEach(SediDaNotificare, sede =>
            {
                var boxInterventi = _boxRichiesteHandler.Handle(new BoxRichiesteQuery()
                {
                    CodiciSede = new string[] { sede }
                }).BoxRichieste;
                var boxMezzi = _boxMezziHandler.Handle(new BoxMezziQuery()
                {
                    CodiciSede = new string[] { sede }
                }).BoxMezzi;
                var boxPersonale = _boxPersonaleHandler.Handle(new BoxPersonaleQuery()
                {
                    CodiciSede = new string[] { sede }
                }).BoxPersonale;

                _notificationHubContext.Clients.Group(sede).SendAsync("NotifyGetBoxInterventi", boxInterventi);
                _notificationHubContext.Clients.Group(sede).SendAsync("NotifyGetBoxMezzi", boxMezzi);
                _notificationHubContext.Clients.Group(sede).SendAsync("NotifyGetBoxPersonale", boxPersonale);

                _notificationHubContext.Clients.Group(sede).SendAsync("ModifyAndNotifySuccess", confermaPartenza);

                foreach (var partenza in command.Richiesta.lstPartenze)
                {
                    _notificationHubContext.Clients.Group(sede).SendAsync("NotifyUpdateMezzoInServizio", new MezzoInServizio()
                    {
                        Mezzo = new MezzoMarker()
                        {
                            Mezzo         = partenza.Mezzo,
                            InfoRichiesta = new InfoRichiesta()
                            {
                                CodiceRichiesta = command.Richiesta.Codice,
                                Indirizzo       = command.Richiesta.Localita.Indirizzo
                            }
                        },
                        Squadre = partenza.Squadre
                    });
                }
            });
        }
Esempio n. 5
0
        public void Update(AggiornaStatoMezzoCommand command)
        {
            string filepath        = "Fake/ListaRichiesteAssistenza.json";
            string filePathMezzi   = "Fake/MezziComposizione.json";
            string filePathSquadre = "Fake/SquadreComposizione.json";
            string json;
            string jsonMezzi;
            string jsonSquadre;

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

            using (StreamReader r = new StreamReader(filePathMezzi))
            {
                jsonMezzi = r.ReadToEnd();
            }

            using (StreamReader r = new StreamReader(filePathSquadre))
            {
                jsonSquadre = r.ReadToEnd();
            }

            RichiestaAssistenzaDTO        richiestaDTO   = new RichiestaAssistenzaDTO();
            ConfermaPartenze              conferma       = new ConfermaPartenze();
            RichiestaAssistenzaDTO        richiestaNew   = new RichiestaAssistenzaDTO();
            List <RichiestaAssistenzaDTO> ListaRichieste = JsonConvert.DeserializeObject <List <RichiestaAssistenzaDTO> >(json);
            List <ComposizioneMezzi>      ListaMezzi     = JsonConvert.DeserializeObject <List <ComposizioneMezzi> >(jsonMezzi);
            List <ComposizioneSquadre>    ListaSquadre   = JsonConvert.DeserializeObject <List <ComposizioneSquadre> >(jsonSquadre);

            if (ListaRichieste != null)
            {
                List <RichiestaAssistenza> ListaRichiesteNew = new List <RichiestaAssistenza>();
                richiestaDTO = ListaRichieste.Where(x => x.Codice == command.Richiesta.Codice).FirstOrDefault();
                ListaRichieste.Remove(richiestaDTO);

                foreach (RichiestaAssistenzaDTO richiesta in ListaRichieste)
                {
                    ListaRichiesteNew.Add(MapperDTO.MapRichiestaDTOtoRichiesta(richiesta));
                }

                ListaRichiesteNew.Add(command.Richiesta);

                string jsonListaPresente = JsonConvert.SerializeObject(ListaRichiesteNew);
                System.IO.File.WriteAllText(@"Fake/ListaRichiesteAssistenza.json", jsonListaPresente);
            }
            else
            {
                List <RichiestaAssistenza> ListaRichiesteNew = new List <RichiestaAssistenza>();
                ListaRichiesteNew.Add(command.Richiesta);

                string jsonNew = JsonConvert.SerializeObject(ListaRichiesteNew);
                System.IO.File.WriteAllText(@"Fake/ListaRichiesteAssistenza.json", jsonNew);
            }

            foreach (ComposizionePartenze composizione in command.Richiesta.Partenze)
            {
                foreach (ComposizioneMezzi composizioneMezzo in ListaMezzi)
                {
                    if (composizioneMezzo.Mezzo.Codice == composizione.Partenza.Mezzo.Codice)
                    {
                        composizioneMezzo.Mezzo.Stato = composizione.Partenza.Mezzo.Stato;
                    }
                }

                foreach (ComposizioneSquadre composizioneSquadra in ListaSquadre)
                {
                    foreach (Squadra squadra in composizione.Partenza.Squadre)
                    {
                        if (composizioneSquadra.Squadra.Id == squadra.Id)
                        {
                            composizioneSquadra.Squadra.Stato = squadra.Stato;
                        }
                    }
                }
            }

            string jsonListaMezzi = JsonConvert.SerializeObject(ListaMezzi);

            System.IO.File.WriteAllText(@"Fake/MezziComposizione.json", jsonListaMezzi);

            string jsonListaSquadre = JsonConvert.SerializeObject(ListaSquadre);

            System.IO.File.WriteAllText(@"Fake/SquadreComposizione.json", jsonListaSquadre);
        }
Esempio n. 6
0
        /// <summary>
        ///   Il metodo accetta in firma il command, e aggiorna i dati relativi alla conferma della partenza
        /// </summary>
        /// <param name="command">il command in ingresso</param>
        /// <returns>ConfermaPartenze</returns>
        public ConfermaPartenze Update(ConfermaPartenzeCommand command)
        {
            var    filepath        = CostantiJson.ListaRichiesteAssistenza;
            var    filePathMezzi   = CostantiJson.Mezzo;
            var    filePathSquadre = CostantiJson.SquadreComposizione;
            string json;
            string jsonMezzi;
            string jsonSquadre;

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

            using (var r = new StreamReader(filePathMezzi))
            {
                jsonMezzi = r.ReadToEnd();
            }

            using (var r = new StreamReader(filePathSquadre))
            {
                jsonSquadre = r.ReadToEnd();
            }

            var richiestaDTO      = new RichiestaAssistenzaDTO();
            var conferma          = new ConfermaPartenze();
            var listaRichieste    = JsonConvert.DeserializeObject <List <RichiestaAssistenzaDTO> >(json);
            var listaMezzi        = JsonConvert.DeserializeObject <List <Mezzo> >(jsonMezzi);
            var listaSquadre      = JsonConvert.DeserializeObject <List <ComposizioneSquadre> >(jsonSquadre);
            var listaRichiesteNew = new List <RichiestaAssistenza>();

            if (listaRichieste != null)
            {
                richiestaDTO = listaRichieste.Find(x => x.Cod == command.ConfermaPartenze.richiesta.Codice);
                listaRichieste.Remove(richiestaDTO);

                foreach (var richiesta in listaRichieste)
                {
                    listaRichiesteNew.Add(MapperDTO.MapRichiestaDTOtoRichiesta(richiesta));
                }

                listaRichiesteNew.Add(command.ConfermaPartenze.richiesta);

                var jsonListaPresente = JsonConvert.SerializeObject(listaRichiesteNew);
                System.IO.File.WriteAllText(CostantiJson.ListaRichiesteAssistenza, jsonListaPresente);
            }
            else
            {
                listaRichiesteNew = new List <RichiestaAssistenza>
                {
                    command.ConfermaPartenze.richiesta
                };

                var jsonNew = JsonConvert.SerializeObject(listaRichiesteNew);
                System.IO.File.WriteAllText(CostantiJson.ListaRichiesteAssistenza, jsonNew);
            }

            foreach (var composizione in command.ConfermaPartenze.richiesta.Partenze)
            {
                foreach (var mezzo in listaMezzi)
                {
                    if (mezzo.Codice != composizione.Partenza.Mezzo.Codice)
                    {
                        continue;
                    }
                    mezzo.Stato       = Costanti.MezzoInViaggio;
                    mezzo.IdRichiesta = command.ConfermaPartenze.IdRichiesta;
                }

                foreach (var composizioneSquadra in listaSquadre)
                {
                    foreach (var squadra in composizione.Partenza.Squadre)
                    {
                        if (composizioneSquadra.Squadra.Id == squadra.Id)
                        {
                            composizioneSquadra.Squadra.Stato = Squadra.StatoSquadra.InViaggio;
                        }
                    }
                }
            }

            var jsonListaMezzi = JsonConvert.SerializeObject(listaMezzi);

            File.WriteAllText(CostantiJson.Mezzo, jsonListaMezzi);

            var jsonListaSquadre = JsonConvert.SerializeObject(listaSquadre);

            File.WriteAllText(CostantiJson.SquadreComposizione, jsonListaSquadre);

            conferma.CodiceSede  = command.ConfermaPartenze.CodiceSede;
            conferma.IdRichiesta = command.ConfermaPartenze.IdRichiesta;
            conferma.richiesta   = command.ConfermaPartenze.richiesta;
            return(conferma);
        }
Esempio n. 7
0
        /// <summary>
        ///   Il metodo accetta in firma il command, e aggiorna i dati relativi alla conferma della partenza
        /// </summary>
        /// <param name="command">il command in ingresso</param>
        /// <returns>ConfermaPartenze</returns>
        public ConfermaPartenze Update(ConfermaPartenzeCommand command)
        {
            var conferma = new ConfermaPartenze();

            _updateRichiesta.UpDate(command.ConfermaPartenze.richiesta);

            var codiceSede = command.ConfermaPartenze.CodiceSede.Split(",", StringSplitOptions.RemoveEmptyEntries)[0];

            foreach (var partenza in command.ConfermaPartenze.Partenze)
            {
                var dataMovintazione = DateTime.UtcNow;

                _setStatoOperativoMezzo.Set(codiceSede, partenza.Mezzo.Codice, partenza.Mezzo.Stato, command.ConfermaPartenze.richiesta.Codice);

                foreach (var squadra in partenza.Squadre)
                {
                    _setStatoSquadra.SetStato(squadra.Codice, command.ConfermaPartenze.IdRichiesta, partenza.Mezzo.Stato, codiceSede, partenza.Mezzo.Codice);
                }

                var dataIntervento = command.Richiesta.ListaEventi.OfType <Telefonata>().FirstOrDefault(p => p.CodiceRichiesta.Equals(command.Richiesta.Codice)).Istante;

                //GAC USCITA/ENTRATA
                if (!partenza.Mezzo.Stato.Equals(Costanti.MezzoInUscita))
                {
                    if (partenza.Mezzo.Stato.Equals(Costanti.MezzoInSede) || partenza.Mezzo.Stato.Equals(Costanti.MezzoRientrato))
                    {
                        var dataRientro = command.Richiesta.ListaEventi.OfType <PartenzaRientrata>().FirstOrDefault(p => p.CodicePartenza.Equals(partenza.Codice)).Istante;
                        _setRientroMezzo.Set(new RientroGAC()
                        {
                            targa            = partenza.Mezzo.Codice.Split('.')[1],
                            tipoMezzo        = partenza.Mezzo.Codice.Split('.')[0],
                            idPartenza       = partenza.Codice.ToString(),
                            numeroIntervento = command.Richiesta.CodRichiesta,
                            dataIntervento   = dataIntervento,
                            dataRientro      = dataRientro,
                            autista          = ""
                        });
                    }
                    else if (partenza.Mezzo.Stato.Equals(Costanti.MezzoInViaggio))
                    {
                        var dataUscita = command.Richiesta.ListaEventi.OfType <ComposizionePartenze>().FirstOrDefault(p => p.Partenza.Codice.Equals(partenza.Codice)).Istante;
                        _setUscitaMezzo.Set(new UscitaGAC()
                        {
                            targa            = partenza.Mezzo.Codice.Split('.')[1],
                            tipoMezzo        = partenza.Mezzo.Codice.Split('.')[0],
                            idPartenza       = partenza.Codice.ToString(),
                            numeroIntervento = command.Richiesta.CodRichiesta,
                            dataIntervento   = dataIntervento,
                            dataUscita       = dataUscita,
                            autista          = "",
                            tipoUscita       = new TipoUscita()
                            {
                                codice      = "",
                                descrizione = "Servizio"
                            },
                            comune = new ComuneGAC()
                            {
                                codice      = "",
                                descrizione = command.Richiesta.Localita.Citta,
                            },
                            provincia = new Models.Classi.Gac.ProvinciaGAC()
                            {
                                codice      = "",
                                descrizione = command.Richiesta.Localita.Provincia
                            },
                            localita    = command.Richiesta.Localita.Citta,
                            latitudine  = command.Richiesta.Localita.Coordinate.Latitudine.ToString(),
                            longitudine = command.Richiesta.Localita.Coordinate.Longitudine.ToString(),
                        });
                    }
                }
            }

            conferma.CodiceSede  = command.ConfermaPartenze.CodiceSede;
            conferma.IdRichiesta = command.ConfermaPartenze.IdRichiesta;
            conferma.richiesta   = command.ConfermaPartenze.richiesta;
            return(conferma);
        }
Esempio n. 8
0
        /// <summary>
        ///   Il metodo accetta in firma il command, e in seguito al cambio di stato di uno o più
        ///   mezzi aggiorna le informazioni relative alla richiesta a cui quel mezzo è associato
        /// </summary>
        /// <param name="command">il command in ingresso</param>
        public void Update(AggiornaStatoMezzoCommand command)
        {
            var    filepath        = CostantiJson.ListaRichiesteAssistenza;
            var    filePathMezzi   = CostantiJson.Mezzo;
            var    filePathSquadre = CostantiJson.SquadreComposizione;
            string json;
            string jsonMezzi;
            string jsonSquadre;

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

            using (var r = new StreamReader(filePathMezzi))
            {
                jsonMezzi = r.ReadToEnd();
            }

            using (var r = new StreamReader(filePathSquadre))
            {
                jsonSquadre = r.ReadToEnd();
            }

            var conferma       = new ConfermaPartenze();
            var richiestaNew   = new RichiestaAssistenzaDTO();
            var listaRichieste = JsonConvert.DeserializeObject <List <RichiestaAssistenzaDTO> >(json);
            var listaMezzi     = JsonConvert.DeserializeObject <List <Mezzo> >(jsonMezzi);
            var listaSquadre   = JsonConvert.DeserializeObject <List <ComposizioneSquadre> >(jsonSquadre);

            if (listaRichieste != null)
            {
                var listaRichiesteNew = new List <RichiestaAssistenza>();
                var richiestaDTO      = listaRichieste.FirstOrDefault(x => x.Cod == command.Richiesta.Codice);
                listaRichieste.Remove(richiestaDTO);

                foreach (var richiesta in listaRichieste)
                {
                    listaRichiesteNew.Add(MapperDTO.MapRichiestaDTOtoRichiesta(richiesta));
                }

                listaRichiesteNew.Add(command.Richiesta);

                var jsonListaPresente = JsonConvert.SerializeObject(listaRichiesteNew);
                System.IO.File.WriteAllText(CostantiJson.ListaRichiesteAssistenza, jsonListaPresente);
            }
            else
            {
                var listaRichiesteNew = new List <RichiestaAssistenza> {
                    command.Richiesta
                };

                string jsonNew = JsonConvert.SerializeObject(listaRichiesteNew);
                System.IO.File.WriteAllText(CostantiJson.ListaRichiesteAssistenza, jsonNew);
            }

            foreach (var composizione in command.Richiesta.Partenze)
            {
                foreach (var mezzo in listaMezzi.Where(mezzo => mezzo.Codice == composizione.Partenza.Mezzo.Codice))
                {
                    mezzo.Stato = composizione.Partenza.Mezzo.Stato;
                }

                foreach (var composizioneSquadra in listaSquadre)
                {
                    foreach (var squadra in composizione.Partenza.Squadre.Where(squadra => composizioneSquadra.Squadra.Id == squadra.Id))
                    {
                        composizioneSquadra.Squadra.Stato = squadra.Stato;
                    }
                }
            }

            var jsonListaMezzi = JsonConvert.SerializeObject(listaMezzi);

            System.IO.File.WriteAllText(CostantiJson.Mezzo, jsonListaMezzi);

            var jsonListaSquadre = JsonConvert.SerializeObject(listaSquadre);

            System.IO.File.WriteAllText(CostantiJson.SquadreComposizione, jsonListaSquadre);
        }