public async Task <IActionResult> PostLike(string postId) { var bp = await _blogDbService.GetBlogPostAsync(postId); if (bp != null) { //Check that this user has not already liked this post var userId = User.Claims.FirstOrDefault(p => p.Type == ClaimTypes.NameIdentifier).Value; var like = await _blogDbService.GetBlogPostLikeForUserIdAsync(postId, userId); if (like == null) { var blogPostLike = new BlogPostLike { LikeId = Guid.NewGuid().ToString(), PostId = postId, LikeAuthorId = User.Claims.FirstOrDefault(p => p.Type == ClaimTypes.NameIdentifier).Value, LikeAuthorUsername = User.Identity.Name, LikeDateCreated = DateTime.UtcNow }; await _blogDbService.CreateBlogPostLikeAsync(blogPostLike); } } return(RedirectToAction("PostView", new { postId = postId })); }
public async Task CreateBlogPostLikeAsync(BlogPostLike like) { //string str = JsonConvert.SerializeObject(comment); //dynamic obj = JsonConvert.DeserializeObject(str); var obj = new dynamic[] { like.PostId, like }; //var result = await _blogDbService.GetContainer("database", "container").Scripts.ExecuteStoredProcedureAsync<string>("spCreateToDoItem", new PartitionKey("Personal"), newItem); var result = await _postsContainer.Scripts.ExecuteStoredProcedureAsync <string>("createLike", new PartitionKey(like.PostId), obj); //await this._postsContainer.CreateItemAsync<BlogPostComment>(comment, new PartitionKey(comment.PostId)); }
public async Task <BlogPostLike> GetBlogPostLikeForUserIdAsync(string postId, string userId) { var queryString = $"SELECT TOP 1 * FROM p WHERE p.type='like' AND p.postId = @PostId AND p.userId = @UserId ORDER BY p.dateCreated DESC"; var queryDef = new QueryDefinition(queryString); queryDef.WithParameter("@PostId", postId); queryDef.WithParameter("@UserId", userId); var query = this._postsContainer.GetItemQueryIterator <BlogPostLike>(queryDef); BlogPostLike like = null; if (query.HasMoreResults) { var response = await query.ReadNextAsync(); var ru = response.RequestCharge; like = response.FirstOrDefault(); } return(like); }