public async Task <QueryResult> AddCharacter(Character character) { if (character == null) { return(QueryResult.EmptyField(nameof(character))); } if (!character.Validate()) { return(QueryResult.InvalidField(nameof(character))); } if (character.Phrases == null) { character.Phrases = new List <Phrase>(); } if (character.Idioms == null) { character.Idioms = new List <Idiom>(); } if (!character.Usages.Any()) { return(QueryResult.InvalidField(nameof(character))); } if (!await _characterManager.AddCharacterAsync(character)) { return(QueryResult.QueryFailed("The character already exists")); } return(QueryResult.Succeded); }