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)); }