public async Task <IActionResult> AggiornaPartenza([FromBody] AggiornaStatoMezzoCommand intervento)
        {
            var    headerValues = Request.Headers["IdUtente"];
            var    codiceSede   = Request.Headers["CodiceSede"];
            string idUtente     = headerValues.FirstOrDefault();

            var command = new AggiornaStatoMezzoCommand()
            {
                //IdRichiesta = intervento.IdRichiesta,
                IdUtente   = idUtente,
                Chiamata   = intervento.Chiamata,
                IdMezzo    = intervento.IdMezzo,
                StatoMezzo = intervento.StatoMezzo,
                CodiceSede = codiceSede,
            };

            try
            {
                this._addhandler.Handle(command);
                return(Ok());
            }
            catch
            {
                return(BadRequest());
            }
        }
Ejemplo n.º 2
0
        public void Handle(UpDateStatoRichiestaCommand command)
        {
            var richiesta = _getRichiestaById.GetById(command.IdRichiesta);

            if (command.Stato.Equals(Costanti.RichiestaChiusa) || command.Stato.Equals(Costanti.RichiestaSospesa))
            {
                foreach (var composizione in richiesta.Partenze)
                {
                    if (!composizione.Partenza.Mezzo.Stato.Equals(Costanti.MezzoInRientro) && !composizione.Partenza.Mezzo.Stato.Equals(Costanti.MezzoInSede))
                    {
                        if (!composizione.Partenza.Mezzo.Stato.Equals(Costanti.MezzoInSede) || !composizione.Partenza.Mezzo.Stato.Equals(Costanti.MezzoRientrato))
                        {
                            composizione.Partenza.Mezzo.Stato = Costanti.MezzoInRientro;
                        }

                        composizione.Partenza.Mezzo.IdRichiesta = null;

                        AggiornaStatoMezzoCommand statoMezzo = new AggiornaStatoMezzoCommand();
                        statoMezzo.CodiceSede = command.CodiceSede;
                        statoMezzo.IdMezzo    = composizione.Partenza.Mezzo.Codice;
                        statoMezzo.Richiesta  = richiesta;
                        statoMezzo.StatoMezzo = Costanti.MezzoInSede;
                        _upDatePartenza.Update(statoMezzo);
                    }
                }
            }

            richiesta.SincronizzaStatoRichiesta(command.Stato, richiesta.StatoRichiesta, command.IdOperatore, command.Note);
            if (command.Stato == Costanti.RichiestaRiaperta)
            {
                richiesta.IstanteChiusura = null;
            }

            _updateRichiestaAssistenza.UpDate(richiesta);
        }
Ejemplo n.º 3
0
        public async Task <IActionResult> AggiornaPartenza([FromBody] AggiornaStatoMezzoCommand command)
        {
            command.CodiciSede = Request.Headers["CodiceSede"].ToString().Split(',');
            command.IdUtente   = Request.Headers["IdUtente"].ToString();

            try
            {
                _addhandler.Handle(command);
                return(Ok());
            }
            catch (Exception ex)
            {
                if (ex.Message.Contains(Costanti.UtenteNonAutorizzato))
                {
                    return(StatusCode(403, new { message = Costanti.UtenteNonAutorizzato }));
                }
                else if (ex.Message.Contains(Costanti.MezzoErroreCambioStatoRichiestaChiusa))
                {
                    return(StatusCode(403, new { message = Costanti.MezzoErroreCambioStatoRichiestaChiusa }));
                }
                else
                {
                    return(BadRequest(new { message = ex.Message }));
                }
            }
        }
Ejemplo n.º 4
0
        public async Task <IActionResult> AggiornaPartenza([FromBody] AggiornaStatoMezzoCommand intervento)
        {
            var    headerValues = Request.Headers["IdUtente"];
            var    codiceSede   = Request.Headers["CodiceSede"];
            string idUtente     = headerValues.FirstOrDefault();

            var command = new AggiornaStatoMezzoCommand()
            {
                //IdRichiesta = intervento.IdRichiesta,
                IdUtente   = idUtente,
                Chiamata   = intervento.Chiamata,
                IdMezzo    = intervento.IdMezzo,
                StatoMezzo = intervento.StatoMezzo,
                CodiceSede = codiceSede,
            };

            try
            {
                _addhandler.Handle(command);
                return(Ok());
            }
            catch (Exception ex)
            {
                if (ex.Message.Contains(Costanti.UtenteNonAutorizzato))
                {
                    return(StatusCode(403, Costanti.UtenteNonAutorizzato));
                }
                return(BadRequest());
            }
        }
