Example #1
0
        private RichiestaAssistenza CreaRichiestaContenenteUnicoEventoDiComposizione(out SituazioneMezzo expected)
        {
            var richiestaConUnicoEventoDiAssegnazione = new RichiestaAssistenza()
            {
                Codice = "R1",
            };
            var componentePartenza = new ComponentePartenza("CF1", "M1");
            var istanteEvento      = DateTime.Now.AddMinutes(-10);
            var eventoComposizione = new ComposizionePartenze(richiestaConUnicoEventoDiAssegnazione, istanteEvento, "Fonte", false)
            {
                Componenti = new HashSet <ComponentePartenza>()
                {
                    componentePartenza
                }
            };

            expected = new SituazioneMezzo()
            {
                Codice      = "M1",
                CodiceStato = new Assegnato(istanteEvento, "R1").Codice,
                CodiceRichiestaAssistenza = "R1",
                IstanteAggiornamentoStato = istanteEvento
            };
            return(richiestaConUnicoEventoDiAssegnazione);
        }
        /// <summary>
        ///   Esegue l'azione
        /// </summary>
        /// <param name="istanteEffettivo">
        ///   L'istante effettivo (simulato) in cui l'azione viene eseguita
        /// </param>
        /// <returns>Le azioni da eseguire a seguito dell'esecuzione della presente azione</returns>
        public IEnumerable <IAzioneSuRichiesta> Esegui(DateTime istanteEffettivo)
        {
            var mezzoSelezionato = this.parcoMezzi.GetPrimoMezzoDisponibile();

            if (mezzoSelezionato == null)
            {
                yield break;
            }

            mezzoSelezionato.ContestoMezzo.Composizione();
            this.parametriMezzo.MezzoUtilizzato = mezzoSelezionato; // questa assegnazione alimenta l'esecuzione di tutti gli altri eventi successivi
            var composizione = new ComposizionePartenze(this.richiesta.Richiesta, istanteEffettivo, "Fonte", false)
            {
                Componenti = new HashSet <ComponentePartenza>(mezzoSelezionato.Membri
                                                              .Select((m, i) =>
                                                                      new ComponentePartenza(m, mezzoSelezionato.Mezzo.Codice, "Ticket")
                {
                    Ruoli = i == 0 ? new HashSet <Ruolo>()
                    {
                        Ruolo.CapoPartenza
                    } : i == 1 ? new HashSet <Ruolo> {
                        Ruolo.Autista
                    } : new HashSet <Ruolo> {
                        Ruolo.Vigile
                    }
                }))
            };

            this.eseguita = true;

            yield return(new AggiungiPartenzaDallaSede(
                             istanteEffettivo.AddMinutes(1), // la partenza avviene un minuto dopo la composizione
                             this.richiesta,
                             this.parametriMezzo));
        }
Example #3
0
        public void Un_evento_di_composizione_partenze_con_parametri_corretti_e_correttamente_creato()
        {
            var now    = DateTime.Now;
            var evento = new ComposizionePartenze(this.richiesta, now, "Fonte", false);

            Assert.That(evento.Istante, Is.EqualTo(now));
            Assert.That(evento.CodiceFonte, Is.EqualTo("Fonte"));
        }
