public async Task <IActionResult> UpdateAgeUser(Guid id, UserUpdateAgeCommand command) { var entity = await UserRepository.GetUser(id); if (entity != null) { var validationResult = entity.UpdateAge(command); if (validationResult.Ok) { var hookResult = await EventStore.AppendAll(validationResult.DomainEvents); if (hookResult.Ok) { await UserRepository.UpdateUser(entity); return(new OkResult()); } return(new BadRequestObjectResult(hookResult.Errors)); } return(new BadRequestObjectResult(validationResult.DomainErrors)); } return(new NotFoundObjectResult(new List <string> { $"Could not find Root User with ID: {id}" })); }
public async Task AppendEvents_DomainHookFails() { var eventRepo = new Mock <IEventStoreRepository>(); eventRepo.Setup(repo => repo.AddEvents(It.IsAny <List <DomainEventBase> >())).Returns(Task.FromResult(true)); var eventStore = new EventStore(eventRepo.Object, new List <IDomainHook> { new SendPasswordMailHook() }); var hookResult = await eventStore.AppendAll(new List <DomainEventBase> { new UserCreateEvent(User.Create(new UserCreateCommand("Peter", 101)).CreatedEntity, Guid.NewGuid()) }); Assert.IsTrue(!hookResult.Ok); }
public async Task <IActionResult> CreateUser(UserCreateCommand command) { CreationResult <User> createResult = User.Create(command); if (createResult.Ok) { var hookResult = await EventStore.AppendAll(createResult.DomainEvents); if (hookResult.Ok) { await UserRepository.CreateUser(createResult.CreatedEntity); return(new CreatedResult("uri", createResult.CreatedEntity)); } return(new BadRequestObjectResult(hookResult.Errors)); } return(new BadRequestObjectResult(createResult.DomainErrors)); }
public async Task <IActionResult> AddPostUser(Guid id, UserAddPostApiCommand apiCommand) { var entity = await UserRepository.GetUser(id); if (entity != null) { var errorList = new List <string>(); var NewPost = await PostRepository.GetPost(apiCommand.NewPostId); if (NewPost == null) { errorList.Add($"Could not find Post for {nameof(apiCommand.NewPostId)} with ID: {apiCommand.NewPostId}"); } var PostToDelete = await PostRepository.GetPost(apiCommand.PostToDeleteId); if (PostToDelete == null) { errorList.Add($"Could not find Post for {nameof(apiCommand.PostToDeleteId)} with ID: {apiCommand.PostToDeleteId}"); } if (errorList.Count > 0) { return(new NotFoundObjectResult(errorList)); } var command = new UserAddPostCommand(NewPost, PostToDelete); var validationResult = entity.AddPost(command); if (validationResult.Ok) { var hookResult = await EventStore.AppendAll(validationResult.DomainEvents); if (hookResult.Ok) { await UserRepository.UpdateUser(entity); return(new OkResult()); } return(new BadRequestObjectResult(hookResult.Errors)); } return(new BadRequestObjectResult(validationResult.DomainErrors)); } return(new NotFoundObjectResult(new List <string> { $"Could not find Root User with ID: {id}" })); }