コード例 #1
0
        public async Task <IActionResult> ModificaPartenza([FromBody] ModificaPartenza partenza)
        {
            var command = new ModificaPartenzaCommand()
            {
                CodSede     = Request.Headers["CodiceSede"].ToString().Split(",", StringSplitOptions.RemoveEmptyEntries),
                IdOperatore = Request.Headers["IdUtente"],

                ModificaPartenza = partenza
            };

            try
            {
                _modificaPartenzahandler.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.Replace("\r\n", ". ") }));
                }
            }
        }
コード例 #2
0
        public async Task SendNotification(ModificaPartenzaCommand 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);
            }

            var confermaPartenza = new ConfermaPartenze()
            {
                CodiceSede  = command.CodSede.First(),
                IdOperatore = command.IdOperatore,
                IdRichiesta = command.Richiesta.Id,
                Chiamata    = _mapperSintesi.Map(command.Richiesta),
                Partenze    = command.Richiesta.lstPartenze,
                richiesta   = command.Richiesta
            };

            Parallel.ForEach(SediDaNotificare, sede =>
            {
                var boxInterventi = _boxRichiesteHandler.Handle(new BoxRichiesteQuery()
                {
                    CodiciSede = new string[] { sede }
                }).BoxRichieste;
                var boxMezzi = _boxMezziHandler.Handle(new BoxMezziQuery()
                {
                    CodiciSede = new string[] { sede }
                }).BoxMezzi;
                var boxPersonale = _boxPersonaleHandler.Handle(new BoxPersonaleQuery()
                {
                    CodiciSede = new string[] { sede }
                }).BoxPersonale;

                _notificationHubContext.Clients.Group(sede).SendAsync("NotifyGetBoxInterventi", boxInterventi);
                _notificationHubContext.Clients.Group(sede).SendAsync("NotifyGetBoxMezzi", boxMezzi);
                _notificationHubContext.Clients.Group(sede).SendAsync("NotifyGetBoxPersonale", boxPersonale);

                _notificationHubContext.Clients.Group(sede).SendAsync("ModifyAndNotifySuccess", confermaPartenza);

                foreach (var partenza in command.Richiesta.lstPartenze)
                {
                    _notificationHubContext.Clients.Group(sede).SendAsync("NotifyUpdateMezzoInServizio", new MezzoInServizio()
                    {
                        Mezzo = new MezzoMarker()
                        {
                            Mezzo         = partenza.Mezzo,
                            InfoRichiesta = new InfoRichiesta()
                            {
                                CodiceRichiesta = command.Richiesta.Codice,
                                Indirizzo       = command.Richiesta.Localita.Indirizzo
                            }
                        },
                        Squadre = partenza.Squadre
                    });
                }
            });
        }