public async Task <IActionResult> Execute(LabVerifyArgs args) { if (!_LabVerifyArgsValidator.Validate(args)) { return(new BadRequestResult()); } var wf = await _DbContextProvider.KeyReleaseWorkflowStates .Include(x => x.Teks) .SingleOrDefaultAsync(x => x.PollToken == args.PollToken); if (wf == null) { _Logger.LogError("KeyReleaseWorkflowState not found - PollToken:{PollToken}.", args.PollToken); var error = new LabVerifyAuthorisationResponse { Error = "Workflow not found.", Valid = false }; return(new OkObjectResult(error)); } var result = new LabVerifyAuthorisationResponse { PollToken = _Writer.Execute(wf), //NB wf.Teks.Count > 0 is only needed on the day the db change is applied and can be removed after Valid = wf.TeksTouched || wf.Teks.Count > 0 }; return(new OkObjectResult(result)); }
public async Task <LabVerifyAuthorisationResponse> Execute(LabVerifyArgs args) { if (!_PollTokens.Validate(args.PollToken)) { throw new ArgumentException("Not valid.", nameof(args)); } var wf = await _DbContextProvider.KeyReleaseWorkflowStates .Include(x => x.Keys) .FirstOrDefaultAsync(state => state.PollToken == args.PollToken); if (wf == null) { var message = $"KeyReleaseWorkflowState not found - PollToken:{args.PollToken}."; _Logger.LogError(message); return(new LabVerifyAuthorisationResponse { Error = "Workflow not found.", Valid = false }); } var refreshedToken = _PollTokens.GenerateToken(); wf.PollToken = refreshedToken; _Logger.LogDebug($"Committing."); _DbContextProvider.SaveAndCommit(); _Logger.LogInformation($"Committed - new PollToken:{wf.PollToken}."); return(new LabVerifyAuthorisationResponse { PollToken = refreshedToken, Valid = wf.Keys?.Any() ?? false }); }
public async Task <IActionResult> Execute(LabVerifyArgs args) { if (_LabVerificationAuthorisationCommand.Validate(args)) { return(new BadRequestResult()); } var result = await _LabVerificationAuthorisationCommand.Execute(args); return(new OkObjectResult(result)); }
public bool Validate(LabVerifyArgs args) { if (args == null) { return(false); } if (string.IsNullOrWhiteSpace(args.PollToken)) { return(false); } return(_PollTokens.Validate(args.PollToken)); }