/// <summary> /// Gets a string representation of this account, under the given format : 123456 (John Doe, Joe Dohn). /// </summary> /// <returns></returns> public override string ToString() { // If no characters on this account, return a "no characters" mention if (CharacterIdentities.Count() == 0) { return(String.Format("{0} (no characters)", m_userId)); } // Otherwise, return the chars' names into parenthesis string names = String.Empty; foreach (CharacterIdentity id in CharacterIdentities) { names += id.Name; names += ", "; } return(String.Format("{0} ({1})", m_userId, names.TrimEnd(", ".ToCharArray()))); }
/// <summary> /// Gets a string representation of this API key, under the given format : 123456 (John Doe, Jane Doe). /// </summary> /// <returns></returns> public override string ToString() { // If no characters on this API key, return only the API key ID if (!CharacterIdentities.Any()) { return(ID.ToString(CultureConstants.DefaultCulture)); } // Otherwise, return the chars' names into parenthesis StringBuilder names = new StringBuilder(); foreach (CharacterIdentity id in CharacterIdentities) { names.Append(id.CharacterName); if (id != CharacterIdentities.Last()) { names.Append(", "); } } return($"{ID} ({names})"); }
/// <summary> /// Called when character's skill in training gets updated. /// </summary> /// <param name="result">The result.</param> /// <param name="character">The character's name.</param> private void OnSkillInTrainingUpdated(APIResult <SerializableAPISkillInTraining> result, string characterName) { CCPCharacter ccpCharacter = EveClient.Characters.FirstOrDefault(x => x.Name == characterName) as CCPCharacter; // Return on error if (result.HasError) { // Checks if EVE Backend Database is temporarily disabled if (result.EVEBackendDatabaseDisabled) { return; } if (ccpCharacter != null) { EveClient.Notifications.NotifySkillInTrainingError(ccpCharacter, result); } m_skillInTrainingCache[characterName].State = ResponseState.InError; return; } if (ccpCharacter != null) { EveClient.Notifications.InvalidateCharacterAPIError(ccpCharacter); } m_skillInTrainingCache[characterName].State = result.Result.SkillInTraining == 1 ? ResponseState.Training : ResponseState.NotTraining; // In the event this becomes a very long running process because of latency // and characters have been removed from the account since they were queried // remove those characters from the cache IEnumerable <KeyValuePair <string, SkillInTrainingResponse> > toRemove = m_skillInTrainingCache.Where(x => !CharacterIdentities.Any(y => y.Name == x.Key)); foreach (var charToRemove in toRemove) { m_skillInTrainingCache.Remove(charToRemove.Key); } // If we did not get response from a character in account yet // or there was an error in any responce, // we are not sure so wait until next time if (m_skillInTrainingCache.Any(x => x.Value.State == ResponseState.Unknown || x.Value.State == ResponseState.InError)) { return; } // We have successful responces from all characters in account, // so we notify the user and fire the event NotifyAccountNotInTraining(); // Fires the event regarding the account characters skill in training update EveClient.OnAccountCharactersSkillInTrainingUpdated(this); // Reset update pending flag m_updatePending = false; }
/// <summary> /// Called when character's skill in training gets updated. /// </summary> /// <param name="result">The result.</param> /// <param name="characterName">The character's name.</param> private void OnSkillInTrainingUpdated(CCPAPIResult <SerializableAPISkillInTraining> result, string characterName) { // Quit if the API key was deleted while it was updating if (!EveMonClient.APIKeys.Contains(this)) { return; } CCPCharacter ccpCharacter = EveMonClient.Characters.OfType <CCPCharacter>().FirstOrDefault(x => x.Name == characterName); // Checks if EVE database is out of service if (result.EVEDatabaseError) { return; } // Return on error if (result.HasError) { if (ccpCharacter != null && ccpCharacter.ShouldNotifyError(result, CCPAPICharacterMethods.SkillInTraining)) { EveMonClient.Notifications.NotifySkillInTrainingError(ccpCharacter, result); } m_skillInTrainingCache[characterName].State = ResponseState.InError; return; } m_skillInTrainingCache[characterName].State = result.Result.SkillInTraining == 1 ? ResponseState.Training : ResponseState.NotTraining; // In the event this becomes a very long running process because of latency // and characters have been removed from the API key since they were queried // remove those characters from the cache IEnumerable <KeyValuePair <string, SkillInTrainingResponse> > toRemove = m_skillInTrainingCache.Where(x => CharacterIdentities.All(y => y.CharacterName != x.Key)); foreach (KeyValuePair <string, SkillInTrainingResponse> charToRemove in toRemove) { m_skillInTrainingCache.Remove(charToRemove.Key); } // If we did not get response from a character in API key yet // or there was an error in any responce, // we are not sure so wait until next time if (m_skillInTrainingCache.Any(x => x.Value.State == ResponseState.Unknown || x.Value.State == ResponseState.InError)) { return; } // We have successful responces from all characters in API key, // so we notify the user and fire the event NotifyAccountNotInTraining(); // Fires the event regarding the API key characters skill in training update EveMonClient.OnCharactersSkillInTrainingUpdated(this); // Reset update pending flag m_updatePending = false; }