Ejemplo n.º 1
0
        public async Task <ValidatorResult <TResponse> > ValidateAsync <TRequest, TResponse, TFluentValidator>(TRequest request,
                                                                                                               IToasterEvent toasterEvent, CancellationToken cancellationToken = default)
            where TRequest : new()
            where TResponse : BaseResponse, new()
            where TFluentValidator : AbstractValidator <TRequest>, new()
        {
            var response        = new TResponse();
            var fluentValidator = new TFluentValidator();
            var result          = new ValidatorResult <TResponse>();

            var validation = await fluentValidator.ValidateAsync(request, cancellationToken);

            if (!validation.IsValid)
            {
                response.Succeeded = false;

                foreach (var failure in validation.Errors)
                {
                    response.Errors.Add(failure.ErrorMessage);
                }

                await _eventSender.SendAsync(toasterEvent.TransformInFailure());

                result.Failed   = true;
                result.Response = new BadRequestObjectResult(response);
                return(result);
            }

            response.Succeeded = true;
            result.Response    = new OkObjectResult(response);
            return(result);
        }
        public async Task <int> SaveAsync(IToasterEvent toasterEvent, int expectedResult = 1)
        {
            var result = await _context.SaveChangesAsync();

            if (result == expectedResult)
            {
                var success = EventBuilder.BuildToasterEvent(toasterEvent);
                await _eventSender.SendAsync(success.ToJson());
            }
            else
            {
                var failure = toasterEvent.TransformInFailure();
                await _eventSender.SendAsync(failure);
            }

            return(result);
        }