public async Task <bool> RemoveClan(RemoveClanRequestModel model, bool lateDelete) { var leader = await _context.ClanMembers.FirstOrDefaultAsync(t => t.PlayerId == model.PlayerId && t.ClanId == model.ClanId); if (leader == null) { return(false); } var removeMembers = await RemoveAllClanMembers(model.ClanId, !lateDelete); if (!removeMembers) { return(false); } var clan = await _context.Clans.FirstOrDefaultAsync(t => t.Id == model.ClanId); var removeStatistics = await _context.ClanStatistics.FirstOrDefaultAsync(t => t.ClanId == clan.Id); if (removeStatistics == null) { return(false); } if (clan == null) { return(false); } var invitations = await _context.InvationsPlayerToClan.Where(t => t.ClanId == model.ClanId).ToListAsync(); if (invitations != null) { _context.InvationsPlayerToClan.RemoveRange(invitations); } var leaderResult = _context.ClanMembers.Remove(leader); var statsResult = _context.ClanStatistics.Remove(removeStatistics); var clanResult = _context.Clans.Remove(clan); if (leaderResult.State == EntityState.Deleted && clanResult.State == EntityState.Deleted && statsResult.State == EntityState.Deleted) { if (!lateDelete) { await _context.SaveChangesAsync(); } return(true); } return(false); }
public async Task <bool> RemoveClan(RemoveClanRequestModel model) { return(await _clanService.RemoveClan(model, true)); }