Example #1
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
            });
        }
Example #2
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()
                        });
                    }
                }
            }
        }
Example #3
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);
        }