示例#1
0
        public async Task <IActionResult> Details(string Name, string query)
        {
            var model  = new SearchDetailsViewModel();
            var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);

            if (!string.IsNullOrWhiteSpace(userId))
            {
                var userInventory = await _DataAccess.UserInventoryDataAccess.GetUserInventoryByUserAsync(userId);

                var decks = await _DataAccess.DeckDataAccess.GetDecksByUserAsync(userInventory.Id);

                model.Decks = decks;
            }
            model.Query = query;
            if (!string.IsNullOrWhiteSpace(Name))
            {
                model.Name   = Name;
                model.Result = await _YGOProDeckAccess.GetCardByNameAsync(Name);

                var card = await _DataAccess.CardDataAccess.GetCardByNameAsync(Name);

                if (card != null)
                {
                    model.Result = card;
                    var listings = await _DataAccess.TradeDataAccess.GetTradeListingsByCard(card.Id);

                    if (listings != null)
                    {
                        var filteredListings = listings.Where(x => TradeDataAccess.IsStateDeletable(x.TradeState)).ToList();
                        model.Listings = filteredListings;
                    }
                }
            }
            else
            {
                return(View("Index"));
            }
            if (string.IsNullOrWhiteSpace(model.Result?.Name))
            {
                return(View("Index"));
            }
            return(View(model));
        }
        // GET: TradeListings/Delete/5
        public async Task <IActionResult> Delete(int?id, string source)
        {
            if (id == null)
            {
                return(NotFound());
            }

            var tradeListing = await _DataAccess.TradeDataAccess.GetTradeListing(id ?? 0);

            if (tradeListing == null)
            {
                return(NotFound());
            }
            else if (TradeDataAccess.IsStateDeletable(tradeListing.TradeState))
            {
                await _DataAccess.TradeDataAccess.DeleteTradeListing(id ?? 0);
            }
            else
            {
                // Maybe need error message about why trade state is not deletable
            }
            return(source == "Dashboard" ? RedirectToAction("Index", "Dashboard") : RedirectToAction("Index"));
        }
        // GET: TradeListings
        public async Task <IActionResult> Browse(string sortOrder)
        {
            var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);

            ViewBag.NameSortParam      = String.IsNullOrEmpty(sortOrder) ? "name_desc" : "";
            ViewBag.StatusSortParam    = sortOrder == "status" ? "status_desc" : "status";
            ViewBag.OfferSortParam     = sortOrder == "offer" ? "offer_desc" : "offer";
            ViewBag.AttackSortParam    = sortOrder == "attack" ? "attack_desc" : "attack";
            ViewBag.TypeSortParam      = sortOrder == "type" ? "type_desc" : "type";
            ViewBag.DefenseSortParam   = sortOrder == "defense" ? "defense_desc" : "defense";
            ViewBag.LevelSortParam     = sortOrder == "level" ? "level_desc" : "level";
            ViewBag.RaceSortParam      = sortOrder == "race" ? "Race_desc" : "race";
            ViewBag.AttributeSortParam = sortOrder == "attr" ? "attr_desc" : "attr";
            ViewBag.LinkValSortParam   = sortOrder == "linkval" ? "linkval_desc" : "linkval";
            ViewBag.DescSortParam      = sortOrder == "desc" ? "desc_desc" : "desc";
            ViewBag.UserSortParam      = sortOrder == "user" ? "user_desc" : "user";
            ViewBag.RatingSortParam    = sortOrder == "rating" ? "rating_desc" : "rating";
            var listings = await _DataAccess.TradeDataAccess.GetTradeListings();

            var inventory = await _DataAccess.UserInventoryDataAccess.GetUserInventoryByUserAsync(userId);

            listings = listings.Where(x => TradeDataAccess.IsStateDeletable(x.TradeState) && x.ApplicationUserId != userId).ToList();
            if (inventory != null)
            {
                var blockList = await _DataAccess.UserInventoryDataAccess.GetBlocks(inventory.Id);

                listings = listings.Where(x => !blockList.Any(y => y.UserInventoryOne.ApplicationUserId == x.ApplicationUserId || y.UserInventoryTwo.ApplicationUserId == x.ApplicationUserId)).ToList();
            }
            switch (sortOrder)
            {
            case "desc":
                listings = listings.OrderBy(s => s.Description).ToList();
                break;

            case "desc_desc":
                listings = listings.OrderByDescending(s => s.Description).ToList();
                break;

            case "rating":
                listings = listings.OrderBy(s => s.UserRating).ToList();
                break;

            case "rating_desc":
                listings = listings.OrderByDescending(s => s.UserRating).ToList();
                break;

            case "user":
                listings = listings.OrderBy(s => s.Email).ToList();
                break;

            case "user_desc":
                listings = listings.OrderByDescending(s => s.Email).ToList();
                break;

            case "attack":
                listings = listings.OrderBy(s => s.Card.Attack).ToList();
                break;

            case "attack_desc":
                listings = listings.OrderByDescending(s => s.Card.Attack).ToList();
                break;

            case "defense":
                listings = listings.OrderBy(s => s.Card.Defence).ToList();
                break;

            case "defense_desc":
                listings = listings.OrderByDescending(s => s.Card.Defence).ToList();
                break;

            case "attr":
                listings = listings.OrderBy(s => s.Card.Attribute).ToList();
                break;

            case "attr_desc":
                listings = listings.OrderByDescending(s => s.Card.Attribute).ToList();
                break;

            case "level":
                listings = listings.OrderBy(s => s.Card.Level).ToList();
                break;

            case "level_desc":
                listings = listings.OrderByDescending(s => s.Card.Level).ToList();
                break;

            case "race":
                listings = listings.OrderBy(s => s.Card.Race).ToList();
                break;

            case "race_desc":
                listings = listings.OrderByDescending(s => s.Card.Race).ToList();
                break;

            case "linkval":
                listings = listings.OrderBy(s => s.Card.Linkval).ToList();
                break;

            case "linkval_desc":
                listings = listings.OrderByDescending(s => s.Card.Linkval).ToList();
                break;

            case "type":
                listings = listings.OrderBy(s => s.Card.Type).ToList();
                break;

            case "type_desc":
                listings = listings.OrderByDescending(s => s.Card.Type).ToList();
                break;

            case "name_desc":
                listings = listings.OrderByDescending(s => s.Card.Name).ToList();
                break;

            default:
                listings = listings.OrderBy(s => s.Card.Name).ToList();
                break;
            }
            return(View(listings));
        }