public async Task <IActionResult> Create(IFormCollection collection) { var strListingId = collection["TradeOffer.TradeListingOneId"]; var strCardId = collection["Listing.CardId"]; var strCashOffer = collection["Listing.CashOffer"]; var desc = collection["Listing.Description"]; var userId = User.FindFirstValue(ClaimTypes.NameIdentifier); if (string.IsNullOrWhiteSpace(userId)) { return(RedirectToAction("Home", "Index")); } else { int cardId; int listingId; double cashOffer; if (int.TryParse(strListingId, out listingId)) { // Generate listing for offer var tradeListing = new TradeListing(); tradeListing.ApplicationUserId = userId; if (int.TryParse(strCardId, out cardId)) { tradeListing.CardId = cardId; } if (double.TryParse(strCashOffer, out cashOffer)) { tradeListing.CashOffer = cashOffer; } tradeListing.Description = desc; tradeListing.TradeState = TradeState.Offered; var tradeListingData = await _DataAccess.TradeDataAccess.UpsertTradeListing(tradeListing); var origTradeListingData = await _DataAccess.TradeDataAccess.GetTradeListing(listingId); // create offer var newOffer = new TradeOffer(); newOffer.TradeListingOne = origTradeListingData; newOffer.TradeListingOneId = listingId; newOffer.TradeListingTwo = tradeListingData; newOffer.TradeListingTwoId = tradeListingData.Id; newOffer.TradeState = TradeState.PendingOffer; var offer = await _DataAccess.TradeDataAccess.UpsertTradeOffer(newOffer); if (offer != null && offer.Id > 0) { // because we were successful need to update original listing; origTradeListingData.TradeState = TradeState.PendingOffer; await _DataAccess.TradeDataAccess.UpsertTradeListing(origTradeListingData); } var model = new { id = offer.Id }; return(RedirectToAction("Details", model)); } } return(RedirectToAction("Index", "TradeListings")); }
public async Task <IActionResult> CreateTrade([Bind("TradeListingId,SellerId,TradeTitle,TradeDescription,TradeFor,TradeDate,TradeItemType,TradeQuantity,ImageFile, TradeLocation")] TradeListing tradeListing) { tradeListing.TradeDate = DateTime.Now; var info = await CityStateCountByIp("99.226.48.14"); string userId = ""; try { userId = HttpContext.Session.GetString("userId"); } catch (Exception) { // Do nothing } var sellerAccountId = await _context.SellerAccounts .Include(s => s.Account) .FirstOrDefaultAsync(s => s.Account.AccountId.ToString() == userId); if (ModelState.IsValid) { try { tradeListing.SellerId = sellerAccountId.SellerId; if (tradeListing.ImageFile != null) { //Save image to wwwroot/images string wwwRootPath = _hostEnvironment.WebRootPath; string fileName = Path.GetFileNameWithoutExtension(tradeListing.ImageFile.FileName); string extension = Path.GetExtension(tradeListing.ImageFile.FileName); tradeListing.TradeImage = fileName = fileName + DateTime.Now.ToString("yymmssfff") + extension; string path = Path.Combine(wwwRootPath + "/Images/", fileName); using (var fileStream = new FileStream(path, FileMode.Create)) { await tradeListing.ImageFile.CopyToAsync(fileStream); } } else { tradeListing.TradeImage = "trade-icon.png"; } _context.Add(tradeListing); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } catch (Exception) { return(RedirectToAction(nameof(Index))); } } ViewData["SellerId"] = new SelectList(_context.SellerAccounts, "SellerId", "SellerId", tradeListing.SellerId); return(View(tradeListing)); }
public async void CreateTrade_InputViableTradeData_ModelReturnsValid() { // Arrange MyListingsController controller = new MyListingsController(context, _hostEnvironment); TradeListing list = InitializeTradeListing(); // Act await controller.CreateTrade(list); // Assert Assert.True(controller.ModelState.IsValid); }
private async Task <TradeListing> PopulateListingData(TradeListing listing) { if (listing.CardId > 0) { listing.Card = _context.Cards.Find(listing.CardId); } var user = _context.Users.FirstOrDefault(x => x.Id == listing.ApplicationUserId); listing.Email = user.Email; listing.UserRating = await GetUserRating(listing.ApplicationUserId); return(listing); }
public async Task EditTrade_PassInTradeListingIdAndTradeListing_ModelIsValid() { // Assert MyListingsController controller = new MyListingsController(context, _hostEnvironment); TradeListing list = InitializeTradeListing(); // Act context.Add(list); list.TradeDescription = "Hello"; await controller.EditTrade(0, list); // Assert Assert.True(controller.ModelState.IsValid); }
public async Task DeleteConfirmedTrade_PassInInitializedTradeId_ReturnRedirection() { // Assert MyListingsController controller = new MyListingsController(context, _hostEnvironment); TradeListing list = InitializeTradeListing(); InitializeSeller(); // Act context.Add(list); var result = await controller.DeleteConfirmedSelling(0); // Assert Assert.IsType <RedirectToActionResult>(result); }
public void AddToTradeList(Player player, Field field) { if (player.NetworkPlayer == PhotonNetwork.LocalPlayer && myListings.Find(listing => listing.tradeField == field) == null) { TradeListing listing = myPool.TakeObject().GetComponent <TradeListing>(); listing.Init(this, myPool, field); myListings.Add(listing); } if (player.NetworkPlayer != PhotonNetwork.LocalPlayer && theirListings.Find(listing => listing.tradeField == field) == null) { TradeListing listing = theirPool.TakeObject().GetComponent <TradeListing>(); listing.Init(this, theirPool, field); theirListings.Add(listing); } }
public async Task <IActionResult> Create(IFormCollection collection) { var userId = User.FindFirstValue(ClaimTypes.NameIdentifier); if (string.IsNullOrWhiteSpace(userId)) { return(RedirectToAction("Home", "Index")); } else { var totalListings = await _DataAccess.TradeDataAccess.GetActiveTradeListingCountByUser(userId); var listingLimit = await _DataAccess.TradeDataAccess.GetUserTradeListingLimit(userId); if (totalListings >= listingLimit) { var parameters = new { source = collection["Source"] }; return(RedirectToAction("TradeLimitExceeded", parameters)); } var strCardId = collection["TradeListing.CardId"]; var desc = collection["TradeListing.Description"]; int cardId; if (int.TryParse(strCardId, out cardId)) { var tradeListing = new TradeListing(); tradeListing.ApplicationUserId = userId; tradeListing.CardId = cardId; tradeListing.Description = desc; var tradeListingData = _DataAccess.TradeDataAccess.UpsertTradeListing(tradeListing); var source = collection["Source"]; if (source == "Dashboard") { return(RedirectToAction("Index", "Dashboard")); } else { return(RedirectToAction("Index")); } } } return(RedirectToAction("Index")); }
public TradeListing InitializeTradeListing() { context.Add(InitializeAccount()); TradeListing listing = new TradeListing { Seller = InitializeSeller(), SellerId = 1, TradeTitle = "Trade 1", TradeDescription = "This is the first trade", TradeFor = "Water", TradeDate = Convert.ToDateTime("2020-10-02"), TradeItemType = "Game", TradeQuantity = 3, TradeImage = null, TradeLocation = "Ontario" }; return(listing); }
private void FillReceiver(Player sender, List <Field> myBuildings, float myMoney, List <Field> theirBuildings, float theirMoney) { mainTitle.text = lC.GetWord("OFFER_FROM") + " " + sender.GetName(); theirTitle.text = lC.GetWord("IN_EXCHANGE_FOR_BUILDINGS_OF") + " " + sender.GetName(); myTitle.text = lC.GetWord("MY_ITEMS"); this.myMoney.text = myMoney.ToString(); this.theirMoney.text = theirMoney.ToString(); myListings.ForEach((listing) => { listing.DeInit(); }); myListings.Clear(); theirListings.ForEach((listing) => { listing.DeInit(); }); theirListings.Clear(); myBuildings?.ForEach((building) => { TradeListing t = myPool.TakeObject().GetComponent <TradeListing>(); t.Init(this, myPool, building, true); myListings.Add(t); }); theirBuildings?.ForEach((building) => { TradeListing t = theirPool.TakeObject().GetComponent <TradeListing>(); t.Init(this, theirPool, building, true); theirListings.Add(t); }); this.myMoney.interactable = false; this.theirMoney.interactable = false; closeButton.SetActive(false); addMyBuildingsButton.SetActive(false); addTheirBuildingsButton.SetActive(false); sendButton.SetActive(false); acceptDeclineGroup.SetActive(true); acceptDeclineGroup.GetComponentsInChildren <Button>()[0].interactable = true; acceptDeclineGroup.GetComponentsInChildren <Button>()[1].interactable = true; }
public void RemoveFromTradeList(Player player, Field field) { if (player.NetworkPlayer == PhotonNetwork.LocalPlayer) { TradeListing tListing = myListings.Find(listing => listing.tradeField == field); tListing?.DeInit(); if (tListing != null) { myListings.Remove(tListing); } } else { TradeListing tListing = theirListings.Find(listing => listing.tradeField == field); tListing?.DeInit(); if (tListing != null) { theirListings.Remove(tListing); } } }
public async Task <TradeListing> UpsertTradeListing(TradeListing tradeListing) { if (tradeListing.Id > 0) { var dataTradeListing = _context.TradeListings.Find(tradeListing.Id); if (dataTradeListing != null) { dataTradeListing.CardId = tradeListing.CardId; dataTradeListing.CashOffer = tradeListing.CashOffer; dataTradeListing.Description = tradeListing.Description; await _context.SaveChangesAsync(); dataTradeListing = await PopulateListingData(dataTradeListing); return(dataTradeListing); } else { _context.TradeListings.Add(tradeListing); await _context.SaveChangesAsync(); tradeListing = await PopulateListingData(tradeListing); return(tradeListing); } } else { try { _context.TradeListings.Add(tradeListing); _context.SaveChanges(); tradeListing = await PopulateListingData(tradeListing); } catch (Exception e) { } return(tradeListing); } }