// GET: AllItems/CreateSwap public async Task <IActionResult> CreateSwap(int id) { var user = await GetCurrentUserAsync(); List <SelectListItem> ItemsList = new List <SelectListItem>(); var CurrentusersItems = _context.Item .Where(s => s.UserId == user.Id); ItemsList.Insert(0, new SelectListItem { Text = "Select", Value = "" }); foreach (var pt in CurrentusersItems) { SelectListItem li = new SelectListItem { Value = pt.Id.ToString(), Text = pt.Category }; ItemsList.Add(li); } ; SwapViewModel SwapOffer = new SwapViewModel(); SwapOffer.ItemsSelectList = ItemsList; SwapOffer.ReceiverItemId = id; return(View(SwapOffer)); }
public async Task <IActionResult> Create(SwapViewModel viewModel) { var userId = User.FindFirst(ClaimTypes.NameIdentifier).Value; var product = _dbContext.Stickers.Include(m => m.User).FirstOrDefault(m => m.Id == viewModel.StickerId); var user = _dbContext.Users.First(m => m.Id == userId); var totalCredits = product.Credits * viewModel.Quantity; if (totalCredits > user.Credits) { return(BadRequest()); } if (viewModel.Quantity < 0) { return(BadRequest()); } user.Credits -= totalCredits; product.Quantity -= viewModel.Quantity; var order = new Swap { Date = DateTime.UtcNow, User = user, Sticker = product, Status = SwapStatus.Processing, Quantity = viewModel.Quantity, Credits = totalCredits }; _dbContext.Add(order); await _dbContext.SaveChangesAsync(); if (product.User.EnableEmail) { await _emailSender.SendEmailAsync(product.User.Email, "Sticker Swap Request!", $"The user {user.UserName} wants {viewModel.Quantity} of your sticker {product.Title}. Visit <a href='https://stickerswap.io'>Sticker Swap</a> to get their shipping information."); } return(RedirectToAction("Index")); }