Exemple #1
0
            protected override async Task <Result <Model> > HandleCore(Command message)
            {
                var author = await SingleUserAsync(_currentUserAccessor.GetCurrentUsername());

                if (author == null)
                {
                    return(Result.Fail <Model> ("Author does not exit"));
                }

                var category = await SingleCategoryAsync(message.CategoryId);

                if (category == null)
                {
                    return(Result.Fail <Model> ("Category does not exit"));
                }

                var post = new Post
                {
                    Title       = message.Title,
                    Body        = message.Body,
                    Category    = category,
                    Author      = author,
                    CreatedDate = DateTime.UtcNow
                };

                if (message.Tags != null)
                {
                    var tags     = new List <Tag> ();
                    var postTags = new List <PostTag> ();
                    foreach (var tag in message.Tags)
                    {
                        var t = await SingleTagAsync(tag);

                        if (t == null)
                        {
                            t = new Tag {
                                Name = tag
                            };
                            await _context.Tags.AddAsync(t);

                            await _context.SaveChangesAsync();
                        }
                        tags.Add(t);
                        var pt = new PostTag
                        {
                            Post = post,
                            Tag  = t
                        };
                        postTags.Add(pt);
                    }
                    await _context.PostTags.AddRangeAsync(postTags);
                }
                await _context.Posts.AddAsync(post);

                await _context.SaveChangesAsync();

                var model = _mapper.Map <Post, Model> (post);

                return(Result.Ok(model));
            }
Exemple #2
0
            protected override async Task <Result> HandleCore(Command message)
            {
                var post = await SinglePostAsync(message.PostId);

                if (post == null)
                {
                    return(Result.Fail <Command> ("Post does not exit"));
                }

                var existComment = await SingleCommentAsync(message.Id);

                if (existComment == null)
                {
                    return(Result.Fail <Command> ("Comment does not exit"));
                }
                _context.Comments.Remove(existComment);
                await _context.SaveChangesAsync();

                var comment = new Comment
                {
                    Author      = await SingleUserAsync(_currentUserAccessor.GetCurrentUsername()),
                    Body        = message.Body,
                    CreatedDate = DateTime.UtcNow
                };
                await _context.Comments.AddAsync(comment);

                post.Comments.Add(comment);

                await _context.SaveChangesAsync();

                return(Result.Ok());
            }
Exemple #3
0
            protected override async Task <Result> HandleCore(Command message)
            {
                var post = await SingleAsync(message.Id);

                if (post == null)
                {
                    return(Result.Fail <Command> ("Post does not exit"));
                }

                var category = await SingleCategoryAsync(message.CategoryId);

                if (category == null)
                {
                    return(Result.Fail <Command> ("Category does not exit"));
                }

                post.Title      = message.Title ?? post.Title;
                post.Body       = message.Body ?? post.Body;
                post.CategoryId = message.CategoryId;

                if (message.Tags != null)
                {
                    post.PostTags.Clear();

                    var tags     = new List <Tag> ();
                    var postTags = new List <PostTag> ();
                    foreach (var tag in message.Tags)
                    {
                        var t = await SingleTagAsync(tag);

                        if (t == null)
                        {
                            t = new Tag {
                                Name = tag
                            };
                            await _context.Tags.AddAsync(t);

                            await _context.SaveChangesAsync();
                        }
                        tags.Add(t);
                        var pt = new PostTag
                        {
                            Post = post,
                            Tag  = t
                        };
                        postTags.Add(pt);
                    }
                    await _context.PostTags.AddRangeAsync(postTags);
                }

                await _context.SaveChangesAsync();

                return(Result.Ok());
            }
Exemple #4
0
            protected override async Task <Result <Model> > HandleCore(Command message)
            {
                if (await ExistUser(message.Username))
                {
                    return(Result.Fail <Model> ("User exits"));
                }

                if (await ExistEmail(message.Email))
                {
                    return(Result.Fail <Model> ("Email exits"));
                }

                var salt = Guid.NewGuid().ToByteArray();
                var user = new ApplicationUser
                {
                    Username       = message.Username,
                    Email          = message.Email,
                    HashedPassword = _passwordHasher.Hash(message.Password, salt),
                    Salt           = salt
                };

                _context.Users.Add(user);
                await _context.SaveChangesAsync();

                var model = _mapper.Map <ApplicationUser, Model> (user);

                return(Result.Ok(model));
            }
Exemple #5
0
            protected override async Task <Result> HandleCore(Command message)
            {
                var currentUsername = _currentUserAccessor.GetCurrentUsername();

                var user = await SingleAsync(currentUsername);

                if (user == null)
                {
                    return(Result.Fail <Command> ("User does not exist"));
                }

                user.Username = message.Username ?? user.Username;
                user.Email    = message.Email ?? user.Email;

                if (!string.IsNullOrWhiteSpace(message.Password))
                {
                    var salt = Guid.NewGuid().ToByteArray();
                    user.HashedPassword = _passwordHasher.Hash(message.Password, salt);
                    user.Salt           = salt;
                }

                await _context.SaveChangesAsync();

                return(Result.Ok());
            }
Exemple #6
0
        public static async Task Initialize(
            BloggyContext context,
            IPasswordHasher passwordHasher,
            ILogger <BloggyContextInitializer> logger)
        {
            context.Database.EnsureCreated();

            if (!context.Users.Any())
            {
                var salt           = Guid.NewGuid().ToByteArray();
                var hashedPassword = passwordHasher.Hash("P@ssw0rd!", salt);
                context.Users.AddRange(
                    GetPreconfiguredUsers(hashedPassword, salt));

                await context.SaveChangesAsync();
            }

            if (!context.Tags.Any())
            {
                context.Tags.AddRange(
                    GetPreconfiguredTags());

                await context.SaveChangesAsync();
            }

            if (!context.Categories.Any())
            {
                context.Categories.AddRange(
                    GetPreconfiguredCategories());

                await context.SaveChangesAsync();
            }

            if (!context.Posts.Any())
            {
                context.Posts.AddRange(
                    GetPreconfiguredPosts());

                await context.SaveChangesAsync();
            }

            if (!context.PostTags.Any())
            {
                context.PostTags.AddRange(
                    GetPreconfiguredPostTags());

                await context.SaveChangesAsync();
            }

            if (!context.Comments.Any())
            {
                context.Comments.AddRange(
                    GetPreconfiguredComments());

                await context.SaveChangesAsync();
            }
        }
Exemple #7
0
            protected override async Task <Result> HandleCore(Command message)
            {
                var post = await SinglePostAsync(message.PostId);

                if (post == null)
                {
                    return(Result.Fail <Command> ("Post does not exit"));
                }

                var comment = await SingleCommentAsync(message.Id);

                if (comment == null)
                {
                    return(Result.Fail <Command> ("Comment does not exit"));
                }

                _context.Comments.Remove(comment);
                await _context.SaveChangesAsync();

                return(Result.Ok());
            }