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()); } }
/// <summary> /// metodo della classe che si occupa di aggiornare lo stato operativo del mezzo /// </summary> /// <param name="codiceSede">il codice sede</param> /// <param name="codiceMezzo">il codice del mezzo (sigla.targa)</param> /// <param name="statoOperativo">lo stato operativo del mezzo</param> /// <param name="idRichiesta">l'id della richiesta a cui è associato il mezzo</param> public void Set(string codiceSede, string codiceMezzo, string statoOperativo, string idRichiesta) { var Richiesta = _dbContext.RichiestaAssistenzaCollection.Find(x => x.Codice.Equals(idRichiesta)).Single(); foreach (var partenza in Richiesta.Partenze) { if (partenza.Partenza.Mezzo.Codice.Equals(codiceMezzo)) { partenza.Partenza.Mezzo.Stato = statoOperativo; } } _upDateRichiesta.UpDate(Richiesta); var statoMezzo = new StatoOperativoMezzo { CodiceMezzo = codiceMezzo, CodiceSede = codiceSede, CodiceRichiesta = idRichiesta, StatoOperativo = statoOperativo }; _dbContext.StatoMezzoCollection.FindOneAndReplace(Builders <StatoOperativoMezzo> .Filter.Eq(x => x.CodiceMezzo, codiceMezzo), statoMezzo, new FindOneAndReplaceOptions <StatoOperativoMezzo> { IsUpsert = true }); }
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()); } }
/// <summary> /// metodo della classe che si occupa di aggiornare lo stato operativo del mezzo /// </summary> /// <param name="codiceSede">il codice sede</param> /// <param name="codiceMezzo">il codice del mezzo (sigla.targa)</param> /// <param name="statoOperativo">lo stato operativo del mezzo</param> /// <param name="idRichiesta">l'id della richiesta a cui è associato il mezzo</param> public void Set(string codiceSede, string codiceMezzo, string statoOperativo, string codRichiesta) { if (statoOperativo.Equals(Costanti.MezzoRientrato) || statoOperativo.Equals(Costanti.MezzoInSede)) { _dbContext.StatoMezzoCollection.DeleteOne(Builders <StatoOperativoMezzo> .Filter.Eq(x => x.CodiceMezzo, codiceMezzo)); } else { var statoMezzo = new StatoOperativoMezzo { CodiceMezzo = codiceMezzo, CodiceSede = codiceSede, CodiceRichiesta = codRichiesta, StatoOperativo = statoOperativo }; _dbContext.StatoMezzoCollection.FindOneAndReplace(Builders <StatoOperativoMezzo> .Filter.Eq(x => x.CodiceMezzo, codiceMezzo), statoMezzo, new FindOneAndReplaceOptions <StatoOperativoMezzo> { IsUpsert = true }); } }
public async Task SendNotification(SetMezzoPrenotatoCommand command) { 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 }; await _notificationHubContext.Clients.Group(command.MezzoPrenotato.CodiceSede).SendAsync("NotifyAddPrenotazioneMezzo", mezzoLibero).ConfigureAwait(false); } else { await _notificationHubContext.Clients.Group(command.MezzoPrenotato.CodiceSede).SendAsync("NotifyAddPrenotazioneMezzo", mezzoPrenotato).ConfigureAwait(false); } }