public async Task <IActionResult> AggiornaPartenza([FromBody] AggiornaStatoMezzoCommand intervento) { var headerValues = Request.Headers["IdUtente"]; var codiceSede = Request.Headers["CodiceSede"]; string idUtente = headerValues.FirstOrDefault(); var command = new AggiornaStatoMezzoCommand() { //IdRichiesta = intervento.IdRichiesta, IdUtente = idUtente, Chiamata = intervento.Chiamata, IdMezzo = intervento.IdMezzo, StatoMezzo = intervento.StatoMezzo, CodiceSede = codiceSede, }; try { this._addhandler.Handle(command); return(Ok()); } catch { return(BadRequest()); } }
public void Handle(UpDateStatoRichiestaCommand command) { var richiesta = _getRichiestaById.GetById(command.IdRichiesta); if (command.Stato.Equals(Costanti.RichiestaChiusa) || command.Stato.Equals(Costanti.RichiestaSospesa)) { foreach (var composizione in richiesta.Partenze) { if (!composizione.Partenza.Mezzo.Stato.Equals(Costanti.MezzoInRientro) && !composizione.Partenza.Mezzo.Stato.Equals(Costanti.MezzoInSede)) { if (!composizione.Partenza.Mezzo.Stato.Equals(Costanti.MezzoInSede) || !composizione.Partenza.Mezzo.Stato.Equals(Costanti.MezzoRientrato)) { composizione.Partenza.Mezzo.Stato = Costanti.MezzoInRientro; } composizione.Partenza.Mezzo.IdRichiesta = null; AggiornaStatoMezzoCommand statoMezzo = new AggiornaStatoMezzoCommand(); statoMezzo.CodiceSede = command.CodiceSede; statoMezzo.IdMezzo = composizione.Partenza.Mezzo.Codice; statoMezzo.Richiesta = richiesta; statoMezzo.StatoMezzo = Costanti.MezzoInSede; _upDatePartenza.Update(statoMezzo); } } } richiesta.SincronizzaStatoRichiesta(command.Stato, richiesta.StatoRichiesta, command.IdOperatore, command.Note); if (command.Stato == Costanti.RichiestaRiaperta) { richiesta.IstanteChiusura = null; } _updateRichiestaAssistenza.UpDate(richiesta); }
public async Task <IActionResult> AggiornaPartenza([FromBody] AggiornaStatoMezzoCommand command) { command.CodiciSede = Request.Headers["CodiceSede"].ToString().Split(','); command.IdUtente = Request.Headers["IdUtente"].ToString(); try { _addhandler.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 <IActionResult> AggiornaPartenza([FromBody] AggiornaStatoMezzoCommand intervento) { var headerValues = Request.Headers["IdUtente"]; var codiceSede = Request.Headers["CodiceSede"]; string idUtente = headerValues.FirstOrDefault(); var command = new AggiornaStatoMezzoCommand() { //IdRichiesta = intervento.IdRichiesta, IdUtente = idUtente, Chiamata = intervento.Chiamata, IdMezzo = intervento.IdMezzo, StatoMezzo = intervento.StatoMezzo, CodiceSede = codiceSede, }; try { _addhandler.Handle(command); return(Ok()); } catch (Exception ex) { if (ex.Message.Contains(Costanti.UtenteNonAutorizzato)) { return(StatusCode(403, Costanti.UtenteNonAutorizzato)); } return(BadRequest()); } }
/// <summary> /// Il metodo accetta in firma il command, e in seguito al cambio di stato di uno o più /// mezzi aggiorna le informazioni relative alla richiesta a cui quel mezzo è associato /// </summary> /// <param name="command">il command in ingresso</param> public void Update(AggiornaStatoMezzoCommand command) { _setStatoOperativoMezzo.Set(command.CodiceSede, command.IdMezzo, command.StatoMezzo, command.Richiesta.Codice); foreach (var partenza in command.Richiesta.Partenze) { foreach (var squadra in partenza.Partenza.Squadre) { _setStatoSquadra.SetStato(squadra.Codice, command.Richiesta.Id, command.StatoMezzo, command.CodiceSede); } } }
public async Task SendNotification(AggiornaStatoMezzoCommand intervento) { const bool notificaChangeState = true; var sintesiRichiesteAssistenzaQuery = new SintesiRichiesteAssistenzaQuery(); var listaSintesi = _sintesiRichiesteAssistenzahandler.Handle(sintesiRichiesteAssistenzaQuery).SintesiRichiesta; var boxRichiesteQuery = new BoxRichiesteQuery(); var boxInterventi = _boxRichiesteHandler.Handle(boxRichiesteQuery).BoxRichieste; var boxMezziQuery = new BoxMezziQuery(); var boxMezzi = _boxMezziHandler.Handle(boxMezziQuery).BoxMezzi; var boxPersonaleQuery = new BoxPersonaleQuery(); var boxPersonale = _boxPersonaleHandler.Handle(boxPersonaleQuery).BoxPersonale; var listaMezziInServizioQuery = new ListaMezziInServizioQuery { IdSede = intervento.CodiceSede }; var listaMezziInServizio = _listaMezziInServizioHandler.Handle(listaMezziInServizioQuery).ListaMezzi; var sintesiRichiesteAssistenzaMarkerQuery = new SintesiRichiesteAssistenzaMarkerQuery(); var listaSintesiMarker = _sintesiRichiesteAssistenzaMarkerhandler.Handle(sintesiRichiesteAssistenzaMarkerQuery).SintesiRichiestaMarker; intervento.Chiamata = listaSintesi.LastOrDefault(richiesta => richiesta.Id == intervento.Chiamata.Id); await _notificationHubContext.Clients.Group(intervento.Chiamata.Operatore.Sede.Codice).SendAsync("ModifyAndNotifySuccess", intervento); await _notificationHubContext.Clients.Group(intervento.Chiamata.Operatore.Sede.Codice).SendAsync("ChangeStateSuccess", notificaChangeState); await _notificationHubContext.Clients.Group(intervento.Chiamata.Operatore.Sede.Codice).SendAsync("NotifyGetBoxInterventi", boxInterventi); await _notificationHubContext.Clients.Group(intervento.Chiamata.Operatore.Sede.Codice).SendAsync("NotifyGetBoxMezzi", boxMezzi); await _notificationHubContext.Clients.Group(intervento.Chiamata.Operatore.Sede.Codice).SendAsync("NotifyGetBoxPersonale", boxPersonale); await _notificationHubContext.Clients.Group(intervento.Chiamata.Operatore.Sede.Codice).SendAsync("NotifyGetListaMezziInServizio", listaMezziInServizio); await _notificationHubContext.Clients.Group(intervento.Chiamata.Operatore.Sede.Codice).SendAsync("NotifyGetRichiestaUpDateMarker", listaSintesiMarker.LastOrDefault(marker => marker.Codice == intervento.Chiamata.Codice)); var queryListaMezzi = new MezziMarkerQuery(); var listaMezziMarker = _listaMezziMarkerHandler.Handle(queryListaMezzi).ListaMezziMarker; await _notificationHubContext.Clients.Group(intervento.Chiamata.Operatore.Sede.Codice).SendAsync("NotifyGetMezzoUpDateMarker", listaMezziMarker.LastOrDefault(marker => marker.Mezzo.IdRichiesta == intervento.Chiamata.Codice)); }
public void Handle(AnnullaPartenzaCommand command) { var PartenzaToDelete = command.Richiesta.Partenze.Where(x => x.Partenza.Mezzo.Codice.Equals(command.TargaMezzo)).FirstOrDefault(); switch (command.CodMotivazione) { case 1: new RevocaPerInterventoNonPiuNecessario(command.Richiesta, command.TargaMezzo, DateTime.Now, command.IdOperatore, PartenzaToDelete.Partenza.Codice); break; case 2: var richiestaSubentrata = _getRichiestaById.GetByCodice(command.CodRichiestaSubentrata); if (richiestaSubentrata == null) { richiestaSubentrata = _getRichiestaById.GetByCodiceRichiesta(command.CodRichiestaSubentrata); } new RevocaPerRiassegnazione(command.Richiesta, richiestaSubentrata, command.TargaMezzo, DateTime.Now, command.IdOperatore, PartenzaToDelete.Partenza.Codice); break; case 3: new RevocaPerFuoriServizio(command.Richiesta, command.TargaMezzo, DateTime.Now, command.IdOperatore, PartenzaToDelete.Partenza.Codice); break; case 4: new RevocaPerAltraMotivazione(command.Richiesta, command.TargaMezzo, DateTime.Now, command.IdOperatore, command.TestoMotivazione, PartenzaToDelete.Partenza.Codice); break; } _upDateRichiestaAssistenza.UpDate(command.Richiesta); AggiornaStatoMezzoCommand commandStatoMezzo = new AggiornaStatoMezzoCommand(); commandStatoMezzo.CodiciSede = new string[] { PartenzaToDelete.Partenza.Mezzo.Distaccamento.Codice }; commandStatoMezzo.IdMezzo = command.TargaMezzo; commandStatoMezzo.StatoMezzo = Costanti.MezzoInSede; commandStatoMezzo.Richiesta = command.Richiesta; _updateStatoPartenze.Update(commandStatoMezzo); }
public void Update(AggiornaStatoMezzoCommand command) { string filepath = "Fake/ListaRichiesteAssistenza.json"; string filePathMezzi = "Fake/MezziComposizione.json"; string filePathSquadre = "Fake/SquadreComposizione.json"; string json; string jsonMezzi; string jsonSquadre; using (StreamReader r = new StreamReader(filepath)) { json = r.ReadToEnd(); } using (StreamReader r = new StreamReader(filePathMezzi)) { jsonMezzi = r.ReadToEnd(); } using (StreamReader r = new StreamReader(filePathSquadre)) { jsonSquadre = r.ReadToEnd(); } RichiestaAssistenzaDTO richiestaDTO = new RichiestaAssistenzaDTO(); ConfermaPartenze conferma = new ConfermaPartenze(); RichiestaAssistenzaDTO richiestaNew = new RichiestaAssistenzaDTO(); List <RichiestaAssistenzaDTO> ListaRichieste = JsonConvert.DeserializeObject <List <RichiestaAssistenzaDTO> >(json); List <ComposizioneMezzi> ListaMezzi = JsonConvert.DeserializeObject <List <ComposizioneMezzi> >(jsonMezzi); List <ComposizioneSquadre> ListaSquadre = JsonConvert.DeserializeObject <List <ComposizioneSquadre> >(jsonSquadre); if (ListaRichieste != null) { List <RichiestaAssistenza> ListaRichiesteNew = new List <RichiestaAssistenza>(); richiestaDTO = ListaRichieste.Where(x => x.Codice == command.Richiesta.Codice).FirstOrDefault(); ListaRichieste.Remove(richiestaDTO); foreach (RichiestaAssistenzaDTO richiesta in ListaRichieste) { ListaRichiesteNew.Add(MapperDTO.MapRichiestaDTOtoRichiesta(richiesta)); } ListaRichiesteNew.Add(command.Richiesta); string jsonListaPresente = JsonConvert.SerializeObject(ListaRichiesteNew); System.IO.File.WriteAllText(@"Fake/ListaRichiesteAssistenza.json", jsonListaPresente); } else { List <RichiestaAssistenza> ListaRichiesteNew = new List <RichiestaAssistenza>(); ListaRichiesteNew.Add(command.Richiesta); string jsonNew = JsonConvert.SerializeObject(ListaRichiesteNew); System.IO.File.WriteAllText(@"Fake/ListaRichiesteAssistenza.json", jsonNew); } foreach (ComposizionePartenze composizione in command.Richiesta.Partenze) { foreach (ComposizioneMezzi composizioneMezzo in ListaMezzi) { if (composizioneMezzo.Mezzo.Codice == composizione.Partenza.Mezzo.Codice) { composizioneMezzo.Mezzo.Stato = composizione.Partenza.Mezzo.Stato; } } foreach (ComposizioneSquadre composizioneSquadra in ListaSquadre) { foreach (Squadra squadra in composizione.Partenza.Squadre) { if (composizioneSquadra.Squadra.Id == squadra.Id) { composizioneSquadra.Squadra.Stato = squadra.Stato; } } } } string jsonListaMezzi = JsonConvert.SerializeObject(ListaMezzi); System.IO.File.WriteAllText(@"Fake/MezziComposizione.json", jsonListaMezzi); string jsonListaSquadre = JsonConvert.SerializeObject(ListaSquadre); System.IO.File.WriteAllText(@"Fake/SquadreComposizione.json", jsonListaSquadre); }
public async Task SendNotification(AggiornaStatoMezzoCommand intervento) { var SediDaNotificare = intervento.CodiciSede.ToList(); if (intervento.Richiesta.CodSOAllertate != null) { SediDaNotificare.AddRange(_getGerarchiaToSend.Get(intervento.Richiesta.CodSOCompetente, intervento.Richiesta.CodSOAllertate.ToArray())); } else { SediDaNotificare.AddRange(_getGerarchiaToSend.Get(intervento.Richiesta.CodSOCompetente)); } var sintesiRichiesteAssistenzaQuery = new SintesiRichiesteAssistenzaQuery { Filtro = new FiltroRicercaRichiesteAssistenza { idOperatore = intervento.IdUtente, PageSize = 99, IncludiRichiesteChiuse = true }, CodiciSede = SediDaNotificare.ToArray() }; var listaSintesi = _sintesiRichiesteAssistenzahandler.Handle(sintesiRichiesteAssistenzaQuery).SintesiRichiesta; intervento.Chiamata = listaSintesi.LastOrDefault(richiesta => richiesta.Codice == intervento.CodRichiesta); Task.Factory.StartNew(() => { var listaMezziInServizioQuery = new ListaMezziInServizioQuery { CodiciSede = intervento.CodiciSede, IdOperatore = intervento.IdUtente }; var listaMezziInServizio = _listaMezziInServizioHandler.Handle(listaMezziInServizioQuery).DataArray; var mezzo = listaMezziInServizio.Find(x => x.Mezzo.Mezzo.Codice.Equals(intervento.IdMezzo)); foreach (var sede in listaMezziInServizioQuery.CodiciSede) { _notificationHubContext.Clients.Group(sede).SendAsync("NotifyUpdateMezzoInServizio", mezzo); } }); Parallel.ForEach(SediDaNotificare.Distinct(), sede => { _notificationHubContext.Clients.Group(sede).SendAsync("ModifyAndNotifySuccess", intervento); _notificationHubContext.Clients.Group(sede).SendAsync("ChangeStateSuccess", true); 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 boxRichiesteQuery = new BoxRichiesteQuery() { CodiciSede = new string[] { sede } }; var boxInterventi = _boxRichiesteHandler.Handle(boxRichiesteQuery).BoxRichieste; _notificationHubContext.Clients.Group(sede).SendAsync("NotifyGetBoxInterventi", boxInterventi); }); Task.Factory.StartNew(() => { var boxPersonaleQuery = new BoxPersonaleQuery() { CodiciSede = new string[] { sede } }; var boxPersonale = _boxPersonaleHandler.Handle(boxPersonaleQuery).BoxPersonale; _notificationHubContext.Clients.Group(sede).SendAsync("NotifyGetBoxPersonale", boxPersonale); }); if (intervento.Chiamata != null) { Task.Factory.StartNew(() => { 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 == intervento.Chiamata.Codice)); }); Task.Factory.StartNew(() => { var queryListaMezzi = new MezziMarkerQuery() { Filtro = new AreaMappa() { CodiceSede = new List <string>() { sede }, FiltroMezzi = new Models.Classi.Filtri.FiltroMezzi() { FiltraPerAreaMappa = false } } }; var listaMezziMarker = _listaMezziMarkerHandler.Handle(queryListaMezzi).ListaMezziMarker; _notificationHubContext.Clients.Group(sede).SendAsync("NotifyGetMezzoUpDateMarker", listaMezziMarker.LastOrDefault(marker => marker.Mezzo.IdRichiesta == intervento.Chiamata.Codice)); }); } }); }
/// <summary> /// Il metodo accetta in firma il command, e in seguito al cambio di stato di uno o più /// mezzi aggiorna le informazioni relative alla richiesta a cui quel mezzo è associato /// </summary> /// <param name="command">il command in ingresso</param> public void Update(AggiornaStatoMezzoCommand command) { _upDateRichiesta.UpDate(command.Richiesta); var codiceSedeMezzo = command.CodiciSede.First(); _setStatoOperativoMezzo.Set(codiceSedeMezzo, command.IdMezzo, command.StatoMezzo, command.Richiesta.Codice); var dataMovintazione = DateTime.Now; var dataIntervento = command.Richiesta.ListaEventi.OfType <Telefonata>().FirstOrDefault(p => p.CodiceRichiesta.Equals(command.Richiesta.Codice)).Istante; foreach (var partenza in command.Richiesta.Partenze.Where(c => c.Partenza.Mezzo.Codice == command.IdMezzo)) { foreach (var squadra in partenza.Partenza.Squadre) { _setStatoSquadra.SetStato(squadra.Codice, command.Richiesta.Id, command.StatoMezzo, codiceSedeMezzo, command.IdMezzo); } if (!partenza.Partenza.Mezzo.Stato.Equals(Costanti.MezzoInUscita)) { if (partenza.Partenza.Mezzo.Stato.Equals(Costanti.MezzoInSede) || partenza.Partenza.Mezzo.Stato.Equals(Costanti.MezzoRientrato)) { var dataRientro = command.Richiesta.ListaEventi.OfType <PartenzaRientrata>().FirstOrDefault(p => p.CodicePartenza.Equals(partenza.Partenza.Codice)).Istante; _setRientroMezzo.Set(new RientroGAC() { targa = partenza.Partenza.Mezzo.Codice.Split('.')[1], tipoMezzo = partenza.Partenza.Mezzo.Codice.Split('.')[0], idPartenza = partenza.Partenza.Codice.ToString(), numeroIntervento = command.Richiesta.CodRichiesta, dataIntervento = dataIntervento, dataRientro = dataRientro, autista = "" }); } else if (partenza.Partenza.Mezzo.Stato.Equals(Costanti.MezzoInViaggio)) { var dataUscita = command.Richiesta.ListaEventi.OfType <ComposizionePartenze>().FirstOrDefault(p => p.Partenza.Codice.Equals(partenza.Partenza.Codice)).Istante; _setUscitaMezzo.Set(new UscitaGAC() { targa = partenza.Partenza.Mezzo.Codice.Split('.')[1], tipoMezzo = partenza.Partenza.Mezzo.Codice.Split('.')[0], idPartenza = partenza.Partenza.Codice.ToString(), numeroIntervento = command.Richiesta.CodRichiesta, dataIntervento = dataIntervento, dataUscita = dataUscita, autista = "", tipoUscita = new TipoUscita() { codice = "", descrizione = "Servizio" }, comune = new ComuneGAC() { codice = "", descrizione = command.Richiesta.Localita.Citta, }, provincia = new Models.Classi.Gac.ProvinciaGAC() { codice = "", descrizione = command.Richiesta.Localita.Provincia }, localita = command.Richiesta.Localita.Citta, latitudine = command.Richiesta.Localita.Coordinate.Latitudine.ToString(), longitudine = command.Richiesta.Localita.Coordinate.Longitudine.ToString() }); } } } }
/// <summary> /// Il metodo accetta in firma il command, e in seguito al cambio di stato di uno o più /// mezzi aggiorna le informazioni relative alla richiesta a cui quel mezzo è associato /// </summary> /// <param name="command">il command in ingresso</param> public void Update(AggiornaStatoMezzoCommand command) { var filepath = CostantiJson.ListaRichiesteAssistenza; var filePathMezzi = CostantiJson.Mezzo; var filePathSquadre = CostantiJson.SquadreComposizione; string json; string jsonMezzi; string jsonSquadre; using (var r = new StreamReader(filepath)) { json = r.ReadToEnd(); } using (var r = new StreamReader(filePathMezzi)) { jsonMezzi = r.ReadToEnd(); } using (var r = new StreamReader(filePathSquadre)) { jsonSquadre = r.ReadToEnd(); } var conferma = new ConfermaPartenze(); var richiestaNew = new RichiestaAssistenzaDTO(); var listaRichieste = JsonConvert.DeserializeObject <List <RichiestaAssistenzaDTO> >(json); var listaMezzi = JsonConvert.DeserializeObject <List <Mezzo> >(jsonMezzi); var listaSquadre = JsonConvert.DeserializeObject <List <ComposizioneSquadre> >(jsonSquadre); if (listaRichieste != null) { var listaRichiesteNew = new List <RichiestaAssistenza>(); var richiestaDTO = listaRichieste.FirstOrDefault(x => x.Cod == command.Richiesta.Codice); listaRichieste.Remove(richiestaDTO); foreach (var richiesta in listaRichieste) { listaRichiesteNew.Add(MapperDTO.MapRichiestaDTOtoRichiesta(richiesta)); } listaRichiesteNew.Add(command.Richiesta); var jsonListaPresente = JsonConvert.SerializeObject(listaRichiesteNew); System.IO.File.WriteAllText(CostantiJson.ListaRichiesteAssistenza, jsonListaPresente); } else { var listaRichiesteNew = new List <RichiestaAssistenza> { command.Richiesta }; string jsonNew = JsonConvert.SerializeObject(listaRichiesteNew); System.IO.File.WriteAllText(CostantiJson.ListaRichiesteAssistenza, jsonNew); } foreach (var composizione in command.Richiesta.Partenze) { foreach (var mezzo in listaMezzi.Where(mezzo => mezzo.Codice == composizione.Partenza.Mezzo.Codice)) { mezzo.Stato = composizione.Partenza.Mezzo.Stato; } foreach (var composizioneSquadra in listaSquadre) { foreach (var squadra in composizione.Partenza.Squadre.Where(squadra => composizioneSquadra.Squadra.Id == squadra.Id)) { composizioneSquadra.Squadra.Stato = squadra.Stato; } } } var jsonListaMezzi = JsonConvert.SerializeObject(listaMezzi); System.IO.File.WriteAllText(CostantiJson.Mezzo, jsonListaMezzi); var jsonListaSquadre = JsonConvert.SerializeObject(listaSquadre); System.IO.File.WriteAllText(CostantiJson.SquadreComposizione, jsonListaSquadre); }