public async Task LikeFeed(ApplicationUser user, Guid refId, int likeType) { if (likeType != 1 && likeType != 2) { throw new BusinessException("WrongLikeType", "Yanlış beğenme tipi."); } var feed = _feedRepository.GetFeedAsync(refId); if (feed == null) { throw new BusinessException("FeedNotFound", "Kayıt bulunamadı."); } var like = await _feedRepository.GetFeedLikedDislikedAsync(refId, user.Id); if (like == null) { like = new Like(); like.RefId = refId; like.UserId = user.Id; like.LikeType = likeType; like.Date = DateTime.UtcNow; await _feedRepository.SaveLikeAsync(like); if (likeType == 1) { await _feedRepository.ChangeLikeCountAsync(refId, 1); } else { await _feedRepository.ChangeDislikeCountAsync(refId, 1); } } else { if (like.LikeType == likeType) { return; } like.LikeType = likeType; if (likeType == 1) { await _feedRepository.ChangeLikeCountAsync(refId, 1); await _feedRepository.ChangeDislikeCountAsync(refId, -1); } else { await _feedRepository.ChangeLikeCountAsync(refId, -1); await _feedRepository.ChangeDislikeCountAsync(refId, 1); } _feedRepository.UpdateLike(like); } await _unitOfWork.CompleteAsync(); }