Exemplo n.º 1
0
        // 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));
        }
Exemplo n.º 2
0
        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)));
        }
Exemplo n.º 3
0
        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)));
        }
Exemplo n.º 4
0
        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));
        }