Exemplo n.º 1
0
        public async Task <IActionResult> Add(TrasferimentoChiamata trasferimento)
        {
            var command = new AddTrasferimentoCommand()
            {
                IdOperatore = Request.Headers["IdUtente"],
                CodiciSede  = Request.Headers["CodiceSede"].ToString().Split(",", StringSplitOptions.RemoveEmptyEntries),

                TrasferimentoChiamata = trasferimento
            };

            try
            {
                _addCommandHandler.Handle(command);

                return(Ok());
            }
            catch (Exception ex)
            {
                if (ex.Message.Contains(Costanti.UtenteNonAutorizzato))
                {
                    return(StatusCode(403, new { message = Costanti.UtenteNonAutorizzato }));
                }
                else
                {
                    return(BadRequest(ex));
                }
            }
        }
Exemplo n.º 2
0
        public async Task SendNotification(AddTrasferimentoCommand command)
        {
            var mioComandoDes = _getSede.Get(command.CodiciSede[0]).Descrizione;
            var mioOperatore  = _getUtenteById.GetUtenteByCodice(command.TrasferimentoChiamata.IdOperatore);
            var totalItemsA   = _getTrasferimenti.Count(command.TrasferimentoChiamata.CodSedeA);
            var totalItemsDa  = _getTrasferimenti.Count(command.TrasferimentoChiamata.CodSedeDa);
            var richiesta     = _getRichiesta.Handle(new GetSintesiRichiestaAssistenzaQuery()
            {
                CodiceRichiesta = command.TrasferimentoChiamata.CodChiamata,
                CodiceSede      = command.TrasferimentoChiamata.CodSedeA
            }).SintesiRichiesta;

            //GESTIONE SEDI A
            var SediDaNotificareAdd = _getGerarchiaToSend.Get(command.TrasferimentoChiamata.CodSedeA);

            foreach (var sede in SediDaNotificareAdd)
            {
                var boxInterventi = _boxRichiesteHandler.Handle(new BoxRichiesteQuery()
                {
                    CodiciSede = new string[] { sede }
                }).BoxRichieste;

                await _notificationHubContext.Clients.Group(sede).SendAsync("NotifyGetBoxInterventi", boxInterventi);

                await _notificationHubContext.Clients.Group(sede).SendAsync("SaveAndNotifySuccessChiamata", richiesta);

                await _notificationHubContext.Clients.Group(sede).SendAsync("NotifyAddTrasferimento", new
                {
                    Data = new TrasferimentoChiamataFull()
                    {
                        Id          = command.TrasferimentoChiamata.Id,
                        CodChiamata = command.TrasferimentoChiamata.CodChiamata,
                        Data        = command.TrasferimentoChiamata.Data,
                        SedeA       = _getSede.Get(command.TrasferimentoChiamata.CodSedeA).Descrizione,
                        SedeDa      = mioComandoDes,
                        Operatore   = mioOperatore
                    },
                    Pagination = new Paginazione()
                    {
                        TotalItems = totalItemsA
                    }
                });

                //NOTIFICA NAVBAR
                await _notificationHubContext.Clients.Group(sede).SendAsync("NotifyNavBar", new Notifica()
                {
                    Titolo      = "Hai una nuova chiamata",
                    Descrizione = $"La chiamata {richiesta.Codice} è stata trasferita dal {mioComandoDes} alla tua sede",
                    Tipo        = TipoNotifica.TrasferimentoChiamata,
                    Data        = command.TrasferimentoChiamata.Data
                });
            }

            //GESTIONE SEDI DA
            var SediDaNotificareDelete = _getGerarchiaToSend.Get(command.TrasferimentoChiamata.CodSedeDa);

            foreach (var sede in SediDaNotificareDelete)
            {
                var boxInterventi = _boxRichiesteHandler.Handle(new BoxRichiesteQuery()
                {
                    CodiciSede = new string[] { sede }
                }).BoxRichieste;

                await _notificationHubContext.Clients.Group(sede).SendAsync("NotifyGetBoxInterventi", boxInterventi);

                await _notificationHubContext.Clients.Group(sede).SendAsync("NotifyDeleteChiamata", richiesta.Id);

                await _notificationHubContext.Clients.Group(sede).SendAsync("NotifyAddTrasferimento", new
                {
                    Data = new TrasferimentoChiamataFull()
                    {
                        Id          = command.TrasferimentoChiamata.Id,
                        CodChiamata = command.TrasferimentoChiamata.CodChiamata,
                        Data        = command.TrasferimentoChiamata.Data,
                        SedeA       = _getSede.Get(command.TrasferimentoChiamata.CodSedeA).Descrizione,
                        SedeDa      = mioComandoDes,
                        Operatore   = mioOperatore
                    },
                    Pagination = new Paginazione()
                    {
                        TotalItems = totalItemsDa
                    }
                });
            }
        }