Ejemplo n.º 5
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)
        {
            _setStatoOperativoMezzo.Set(command.CodiceSede, command.IdMezzo, command.StatoMezzo, command.Richiesta.Codice);

            foreach (var partenza in command.Richiesta.Partenze)
            {
                foreach (var squadra in partenza.Partenza.Squadre)
                {
                    _setStatoSquadra.SetStato(squadra.Codice, command.Richiesta.Id, command.StatoMezzo, command.CodiceSede);
                }
            }
        }
        public async Task SendNotification(AggiornaStatoMezzoCommand intervento)
        {
            const bool notificaChangeState             = true;
            var        sintesiRichiesteAssistenzaQuery = new SintesiRichiesteAssistenzaQuery();
            var        listaSintesi = _sintesiRichiesteAssistenzahandler.Handle(sintesiRichiesteAssistenzaQuery).SintesiRichiesta;

            var boxRichiesteQuery = new BoxRichiesteQuery();
            var boxInterventi     = _boxRichiesteHandler.Handle(boxRichiesteQuery).BoxRichieste;

            var boxMezziQuery = new BoxMezziQuery();
            var boxMezzi      = _boxMezziHandler.Handle(boxMezziQuery).BoxMezzi;

            var boxPersonaleQuery = new BoxPersonaleQuery();
            var boxPersonale      = _boxPersonaleHandler.Handle(boxPersonaleQuery).BoxPersonale;

            var listaMezziInServizioQuery = new ListaMezziInServizioQuery
            {
                IdSede = intervento.CodiceSede
            };
            var listaMezziInServizio = _listaMezziInServizioHandler.Handle(listaMezziInServizioQuery).ListaMezzi;

            var sintesiRichiesteAssistenzaMarkerQuery = new SintesiRichiesteAssistenzaMarkerQuery();
            var listaSintesiMarker = _sintesiRichiesteAssistenzaMarkerhandler.Handle(sintesiRichiesteAssistenzaMarkerQuery).SintesiRichiestaMarker;

            intervento.Chiamata = listaSintesi.LastOrDefault(richiesta => richiesta.Id == intervento.Chiamata.Id);

            await _notificationHubContext.Clients.Group(intervento.Chiamata.Operatore.Sede.Codice).SendAsync("ModifyAndNotifySuccess", intervento);

            await _notificationHubContext.Clients.Group(intervento.Chiamata.Operatore.Sede.Codice).SendAsync("ChangeStateSuccess", notificaChangeState);

            await _notificationHubContext.Clients.Group(intervento.Chiamata.Operatore.Sede.Codice).SendAsync("NotifyGetBoxInterventi", boxInterventi);

            await _notificationHubContext.Clients.Group(intervento.Chiamata.Operatore.Sede.Codice).SendAsync("NotifyGetBoxMezzi", boxMezzi);

            await _notificationHubContext.Clients.Group(intervento.Chiamata.Operatore.Sede.Codice).SendAsync("NotifyGetBoxPersonale", boxPersonale);

            await _notificationHubContext.Clients.Group(intervento.Chiamata.Operatore.Sede.Codice).SendAsync("NotifyGetListaMezziInServizio", listaMezziInServizio);

            await _notificationHubContext.Clients.Group(intervento.Chiamata.Operatore.Sede.Codice).SendAsync("NotifyGetRichiestaUpDateMarker", listaSintesiMarker.LastOrDefault(marker => marker.Codice == intervento.Chiamata.Codice));

            var queryListaMezzi  = new MezziMarkerQuery();
            var listaMezziMarker = _listaMezziMarkerHandler.Handle(queryListaMezzi).ListaMezziMarker;
            await _notificationHubContext.Clients.Group(intervento.Chiamata.Operatore.Sede.Codice).SendAsync("NotifyGetMezzoUpDateMarker", listaMezziMarker.LastOrDefault(marker => marker.Mezzo.IdRichiesta == intervento.Chiamata.Codice));
        }
