public async Task <Post> SavePost(PostForUpload post) { var item = await _context.Post.AddAsync(new Post { UserId = post.UserId, Title = post.Title, Content = post.Content, Tags = post.Tags, Status = post.Status, Price = post.Price, Address = post.Address, UpTime = DateTime.UtcNow, EditTime = DateTime.UtcNow }); await _context.SaveChangesAsync(); if (post.Medias != null) { foreach (var media in post.Medias) { await _context.MediaLink.AddAsync(new MediaLink { MediaId = Guid.NewGuid().ToString(), PostId = item.Entity.PostId, ResType = media.ResType.ToString(), ResUri = media.ResUri.RemoveServerAddress(_imageServer) }); } } await _context.SaveChangesAsync(); return(item.Entity); }
public async Task <Post> UpdatePost(int postId, PostForUpload post) { var item = await _context.Post.Include(it => it.MediaLink).FirstOrDefaultAsync(it => it.PostId == postId); if (item == null) { return(null); } item.Title = post.Title; item.Content = post.Content; item.Tags = post.Tags; item.Status = post.Status; item.Price = post.Price; item.Address = post.Address; _context.MediaLink.RemoveRange(item.MediaLink); if (post.Medias != null) { foreach (var media in post.Medias) { await _context.MediaLink.AddAsync(new MediaLink { MediaId = Guid.NewGuid().ToString(), PostId = postId, ResType = media.ResType.ToString(), ResUri = media.ResUri.RemoveServerAddress(_imageServer) }); } } await _context.SaveChangesAsync(); return(item); }
public async Task <ActionResult <PostLarge> > PostNew([FromBody] PostForUpload post) { var userId = User.FindFirst(ClaimTypes.NameIdentifier)?.Value; if (!int.TryParse(userId, out int uid)) { return(BadRequest(new { error = "Unknow user ID." })); } post.UserId = uid; return(PostLarge.FromPost(await _repo.SavePost(post), _imageServer)); }
public async Task <ActionResult <PostLarge> > EditPost(int postId, [FromBody] PostForUpload post) { var userId = User.FindFirst(ClaimTypes.NameIdentifier)?.Value; if (!int.TryParse(userId, out int uid)) { return(BadRequest(new { error = "Unknow user ID." })); } var item = await _repo.GetPost(postId); if (item == null) { return(NotFound()); } if (item.UserId != uid) { return(Forbid()); } return(PostLarge.FromPost(await _repo.UpdatePost(postId, post), _imageServer)); }
public async Task <IActionResult> CreatePost([FromBody] PostForUpload postForUpload) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var user = await _postService.GetPostAuthor(postForUpload.UserId); var postToCreate = new Post { content = postForUpload.content, imageURL = "", hidden = postForUpload.hidden, createdAt = DateTime.Now, edited = false, UserId = user.Id }; var createPost = await _postService.CreatePost(postToCreate); return(Ok(new { Id = createPost.Id, content = createPost.content, imageURL = createPost.imageURL, edited = createPost.edited, createdAt = createPost.createdAt, UserId = createPost.UserId, User = new { Id = user.Id, name = user.name, email = user.email, username = user.username, avatarBackground = user.avatarBackground, createdAt = user.createdAt } })); }