Beispiel #1
0
        public Task <Person> CreateAsync(Person value)
        {
            value.Validate(nameof(value)).Mandatory().Run().ThrowOnError();

            return(ManagerInvoker.Current.InvokeAsync(this, async() =>
            {
                ExecutionContext.Current.OperationType = OperationType.Create;
                Cleaner.CleanUp(value);
                if (_createOnPreValidateAsync != null)
                {
                    await _createOnPreValidateAsync(value).ConfigureAwait(false);
                }

                MultiValidator.Create()
                .Add(value.Validate(nameof(value)).Entity(PersonValidator.Default))
                .Additional((__mv) => _createOnValidate?.Invoke(__mv, value))
                .Run().ThrowOnError();

                if (_createOnBeforeAsync != null)
                {
                    await _createOnBeforeAsync(value).ConfigureAwait(false);
                }
                var __result = await _dataService.CreateAsync(value).ConfigureAwait(false);
                if (_createOnAfterAsync != null)
                {
                    await _createOnAfterAsync(__result).ConfigureAwait(false);
                }
                return Cleaner.Clean(__result);
            }));
        }
Beispiel #2
0
        public Task <Person> CreateAsync(Person value) => ManagerInvoker.Current.InvokeAsync(this, async() =>
        {
            await value.Validate().Mandatory().RunAsync(throwOnError: true).ConfigureAwait(false);

            value.Id = await _guidIdGen.GenerateIdentifierAsync <Person>().ConfigureAwait(false);
            Cleaner.CleanUp(value);
            await(_createOnPreValidateAsync?.Invoke(value) ?? Task.CompletedTask).ConfigureAwait(false);

            await MultiValidator.Create()
            .Add(value.Validate(nameof(value)).Entity().With <IValidator <Person> >())
            .Additional((__mv) => _createOnValidate?.Invoke(__mv, value))
            .RunAsync(throwOnError: true).ConfigureAwait(false);

            await(_createOnBeforeAsync?.Invoke(value) ?? Task.CompletedTask).ConfigureAwait(false);
            var __result = await _dataService.CreateAsync(value).ConfigureAwait(false);
            await(_createOnAfterAsync?.Invoke(__result) ?? Task.CompletedTask).ConfigureAwait(false);
            return(Cleaner.Clean(__result));
        }, BusinessInvokerArgs.Create);