Delete owned campaigns on user delete and preserve campaign characters
This commit is contained in:
@@ -321,10 +321,19 @@ public sealed class GameService : IGameService
|
||||
return ServiceResult<bool>.Failure("user_not_found", "User was not found.");
|
||||
|
||||
var gmCampaignIds = m_CampaignsById.Values.Where(campaign => campaign.GmUserId == targetUser.Id).Select(campaign => campaign.Id).ToArray();
|
||||
var gmCampaignIdSet = gmCampaignIds.ToHashSet();
|
||||
var preservedCharacterIds = m_CharactersById.Values
|
||||
.Where(character => character.CampaignId.HasValue && gmCampaignIdSet.Contains(character.CampaignId.Value))
|
||||
.Select(character => character.Id)
|
||||
.ToHashSet();
|
||||
|
||||
foreach (var campaignId in gmCampaignIds)
|
||||
DeleteCampaignLocked(campaignId);
|
||||
|
||||
var ownedCharacterIds = m_CharactersById.Values.Where(character => character.OwnerUserId == targetUser.Id).Select(character => character.Id).ToArray();
|
||||
var ownedCharacterIds = m_CharactersById.Values
|
||||
.Where(character => character.OwnerUserId == targetUser.Id && !preservedCharacterIds.Contains(character.Id))
|
||||
.Select(character => character.Id)
|
||||
.ToArray();
|
||||
foreach (var characterId in ownedCharacterIds)
|
||||
DeleteCharacterLocked(characterId);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user