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