Exemplo n.º 1
0
        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}"
            }));
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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));
        }
Exemplo n.º 4
0
        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}"
            }));
        }