Пример #1
0
        public async Task <Unit> Handle(SeedCommand request, CancellationToken cancellationToken)
        {
            var thread = await _dbContext.Threads.FirstOrDefaultAsync(e => e.Title == "New Thread", cancellationToken);

            if (thread != null)
            {
                return(Unit.Value);
            }

            var user = await _dbContext.Users.FirstOrDefaultAsync(e => e.Username == "Admin",
                                                                  cancellationToken : cancellationToken) ?? new UserBuilder()
                       .WithPassword(BCrypt.Net.BCrypt.EnhancedHashPassword("admin"))
                       .WithUsername("Admin")
                       .WithEmailAddress("*****@*****.**")
                       .WithJoinDateUtc(_dateTimeService.UtcNow)
                       .Build();

            var subForum = await _dbContext.SubForums.FirstOrDefaultAsync(e => e.Title == "Main", cancellationToken) ??
                           new SubForumBuilder()
                           .WithName("Main")
                           .Build();

            var generalTopic =
                await _dbContext.Topics.FirstOrDefaultAsync(e => e.Title == "General", cancellationToken) ??
                new TopicBuilder()
                .WithName("General")
                .UnderSubForum(subForum)
                .Build();

            var postBuilder = new PostBuilder()
                              .WithContent("Hello World")
                              .CreatedDateUtc(_dateTimeService.UtcNow)
                              .CreatedByUser(user);

            thread = new ThreadBuilder()
                     .WithTitle("New Thread")
                     .InTopic(generalTopic)
                     .WithPost(postBuilder)
                     .CreatedBy(user)
                     .CreatedDate(_dateTimeService.UtcNow)
                     .Build();

            _dbContext.Threads.Add(thread);
            await _dbContext.SaveChangesAsync(cancellationToken);

            return(Unit.Value);
        }
Пример #2
0
        public async Task <Unit> Handle(CreatePostCommand request, CancellationToken cancellationToken)
        {
            if (!_currentUserService.TryGetCurrentUser(out var user))
            {
                throw new CreatePostCommandException("Could not get current user");
            }

            var post = new PostBuilder()
                       .InThread(request.ThreadId)
                       .WithContent(request.Content)
                       .CreatedDateUtc(_dateTimeService.UtcNow)
                       .CreatedByUser(user !.Id)
                       .Build();

            _context.Posts.Add(post);
            await _context.SaveChangesAsync(cancellationToken);

            return(Unit.Value);
        }