Пример #1
0
        private async Task AddGroupBetPlayerAsync(PlayerGroupBetRequestEntity playerGroupBetRequest)
        {
            Player player = await _context.Players
                            .Include(u => u.User)
                            .FirstOrDefaultAsync(ug => ug.Id == playerGroupBetRequest.RequiredPlayer.Id);

            GroupBet groupBet = await _context.GroupBets
                                .Include(ug => ug.GroupBetPlayers)
                                .FirstOrDefaultAsync(ug => ug.Id == playerGroupBetRequest.GroupBet.Id);



            if (player != null && groupBet != null)
            {
                GroupBetPlayer groupBetPlayer = new GroupBetPlayer
                {
                    GroupBet   = groupBet,
                    Player     = player,
                    IsAccepted = true,
                    IsBlocked  = false,
                    Points     = 0
                };
                _context.GroupBetPlayers.Add(groupBetPlayer);
                _context.SaveChanges();
            }
        }
Пример #2
0
        public async Task <IActionResult> RejectUserGroup(int requestId, string token)
        {
            if (requestId == 0 || string.IsNullOrEmpty(token))
            {
                return(NotFound());
            }

            PlayerGroupBetRequestEntity playerGroupBetRequest = await _context.PlayerGroupBetRequests
                                                                .Include(pp => pp.ProposalPlayer)
                                                                .ThenInclude(u => u.User)
                                                                .Include(rp => rp.RequiredPlayer)
                                                                .ThenInclude(us => us.User)
                                                                .Include(gb => gb.GroupBet)
                                                                .ThenInclude(gbp => gbp.GroupBetPlayers)
                                                                .FirstOrDefaultAsync(ugr => ugr.Id == requestId &&
                                                                                     ugr.Token == new Guid(token));

            if (playerGroupBetRequest == null)
            {
                return(NotFound());
            }

            playerGroupBetRequest.Status = PlayerGroupBetStatus.Rejected;
            _context.PlayerGroupBetRequests.Update(playerGroupBetRequest);
            await _context.SaveChangesAsync();

            return(View());
        }
Пример #3
0
        public async Task <IActionResult> PostUserGroupBet([FromBody] AddUserGroupBetRequest request)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            Player proposalPlayer = await _context.Players
                                    .Include(u => u.User)
                                    .FirstOrDefaultAsync(p => p.Id == request.PlayerId);

            if (proposalPlayer.User == null)
            {
                return(BadRequest("Este Usuario no existe."));
            }

            Player requiredPlayer2 = _converterHelper.ToPlayer(await _userHelper.GetUserAsync(request.Email));


            if (requiredPlayer2.User == null)
            {
                return(BadRequest("Este Usuario no existe en la App."));
            }

            Player requiredPlayer = await _context.Players
                                    .Include(u => u.User)
                                    .FirstOrDefaultAsync(p => p.User.Id == requiredPlayer2.User.Id);

            GroupBet groupBet = await _context.GroupBets
                                .Include(u => u.GroupBetPlayers)
                                .FirstOrDefaultAsync(p => p.Id == request.GroupBetId);



            GroupBetPlayer groupBetPlayer = await _context.GroupBetPlayers
                                            .Include(ug => ug.Player)
                                            .ThenInclude(u => u.User)
                                            .FirstOrDefaultAsync(ug => ug.Player.Id == requiredPlayer.Id && ug.GroupBet.Id == request.GroupBetId);

            if (groupBetPlayer != null)
            {
                {
                    return(BadRequest("Este Usuario ya pertenece al Grupo."));
                }
            }

            PlayerGroupBetRequestEntity playerGroupBetRequestEntity = await _context.PlayerGroupBetRequests
                                                                      .FirstOrDefaultAsync(ug => ug.RequiredPlayer.Id == requiredPlayer.Id && ug.GroupBet.Id == request.GroupBetId && ug.Status == PlayerGroupBetStatus.Pending);

            if (playerGroupBetRequestEntity != null)

            {
                {
                    return(BadRequest("Este Usuario ya tiene una invitación que está pendiente."));
                }
            }

            PlayerGroupBetRequestEntity playerGroupBetRequest = new PlayerGroupBetRequestEntity
            {
                ProposalPlayer = proposalPlayer,
                RequiredPlayer = requiredPlayer,
                GroupBet       = groupBet,
                Status         = PlayerGroupBetStatus.Pending,
                Token          = Guid.NewGuid()
            };

            try
            {
                _context.PlayerGroupBetRequests.Add(playerGroupBetRequest);
                await _context.SaveChangesAsync();
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }

            string linkConfirm = Url.Action("ConfirmUserGroup", "Account", new
            {
                requestId = playerGroupBetRequest.Id,
                token     = playerGroupBetRequest.Token
            }, protocol: HttpContext.Request.Scheme);

            string linkReject = Url.Action("RejectUserGroup", "Account", new
            {
                requestId = playerGroupBetRequest.Id,
                token     = playerGroupBetRequest.Token
            }, protocol: HttpContext.Request.Scheme);

            Response response = _mailHelper.SendMail(request.Email, "Solicitud de unirse a un Grupo", $"<h1>Solicitud de unirse a un Grupo</h1>" +
                                                     $"El Usuario: {proposalPlayer.User.FullName} ({proposalPlayer.User.Email}), ha solicitado que sea miembro de su grupo de usuarios {groupBet.Name} en la aplicación FULBO PULENTA. " +
                                                     $"</hr></br></br>Si desea aceptar, haga clic aquí: <a href = \"{linkConfirm}\">Confirmar</a>" +
                                                     $"</hr></br></br> . Si desea rechazar, haga clic aquí: <a href = \"{linkReject}\">Rechazar</a>");

            if (!response.IsSuccess)
            {
                return(BadRequest(response.Message));
            }

            return(Ok("Se ha enviado un correo electrónico al usuario con su solicitud, esperamos a que responda pronto!"));
        }