// GET: PredsGames/Details/5 public async Task <IActionResult> Details(int?id) { if (id == null) { return(NotFound()); } var predsGame = await _context.PredsGame .FirstOrDefaultAsync(m => m.PredsGameId == id); var user = await _userManager.GetUserAsync(HttpContext.User); var userPredsGame = await _context.UserPredsGame.FirstOrDefaultAsync(d => d.UserId == user.Id && d.PredsGameId == predsGame.PredsGameId); if (predsGame == null) { return(NotFound()); } PredsGameDetailViewModel pgdvm = new PredsGameDetailViewModel() { User = user, PredsGame = predsGame, UserPredsGame = userPredsGame, userId = user.Id, predsGameId = predsGame.PredsGameId }; return(View(pgdvm)); }
public async Task <IActionResult> End(PredsGameDetailViewModel pgdvm) { var donatedTickets = await _context.DonatedTickets.Where(d => d.PredsGameId == pgdvm.predsGameId && d.TransactionComplete == true).ToListAsync(); var userPredsGames = await _context.UserPredsGame.Where(d => d.PredsGameId == pgdvm.predsGameId).ToListAsync(); var predsGame = await _context.PredsGame.FirstOrDefaultAsync(g => g.PredsGameId == pgdvm.predsGameId); predsGame.Open = false; List <UserPredsGame> winners = new List <UserPredsGame>(); if (userPredsGames.Count < donatedTickets.Count) { for (int i = 0; i < userPredsGames.Count; i++) { userPredsGames[i].DonatedTicketsId = donatedTickets[i].DonatedTicketsId; } ; foreach (var upg in userPredsGames) { _context.UserPredsGame.Update(upg); var user = await _userManager.FindByIdAsync(upg.UserId); var tickets = await _context.Ticket.Where(t => t.DonatedTicketsId == upg.DonatedTicketsId).ToListAsync(); await SendEmail(user, tickets, predsGame); } ; _context.PredsGame.Update(predsGame); await _context.SaveChangesAsync(); } else { for (int i = 0; i < donatedTickets.Count; i++) { Random rnd = new Random(); int winningNumber = rnd.Next(0, (donatedTickets.Count() + 1)); userPredsGames[winningNumber].DonatedTicketsId = donatedTickets[i].DonatedTicketsId; userPredsGames[i].DonatedTicketsId = donatedTickets[i].DonatedTicketsId; winners.Add(userPredsGames[winningNumber]); userPredsGames.RemoveAt(winningNumber); } foreach (var upg in winners) { _context.UserPredsGame.Update(upg); var user = await _userManager.FindByIdAsync(upg.UserId); var tickets = await _context.Ticket.Where(t => t.DonatedTicketsId == upg.DonatedTicketsId).ToListAsync(); await SendEmail(user, tickets, predsGame); } ; _context.PredsGame.Update(predsGame); await _context.SaveChangesAsync(); } return(RedirectToAction(nameof(Index))); }
public async Task <IActionResult> Remove(PredsGameDetailViewModel pgdvm) { var userPredsGame = await _context.UserPredsGame.FirstOrDefaultAsync(m => m.UserId == pgdvm.userId); if (ModelState.IsValid) { _context.Remove(userPredsGame); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } return(View(nameof(Index))); }
public async Task <IActionResult> Apply(PredsGameDetailViewModel pgdvm) { UserPredsGame UserPredsGame = new UserPredsGame() { UserId = pgdvm.userId, PredsGameId = pgdvm.predsGameId, DonatedTicketsId = null }; if (ModelState.IsValid) { _context.Add(UserPredsGame); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(ConfirmationApply))); } return(View(pgdvm)); }