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()); }
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); }
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}"); }
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); }
private async Task <HttpStatusCode> WhenTheProviderVersionByDateIsUpserted(ProviderVersionByDate providerVersion) => await _repository.UpsertProviderVersionByDate(providerVersion);