Beispiel #1
0
        /// <summary>
        /// Assume args validated
        /// </summary>
        /// <param name="args"></param>
        /// <returns></returns>
        public async Task <string> ExecuteAsync(AuthorisationArgs args)
        {
            if (args == null)
            {
                throw new ArgumentNullException(nameof(args));
            }

            var wf = await _workflowDb
                     .KeyReleaseWorkflowStates
                     .Include(x => x.Teks)
                     .FirstOrDefaultAsync(x => x.LabConfirmationId == args.LabConfirmationId);

            if (wf == null)
            {
                _logger.WriteKeyReleaseWorkflowStateNotFound(args.LabConfirmationId);
                return(null);
            }

            _logger.LogInformation("LabConfirmationId {LabConfirmationId} authorized.", wf.LabConfirmationId);

            wf.AuthorisedByCaregiver   = _dateTimeProvider.Snapshot;
            wf.LabConfirmationId       = null; //Clear from usable key range
            wf.StartDateOfTekInclusion = args.DateOfSymptomsOnset;

            return(_newPollTokenWriter.Execute(wf));
        }
        public async Task <AuthorisationResponse> ExecuteAsync(AuthorisationArgs args)
        {
            if (_Logger.LogValidationMessages(_AuthorisationArgsValidator.Validate(args)))
            {
                return(null);
            }

            var success = await _AuthorisationWriter.ExecuteAsync(args);

            var response = new AuthorisationResponse
            {
                Valid = success,
            };

            return(response);
        }
        public async Task <IActionResult> ExecuteAsync(AuthorisationArgs args)
        {
            if (_Logger.LogValidationMessages(_AuthorisationArgsValidator.Validate(args)))
            {
                return(new BadRequestResult());
            }

            var newPollToken = await _AuthorisationWriter.ExecuteAsync(args);

            var response = new AuthorisationResponse
            {
                Valid     = newPollToken != null,
                PollToken = newPollToken
            };

            return(new OkObjectResult(response));
        }
        public string[] Validate(AuthorisationArgs args)
        {
            if (args == null)
            {
                return(new[] { "Args is null." });
            }

            //Should be a date.
            args.DateOfSymptomsOnset = args.DateOfSymptomsOnset.Date;

            var errors = new List <string>();

            errors.AddRange(_labConfirmationIdService.Validate(args.LabConfirmationId));

            if (_dateTimeProvider.Snapshot.Date.AddDays(-30) > args.DateOfSymptomsOnset.Date || args.DateOfSymptomsOnset.Date > _dateTimeProvider.Snapshot.Date)
            {
                errors.Add($"Date of symptoms onset out of range - {args.DateOfSymptomsOnset}.");
            }

            return(errors.ToArray());
        }
        /// <summary>
        /// Assume args validated
        /// </summary>
        /// <param name="args"></param>
        /// <returns></returns>
        public async Task <bool> ExecuteAsync(AuthorisationArgs args)
        {
            if (args == null)
            {
                throw new ArgumentNullException(nameof(args));
            }

            var wf = await _WorkflowDb
                     .KeyReleaseWorkflowStates
                     .Include(x => x.Teks)
                     .FirstOrDefaultAsync(x => x.LabConfirmationId == args.LabConfirmationId);

            if (wf == null)
            {
                _Logger.WriteKeyReleaseWorkflowStateNotFound(args.LabConfirmationId);
                return(false);
            }

            _Logger.LogInformation("LabConfirmationId {LabConfirmationId} authorized.", wf.LabConfirmationId);

            return(true);
        }