示例#1
0
        public async Task <GameManagerResponse> RemoveGameAsync(RemoveGameForDto model, string userId)
        {
            if (model == null || userId == null)
            {
                throw new NullReferenceException("Model is null.");
            }

            await using (_context)
            {
                var userClaim = await _context.GroupMembers.SingleOrDefaultAsync(u =>
                                                                                 u.UserId == userId && u.GroupId == model.GroupId && u.Role == "Admin");

                var game = await _context.Games.FindAsync(model.GameId);

                var players = _context.GamePlayers.Where(x => x.GameId == model.GameId).ToList();

                if (userClaim == null || game == null)
                {
                    return new GameManagerResponse
                           {
                               Message   = "Oyun bulunamadı veya yetkiniz yok.",
                               IsSuccess = false
                           }
                }
                ;

                foreach (var player in players)
                {
                    var user = _userManager.FindByIdAsync(player.UserId).Result;

                    await _mailService.SendMailAsync(user.Email, "Davetli olduğunuz oyun iptal edildi.",
                                                     $"<h1>Davetli olduğunuz oyun iptal oldu!</h1><p>İptal edilen oyun bilgileri: {game.GameDate} {game.Location}.</p>");
                }

                _context.RemoveRange(players);
                _context.Remove(game);
                await _context.SaveChangesAsync();

                return(new GameManagerResponse
                {
                    Message = "Oyun başarıyla silindi.",
                    IsSuccess = true
                });
            }
        }
        public IActionResult RemoveGame([FromBody] RemoveGameForDto model)
        {
            var userId = User.FindFirst(ClaimTypes.NameIdentifier).Value;

            if (ModelState.IsValid)
            {
                var group = _gameService.RemoveGameAsync(model, userId);

                if (group.Result.IsSuccess)
                {
                    return(Ok(group.Result));
                }

                return(BadRequest(group.Result));
            }

            return(BadRequest("Some properties are not valid."));
        }