Example #4
0
        private void Crea_Richiesta_R1_Con_M1_e_M2_revocato_e_riassegnato_e_M1_revocato_e_M2_in_viaggio(out IEnumerable <SituazioneMezzo> expected, out IEnumerable <RichiestaAssistenza> richieste)
        {
            var richiesta = new RichiestaAssistenza()
            {
                Codice = "R1",
            };
            var richiestaSubentrata = new RichiestaAssistenza()
            {
                Codice = "R2",
            };

            richieste = new RichiestaAssistenza[] { richiesta, richiestaSubentrata };
            var now = DateTime.Now;
            var componentePartenza1       = new ComponentePartenza("CF1", "M1");
            var componentePartenza2       = new ComponentePartenza("CF2", "M2");
            var istanteEventoAssegnazione = now.AddMinutes(-10);
            var eventoComposizione        = new ComposizionePartenze(richiesta, istanteEventoAssegnazione, "Fonte", false)
            {
                Componenti = new HashSet <ComponentePartenza>()
                {
                    componentePartenza1, componentePartenza2
                }
            };
            var istanteEventoUscitaM1 = now.AddMinutes(-7);
            var eventoUscitaM1        = new UscitaPartenza(richiesta, "M1", istanteEventoUscitaM1, "Fonte");
            var istanteEventoUscitaM2 = now.AddMinutes(-6);
            var eventoUscitaM2        = new UscitaPartenza(richiesta, "M2", istanteEventoUscitaM2, "Fonte");
            var istanteSulPostoM1     = now.AddMinutes(-4);
            var eventoSulPostoM1      = new ArrivoSulPosto(richiesta, "M1", istanteSulPostoM1, "Fonte");
            var istanteSganciatoM1    = now.AddMinutes(-2);
            var eventoSganciatoM1     = new RevocaPerRiassegnazione(richiesta, richiestaSubentrata, "M1", istanteSganciatoM1, "Fonte");
            var istanteRiassegnatoM1  = now.AddMinutes(-1);
            var eventoComposizione2   = new ComposizionePartenze(richiestaSubentrata, istanteRiassegnatoM1, "Fonte", true)
            {
                Componenti = new HashSet <ComponentePartenza>()
                {
                    componentePartenza1
                }
            };

            expected = new SituazioneMezzo[]
            {
                new SituazioneMezzo()
                {
                    Codice      = "M1",
                    CodiceStato = new InViaggio(istanteRiassegnatoM1, "R2").Codice,
                    CodiceRichiestaAssistenza = "R2",
                    IstanteAggiornamentoStato = istanteRiassegnatoM1
                },
                new SituazioneMezzo()
                {
                    Codice      = "M2",
                    CodiceStato = new InViaggio(istanteEventoUscitaM2, "R1").Codice,
                    CodiceRichiestaAssistenza = "R1",
                    IstanteAggiornamentoStato = istanteEventoUscitaM2
                },
            };
        }
Example #5
0
        public void UnaComposizionePartenzaAppenaCreataHaLAttributoComponentiNonNull()
        {
            var richiesta = new RichiestaAssistenza();
            var cp        = new ComposizionePartenze(richiesta, DateTime.Now, "Fonte", false);

            var componenti = cp.Componenti;

            Assert.That(componenti, Is.Not.Null);
        }
Example #6
0
 /// <summary>
 ///   Nello stato <see cref="FuoriSincro" /> un evento <see cref="ComposizionePartenze" /> fa
 ///   transire verso lo stato <see cref="Assegnato" /> se la composizione avviene col mezzo
 ///   in sede, oppure verso lo stato <see cref="Libero" /> se la composizione avviene mentre
 ///   il mezzo non è in sede.
 /// </summary>
 /// <param name="composizionePartenze">Il visitor</param>
 /// <returns>Il nuovo stato a valle dell'evento di composizione</returns>
 public override IStatoMezzo AcceptVisitor(ComposizionePartenze composizionePartenze)
 {
     if (composizionePartenze.FuoriSede)
     {
         return(new Libero(composizionePartenze.Istante));
     }
     else
     {
         return(new Assegnato(composizionePartenze.Istante, composizionePartenze.CodiceRichiesta));
     }
 }
