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)); }
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()); }
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()); }
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)); }
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()); }
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(); } }
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()); }