protected override void OnNavigatedTo(NavigationEventArgs e) { var viewModel = this.DataContext as BuildListViewModel; // If viewModel is not null it means that the user navigated back to this page and the viewModel is already loaded. if (viewModel == null) { string selectedIndex = string.Empty; string projectName = string.Empty; if (this.NavigationContext.QueryString.TryGetValue("projectName", out projectName)) { viewModel = new BuildListViewModel(string.Format(CultureInfo.InvariantCulture, "Projects('{0}')", projectName)); } else { viewModel = new BuildListViewModel(); } if (this.State.ContainsKey("CurrentPageNumber")) { viewModel.PageNumber = (int)this.State["CurrentPageNumber"]; } if (this.State.ContainsKey("CurrentQuery")) { viewModel.Query = (string)this.State["CurrentQuery"]; } viewModel.LoadData(); this.DataContext = viewModel; } }
public ActionResult BuildList(List <string> cpuSeries, List <string> gpuSeries, List <string> ramType, List <string> storageType, int?page, string seriesCpuString = "", string seriesGpuString = "", string storageTypeString = "", string ramTypeString = "") { var builds = context.Build.ToList(); List <Build> buildsFound = new List <Build>(); List <Build> buildsOut = new List <Build>(); int filtred = 0; // OCENY int amountOfBuilds = builds.Count() + 1; double[] sum = new double[amountOfBuilds]; double[] average = new double[amountOfBuilds]; double[] count = new double[amountOfBuilds]; for (int i = 0; i < amountOfBuilds; i++) { sum[i] = 0.0d; count[i] = 0.0d; } foreach (Build b in builds) { foreach (Rate r in b.Rates) { sum[r.BuildId] += r.Grade; count[r.BuildId]++; } } for (int i = 0; i < amountOfBuilds; i++) { if (count[i] != 0d) { average[i] = sum[i] / count[i] * 1.0d; } } if (Request.IsAuthenticated) { var userName = User.Identity.GetUserName(); if (userName != "admin") { builds = context.Build.Where(a => a.Hidden == false).ToList(); } } else { builds = context.Build.Where(a => a.Hidden == false).ToList(); } // CPU if (cpuSeries != null) { foreach (var serie in cpuSeries) { buildsOut = builds.Where(a => a.Cpu.Product.Series.Name == serie).ToList(); foreach (var buildsout in buildsOut) { buildsFound.Add(buildsout); } } filtred = 1; } else if (seriesCpuString != "") { string[] cpuSeriesT = seriesCpuString.Split('_'); List <string> tempCpuSeries = new List <string>(); foreach (var serie in cpuSeriesT) { buildsOut = builds.Where(a => a.Cpu.Product.Series.Name == serie).ToList(); if (serie != "") { tempCpuSeries.Add(serie); } foreach (var buildsout in buildsOut) { buildsFound.Add(buildsout); } } cpuSeries = tempCpuSeries; filtred = 1; } if (filtred == 1) { builds.Clear(); foreach (var add in buildsFound) { builds.Add(add); } buildsFound.Clear(); filtred = 0; } // GPU if (builds.Count() > 0) { if (gpuSeries != null) { foreach (var serie in gpuSeries) { buildsOut = builds.Where(a => a.Gpu.Product.Series.Name == serie).ToList(); foreach (var buildsout in buildsOut) { buildsFound.Add(buildsout); } } filtred = 1; } else if (seriesGpuString != "") { string[] gpuSeriesT = seriesGpuString.Split('_'); List <string> tempGpuSeries = new List <string>(); foreach (var serie in gpuSeriesT) { buildsOut = builds.Where(a => a.Gpu.Product.Series.Name == serie).ToList(); if (serie != "") { tempGpuSeries.Add(serie); } foreach (var buildsout in buildsOut) { buildsFound.Add(buildsout); } } gpuSeries = tempGpuSeries; filtred = 1; } } if (filtred == 1) { builds.Clear(); foreach (var add in buildsFound) { builds.Add(add); } buildsFound.Clear(); filtred = 0; } // RAM if (builds.Count() > 0) { if (ramType != null) { foreach (var ram in ramType) { buildsOut = builds.Where(a => a.Ram.RamType.Name == ram).ToList(); foreach (var buildsout in buildsOut) { buildsFound.Add(buildsout); } } filtred = 1; } else if (ramTypeString != "") { string[] ramTypeT = ramTypeString.Split('_'); List <string> tempRamType = new List <string>(); foreach (var ram in ramTypeT) { buildsOut = builds.Where(a => a.Ram.RamType.Name == ram).ToList(); if (ram != "") { tempRamType.Add(ram); } foreach (var buildsout in buildsOut) { buildsFound.Add(buildsout); } } ramType = tempRamType; filtred = 1; } } if (filtred == 1) { builds.Clear(); foreach (var add in buildsFound) { builds.Add(add); } buildsFound.Clear(); filtred = 0; } // STORAGE if (builds.Count() > 0) { if (storageType != null) { foreach (var type in storageType) { buildsOut = builds.Where(a => a.Storage.Type == type).ToList(); foreach (var buildsout in buildsOut) { buildsFound.Add(buildsout); } } filtred = 1; } else if (storageTypeString != "") { string[] storageTypeT = storageTypeString.Split('_'); List <string> tempStorageType = new List <string>(); foreach (var type in storageTypeT) { buildsOut = builds.Where(a => a.Storage.Type == type).ToList(); if (type != "") { tempStorageType.Add(type); } foreach (var buildsout in buildsOut) { buildsFound.Add(buildsout); } } storageType = tempStorageType; filtred = 1; } } if (filtred == 1) { builds.Clear(); foreach (var add in buildsFound) { builds.Add(add); } buildsFound.Clear(); filtred = 0; } int pageSize = 5; int pageNumber = (page ?? 1); List <string> emptyList = new List <string> { "" }; if (cpuSeries == null) { cpuSeries = emptyList; } if (gpuSeries == null) { gpuSeries = emptyList; } if (ramType == null) { ramType = emptyList; } if (storageType == null) { storageType = emptyList; } var buildListViewModel = new BuildListViewModel() { PagedList = builds.ToPagedList(pageNumber, pageSize), Average = average, Count = count, BuildFormCheckedViewModel = new BuildFormCheckedViewModel() { CpuSeriesChecked = cpuSeries, GpuSeriesChecked = gpuSeries, RamTypeChecked = ramType, StorageTypeChecked = storageType, CpuManufacturersChecked = emptyList } }; return(View(buildListViewModel)); }