Example #7
0
        private RichiestaAssistenza Crea_Richiesta_Con_M3_e_M4_assegnati_e_M4_in_sede_e_M3_in_rientro(out IEnumerable <SituazioneMezzo> expected)
        {
            var richiesta = new RichiestaAssistenza()
            {
                Codice = "R2",
            };
            var componentePartenza1       = new ComponentePartenza("CF3", "M3");
            var componentePartenza2       = new ComponentePartenza("CF4", "M4");
            var istanteEventoAssegnazione = DateTime.Now.AddMinutes(-10);
            var eventoComposizione        = new ComposizionePartenze(richiesta, istanteEventoAssegnazione, "Fonte", false)
            {
                Componenti = new HashSet <ComponentePartenza>()
                {
                    componentePartenza1, componentePartenza2
                }
            };
            var istanteEventoUscitaM3 = DateTime.Now.AddMinutes(-7);
            var eventoUscitaM3        = new UscitaPartenza(richiesta, "M3", istanteEventoUscitaM3, "Fonte");
            var istanteSulPostoM3     = DateTime.Now.AddMinutes(-4);
            var eventoSulPostoM3      = new ArrivoSulPosto(richiesta, "M3", istanteSulPostoM3, "Fonte");
            var istanteInRientroM3    = DateTime.Now.AddMinutes(-2);
            var eventoInRientroM3     = new PartenzaInRientro(richiesta, "M3", istanteInRientroM3, "Fonte");
            var istanteEventoUscitaM4 = DateTime.Now.AddMinutes(-7);
            var eventoUscitaM4        = new UscitaPartenza(richiesta, "M4", istanteEventoUscitaM4, "Fonte");
            var istanteSulPostoM4     = DateTime.Now.AddMinutes(-4);
            var eventoSulPostoM4      = new ArrivoSulPosto(richiesta, "M4", istanteSulPostoM4, "Fonte");
            var istanteInRientroM4    = DateTime.Now.AddMinutes(-3);
            var eventoInRientroM4     = new PartenzaInRientro(richiesta, "M4", istanteInRientroM4, "Fonte");
            var istanteRientratoM4    = DateTime.Now.AddMinutes(-2);
            var eventoRientratoM4     = new PartenzaRientrata(richiesta, "M4", istanteRientratoM4, "Fonte");

            expected = new SituazioneMezzo[]
            {
                new SituazioneMezzo()
                {
                    Codice      = "M3",
                    CodiceStato = new InRientro(istanteInRientroM3, "R2").Codice,
                    CodiceRichiestaAssistenza = "R2",
                    IstanteAggiornamentoStato = istanteSulPostoM3
                },
                new SituazioneMezzo()
                {
                    Codice      = "M4",
                    CodiceStato = new InSede(istanteRientratoM4).Codice,
                    CodiceRichiestaAssistenza = "R2",
                    IstanteAggiornamentoStato = istanteRientratoM4
                },
            };
            return(richiesta);
        }
Example #8
0
        public void CreaComposizionePartenzaStandard()
        {
            var richiesta = new RichiestaAssistenza();

            this.partenzaDiCinquePersoneConUnicoCapopartenzaEUnicoAutista = new ComposizionePartenze(richiesta, DateTime.Now, "Fonte", false)
            {
                Componenti = new HashSet <ComponentePartenza>()
                {
                    new ComponentePartenza("XXX")
                    {
                        Ruoli = new HashSet <ComponentePartenza.Ruolo>()
                        {
                            ComponentePartenza.Ruolo.CapoPartenza
                        }
                    },
                    new ComponentePartenza("YYY")
                    {
                        Ruoli = new HashSet <ComponentePartenza.Ruolo>()
                        {
                            ComponentePartenza.Ruolo.Autista
                        }
                    },
                    new ComponentePartenza("ZZZ")
                    {
                        Ruoli = new HashSet <ComponentePartenza.Ruolo>()
                        {
                            ComponentePartenza.Ruolo.Vigile
                        }
                    },
                    new ComponentePartenza("KKK")
                    {
                        Ruoli = new HashSet <ComponentePartenza.Ruolo>()
                        {
                            ComponentePartenza.Ruolo.Vigile
                        }
                    },
                    new ComponentePartenza("LLL")
                    {
                        Ruoli = new HashSet <ComponentePartenza.Ruolo>()
                        {
                            ComponentePartenza.Ruolo.Vigile
                        }
                    }
                }
            };
        }
Example #9
0
        private RichiestaAssistenza Crea_Richiesta_Con_M3_e_M4_assegnati_e_M3_sul_posto_e_in_viaggio(out IEnumerable <SituazioneMezzo> expected)
        {
            var richiesta = new RichiestaAssistenza()
            {
                Codice = "R2",
            };

            var componentePartenza1 = new ComponentePartenza("CF3", "M3");
            var componentePartenza2 = new ComponentePartenza("CF4", "M4");
            var istanteEvento1      = DateTime.Now.AddMinutes(-11);
            var eventoComposizione  = new ComposizionePartenze(richiesta, istanteEvento1, "Fonte", false)
            {
                Componenti = new HashSet <ComponentePartenza>()
                {
                    componentePartenza1, componentePartenza2
                }
            };
            var istanteEvento2 = DateTime.Now.AddMinutes(-6);
            var eventoUscita   = new UscitaPartenza(richiesta, "M4", istanteEvento2, "Fonte");
            var istanteEvento3 = DateTime.Now.AddMinutes(-3);
            var eventoSulPosto = new ArrivoSulPosto(richiesta, "M4", istanteEvento3, "Fonte");

            expected = new SituazioneMezzo[]
            {
                new SituazioneMezzo()
                {
                    Codice      = "M4",
                    CodiceStato = new SulPosto(istanteEvento3, "R2").Codice,
                    CodiceRichiestaAssistenza = "R2",
                    IstanteAggiornamentoStato = istanteEvento3
                },
                new SituazioneMezzo()
                {
                    Codice      = "M3",
                    CodiceStato = new Assegnato(istanteEvento1, "R2").Codice,
                    CodiceRichiestaAssistenza = "R2",
                    IstanteAggiornamentoStato = istanteEvento1
                },
            };
            return(richiesta);
        }
