public async Task DeleteBasketCache()
        {
            Guid?cookieBasketId = GetBasketCookieId();

            var cacheKey = $"FatComponentsCache-Basket-{cookieBasketId}";

            await _cacheService.DeleteFromCache <string>(cacheKey);
        }
Beispiel #2
0
        public async Task <CreateReservationResult> Handle(CreateReservationCommand command, CancellationToken cancellationToken)
        {
            var queryValidationResult = await _createReservationValidator.ValidateAsync(command);

            if (!queryValidationResult.IsValid())
            {
                throw new ValidationException(queryValidationResult.ConvertToDataAnnotationsValidationResult(), null, null);
            }

            CachedReservation cachedReservation;

            if (!command.UkPrn.HasValue)
            {
                cachedReservation = await _cachedReservationRepository.GetEmployerReservation(command.Id);
            }
            else
            {
                cachedReservation = await _cachedReservationRepository.GetProviderReservation(command.Id, command.UkPrn.Value);
            }

            if (cachedReservation == null)
            {
                throw new CachedReservationNotFoundException(command.Id);
            }

            var createValidationResult = await _cachedReservationValidator.ValidateAsync(cachedReservation);

            if (!createValidationResult.IsValid())
            {
                throw new ValidationException(createValidationResult.ConvertToDataAnnotationsValidationResult(), null, null);
            }

            var apiRequest = new ReservationApiRequest(
                _apiOptions.Value.Url,
                cachedReservation.AccountId,
                cachedReservation.IsEmptyCohortFromSelect ? null : cachedReservation.UkPrn,
                new DateTime(cachedReservation.TrainingDate.StartDate.Year, cachedReservation.TrainingDate.StartDate.Month, 1),
                cachedReservation.Id,
                cachedReservation.AccountLegalEntityId,
                cachedReservation.AccountLegalEntityName,
                cachedReservation.CourseId,
                command.UserId);

            var response = await _apiClient.Create <CreateReservationResponse>(apiRequest);

            await _cacheStorageService.DeleteFromCache(command.Id.ToString());

            return(new CreateReservationResult
            {
                Id = response.Id,
                AccountLegalEntityPublicHashedId = cachedReservation.AccountLegalEntityPublicHashedId,
                CohortRef = cachedReservation.CohortRef,
                IsEmptyCohortFromSelect = cachedReservation.IsEmptyCohortFromSelect,
                ProviderId = cachedReservation.UkPrn,
                JourneyData = cachedReservation.JourneyData
            });
        }