public IActionResult Like(int postId) { if (!isLoggedIn) { return(RedirectToAction("Index", "Home")); } UserPostLike existingLike = db.UserPostLikes .FirstOrDefault(like => like.PostId == postId && (int)uid == like.UserId); if (existingLike == null) { UserPostLike like = new UserPostLike() { PostId = postId, UserId = (int)uid }; db.UserPostLikes.Add(like); } else { db.UserPostLikes.Remove(existingLike); } db.SaveChanges(); return(RedirectToAction("All")); }
public ActionResult PostLike(int postId, int discussionId) { var userId = User.Identity.GetUserId(); var like = context.UsersPostLikes.SingleOrDefault(l => l.PostId == postId && l.UserId == userId); if (like != null) { context.UsersPostLikes.Remove(like); } else { like = new UserPostLike() { PostId = postId, UserId = userId }; context.UsersPostLikes.Add(like); var dislike = context.UsersPostDislikes.SingleOrDefault(l => l.PostId == postId && l.UserId == userId); if (dislike != null) { context.UsersPostDislikes.Remove(dislike); } } context.SaveChanges(); return(RedirectToAction("Discussion", new { discussionId = discussionId })); }
public async Task <IActionResult> LikePost([FromRoute] int id) { if (!await PostExist(id)) { return(BadRequest($"Пост не найден")); } var user = await _currentUser.GetCurrentUser(HttpContext); var like = await _context.UserPostLike.FirstOrDefaultAsync(l => l.UserId == user.Id && l.PostId == id); var post = await _context.Posts.FirstOrDefaultAsync(c => c.Id == id); if (like != null) { return(BadRequest("Вы уже поставили лайк")); } like = new UserPostLike { UserId = user.Id, PostId = id }; _context.UserPostLike.Add(like); post.LikesCount++; _context.Update(post); await _context.SaveChangesAsync(); return(Ok()); }
public LikePostReturn UnlikePost(int postId, string currUserId) { LikePostReturn ret = new LikePostReturn(); ret.IsActionSucceed = true; ret.IsLiked = false; UserPostLike uLike = _dbEntitySet.Where(f => f.UserInfoId == currUserId && f.PostId == postId).FirstOrDefault(); if (uLike != null) { _dbEntitySet.Remove(uLike); Post pst = _context.Set <Post>().AsNoTracking().FirstOrDefault(p => p.Id == postId); int[] gps = _context.SetChild <GroupPost>().Where(p => p.PostId == postId).Select(f => f.GroupId).ToArray(); List <UserGroup> ugs = _context.SetChild <UserGroup>().Where(p => gps.Contains(p.GroupId) && p.UserId == pst.UserInfoId).ToList(); foreach (var item in ugs) { item.UserReputationInGroup -= 10; _context.GetChildDbEntityEntrySafely <UserGroup>(item).State = EntityState.Modified; } if (!(_context.SaveChanges() <= 0)) { int[] prevLikes = _userLikesCacheService.GetUserLikedPostsIds(currUserId); prevLikes = prevLikes.Where(val => val != postId).ToArray(); _userLikesCacheService.SetUserLikedPostsIds(currUserId, prevLikes, 30); } } ret.PostAuthorId = _postSet.Where(p => p.Id == postId).Select(p => p.UserInfoId).FirstOrDefault(); return(ret); }
public async Task <Unit> Handle(Command request, CancellationToken cancellationToken) { var category = await _context.Categories.FindAsync(request.CategoryId); if (category == null) { throw new RestException(HttpStatusCode.NotFound, new { Category = "Not found" }); } var post = new Post { Id = request.Id, Heading = request.Heading, Description = request.Description, Category = category, Date = DateTime.Now, For = 0, Against = 0, Photos = new List <Photo>(), IsActive = true, }; if (request.File != null && request.File.Length > 0) { var photoUploadResult = await _photoAccessor.UploadFileAsync("pakshya.bucket", request.File); var photo = new Photo { Url = photoUploadResult.Url, Id = photoUploadResult.Key }; post.Photos.Add(photo); } await _context.Posts.AddAsync(post, cancellationToken); var user = await _context.Users.SingleOrDefaultAsync(x => x.Email == _userAccessor.GetEmail(), cancellationToken : cancellationToken); var isHost = new UserPostLike { AppUser = user, Post = post, IsAuthor = true, IsLiked = false }; await _context.UserPostLikes.AddAsync(isHost, cancellationToken); var success = await _context.SaveChangesAsync(cancellationToken) > 0; if (success) { return(Unit.Value); } throw new Exception("problem saving new post."); }
public static void LikeUserPost(int userId, int userPostId) { var context = new SocialNetworkContext(); var user = context.Users.Find(userId); var post = context.UserPosts.Find(userPostId); var like = new UserPostLike() { Author = user, Post = post }; context.UserPostLikes.Add(like); context.SaveChanges(); }
public async Task <UserPostLike> UserLikePost(Guid userId, Guid postId) { if (postId == Guid.Empty) { throw new ArgumentNullException(nameof(postId)); } if (userId == Guid.Empty) { throw new ArgumentNullException(nameof(userId)); } var userPostLike = new UserPostLike { PostId = postId, UserId = userId, }; await _context.AddRangeAsync(userPostLike).ConfigureAwait(false); return(userPostLike); }
public async Task <Unit> Handle(Command request, CancellationToken cancellationToken) { var post = await _context.Posts.FindAsync(request.Id); if (post == null) { throw new RestException(HttpStatusCode.NotFound, new { Post = "Can't find post." }); } var user = await _context.Users.SingleOrDefaultAsync(x => x.Email == _userAccessor.GetEmail(), cancellationToken : cancellationToken); var userLikeOrPost = await _context.UserPostLikes.SingleOrDefaultAsync(x => x.PostId == post.Id && x.AppUserId == user.Id, cancellationToken : cancellationToken); if (userLikeOrPost?.IsLiked == true) { throw new RestException(HttpStatusCode.BadRequest, new { Attendence = "Already Liked." }); } else if (userLikeOrPost?.IsLiked == false) { userLikeOrPost.IsLiked = true; } else { var newLike = new UserPostLike { Post = post, AppUser = user, IsAuthor = false, IsLiked = true }; await _context.UserPostLikes.AddAsync(newLike, cancellationToken); } var success = await _context.SaveChangesAsync(cancellationToken) > 0; if (success) { return(Unit.Value); } throw new Exception("Problem saving new post."); }
public LikePostReturn LikePost(int postId, string currUserId) { LikePostReturn ret = new LikePostReturn { IsLiked = true, IsActionSucceed = true }; UserPostLike rel = _dbEntitySet.FirstOrDefault(f => f.UserInfoId == currUserId && f.PostId == postId); if (rel == null) { _dbEntitySet.Add(new UserPostLike() { PostId = postId, UserInfoId = currUserId, DateUtcLiked = DateTime.UtcNow }); Post pst = _context.Set <Post>().AsNoTracking().FirstOrDefault(p => p.Id == postId); int[] gps = _context.SetChild <GroupPost>().Where(p => p.PostId == postId).Select(f => f.GroupId).ToArray(); List <UserGroup> ugs = _context.SetChild <UserGroup>().Where(p => gps.Contains(p.GroupId) && p.UserId == pst.UserInfoId).ToList(); foreach (var item in ugs) { item.UserReputationInGroup += 10; _context.GetChildDbEntityEntrySafely <UserGroup>(item).State = EntityState.Modified; } if (!(_context.SaveChanges() <= 0)) { ret.IsActionSucceed = true; int[] prevLikes = _userLikesCacheService.GetUserLikedPostsIds(currUserId); prevLikes = prevLikes.Append(postId).ToArray(); _userLikesCacheService.SetUserLikedPostsIds(currUserId, prevLikes, 30); } } ret.PostAuthorId = _postSet.Where(p => p.Id == postId).Select(p => p.UserInfoId).FirstOrDefault(); return(ret); }
public void UserUnlikeAPost(UserPostLike currentUserPostLike) { _context.Remove(currentUserPostLike); }