public async Task <RequestResult> SendCommand <T>(IRequest <T> request) { var commandResponse = await _mediator.Send(request); // Fire pre post events await _eventDispatcher.FirePreCommitEvents(); if (_domainNotifications.HasNotifications()) { return(new RequestResult { Success = false, Messages = _domainNotifications.GetAll() }); } else { if (await _unitOfWork.Commit()) { // Fire after commit events await _eventDispatcher.FireAfterCommitEvents(); return(new RequestResult { Success = true, Data = commandResponse }); } else { return(new RequestResult { Success = false, Messages = new List <string>() { "An error ocurred while saving data" } }); } } }