/// <summary> /// Retrieves a list of distinct UE4 Versions from the CrashRepository /// </summary> public static List <SelectListItem> GetVersionsAsListItems() { using (FAutoScopedLogTimer LogTimer = new FAutoScopedLogTimer("CrashRepository.GetVersions")) { CrashReportDataContext Context = new CrashReportDataContext(); DateTime Now = DateTime.UtcNow; if (Now - LastVersionDate > TimeSpan.FromHours(1)) { var BuildVersions = Context.Crashes .Where(c => c.TimeOfCrash > DateTime.Now.AddDays(-14)) .Where(c => c.CrashType != 3) // Ignore ensures .Select(c => c.BuildVersion) .Distinct() .ToList(); DistinctBuildVersions = new HashSet <string>(); foreach (var BuildVersion in BuildVersions) { var BVParts = BuildVersion.Split(new char[] { '.' }, StringSplitOptions.RemoveEmptyEntries); if (BVParts.Length > 2 && BVParts[0] != "0") { string CleanBV = string.Format("{0}.{1}.{2}", BVParts[0], BVParts[1], BVParts[2]); DistinctBuildVersions.Add(CleanBV); } } VersionsAsSelectList = DistinctBuildVersions .Select(listitem => new SelectListItem { Selected = false, Text = listitem, Value = listitem }) .ToList(); VersionsAsSelectList.Insert(0, new SelectListItem { Selected = true, Text = "", Value = "" }); LastVersionDate = Now; } return(VersionsAsSelectList); } }
/// <summary> /// Retrieves a list of distinct UE4 Versions from the CrashRepository /// </summary> public List <SelectListItem> GetVersionsAsListItems() { List <SelectListItem> versionsAsSelectList = cache["versions"] as List <SelectListItem>; if (versionsAsSelectList == null) { var date = DateTime.Now.AddDays(-14); var BuildVersions = _entityContext.Crashes .Where(c => c.TimeOfCrash > date) .Where(c => c.CrashType != 3) // Ignore ensures .Select(c => c.BuildVersion) .Distinct() .ToList(); DistinctBuildVersions = new HashSet <string>(); foreach (var BuildVersion in BuildVersions) { var BVParts = BuildVersion.Split(new char[] { '.' }, StringSplitOptions.RemoveEmptyEntries); if (BVParts.Length > 2 && BVParts[0] != "0") { string CleanBV = string.Format("{0}.{1}.{2}", BVParts[0], BVParts[1], BVParts[2]); DistinctBuildVersions.Add(CleanBV); } } versionsAsSelectList = DistinctBuildVersions .Select(listitem => new SelectListItem { Selected = false, Text = listitem, Value = listitem }) .ToList(); versionsAsSelectList.Insert(0, new SelectListItem { Selected = true, Text = "", Value = "" }); var searchFilterCachePolicy = new CacheItemPolicy() { AbsoluteExpiration = DateTimeOffset.Now.AddMinutes(Settings.Default.SearchFilterCacheInMinutes) }; cache.Set("versions", versionsAsSelectList, searchFilterCachePolicy); } return(versionsAsSelectList); }