コード例 #1
0
        // GET: Market
        public ActionResult Index()
        {
            var vendors = (db.Roles.OrderBy(m => m.Name)
                           .FirstOrDefault(m => m.Name == "Vendor")).Users;
            var model = new MarketIndexViewModel {
                Vendors = new Dictionary <string, string>()
            };

            foreach (var vendor in vendors)
            {
                if (vendor is null)
                {
                    continue;
                }
                var v = db.EcomUsers
                        .Include(m => m.Stores)
                        .Include(m => m.VendorDetails)
                        .FirstOrDefault(m => m.ApplicationUserId == vendor.UserId);

                if (v != null && v.Stores != null && v.Stores.Count > 0)
                {
                    model.Vendors.Add(v.ApplicationUserId,
                                      v.VendorDetails.BusinessName);
                }
            }
            return(View(model));
        }
コード例 #2
0
        public MarketIndexViewModel GetIndexViewModel(int?playerId, MarketIndexParamsViewModel filters)
        {
            var ownAds = _dbContext.MarketAd.Where(ad => ad.AuthorId == playerId);
            var model  = new MarketIndexViewModel
            {
                OwnActiveAds   = ownAds.Count(ad => ad.Active),
                OwnInactiveAds = ownAds.Count(ad => !ad.Active),
                OwnAdReactions = ownAds.Sum(ad => ad.Reactions.Count()),
                ItemTypes      = EnumExtensions.ToDictionary <int>(typeof(Item.ItemType)),
                WeaponTypes    = EnumExtensions.ToDictionary <int>(typeof(Item.ItemWeaponType)),
                Filters        = filters,
            };

            if (filters.HasItemLevelFilters)
            {
                var items = _dbContext.MarketAdBundleItem
                            .Include(bi => bi.Item)
                            .Include(bi => bi.Bundle)
                            .ThenInclude(b => b.Ad)
                            .ThenInclude(a => a.Author)
                            .Where(i =>
                                   // Item-level filters
                                   (string.IsNullOrWhiteSpace(filters.NamePart) || i.Item.Name.Contains(filters.NamePart)) &&
                                   (filters.ItemRarities == null || filters.ItemRarities.Count() == 0 || filters.ItemRarities.Contains(i.Item.Rarity)) &&
                                   (filters.ItemTypes == null || filters.ItemTypes.Count() == 0 || filters.ItemTypes.Contains(i.Item.Type)) &&
                                   (filters.WeaponTypes == null || filters.WeaponTypes.Count() == 0 ||
                                    (i.Item.WeaponType != null && filters.WeaponTypes.Contains(i.Item.WeaponType.Value))) &&
                                   (filters.WeaponRanges == null || filters.WeaponRanges.Count() == 0 ||
                                    (i.Item.WeaponRange.HasValue && filters.WeaponRanges.Contains(i.Item.WeaponRange.Value))) &&
                                   (filters.MinEnergy == null || filters.MinEnergy <= 0 ||
                                    (i.Item.Energy.HasValue && i.Item.Energy >= filters.MinEnergy)) &&
                                   (filters.MinImpact == null || filters.MinImpact <= 0 ||
                                    (i.Item.Impact.HasValue && i.Item.Impact >= filters.MinImpact)) &&
                                   (filters.MinPiercing == null || filters.MinPiercing <= 0 ||
                                    (i.Item.Piercing.HasValue && i.Item.Piercing >= filters.MinPiercing)) &&
                                   (filters.MinTier == null || filters.MinTier <= 1 || i.Item.Tier >= filters.MinTier) &&
                                   (filters.MaxTier == null || filters.MaxTier >= TauManager.Constants.MaxTier || i.Item.Tier <= filters.MaxTier) &&
                                   // Bundle-level filters
                                   (filters.AdTypes == null || filters.AdTypes.Count() == 0 ||
                                    (filters.AdTypes != null && filters.AdTypes.Contains(MarketAd.AdType.Buy) && i.Bundle.Type == MarketAdBundle.BundleType.Request) ||
                                    (filters.AdTypes != null &&
                                     (filters.AdTypes.Contains(MarketAd.AdType.Sell) || filters.AdTypes.Contains(MarketAd.AdType.Lend)) &&
                                     i.Bundle.Type == MarketAdBundle.BundleType.Offer)) &&
                                   // Ad-level filters
                                   (filters.AdTypes == null || filters.AdTypes.Count() == 0 || filters.AdTypes.Contains(i.Bundle.Ad.Type)) &&
                                   (i.Bundle.Ad.Active) &&
                                   // Generic conditions
                                   ((i.Bundle.Type == MarketAdBundle.BundleType.Offer && (i.Bundle.Ad.Type == MarketAd.AdType.Sell || i.Bundle.Ad.Type == MarketAd.AdType.Lend)) ||
                                    (i.Bundle.Type == MarketAdBundle.BundleType.Request && i.Bundle.Ad.Type == MarketAd.AdType.Buy))
                                   )
                            .ToList();
                var allAds = items.Select(i => i.Bundle.Ad)
                             .Distinct();
                var allAdsSorted = filters.Sort == MarketIndexParamsViewModel.SortOrder.DateAscending ?
                                   allAds.OrderBy(ad => ad.PlacementDate) :
                                   allAds.OrderByDescending(ad => ad.PlacementDate);
                model.OfferAds = allAdsSorted.Where(ad => ad.Type == MarketAd.AdType.Sell || ad.Type == MarketAd.AdType.Lend)
                                 .Select(ad => new MarketAdViewModel(ad));
                model.AskAds = allAdsSorted.Where(ad => ad.Type == MarketAd.AdType.Buy)
                               .Select(ad => new MarketAdViewModel(ad));
            }
            else
            {
                var allAds = _dbContext.MarketAd
                             .Include(ad => ad.Author)
                             .Include(ad => ad.Bundles)
                             .ThenInclude(ab => ab.Items)
                             .ThenInclude(abi => abi.Item)
                             .Where(ad =>
                                    (filters.AdTypes == null || filters.AdTypes.Count() == 0 || filters.AdTypes.Contains(ad.Type)) &&
                                    ad.Active)
                             .ToList();

                var allAdsSorted = filters.Sort == MarketIndexParamsViewModel.SortOrder.DateAscending ?
                                   allAds.OrderBy(ad => ad.PlacementDate) :
                                   allAds.OrderByDescending(ad => ad.PlacementDate);

                model.OfferAds = allAdsSorted.Where(ad => ad.Type == MarketAd.AdType.Sell || ad.Type == MarketAd.AdType.Lend)
                                 .Select(ad => new MarketAdViewModel(ad));
                model.AskAds = allAdsSorted.Where(ad => ad.Type == MarketAd.AdType.Buy)
                               .Select(ad => new MarketAdViewModel(ad));
            }
            return(model);
        }