//Call the Web service and validate the result. if the result is not valid prepare the validation message. public async Task <GroupedPetResult> GetAsync(string petType) { var result = new GroupedPetResult(); var persons = await GetPersons(); if (persons != null) { var validator = new PersonListValidator(); var validationResult = validator.Validate(persons); result.IsSuccess = validationResult.IsValid; if (validationResult.IsValid) { result.Message = ""; result.GroupedPetVms = GroupPets(persons, petType); } else { result.Message = string.Join("\n", validationResult.Errors.Select(x => $"{x.PropertyName}: Error: {x.ErrorMessage}")); Logger.Error($"Validation Error:-{result.Message}"); result.IsSuccess = false; } } return(result); }
//Format and Show the result in UI in desired format public async Task ShowAndFormatAsync(string petType) { Console.WriteLine("Getting result. Please wait..."); GroupedPetResult result = await _psersonServices.GetAsync(petType); Console.Clear(); if (result != null && result.IsSuccess && result.GroupedPetVms.Any()) { Console.OutputEncoding = System.Text.Encoding.UTF8; foreach (var pet in result.GroupedPetVms) { if (pet.PetNames.Any()) { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine(pet.Gender); Console.WriteLine(); Console.ForegroundColor = ConsoleColor.Cyan; foreach (var name in pet.PetNames) { Console.WriteLine($"\t • {name}", Color.Magenta); } Console.WriteLine(); } else { Console.WriteLine($"It seems that {pet.Gender}s people does not have this type of pet :( "); } } } else { Console.WriteLine("?It seems there is no result available :( "); } }