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