private async Task <Character> TryAddCharacterNameToConstructedTeam(int teamId, string characterName, string customAlias) { var character = await _characterService.GetCharacterByNameAsync(characterName); if (character == null) { return(null); } using (await _constructedTeamLock.WaitAsync($"{teamId}^{character.Id}")) { if (await IsCharacterIdOnTeam(teamId, character.Id)) { return(null); } string playerAlias; if (string.IsNullOrWhiteSpace(customAlias)) { playerAlias = Player.GetTrimmedPlayerName(character.Name, character.WorldId); if (string.IsNullOrWhiteSpace(playerAlias)) { playerAlias = characterName; } } else { playerAlias = customAlias; } if (await TryAddCharacterToConstructedTeamDb(teamId, character.Id, character.FactionId, playerAlias)) { var member = new ConstructedTeamPlayerMembership { ConstructedTeamId = teamId, CharacterId = character.Id, FactionId = character.FactionId, Alias = playerAlias }; var memberDetails = ConvertToMemberDetailsModel(character, member); var changeMessage = new ConstructedTeamMemberChangeMessage(teamId, character, memberDetails, ConstructedTeamMemberChangeType.Add); _messageService.BroadcastConstructedTeamMemberChangeMessage(changeMessage); return(character); } else { return(null); } } }
public async Task <bool> TryRemoveCharacterFromConstructedTeam(int teamId, string characterId) { using (await _constructedTeamLock.WaitAsync($"{teamId}^{characterId}")) { if (await TryRemoveCharacterFromConstructedTeamDb(teamId, characterId)) { var changeMessage = new ConstructedTeamMemberChangeMessage(teamId, characterId, ConstructedTeamMemberChangeType.Remove); _messageService.BroadcastConstructedTeamMemberChangeMessage(changeMessage); return(true); } else { return(false); } } }
public async Task <bool> TryClearMemberAlias(int teamId, string characterId, string oldAlias) { if (string.IsNullOrWhiteSpace(oldAlias)) { return(false); } using (await _constructedTeamLock.WaitAsync($"{teamId}^{characterId}")) { if (await TryUpdateMemberAliasInDb(teamId, characterId, null)) { var changeMessage = new ConstructedTeamMemberChangeMessage(teamId, characterId, ConstructedTeamMemberChangeType.UpdateAlias, oldAlias, null); _messageService.BroadcastConstructedTeamMemberChangeMessage(changeMessage); return(true); } else { return(false); } } }
public void BroadcastConstructedTeamMemberChangeMessage(ConstructedTeamMemberChangeMessage message) { OnRaiseConstructedTeamMemberChangeEvent(new ScrimMessageEventArgs <ConstructedTeamMemberChangeMessage>(message)); TrySaveToLogFile(message.Info); }