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); }