public async Task <Response <LikeAction> > CreateLike(string postId, string userLikeFromId) { var responce = new Response <LikeAction>(); var likeInfo = await _context.Likes.Include(x => x.LikeBindings).FirstOrDefaultAsync(x => x.ModuleId == postId); if (likeInfo == null) { responce.Error = new Error("Can`t find post by id"); return(responce); } var isLikeExistFromUser = likeInfo.LikeBindings.Any(x => x.UserId == userLikeFromId); if (isLikeExistFromUser) { var like = likeInfo.LikeBindings.FirstOrDefault(x => x.UserId == userLikeFromId); _context.LikeBindings.Remove(like); await _context.SaveChangesAsync(); likeInfo.LikeBindings.Remove(like); likeInfo.CountOfLikes--; _context.Likes.Update(likeInfo); await _context.SaveChangesAsync(); responce.Data = LikeAction.LikeRemoved; return(responce); } else { var like = new LikeBinding(userLikeFromId, likeInfo.Id); await _context.LikeBindings.AddAsync(like); await _context.SaveChangesAsync(); likeInfo.LikeBindings.Add(like); likeInfo.CountOfLikes++; _context.Likes.Update(likeInfo); await _context.SaveChangesAsync(); responce.Data = LikeAction.LikeAdded; return(responce); } }
public LikeBindingDTO(LikeBinding likeBinding) { UserId = likeBinding.UserId; ObjectId = likeBinding.Id; }