Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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));
        }
Exemple #4
0
        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));
        }
Exemple #5
0
        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
                }
            }));
        }