Example #1
0
        public async Task <IActionResult> AnnullaPartenzaCommand([FromBody] AnnullaPartenzaCommand partenza)
        {
            var command = new AnnullaPartenzaCommand()
            {
                IdRichiesta            = partenza.IdRichiesta,
                TargaMezzo             = partenza.TargaMezzo,
                IdOperatore            = Request.Headers["IdUtente"],
                CodMotivazione         = partenza.CodMotivazione,
                TestoMotivazione       = partenza.TestoMotivazione,
                CodRichiestaSubentrata = partenza.CodRichiestaSubentrata
            };

            try
            {
                _annullaPartenzahandler.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 }));
                }
            }
        }
Example #2
0
        public async Task SendNotification(AnnullaPartenzaCommand 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);
            }

            Parallel.ForEach(SediDaNotificare, sede =>
            {
                Task.Factory.StartNew(() =>
                {
                    var sintesiRichiesteAssistenzaQuery = new SintesiRichiesteAssistenzaQuery
                    {
                        Filtro = new FiltroRicercaRichiesteAssistenza
                        {
                            idOperatore = command.IdOperatore,
                            PageSize    = 99
                        },
                        CodiciSede = new string[] { sede }
                    };
                    var listaSintesi = _sintesiRichiesteAssistenzahandler.Handle(sintesiRichiesteAssistenzaQuery).SintesiRichiesta;
                    command.Chiamata = listaSintesi.LastOrDefault(richiesta => richiesta.Id == command.IdRichiesta);
                    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 == command.Chiamata.Codice));
                    return(command.Chiamata);
                }).ContinueWith(chiamata => _notificationHubContext.Clients.Group(sede).SendAsync("ModifyAndNotifySuccess", command));

                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 boxMezziQuery = new BoxMezziQuery()
                    {
                        CodiciSede = new string[] { sede }
                    };
                    var boxMezzi = _boxMezziHandler.Handle(boxMezziQuery).BoxMezzi;
                    _notificationHubContext.Clients.Group(sede).SendAsync("NotifyGetBoxMezzi", boxMezzi);
                });

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

                Task.Factory.StartNew(() =>
                {
                    var listaMezziInServizioQuery = new ListaMezziInServizioQuery
                    {
                        CodiciSede  = new string[] { sede },
                        IdOperatore = command.IdOperatore
                    };
                    var listaMezziInServizio = _listaMezziInServizioHandler.Handle(listaMezziInServizioQuery).DataArray;
                    _notificationHubContext.Clients.Group(sede).SendAsync("NotifyGetListaMezziInServizio", listaMezziInServizio);
                });

                Task.Factory.StartNew(() =>
                {
                    var areaMappa = new AreaMappa()
                    {
                        CodiceSede = new List <string>()
                        {
                            sede
                        },
                        FiltroMezzi = new Models.Classi.Filtri.FiltroMezzi()
                        {
                            FiltraPerAreaMappa = false
                        }
                    };
                    var queryListaMezzi = new MezziMarkerQuery()
                    {
                        Filtro = areaMappa,
                    };
                    var listaMezziMarker = _listaMezziMarkerHandler.Handle(queryListaMezzi).ListaMezziMarker;
                    _notificationHubContext.Clients.Group(sede).SendAsync("NotifyGetMezzoUpDateMarker", listaMezziMarker.LastOrDefault(marker => marker.Mezzo.IdRichiesta == command.Chiamata.Codice));
                });


                _notificationHubContext.Clients.Group(sede).SendAsync("ChangeStateSuccess", true);
            });
        }