예제 #1
0
        public async Task <GetLikeDTO> ToggleLike(NewLikeDTO newLike)
        {
            ClaimsPrincipal principal = Request.GetRequestContext().Principal as ClaimsPrincipal;
            var             userName  = ClaimsPrincipal.Current.Identity.Name;

            newLike.ActionFor = ActionFor.Post;
            return(await likeService.ToggleLike(newLike, userName));
        }
예제 #2
0
        public async Task <GetLikeDTO> ToggleLike(NewLikeDTO newLike, string userName)
        {
            try
            {
                User user = await _userManager.FindByNameAsync(userName);

                IEnumerable <Like> likes = _repository.Queryable().Where(c => c.PostId == newLike.ActionForId && c.CreatedUserId == user.Id);

                Like like = null;
                if (likes.Count() > 0)
                {
                    like = likes.FirstOrDefault();
                    _repository.Delete(like);
                }
                else
                {
                    like = Mapper.Map <Like>(newLike);

                    like.CreatedUserId = user.Id;
                    like.CreatedDate   = DateTime.UtcNow;
                    like.UpdatedUserId = user.Id;
                    like.UpdatedDate   = DateTime.UtcNow;
                    if (newLike.ActionFor == ActionFor.Post)
                    {
                        like.PostId = newLike.ActionForId;
                    }

                    _repository.Insert(like);
                }

                await _unitOfWork.SaveChangesAsync();

                return(Mapper.Map <GetLikeDTO>(like));
            }
            catch (Exception ex)
            {
                throw new Exception(ResponseCodeString.LikeCreate_Error, ex.InnerException);
            }
        }