Example #1
0
        public async Task <TCommandResult> Handle(TCommand request, CancellationToken cancellationToken)
        {
            //Fail Fast Validation
            request.Validate();

            if (request.Invalid)
            {
                AddCommandNotifications(request.Notifications);
                await Notify(Notifications);

                return(new TCommandResult());
            }

            //Execução da implementação
            var result = await HandleCommand(request);

            if (!result.Success && !string.IsNullOrEmpty(result.Message))
            {
                AddNotification("result", result.Message);
            }

            await Notify(Notifications);

            //await RaiseEvents();

            if (!_notificationService.HasNotifications())
            {
                await this.PostHandle();
            }

            return(result);
        }
Example #2
0
        public ValidationResultModel <TResult> Build <TResult>(TResult result)
        {
            if (_domainNotificationService.HasNotifications())
            {
                return(ValidationResultModel <TResult> .Instantiate(_domainNotificationService
                                                                    .GetNotifications()
                                                                    .Select(n =>
                {
                    var resource = _localization.GetResource(n.Key, n.Value);
                    if (!string.IsNullOrEmpty(resource))
                    {
                        return new NotificationModel(n.Key, resource, n.Type);
                    }
                    else
                    {
                        return new NotificationModel(n.Key, n.Value, n.Type);
                    }
                }).ToList(), result));
            }


            return(ValidationResultModel <TResult> .Instantiate(result));
        }