public async Task <IActionResult> SetProviderVersionByDate(int year, int month, int day, string providerVersionId)
        {
            Guard.ArgumentNotNull(year, nameof(year));
            Guard.ArgumentNotNull(month, nameof(month));
            Guard.ArgumentNotNull(day, nameof(day));
            Guard.IsNullOrWhiteSpace(providerVersionId, nameof(providerVersionId));

            bool exists = await Exists(providerVersionId);

            if (exists)
            {
                ProviderVersionByDate newProviderVersionByDate = new ProviderVersionByDate {
                    ProviderVersionId = providerVersionId, Day = day, Month = month, Year = year
                };

                string localCacheKey = $"{CacheKeys.ProviderVersionByDate}{year}{month:00}{day:00}";

                ProviderVersionByDate providerVersionByDate = await _cacheProvider.GetAsync <ProviderVersionByDate>(localCacheKey);

                if (providerVersionByDate != null)
                {
                    await _cachePolicy.ExecuteAsync(() => _cacheProvider.RemoveAsync <ProviderVersionByDate>(localCacheKey));
                }

                await _providerVersionMetadataRepositoryPolicy.ExecuteAsync(() => _providerVersionMetadataRepository.UpsertProviderVersionByDate(newProviderVersionByDate));
            }
            else
            {
                _logger.Error($"Failed to retrieve provider version with id: {providerVersionId}");
            }

            return(new NoContentResult());
        }
コード例 #2
0
        public async Task <HttpStatusCode> UpsertProviderVersionByDate(ProviderVersionByDate providerVersionByDate)
        {
            Guard.ArgumentNotNull(providerVersionByDate, nameof(providerVersionByDate));

            providerVersionByDate.Id = $"{providerVersionByDate.Year}{providerVersionByDate.Month:00}{providerVersionByDate.Day:00}";

            return(await _cosmos.UpsertAsync(providerVersionByDate));
        }
        public async Task <IActionResult> GetAllProviders(int year, int month, int day)
        {
            Guard.ArgumentNotNull(day, nameof(day));
            Guard.ArgumentNotNull(month, nameof(month));
            Guard.ArgumentNotNull(year, nameof(year));

            ProviderVersionByDate providerVersionByDate = await GetProviderVersionByDate(year, month, day);

            if (providerVersionByDate != null)
            {
                return(await GetAllProviders(providerVersionByDate.ProviderVersionId));
            }

            return(new NotFoundResult());
        }
        public async Task <IActionResult> SearchProviders(int year, int month, int day, SearchModel searchModel)
        {
            Guard.ArgumentNotNull(day, nameof(day));
            Guard.ArgumentNotNull(month, nameof(month));
            Guard.ArgumentNotNull(year, nameof(year));
            Guard.ArgumentNotNull(searchModel, nameof(searchModel));

            ProviderVersionByDate providerVersionByDate = await _providerVersionService.GetProviderVersionByDate(year, month, day);

            if (providerVersionByDate != null)
            {
                return(await SearchProviders(providerVersionByDate.ProviderVersionId, searchModel));
            }

            return(new NotFoundResult());
        }
        public async Task <IActionResult> GetProviderById(int year, int month, int day, string providerId)
        {
            Guard.ArgumentNotNull(day, nameof(day));
            Guard.ArgumentNotNull(month, nameof(month));
            Guard.ArgumentNotNull(year, nameof(year));
            Guard.IsNullOrWhiteSpace(providerId, nameof(providerId));

            ProviderVersionByDate providerVersionByDate = await _providerVersionService.GetProviderVersionByDate(year, month, day);

            if (providerVersionByDate != null)
            {
                return(await GetProviderById(providerVersionByDate.ProviderVersionId, providerId));
            }

            return(new NotFoundResult());
        }
        public async Task <ProviderVersionByDate> GetProviderVersionByDate(int year, int month, int day)
        {
            string cacheKey = $"{CacheKeys.ProviderVersionByDate}{year}{month:00}{day:00}";

            ProviderVersionByDate providerVersionByDate = await _cachePolicy.ExecuteAsync(()
                                                                                          => _cacheProvider.GetAsync <ProviderVersionByDate>(cacheKey));

            if (providerVersionByDate == null)
            {
                providerVersionByDate = await _providerVersionMetadataRepositoryPolicy.ExecuteAsync(() => _providerVersionMetadataRepository.GetProviderVersionByDate(year, month, day));

                await _cacheProvider.SetAsync(cacheKey, providerVersionByDate, TimeSpan.FromDays(CACHE_DURATION), true);
            }

            return(providerVersionByDate);
        }
コード例 #7
0
        public async Task UpsertProviderVersionByDateSetsIdWithDateComponentsAndThenDelegatesToCosmos()
        {
            ProviderVersionByDate providerVersionByDate = NewProviderVersionByDate();
            HttpStatusCode        expectedStatusCode    = NewRandomStatusCode();

            GivenTheCosmosStatusCodeForTheUpsert(providerVersionByDate, expectedStatusCode);

            HttpStatusCode actualStatusCode = await WhenTheProviderVersionByDateIsUpserted(providerVersionByDate);

            actualStatusCode
            .Should()
            .Be(expectedStatusCode);

            providerVersionByDate.Id
            .Should()
            .Be($"{providerVersionByDate.Year}{providerVersionByDate.Month:00}{providerVersionByDate.Day:00}");
        }
コード例 #8
0
        public async Task GetProviderVersionByDateReturnsFirstProviderVersionWithMatchingDateComponents()
        {
            DateTime date = NewRandomDate();

            int year  = date.Year;
            int month = date.Month;
            int day   = date.Day;

            string id = $"{year}{month:00}{day:00}";

            ProviderVersionByDate providerVersionByDateOne   = NewProviderVersionByDate();
            ProviderVersionByDate providerVersionByDateTwo   = NewProviderVersionByDate(_ => _.WithId(id));
            ProviderVersionByDate providerVersionByDateThree = NewProviderVersionByDate(_ => _.WithId(id));

            GivenTheCosmosContents(providerVersionByDateOne,
                                   providerVersionByDateTwo,
                                   providerVersionByDateThree);

            ProviderVersionByDate actualProviderVersionByDate = await WhenTheProviderVersionByDateIsQueried(day, month, year);

            actualProviderVersionByDate
            .Should()
            .BeSameAs(providerVersionByDateTwo);
        }
コード例 #9
0
 private async Task <HttpStatusCode> WhenTheProviderVersionByDateIsUpserted(ProviderVersionByDate providerVersion)
 => await _repository.UpsertProviderVersionByDate(providerVersion);