public async Task <IActionResult> Buy(long?Id, [Bind("Backer,Package,DeliveryDate,PaymentMethod")] BackerBuyPackage backerBuyPackage) { var user = _context.User.FirstOrDefault(u => u.Id == LoggedUser()); var package = _context.Package.Include(p => p.ProjectNavigation).FirstOrDefault(p => p.Id == Id); if (user == null || package == null) { return(RedirectToAction("Index")); } package.PackageLeft--; package.TimesSelected++; if (package.PackageLeft < 0 || package.ProjectNavigation.ExpireDate < DateTime.Now) { return(RedirectToAction(nameof(Index))); } package.ProjectNavigation.MoneyReach = package.ProjectNavigation.MoneyReach + package.PledgeAmount; _context.Package.Update(package); backerBuyPackage.Backer = user.Id; backerBuyPackage.Package = package.Id; if (!ModelState.IsValid) { return(BadRequest()); } _context.Add(backerBuyPackage); await _context.SaveChangesAsync(); var payments = from BackerBuyPackage.Payment b in Enum.GetValues(typeof(BackerBuyPackage.Payment)) select b.ToString(); ViewData["PaymentBag"] = new SelectList(payments); return(Json(new { RedirectUrl = Url.Action("donates", "buy") })); }
public IActionResult BuyForm(long?Id) { var user = _context.User.FirstOrDefault(u => u.Id == LoggedUser()); var package = _context.Package.Include(p => p.ProjectNavigation).FirstOrDefault(p => p.Id == Id); if (user == null || package == null) { return(NotFound()); } if (user.Id == package.ProjectNavigation.ProjectCtrator) { return(Forbid()); } var backerBuyPackage = new BackerBuyPackage(); backerBuyPackage.BackerNavigation = user; backerBuyPackage.PackageNavigation = package; var payments = from BackerBuyPackage.Payment b in Enum.GetValues(typeof(BackerBuyPackage.Payment)) select b.ToString(); ViewData["PaymentBag"] = new SelectList(payments); return(View(backerBuyPackage)); }