public async Task <IActionResult> Edit(long id, [Bind("UserId,BackingId,TransactionId,Amount")] UserBacking userBacking) { if (id != userBacking.UserId) { return(NotFound()); } if (ModelState.IsValid) { try { _context.Update(userBacking); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!UserBackingExists(userBacking.UserId)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } ViewData["BackingId"] = new SelectList(_context.BackingPackage, "Id", "Name", userBacking.BackingId); ViewData["UserId"] = new SelectList(_context.User, "Id", "Email", userBacking.UserId); return(View(userBacking)); }
public async Task <IActionResult> Create(long?projectId) { var userBacking = new UserBacking(); if (!projectId.HasValue) { return(NotFound()); } else { var projectContext = await _context.Project .Include(p => p.BackingPackages) .FirstOrDefaultAsync(p => p.Id == projectId); if (projectContext.BackingPackages == null) { return(NotFound()); } var authorizationResult = await _authorizationService.AuthorizeAsync(User, projectContext, "ProjectCreator"); if (authorizationResult.Succeeded) { return(new ForbidResult()); } else if (User.Identity.IsAuthenticated) { var userBackingQuery = from ub in _context.UserBacking join bp in projectContext.BackingPackages on ub.BackingId equals bp.Id where ub.UserId == User.GetUserId() select ub; await userBackingQuery.LoadAsync(); if (userBackingQuery.Any()) { return(new ForbidResult()); } userBacking.Backing = new BackingPackage(); userBacking.Backing.Project = projectContext; userBacking.UserId = User.GetUserId().Value; return(View(userBacking)); } else { return(new ChallengeResult()); } } }
public async Task <IActionResult> Create([Bind("UserId,BackingId,TransactionId,Amount")] UserBacking userBacking) { var backingPackage = await _context.BackingPackage .Include(bp => bp.Project) .FirstOrDefaultAsync(bp => bp.Id == userBacking.BackingId); if (backingPackage == null) { return(NotFound()); } var authorizationResult = await _authorizationService.AuthorizeAsync(User, backingPackage, "ProjectCreator"); if (authorizationResult.Succeeded) { return(new ForbidResult()); } else if (User.Identity.IsAuthenticated) { if (ModelState.IsValid) { userBacking.UserId = User.GetUserId().Value; userBacking.Amount = backingPackage.BackingAmount; backingPackage.Project.AmountGathered += backingPackage.BackingAmount; _context.Add(userBacking); _context.Update(backingPackage.Project); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Details), "Projects", new { Id = backingPackage.ProjectId })); } ViewData["BackingId"] = userBacking.BackingId; return(View(userBacking.Backing.Project)); } else { return(new ChallengeResult()); } }