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", ". ") })); } } }
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 }); } }); }