public IActionResult RemoveGroup([FromBody] RemoveGroupForDto model) { var adminUserId = User.FindFirst(ClaimTypes.NameIdentifier).Value; if (ModelState.IsValid) { var group = _groupService.RemoveGroupAsync(adminUserId, model); if (group.Result.IsSuccess) { return(Ok(group.Result)); } return(BadRequest(group.Result)); } return(BadRequest("Some properties are not valid.")); }
public async Task <GroupManagerResponse> RemoveGroupAsync(string userId, RemoveGroupForDto model) { if (model == null || userId == null) { throw new NullReferenceException("Model is null."); } await using (_context) { var games = await _context.Games.Where(p => p.GroupId == model.GroupId).ToListAsync(); var group = await _context.Groups.FindAsync(model.GroupId); var members = _context.GroupMembers.Where(p => p.GroupId == group.Id).ToList(); if (_context.GroupMembers.SingleOrDefaultAsync(u => u.UserId == userId && u.GroupId == model.GroupId).Result.Role != "Admin") { return new GroupManagerResponse { Message = "You are not authorized to do this.", IsSuccess = false } } ; _context.RemoveRange(games); _context.RemoveRange(members); _context.Remove(group); await _context.SaveChangesAsync(); return(new GroupManagerResponse { Message = "Grup silindi.", IsSuccess = true }); } }