Beispiel #1
0
        public async Task <ValidationResult> ValidateAsync(IClient client)
        {
            // 1. Validate client
            var clientTask = _clientValidator.ValidateAsync(client);

            // 2. Validate Contact Information
            var tasks       = client.Contacts?.Select(c => _contactApplicationService.ValidateAsync(c));
            var contactTask = tasks == null?Task.FromResult(new ValidationResult[0]) : Task.WhenAll(tasks);

            // 3. Validate Address Information
            var addressTask = _addressApplicationService.ValidateAsync(client.Address);

            await Task.WhenAll(clientTask, contactTask, addressTask);

            // Get all errors if any
            var validationResult = clientTask.Result
                                   .From(contactTask.Result?.SelectMany(r => r.Errors).ToList())
                                   .From(addressTask.Result?.Errors);

            return(validationResult);
        }