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(); } }
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()); }
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!")); }