public async Task <PagedResult <EducationOrganisation> > FindOrganisations(string searchTerm, int pageSize, int pageNumber) { return(await Task.Run(async() => { var lookUp = await _cacheProvider.GetAsync <EducationalOrganisationLookUp>(nameof(EducationalOrganisationLookUp)); if (lookUp == null) { _logger.Info("Getting educational orgainsations from Azure storage as cache is empty."); lookUp = await _azureService.GetModelFromBlobStorage <EducationalOrganisationLookUp>(ContainerName, BlobName); if (lookUp == null) { _logger.Info("No educational organisations were retrieved from Azure."); return new PagedResult <EducationOrganisation> { Data = new List <EducationOrganisation>() }; } _logger.Info( $"{lookUp.Organisations.Count()} educational organisations were retrieved from Azure"); await _cacheProvider.SetAsync(nameof(EducationalOrganisationLookUp), lookUp, TimeSpan.FromDays(14)); _logger.Info($"Cached educational organisations till {DateTime.Now.AddDays(1):R}"); } pageSize = pageSize < 1 ? 1 : pageSize; var organisations = lookUp.Organisations.ToList(); if (!string.IsNullOrEmpty(searchTerm)) { organisations = organisations .Where(o => o.Name.IndexOf(searchTerm, StringComparison.CurrentCultureIgnoreCase) >= 0) .ToList(); } var totalPages = organisations.Count % pageSize; var offset = GetPageOffset(pageSize, pageNumber, organisations.Count); organisations = organisations.Skip(offset) .Take(pageSize) .ToList(); return new PagedResult <EducationOrganisation> { Data = organisations, Page = pageNumber, TotalPages = totalPages }; })); }
public async Task RefreshCache() { _logger.Info("Refreshing public sector orgainsations Azure storage cache."); var lookUp = await _azureService.GetModelFromBlobStorage <PublicSectorOrganisationLookUp>(ContainerName, BlobName); await _cacheProvider.SetAsync(nameof(PublicSectorOrganisationLookUp), lookUp, TimeSpan.FromDays(14)); _logger.Info($"Cached public sector organisations till {DateTime.Now.AddDays(14):R}"); }