/// <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);
            }
        }
예제 #2
0
        /// <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);
        }