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)); }
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); } }