Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
 public LikeBindingDTO(LikeBinding likeBinding)
 {
     UserId   = likeBinding.UserId;
     ObjectId = likeBinding.Id;
 }