Example #10
0
 /// <summary>
 ///   Nello stato <see cref="InRientro" /> l'evento <see cref="ComposizionePartenze" />
 ///   produce la transizione nello stato <see cref="InViaggio" />.
 /// </summary>
 /// <param name="composizionePartenze">Il visitor</param>
 /// <returns>Lo stato <see cref="Assegnato" /></returns>
 public override IStatoMezzo AcceptVisitor(ComposizionePartenze composizionePartenze)
 {
     return(new Assegnato(composizionePartenze.Istante, composizionePartenze.CodiceRichiesta));
 }
Example #11
0
 /// <summary>
 ///   Accetta il visitor e scatena l'implementazione di default che consiste nel sollevare
 ///   una <see cref="WorkflowException" />. Gli stati concreti, implementati nelle classi
 ///   derivate, effettuano l'override dei metodi corrispondenti a transizioni di stato
 ///   ammesse, restituendo lo stato corretto a fronte dell'evento (visitor) di ingresso.
 /// </summary>
 /// <param name="composizionePartenze">Il visitor accettato</param>
 /// <returns>Niente, poiché solleva un'eccezione</returns>
 public virtual IStatoMezzo AcceptVisitor(ComposizionePartenze composizionePartenze)
 {
     throw new WorkflowException($"Impossibile transire in seguito all'evento {nameof(composizionePartenze)}");
 }
Example #12
0
        /// <summary>
        /// Cambio lo stato di una singola partenza e dei relativi mezzi e stato squadre
        /// </summary>
        /// <param name="partenzaDaLavorare">La partenza la quale devo cambiarne lo stato</param>
        /// <param name="stato">Lo stato che va attribuito alla partenza</param>
        internal void CambiaStatoPartenza(ComposizionePartenze partenzaDaLavorare, CambioStatoMezzo stato)
        {
            #region SWITCH STATO MEZZI

            if (stato.Stato == Costanti.MezzoInViaggio)
            {
                new UscitaPartenza(this, partenzaDaLavorare.Partenza.Mezzo.Codice, stato.DataOraAggiornamento, CodOperatore, partenzaDaLavorare.Partenza.Codice);

                SincronizzaStatoRichiesta(Costanti.RichiestaAssegnata, StatoRichiesta, CodOperatore, "", stato.DataOraAggiornamento);

                partenzaDaLavorare.Partenza.Mezzo.Stato       = Costanti.MezzoInViaggio;
                partenzaDaLavorare.Partenza.Mezzo.IdRichiesta = Id;
            }

            else if (stato.Stato == Costanti.MezzoSulPosto)
            {
                new ArrivoSulPosto(this, partenzaDaLavorare.Partenza.Mezzo.Codice, stato.DataOraAggiornamento, CodOperatore, partenzaDaLavorare.Partenza.Codice);

                SincronizzaStatoRichiesta(Costanti.RichiestaPresidiata, StatoRichiesta, CodOperatore, "", stato.DataOraAggiornamento);

                partenzaDaLavorare.Partenza.Mezzo.Stato       = Costanti.MezzoSulPosto;
                partenzaDaLavorare.Partenza.Mezzo.IdRichiesta = Id;
            }

            else if (stato.Stato == Costanti.MezzoInRientro)
            {
                partenzaDaLavorare.Partenza.Mezzo.Stato = Costanti.MezzoInRientro;

                new PartenzaInRientro(this, partenzaDaLavorare.Partenza.Mezzo.Codice, stato.DataOraAggiornamento, CodOperatore, partenzaDaLavorare.Partenza.Codice);

                if (lstPartenze.Select(p => p.Mezzo.Stato).All(s => s != Costanti.MezzoInSede && s != Costanti.MezzoInViaggio && s != Costanti.MezzoInUscita && s != Costanti.MezzoSulPosto))
                {
                    new ChiusuraRichiesta("", this, stato.DataOraAggiornamento, CodOperatore);
                }
            }

            else if (stato.Stato == Costanti.MezzoRientrato)
            {
                partenzaDaLavorare.Partenza.Mezzo.Stato       = Costanti.MezzoInSede;
                partenzaDaLavorare.Partenza.Mezzo.IdRichiesta = null;
                partenzaDaLavorare.Partenza.Terminata         = true;

                new PartenzaRientrata(this, partenzaDaLavorare.Partenza.Mezzo.Codice, stato.DataOraAggiornamento, CodOperatore, partenzaDaLavorare.Partenza.Codice);

                if (lstPartenze.Select(p => p.Mezzo.Stato).All(s => s != Costanti.MezzoInSede && s != Costanti.MezzoInViaggio && s != Costanti.MezzoInUscita && s != Costanti.MezzoSulPosto))
                {
                    new ChiusuraRichiesta("", this, stato.DataOraAggiornamento, CodOperatore);
                }
            }

            else if (stato.Stato == Costanti.MezzoInViaggio)
            {
                partenzaDaLavorare.Partenza.Mezzo.Stato       = Costanti.MezzoInViaggio;
                partenzaDaLavorare.Partenza.Mezzo.IdRichiesta = Id;
            }

            else if (stato.Stato == Costanti.MezzoInUscita)
            {
                partenzaDaLavorare.Partenza.Mezzo.Stato = Costanti.MezzoInUscita;
            }

            #endregion SWITCH STATO MEZZI

            foreach (var squadra in partenzaDaLavorare.Partenza.Squadre)
            {
                squadra.Stato = MappaStatoSquadraDaStatoMezzo.MappaStato(stato.Stato);
            }
        }
