//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);
        }
Example #2
0
        //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 :( ");
            }
        }