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)); } } }
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 } }); } }