Example #1
0
        // 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));
        }
Example #2
0
        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"));
        }