Ejemplo n.º 1
0
 public SendFilterWithPhoto(int photoId, FilterSortSettings filterSortSettings, ChosenItem chosenItem)
 {
     PhotoId            = photoId;
     FilterSortSettings = filterSortSettings;
     ChosenItem         = chosenItem;
 }
Ejemplo n.º 2
0
        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);
            }
        }
Ejemplo n.º 3
0
        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();
            }
        }