Ejemplo n.º 7
0
        public void Handle(AnnullaPartenzaCommand command)
        {
            var PartenzaToDelete = command.Richiesta.Partenze.Where(x => x.Partenza.Mezzo.Codice.Equals(command.TargaMezzo)).FirstOrDefault();

            switch (command.CodMotivazione)
            {
            case 1:
                new RevocaPerInterventoNonPiuNecessario(command.Richiesta, command.TargaMezzo, DateTime.Now, command.IdOperatore, PartenzaToDelete.Partenza.Codice);
                break;

            case 2:
                var richiestaSubentrata = _getRichiestaById.GetByCodice(command.CodRichiestaSubentrata);
                if (richiestaSubentrata == null)
                {
                    richiestaSubentrata = _getRichiestaById.GetByCodiceRichiesta(command.CodRichiestaSubentrata);
                }

                new RevocaPerRiassegnazione(command.Richiesta, richiestaSubentrata, command.TargaMezzo, DateTime.Now, command.IdOperatore, PartenzaToDelete.Partenza.Codice);
                break;

            case 3:
                new RevocaPerFuoriServizio(command.Richiesta, command.TargaMezzo, DateTime.Now, command.IdOperatore, PartenzaToDelete.Partenza.Codice);
                break;

            case 4:
                new RevocaPerAltraMotivazione(command.Richiesta, command.TargaMezzo, DateTime.Now, command.IdOperatore, command.TestoMotivazione, PartenzaToDelete.Partenza.Codice);
                break;
            }
            _upDateRichiestaAssistenza.UpDate(command.Richiesta);

            AggiornaStatoMezzoCommand commandStatoMezzo = new AggiornaStatoMezzoCommand();

            commandStatoMezzo.CodiciSede = new string[] { PartenzaToDelete.Partenza.Mezzo.Distaccamento.Codice };
            commandStatoMezzo.IdMezzo    = command.TargaMezzo;
            commandStatoMezzo.StatoMezzo = Costanti.MezzoInSede;
            commandStatoMezzo.Richiesta  = command.Richiesta;
            _updateStatoPartenze.Update(commandStatoMezzo);
        }
Ejemplo n.º 8
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);
        }
Ejemplo n.º 9
0
        public async Task SendNotification(AggiornaStatoMezzoCommand intervento)
        {
            var SediDaNotificare = intervento.CodiciSede.ToList();

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

            var sintesiRichiesteAssistenzaQuery = new SintesiRichiesteAssistenzaQuery
            {
                Filtro = new FiltroRicercaRichiesteAssistenza
                {
                    idOperatore            = intervento.IdUtente,
                    PageSize               = 99,
                    IncludiRichiesteChiuse = true
                },
                CodiciSede = SediDaNotificare.ToArray()
            };
            var listaSintesi = _sintesiRichiesteAssistenzahandler.Handle(sintesiRichiesteAssistenzaQuery).SintesiRichiesta;

            intervento.Chiamata = listaSintesi.LastOrDefault(richiesta => richiesta.Codice == intervento.CodRichiesta);

            Task.Factory.StartNew(() =>
            {
                var listaMezziInServizioQuery = new ListaMezziInServizioQuery
                {
                    CodiciSede  = intervento.CodiciSede,
                    IdOperatore = intervento.IdUtente
                };
                var listaMezziInServizio = _listaMezziInServizioHandler.Handle(listaMezziInServizioQuery).DataArray;
                var mezzo = listaMezziInServizio.Find(x => x.Mezzo.Mezzo.Codice.Equals(intervento.IdMezzo));

                foreach (var sede in listaMezziInServizioQuery.CodiciSede)
                {
                    _notificationHubContext.Clients.Group(sede).SendAsync("NotifyUpdateMezzoInServizio", mezzo);
                }
            });

            Parallel.ForEach(SediDaNotificare.Distinct(), sede =>
            {
                _notificationHubContext.Clients.Group(sede).SendAsync("ModifyAndNotifySuccess", intervento);
                _notificationHubContext.Clients.Group(sede).SendAsync("ChangeStateSuccess", true);

                Task.Factory.StartNew(() =>
                {
                    var boxMezziQuery = new BoxMezziQuery()
                    {
                        CodiciSede = new string[] { sede }
                    };
                    var boxMezzi = _boxMezziHandler.Handle(boxMezziQuery).BoxMezzi;
                    _notificationHubContext.Clients.Group(sede).SendAsync("NotifyGetBoxMezzi", boxMezzi);
                });

                Task.Factory.StartNew(() =>
                {
                    var boxRichiesteQuery = new BoxRichiesteQuery()
                    {
                        CodiciSede = new string[] { sede }
                    };
                    var boxInterventi = _boxRichiesteHandler.Handle(boxRichiesteQuery).BoxRichieste;
                    _notificationHubContext.Clients.Group(sede).SendAsync("NotifyGetBoxInterventi", boxInterventi);
                });

                Task.Factory.StartNew(() =>
                {
                    var boxPersonaleQuery = new BoxPersonaleQuery()
                    {
                        CodiciSede = new string[] { sede }
                    };
                    var boxPersonale = _boxPersonaleHandler.Handle(boxPersonaleQuery).BoxPersonale;
                    _notificationHubContext.Clients.Group(sede).SendAsync("NotifyGetBoxPersonale", boxPersonale);
                });

                if (intervento.Chiamata != null)
                {
                    Task.Factory.StartNew(() =>
                    {
                        var sintesiRichiesteAssistenzaMarkerQuery = new SintesiRichiesteAssistenzaMarkerQuery()
                        {
                            CodiciSedi = new string[] { sede }
                        };
                        var listaSintesiMarker = _sintesiRichiesteAssistenzaMarkerhandler.Handle(sintesiRichiesteAssistenzaMarkerQuery).SintesiRichiestaMarker;
                        _notificationHubContext.Clients.Group(sede).SendAsync("NotifyGetRichiestaUpDateMarker", listaSintesiMarker.LastOrDefault(marker => marker.Codice == intervento.Chiamata.Codice));
                    });

                    Task.Factory.StartNew(() =>
                    {
                        var queryListaMezzi = new MezziMarkerQuery()
                        {
                            Filtro = new AreaMappa()
                            {
                                CodiceSede = new List <string>()
                                {
                                    sede
                                },
                                FiltroMezzi = new Models.Classi.Filtri.FiltroMezzi()
                                {
                                    FiltraPerAreaMappa = false
                                }
                            }
                        };
                        var listaMezziMarker = _listaMezziMarkerHandler.Handle(queryListaMezzi).ListaMezziMarker;
                        _notificationHubContext.Clients.Group(sede).SendAsync("NotifyGetMezzoUpDateMarker", listaMezziMarker.LastOrDefault(marker => marker.Mezzo.IdRichiesta == intervento.Chiamata.Codice));
                    });
                }
            });
        }
