public SendFilterWithPhoto(int photoId, FilterSortSettings filterSortSettings, ChosenItem chosenItem) { PhotoId = photoId; FilterSortSettings = filterSortSettings; ChosenItem = chosenItem; }
public void UpdateInfo() { InfoPanel.Controls.Clear(); /* * InfoPanel.Controls.Add(new Label()); * { * ForeColor = Color.AliceBlue, * Font = new Font(FontFamily.GenericSerif, 32), * Text = ChosenItem.Explanation(); * Dock = DockStyle.Top; * } */ InfoPanel.Controls.Add(new Label { ForeColor = Colors.ItemTierColors[ChosenItem.Tier], Font = new Font(FontFamily.GenericSerif, 36), Text = ChosenItem.Name, Dock = DockStyle.Top, Width = InfoPanel.Width, Height = 72, TextAlign = ContentAlignment.MiddleCenter, }); InfoPanel.Controls.Add(ExplanationPanel); var shit = new Panel { AutoSize = true }; InfoPanel.Controls.Add(shit); shit.Controls.Add(RecipePanel); shit.Controls.Add(UpgradePanel); InfoPanel.Controls.Add(new Label { AutoSize = true, MinimumSize = new Size(GetInfoWidth(), 0), MaximumSize = new Size(GetInfoWidth(), 1000), Text = ChosenItem.Explanation(Customer), ForeColor = Color.Red, Font = new Font(FontFamily.GenericSansSerif, 20), }); InfoPanel.Refresh(); BuyButton.Text = ChosenItem.Name + ":\n Buy for (" + (int)ChosenItem.GetFinalCost(Customer) + ")"; var itemExp = ChosenItem.GetExplanation(); ExplanationPanel.Controls.Clear(); var icons = resources.IconLoader.GetIcons(new Size(32, 32)); foreach (var item in itemExp) { var micropanel = new Panel() { AutoSize = true, }; micropanel.Controls.Add(new PictureBox() { Image = icons[item.Key], Size = new Size(32, 32) }); micropanel.Controls.Add(new Label() { Location = new Point(32, 0), Text = item.Value.ToString(), ForeColor = Color.White, Font = new Font(FontFamily.GenericSansSerif, 24), AutoSize = true, }); ExplanationPanel.Controls.Add(micropanel); } RecipePanel.Controls.Clear(); RecipePanel.RowCount = ChosenItem.Parts.Count; RecipePanel.Width = GetInfoWidth() / 2; RecipePanel.Height = ChosenItem.Parts.Count * 48; var kik = new List <Item>(Customer.Items); foreach (var part in ChosenItem.Parts) { var b = new Label() { Font = new Font(FontFamily.GenericSerif, 24), Text = "+ " + part.Name, BackColor = Color.Azure, ForeColor = Color.Black, Size = new Size(RecipePanel.Width - 6, 44), TextAlign = ContentAlignment.MiddleLeft, Margin = new Padding(0, 2, 6, 2) }; b.Click += (sender, args) => { ChosenItem = part; UpdateInfo(); }; RecipePanel.Controls.Add(b); if (kik.Contains(part)) { kik.Remove(part); RecipePanel.Controls[RecipePanel.Controls.Count - 1].BackColor = Color.Chartreuse; } } UpgradePanel.Controls.Clear(); var upgrades = Shop.GetUpgrades(ChosenItem); UpgradePanel.Location = new Point(GetInfoWidth() / 2, 0); UpgradePanel.Width = GetInfoWidth() / 2; UpgradePanel.Height = upgrades.Count * 48; foreach (var part in upgrades) { var b = new Label() { Font = new Font(FontFamily.GenericSerif, 24), Text = "> " + part.Name, BackColor = Color.Azure, ForeColor = Color.Black, Size = new Size(UpgradePanel.Width - 6, 44), TextAlign = ContentAlignment.MiddleRight, Margin = new Padding(0, 2, 6, 2) }; b.Click += (sender, args) => { ChosenItem = part; UpdateInfo(); }; UpgradePanel.Controls.Add(b); } }
public List <int> GetSortedFilteredPhotosIds(FilterSortSettings settings, ChosenItem item) { Expression <Func <PhotoEntity, bool> > filterExpression = x => (settings.Format == Format.None || x.Format == settings.Format) && (settings.ResolutionId <= 0 || x.ResolutionId == settings.ResolutionId) && (string.IsNullOrEmpty(settings.SearchString) || x.Name.Contains(settings.SearchString)) && x.CreatedTime >= settings.DateFrom && x.CreatedTime <= settings.DateTo; var photos = _dataContext.Photos.Where(filterExpression).Include(x => x.Tags).ToList(); var filteredPhotos = new List <PhotoEntity>(); switch (item.ItemType) { case ItemType.Album: filteredPhotos.AddRange(photos.Where(x => x.AlbumId == item.Id).ToList()); break; case ItemType.Person: var personTags = _dataContext.PersonTags.Where(x => x.PersonId == item.Id).ToList(); foreach (var tag in personTags) { filteredPhotos.AddRange(photos.Where(x => x.Tags.Contains(tag)).ToList()); } break; case ItemType.Item: var itemTags = _dataContext.ItemTags.Where(x => x.Item.Id == item.Id); foreach (var tag in itemTags) { filteredPhotos.AddRange(photos.Where(x => x.Tags.Contains(tag)).ToList()); } break; default: Debugger.Break(); throw new ArgumentOutOfRangeException(); } switch (settings.Sort) { case Sort.ByDateTime when settings.SortAscending: return(filteredPhotos.OrderBy(x => x.CreatedTime).Select(x => x.Id).ToList()); case Sort.ByDateTime when !settings.SortAscending: return(filteredPhotos.OrderByDescending(x => x.CreatedTime).Select(x => x.Id).ToList()); case Sort.ByName when settings.SortAscending: return(filteredPhotos.OrderBy(x => x.Name).Select(x => x.Id).ToList()); case Sort.ByName when !settings.SortAscending: return(filteredPhotos.OrderByDescending(x => x.Name).Select(x => x.Id).ToList()); case Sort.None: return(filteredPhotos.Select(x => x.Id).ToList()); default: Debugger.Break(); throw new ArgumentOutOfRangeException(); } }