public async Task <IActionResult> SbloccaMezzo([FromBody] StatoOperativoMezzo mezzoPrenotato) { mezzoPrenotato.CodiceSede = Request.Headers["codicesede"]; mezzoPrenotato.SbloccaMezzo = true; var command = new SetMezzoPrenotatoCommand() { MezzoPrenotato = mezzoPrenotato, }; try { _mezzoPrenotatoHandler.Handle(command); return(Ok()); } catch (Exception ex) { if (ex.Message.Contains(Costanti.UtenteNonAutorizzato)) { return(StatusCode(403, Costanti.UtenteNonAutorizzato)); } return(BadRequest()); } }
public async Task SendNotification(SetMezzoPrenotatoCommand command) { var SediDaNotificare = _getGerarchiaToSend.Get(command.MezzoPrenotato.CodiceSede); var mezziPrenotatiQuery = new GetMezziPrenotatiQuery { CodiceSede = command.MezzoPrenotato.CodiceSede }; var mezzoPrenotato = _mezzoPrenotatoHandler.Handle(mezziPrenotatiQuery).MezziPrenotati.Find(x => x.CodiceMezzo.Equals(command.MezzoPrenotato.CodiceMezzo)); if (mezzoPrenotato == null) { var mezzoLibero = new StatoOperativoMezzo { CodiceMezzo = command.MezzoPrenotato.CodiceMezzo, SbloccaMezzo = true }; foreach (var sede in SediDaNotificare) { await _notificationHubContext.Clients.Group(sede).SendAsync("NotifyAddPrenotazioneMezzo", mezzoLibero).ConfigureAwait(false); } } else { foreach (var sede in SediDaNotificare) { await _notificationHubContext.Clients.Group(sede).SendAsync("NotifyAddPrenotazioneMezzo", mezzoPrenotato).ConfigureAwait(false); } } }
public async Task <IActionResult> PrenotaMezzo([FromBody] StatoOperativoMezzo mezzoPrenotato) { mezzoPrenotato.CodiceSede = Request.Headers["codicesede"]; mezzoPrenotato.SbloccaMezzo = false; mezzoPrenotato.IstantePrenotazione = DateTime.UtcNow; mezzoPrenotato.IstanteScadenzaSelezione = DateTime.UtcNow.AddSeconds(15); var command = new SetMezzoPrenotatoCommand() { MezzoPrenotato = mezzoPrenotato, }; try { _mezzoPrenotatoHandler.Handle(command); return(Ok()); } catch (Exception ex) { if (ex.Message.Contains(Costanti.UtenteNonAutorizzato)) { return(StatusCode(403, Costanti.UtenteNonAutorizzato)); } return(BadRequest()); } }
public void Set(SetMezzoPrenotatoCommand command) { var mezzi = _getStatoMezzi.Get(new string[] { command.MezzoPrenotato.CodiceSede }, command.MezzoPrenotato.CodiceMezzo); if (mezzi != null && command.MezzoPrenotato.SbloccaMezzo) { _dbContext.StatoMezzoCollection.FindOneAndDelete(Builders <StatoOperativoMezzo> .Filter.Eq(s => s.CodiceMezzo, command.MezzoPrenotato.CodiceMezzo)); } else if (!command.MezzoPrenotato.SbloccaMezzo) { command.MezzoPrenotato.StatoOperativo = "In Sede"; _dbContext.StatoMezzoCollection.InsertOne(command.MezzoPrenotato); } }
/// <summary> /// Il metodo accetta in firma il command scrive sul DB il codice mezzo e l'istante della /// prenotazione del mezzo su un intervento /// </summary> /// <param name="command">il command in ingresso</param> /// <returns>MezzoPrenotato</returns> public void Set(SetMezzoPrenotatoCommand command) { var mezzi = _getMezziPrenotati.Get(command.MezzoPrenotato.CodiceSede); if (mezzi.Find(x => x.CodiceMezzo.Equals(command.MezzoPrenotato.CodiceMezzo)) != null && command.MezzoPrenotato.SbloccaMezzo) { mezzi.Remove(mezzi.Find(x => x.CodiceMezzo.Equals(command.MezzoPrenotato.CodiceMezzo))); } else if (!command.MezzoPrenotato.SbloccaMezzo) { mezzi.Add(command.MezzoPrenotato); } var jsonNew = JsonConvert.SerializeObject(mezzi); System.IO.File.WriteAllText(filepath, jsonNew); }
public void Set(SetMezzoPrenotatoCommand command) { var mezzi = _getStatoMezzi.Get(command.MezzoPrenotato.CodiceSede, command.MezzoPrenotato.CodiceMezzo); var mezzoFromOra = _getMezziByCodice.Get(new List <string> { command.MezzoPrenotato.CodiceMezzo }, command.MezzoPrenotato.CodiceSede).Result.Find(x => x.Codice.Equals(command.MezzoPrenotato.CodiceMezzo)); command.MezzoPrenotato.CodiceSede = mezzoFromOra.Distaccamento.Codice; if (mezzi != null && command.MezzoPrenotato.SbloccaMezzo) { _dbContext.StatoMezzoCollection.FindOneAndDelete(Builders <StatoOperativoMezzo> .Filter.Eq(s => s.CodiceMezzo, command.MezzoPrenotato.CodiceMezzo)); } else if (!command.MezzoPrenotato.SbloccaMezzo) { _dbContext.StatoMezzoCollection.InsertOne(command.MezzoPrenotato); } }
private List <ComposizioneMezzi> GetComposizioneMezziPrenotati(List <ComposizioneMezzi> composizioneMezzi, string codiceSede) { SetMezzoPrenotatoCommand command = new SetMezzoPrenotatoCommand(); var mezziPrenotati = _getMezziPrenotati.Get(codiceSede); bool AggiornaListaMezziPrenotati = false; foreach (var mezzo in mezziPrenotati) { if (mezzo.IstantePrenotazione != null) { var differenza = DateTime.Now - mezzo.IstantePrenotazione; if (differenza.Value.TotalSeconds > 15) { command.MezzoPrenotato = mezzo; command.MezzoPrenotato.SbloccaMezzo = true; _setMezzoPrenotato.Set(command); AggiornaListaMezziPrenotati = true; } } } if (AggiornaListaMezziPrenotati) { mezziPrenotati = _getMezziPrenotati.Get(codiceSede); } foreach (var composizione in composizioneMezzi) { if (mezziPrenotati.Find(x => x.CodiceMezzo.Equals(composizione.Mezzo.Codice)) != null) { composizione.IstanteScadenzaSelezione = mezziPrenotati.Find(x => x.CodiceMezzo.Equals(composizione.Mezzo.Codice)).IstanteScadenzaSelezione; if (composizione.Mezzo.Stato.Equals("In Sede")) { composizione.Mezzo.Stato = mezziPrenotati.Find(x => x.CodiceMezzo.Equals(composizione.Mezzo.Codice)).StatoOperativo; } composizione.Mezzo.IdRichiesta = mezziPrenotati.Find(x => x.CodiceMezzo.Equals(composizione.Mezzo.Codice)).CodiceRichiesta; } } return(composizioneMezzi); }