public async Task <IViewComponentResult> InvokeAsync(ComponentViewModel <ImageWidgetProperties> widgetProperties) { cacheDependenciesScope.Begin(); var Properties = widgetProperties.Properties; string ImageUrl; if (Properties.UseAttachment) { if (!string.IsNullOrWhiteSpace(Properties.ImageGuid)) { cacheDependenciesStore.Store(new string[] { $"attachment|{Guid.Parse(Properties.ImageGuid)}" }); ImageUrl = await MediaRepository.GetAttachmentImageAsync(widgetProperties.Page, Guid.Parse(Properties.ImageGuid)); } else { ImageUrl = ""; } } else { if (Properties.ImageUrl != null && Properties.ImageUrl.Any(x => true)) { cacheDependenciesStore.Store(new string[] { $"mediafile|{Properties.ImageUrl.FirstOrDefault().FileGuid}" }); ImageUrl = await MediaRepository.GetMediaFileUrlAsync(Properties.ImageUrl.FirstOrDefault().FileGuid); } else { ImageUrl = ""; } } // Save dependencies widgetProperties.CacheDependencies.CacheKeys = cacheDependenciesScope.End(); ImageWidgetViewModel model = new ImageWidgetViewModel() { ImageUrl = ImageUrl, Alt = Properties.Alt, CssClass = Properties.CssClass, ImageType = Properties.UseAttachment ? ImageTypeEnum.Attachment : ImageTypeEnum.MediaFile }; return(View(model)); }
/// <summary> /// Gets the Cached result of the function based on the Invocation Name (Cache Key) /// </summary> /// <param name="invocation"></param> /// <param name="dependencyCacheKey"></param> /// <returns></returns> private object GetCachedResult(IInvocation invocation, string dependencyCacheKey, int MinutesOverride = -1) { var cacheKey = GetCacheItemKey(invocation); var cacheSettings = CreateCacheSettings(cacheKey, dependencyCacheKey); if (MinutesOverride > 0) { cacheSettings.CacheMinutes = MinutesOverride; } Func <Object> provideData = () => { invocation.Proceed(); return(invocation.ReturnValue); }; // Add Cache Dependencies to ICacheDependencyStore cacheDependenciesStore.Store(dependencyCacheKey.Split(TextHelper.NewLine)); return(CacheHelper.Cache(provideData, cacheSettings)); }