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