Ejemplo n.º 10
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)
        {
            _upDateRichiesta.UpDate(command.Richiesta);

            var codiceSedeMezzo = command.CodiciSede.First();

            _setStatoOperativoMezzo.Set(codiceSedeMezzo, command.IdMezzo, command.StatoMezzo, command.Richiesta.Codice);

            var dataMovintazione = DateTime.Now;

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

            foreach (var partenza in command.Richiesta.Partenze.Where(c => c.Partenza.Mezzo.Codice == command.IdMezzo))
            {
                foreach (var squadra in partenza.Partenza.Squadre)
                {
                    _setStatoSquadra.SetStato(squadra.Codice, command.Richiesta.Id, command.StatoMezzo, codiceSedeMezzo, command.IdMezzo);
                }

                if (!partenza.Partenza.Mezzo.Stato.Equals(Costanti.MezzoInUscita))
                {
                    if (partenza.Partenza.Mezzo.Stato.Equals(Costanti.MezzoInSede) || partenza.Partenza.Mezzo.Stato.Equals(Costanti.MezzoRientrato))
                    {
                        var dataRientro = command.Richiesta.ListaEventi.OfType <PartenzaRientrata>().FirstOrDefault(p => p.CodicePartenza.Equals(partenza.Partenza.Codice)).Istante;
                        _setRientroMezzo.Set(new RientroGAC()
                        {
                            targa            = partenza.Partenza.Mezzo.Codice.Split('.')[1],
                            tipoMezzo        = partenza.Partenza.Mezzo.Codice.Split('.')[0],
                            idPartenza       = partenza.Partenza.Codice.ToString(),
                            numeroIntervento = command.Richiesta.CodRichiesta,
                            dataIntervento   = dataIntervento,
                            dataRientro      = dataRientro,
                            autista          = ""
                        });
                    }
                    else if (partenza.Partenza.Mezzo.Stato.Equals(Costanti.MezzoInViaggio))
                    {
                        var dataUscita = command.Richiesta.ListaEventi.OfType <ComposizionePartenze>().FirstOrDefault(p => p.Partenza.Codice.Equals(partenza.Partenza.Codice)).Istante;
                        _setUscitaMezzo.Set(new UscitaGAC()
                        {
                            targa            = partenza.Partenza.Mezzo.Codice.Split('.')[1],
                            tipoMezzo        = partenza.Partenza.Mezzo.Codice.Split('.')[0],
                            idPartenza       = partenza.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()
                        });
                    }
                }
            }
        }
Ejemplo n.º 11
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);
        }