Exemplo n.º 1
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);
        }
Exemplo n.º 2
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);
        }
Exemplo n.º 3
0
        public void Handle(AggiornaStatoMezzoCommand command)
        {
            var richiesta = _getRichiestaById.GetById(command.Chiamata.Id);

            if (command.StatoMezzo == Costanti.MezzoSulPosto)
            {
                new ArrivoSulPosto(richiesta, command.IdMezzo, DateTime.UtcNow, richiesta.CodOperatore);

                richiesta.SincronizzaStatoRichiesta(Costanti.RichiestaPresidiata, richiesta.StatoRichiesta,
                                                    richiesta.CodOperatore, "");

                foreach (var composizione in richiesta.Partenze)
                {
                    if (composizione.Partenza.Mezzo.Codice == command.IdMezzo)
                    {
                        composizione.Partenza.Mezzo.Stato       = Costanti.MezzoSulPosto;
                        composizione.Partenza.Mezzo.IdRichiesta = richiesta.CodRichiesta;
                    }
                }
            }
            else if (command.StatoMezzo == Costanti.MezzoInRientro)
            {
                foreach (var composizione in richiesta.Partenze)
                {
                    if (composizione.Partenza.Mezzo.Codice == command.IdMezzo)
                    {
                        composizione.Partenza.Mezzo.Stato       = Costanti.MezzoInRientro;
                        composizione.Partenza.Mezzo.IdRichiesta = null;
                    }
                }

                foreach (var composizione in richiesta.Partenze)
                {
                    if (composizione.Partenza.Mezzo.Stato == Costanti.MezzoSulPosto ||
                        composizione.Partenza.Mezzo.Stato == Costanti.MezzoInViaggio)
                    {
                        _mezziTuttiInSede = false;
                    }
                }

                if (_mezziTuttiInSede)
                {
                    new PartenzaInRientro(richiesta, command.IdMezzo, DateTime.UtcNow, richiesta.CodOperatore); //TODO GESTIRE IL CODICE OPERATORE
                }
            }
            else if (command.StatoMezzo == Costanti.MezzoRientrato)
            {
                foreach (var composizione in richiesta.Partenze)
                {
                    if (composizione.Partenza.Mezzo.Codice == command.IdMezzo)
                    {
                        composizione.Partenza.Mezzo.Stato       = Costanti.MezzoInSede;
                        composizione.Partenza.Mezzo.IdRichiesta = null;
                    }
                }

                foreach (var composizione in richiesta.Partenze)
                {
                    if (composizione.Partenza.Mezzo.Stato != Costanti.MezzoInSede &&
                        composizione.Partenza.Mezzo.Stato != Costanti.MezzoInRientro &&
                        composizione.Partenza.Mezzo.Stato != Costanti.MezzoRientrato)
                    {
                        _mezziTuttiInSede = false;
                    }
                }

                if (_mezziTuttiInSede)
                {
                    new PartenzaRientrata(richiesta, command.IdMezzo, DateTime.UtcNow, richiesta.CodOperatore);
                }
            }
            else if (command.StatoMezzo == Costanti.MezzoInViaggio)
            {
                foreach (var composizione in richiesta.Partenze)
                {
                    if (composizione.Partenza.Mezzo.Codice == command.IdMezzo)
                    {
                        composizione.Partenza.Mezzo.Stato       = Costanti.MezzoInViaggio;
                        composizione.Partenza.Mezzo.IdRichiesta = richiesta.CodRichiesta;
                    }
                }
            }

            foreach (var composizione in richiesta.Partenze)
            {
                if (composizione.Partenza.Mezzo.Codice == command.IdMezzo)
                {
                    foreach (var squadra in composizione.Partenza.Squadre)
                    {
                        {
                            squadra.Stato = MappaStatoSquadraDaStatoMezzo.MappaStato(command.StatoMezzo);
                        }
                    }
                }

                command.Richiesta = richiesta;

                _updateStatoPartenze.Update(command);
            }
        }