Example #13
0
        public void Un_evento_di_composizione_partenze_ha_i_componenti_non_null()
        {
            var evento = new ComposizionePartenze(this.richiesta, DateTime.Now, "Fonte", false);

            Assert.That(evento.Componenti, Is.Not.Null);
        }
Example #14
0
        public async void Handle(SostituzionePartenzaCommand command)
        {
            Parallel.ForEach(command.sostituzione.Sostituzioni, sostituzione =>
            {
                #region GESTIONE NOTE

                string NoteSquadreSmontanti = "";
                string NoteSquadreMontanti  = "";
                if (sostituzione.SquadreSmontanti.Count() > 1)
                {
                    foreach (var squadra in sostituzione.SquadreSmontanti)
                    {
                        NoteSquadreSmontanti = NoteSquadreSmontanti + squadra + ",";
                    }

                    NoteSquadreSmontanti = "Le squadre " + NoteSquadreSmontanti.Substring(0, NoteSquadreSmontanti.Length - 1) + " vengono sostituite ";
                }
                else
                {
                    NoteSquadreSmontanti = "La squadra " + sostituzione.SquadreSmontanti[0] + " viene sostituita ";
                }

                if (sostituzione.SquadreMontanti.Count() > 1)
                {
                    foreach (var squadra in sostituzione.SquadreMontanti)
                    {
                        NoteSquadreMontanti = NoteSquadreMontanti + squadra + ",";
                    }

                    NoteSquadreMontanti = " dalle squadre " + NoteSquadreMontanti.Substring(0, NoteSquadreMontanti.Length - 1);
                }
                else
                {
                    NoteSquadreMontanti = " dalla squadra " + sostituzione.SquadreMontanti[0];
                }

                string Note = NoteSquadreSmontanti + NoteSquadreMontanti + " sul mezzo " + sostituzione.CodMezzoSmontante + " tornando in sede con il mezzo " + sostituzione.CodMezzoMontante;

                #endregion

                #region GESTIONE RICHIESTA E EVENTI RICIHESTA

                new SostituzionePartenzaFineTurno(command.Richiesta, sostituzione.CodMezzoSmontante, command.sostituzione.DataOraOperazione, command.sostituzione.idOperatore, Note);

                var PartenzaMontante  = command.Richiesta.Partenze.FirstOrDefault(x => x.Partenza.Mezzo.Codice.Equals(sostituzione.CodMezzoMontante) && x.PartenzaAnnullata == false && x.Partenza.Terminata == false && x.Partenza.Sganciata == false);
                var PartenzaSmontante = command.Richiesta.Partenze.FirstOrDefault(x => x.Partenza.Mezzo.Codice.Equals(sostituzione.CodMezzoSmontante) && x.PartenzaAnnullata == false && x.Partenza.Terminata == false && x.Partenza.Sganciata == false);
                var SquadreSwitch     = PartenzaSmontante.Partenza.Squadre;

                //GESTIONE PARTENZA SMONTANTE
                PartenzaSmontante.Partenza.Squadre   = PartenzaMontante.Partenza.Squadre;
                PartenzaSmontante.Partenza.Terminata = true;

                //GESTIONE PARTENZA MONTANTE
                PartenzaMontante.Partenza.Squadre   = PartenzaSmontante.Partenza.Squadre;
                PartenzaMontante.Partenza.Terminata = true;

                //GESTIONE NUOVA PARTENZA SMONTANTE
                var PartenzaSmontanteNuova = new ComposizionePartenze(command.Richiesta, DateTime.Now, command.sostituzione.idOperatore, false)
                {
                    Partenza = new Partenza()
                    {
                        Codice  = command.Richiesta.CodiceUltimaPartenza + 1,
                        Mezzo   = PartenzaSmontante.Partenza.Mezzo,
                        Squadre = PartenzaMontante.Partenza.Squadre
                    }
                };

                //GESTIONE NUOVA PARTENZA MONTANTE
                var PartenzaMontanteNuova = new ComposizionePartenze(command.Richiesta, DateTime.Now, command.sostituzione.idOperatore, false)
                {
                    Partenza = new Partenza()
                    {
                        Codice  = command.Richiesta.CodiceUltimaPartenza + 1,
                        Mezzo   = PartenzaMontante.Partenza.Mezzo,
                        Squadre = SquadreSwitch
                    }
                };

                var CodSede = PartenzaSmontante.Partenza.Mezzo.Distaccamento.Codice;

                _updateRichiesta.UpDate(command.Richiesta);

                #endregion

                #region Comunicazione a servizi GAC

                //RIENTRO SMONTANTE

                Task.Factory.StartNew(async() =>
                {
                    _rientroMezzo.Set(new RientroGAC()
                    {
                        idPartenza       = PartenzaSmontante.Partenza.Codice.ToString(),
                        dataIntervento   = PartenzaSmontante.DataOraInserimento,
                        numeroIntervento = command.Richiesta.CodRichiesta,
                        dataRientro      = PartenzaSmontante.DataOraInserimento,
                        targa            = PartenzaSmontante.Partenza.Mezzo.Codice,
                        tipoMezzo        = PartenzaSmontante.Partenza.Mezzo.Genere
                    });

                    //RIENTRO MONTANTE
                    _rientroMezzo.Set(new RientroGAC()
                    {
                        idPartenza       = PartenzaMontante.Partenza.Codice.ToString(),
                        dataIntervento   = PartenzaMontante.DataOraInserimento,
                        numeroIntervento = command.Richiesta.CodRichiesta,
                        dataRientro      = PartenzaMontante.DataOraInserimento,
                        targa            = PartenzaMontante.Partenza.Mezzo.Codice,
                        tipoMezzo        = PartenzaMontante.Partenza.Mezzo.Genere
                    });

                    //USCITA NUOVA PARTENZA MONTANTE
                    _uscitaMezzo.Set(new UscitaGAC()
                    {
                        idPartenza       = PartenzaMontanteNuova.Partenza.Codice.ToString(),
                        dataIntervento   = PartenzaMontanteNuova.DataOraInserimento,
                        numeroIntervento = command.Richiesta.CodRichiesta,
                        dataUscita       = PartenzaMontanteNuova.DataOraInserimento,
                        targa            = PartenzaMontanteNuova.Partenza.Mezzo.Codice,
                        tipoMezzo        = PartenzaMontanteNuova.Partenza.Mezzo.Genere
                    });

                    //USCITA NUOVA PARTENZA SMONTANTE
                    _uscitaMezzo.Set(new UscitaGAC()
                    {
                        idPartenza       = PartenzaSmontanteNuova.Partenza.Codice.ToString(),
                        dataIntervento   = PartenzaSmontanteNuova.DataOraInserimento,
                        numeroIntervento = command.Richiesta.CodRichiesta,
                        dataUscita       = PartenzaSmontanteNuova.DataOraInserimento,
                        targa            = PartenzaSmontanteNuova.Partenza.Mezzo.Codice,
                        tipoMezzo        = PartenzaSmontanteNuova.Partenza.Mezzo.Genere
                    });
                });

                #endregion
            });
        }