示例#1
0
        public ArticleLike AddLike(long userId, int articleId, LikeType likeType)
        {
            var historyLike = ArticleLikeRepository.GetAll().Where(model => model.ArticleId == articleId && model.UserId == userId).FirstOrDefault();

            if (historyLike != null)
            {
                throw new UserFriendlyException(L("YouHasHintIt"));
            }
            var like = new ArticleLike()
            {
                ArticleId    = articleId,
                UserId       = userId,
                CreationTime = DateTime.Now,
                Like         = likeType
            };

            ArticleLikeRepository.Insert(like);
            var article = ArticleRepository.Get(articleId);

            if (likeType == LikeType.Like)
            {
                article.Like++;
            }
            else if (likeType == LikeType.DisLike)
            {
                article.DisLike++;
            }
            ArticleRepository.Update(article);
            CurrentUnitOfWork.SaveChanges();
            return(like);
        }
示例#2
0
        /// <summary>
        /// Like request
        /// </summary>
        /// <param name="userID"></param>
        /// <param name="method">POST like, DELETE unlike</param>
        /// <returns></returns>
        public async Task <string> LikeComment(string userID, string url, LikeType likeType)
        {
            HttpMethod httpMethod = likeType == LikeType.Like ? HttpMethod.Post : HttpMethod.Delete;
            string     resultLike = string.Empty;
            string     UserApi    = GenerateApiLikeOnliner(url) + userID + "/like";

            if (!HasInternet())
            {
                throw new WebException();
            }
            HttpClientHandler handler = new HttpClientHandler();

            if (CookieSession != null)
            {
                handler.CookieContainer = CookieSession;
            }
            HttpClient         httpClient  = new HttpClient(handler);
            HttpRequestMessage postRequest = new HttpRequestMessage(httpMethod, UserApi);

            postRequest.Headers.Add("Accept", "application/json; charset=utf-8");
            postRequest.Headers.Add("X-Requested-With", "XMLHttpRequest");
            var response   = httpClient.SendAsync(postRequest).Result;
            var resultJson = await response.Content.ReadAsStringAsync();

            Regex pattern = new Regex(@"([0-9]+)");

            resultLike = pattern.Match(resultJson).ToString();
            if (response.StatusCode == HttpStatusCode.OK)
            {
                return(resultLike);
            }
            return(resultLike);
        }
        public async Task<IHttpActionResult> DeleteOneById(string targetId, LikeType type)
        {
            var operatorId = User.Identity.GetUserId();
            switch (type)
            {
                case LikeType.ArticleLike:
                {
                    var existLikes = await _dbContext.ArticleLikes.Where(
                        l => l.ArticleId == targetId && l.OperatorId == operatorId).ToListAsync();
                    if (existLikes.Count == 0)
                        return NotFound();
                    existLikes.ForEach(async l => { await _statistics.DecreaseUserLikeCount(l.Article.PrincipalId); });
                    _dbContext.Likes.RemoveRange(existLikes);
                    break;
                }

                case LikeType.CommentLike:
                {
                    var existLikes = await _dbContext.CommentLikes.Where(
                        l => l.CommentId == targetId && l.OperatorId == operatorId).ToListAsync();
                    if (existLikes.Count == 0)
                        return NotFound();
                    existLikes.ForEach(async l => { await _statistics.DecreaseUserLikeCount(l.Comment.CommentatorId); });
                    _dbContext.Likes.RemoveRange(existLikes);
                    break;
                }

                default:
                    throw new ArgumentOutOfRangeException();
            }
            await _dbContext.SaveChangesAsync();
            return Ok();
        }
 private static Result GetLikeCaluseInternal(string fieldName, string paramName, string value, LikeType likeType)
 {
     const string escapeChar = @"\";
     var dp = new DynamicParameters();
     dp.Add(paramName, ToLikeString(value, likeType, escapeChar));
     return new Result($@"{fieldName} LIKE @{paramName} ESCAPE '{escapeChar}'", dp);
 }
示例#5
0
 public UserLevelLikeMessage(int userId, int levelId, LikeType likeType, ulong countOnAllLevels)
 {
     UserId           = userId;
     LevelId          = levelId;
     LikeType         = likeType;
     CountOnAllLevels = countOnAllLevels;
 }
示例#6
0
 public OwnerLevelLikeMessage(int ownerId, int levelId, LikeType likeType, uint countOnLevel, ulong countOnAllLevels)
 {
     OwnerId          = ownerId;
     LevelId          = levelId;
     LikeType         = likeType;
     CountOnLevel     = countOnLevel;
     CountOnAllLevels = countOnAllLevels;
 }
示例#7
0
 private LikeContent ParseLikeContent(JObject jObject, LikeType type) => new LikeContent()
 {
     ObjectId      = (int)jObject["object_id"],
     PostId        = (int)jObject["post_id"],
     ObjectType    = GetType(jObject["object_type"].ToString()),
     ObjectOwnerId = (long)jObject["object_owner_id"],
     Type          = type
 };
        public static string BuildLikeRequest(LikeType _type, int _ownerId, uint _itemId, string _token, string _apiVersion)
        {
            if (string.IsNullOrWhiteSpace(_token))
            {
                throw new ArgumentException("Token can not be null or empty", nameof(_token));
            }

            var url = string.Format(m_addLikeTemplate, _type.ToString().ToLowerInvariant(), _ownerId, _itemId, _token, _apiVersion);

            return(url);
        }
示例#9
0
 public void AddLike(LikeType likeType, LikeDetails exist = LikeDetails.Voited)
 {
     if (likeType == LikeType.Like)
     {
         Raiting.AddLike(exist);
     }
     else
     {
         Raiting.AddDislike(exist);
     }
 }
示例#10
0
 private static NonEmptyString ToLikeString(string input, LikeType likeType, NonEmptyString escapeChar)
 {
     return
         (likeType == LikeType.Right
             ?
          input.ToLikeRightString(escapeChar)
             :
          likeType == LikeType.Left
                 ?
          input.ToLikeLeftString(escapeChar)
                 :
          input.ToLikeString(escapeChar));
 }
示例#11
0
        public async Task LikeCurrentAudio(ulong guildId, ulong userId, LikeType likeType)
        {
            var playerBag = GetPlayerBag(guildId);

            var ar = new AudioRating
            {
                AudioIdentifier = playerBag.Player.CurrentTrack.Identifier,
                GuildId         = guildId,
                UserId          = userId,
                LikeType        = likeType
            };

            await _audioRatingRepository.SetAudioRating(ar);

            UpdatePlayerView(guildId);
        }
示例#12
0
 public string GetCssClassByLikeType(LikeType likeType)
 {
     switch (likeType)
     {
         case LikeType.Home:
             return "fb-like-home";
             break;
         case LikeType.VoteVideo:
             return "fb-like-votevideo";
             break;
         case LikeType.MaVideo:
             return "fb-like-mavideo";
             break;
         default:
             throw new ArgumentOutOfRangeException("likeType");
     }
 }
示例#13
0
        public LikeDetails AddReview(string accountid, LikeType likeType)
        {
            if (Reviews == null)
            {
                Reviews = new Collection <Review>();
            }

            Review obj = Reviews.SingleOrDefault(x => x.User.Id == accountid);

            if (obj == null)
            {
                var r = new Review {
                    ID = Guid.NewGuid(), Like = likeType == LikeType.Like, User_Id = accountid
                };
                Reviews.Add(r);
                if (r.Like)
                {
                    Likes++;
                }
                else
                {
                    Dislikes++;
                }
                return(LikeDetails.Voited);
            }

            if (obj.Like && likeType == LikeType.Dislike)
            {
                Likes--;
                Dislikes++;
                obj.Like = false;
                return(LikeDetails.Changed);
            }

            if (!obj.Like && likeType == LikeType.Like)
            {
                Likes++;
                Dislikes--;
                obj.Like = true;
                return(LikeDetails.Changed);
            }
            return(LikeDetails.NotChanged);
        }
示例#14
0
        /// <summary>
        /// NOT LIKE语句
        /// </summary>
        /// <param name="txt"></param>
        /// <param name="type"></param>
        /// <returns></returns>
        public QCondition NotLike(string txt, LikeType type = LikeType.Default)
        {
            if (txt == null)
            {
                return(QCondition.False);
            }
            switch (type)
            {
            case LikeType.Default:
                return(new QColumnValueCondition(this, "NOT LIKE '" + EscapeLikeParam2(txt) + "'"));

            case LikeType.StartWith:
                return(new QColumnValueCondition(this, "NOT LIKE '%" + EscapeLikeParam(txt) + "'"));

            case LikeType.EndWith:
                return(new QColumnValueCondition(this, "NOT LIKE '" + EscapeLikeParam(txt) + "%'"));

            case LikeType.Contains:
            default:
                return(new QColumnValueCondition(this, "NOT LIKE '%" + EscapeLikeParam(txt) + "%'"));
            }
        }
示例#15
0
        /// <summary>
        /// filter
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="likeType"></param>
        /// <returns></returns>
        private static Expression <Func <LikeEntity, bool> > GetFilter(int?userId, LikeType likeType)
        {
            Expression <Func <LikeEntity, bool> > filter = null;

            if (userId == null)
            {
                return(filter);
            }
            else
            {
                if (likeType == LikeType.ILike)
                {
                    filter = v => v.LikeUserId == userId;
                }
                else
                if (likeType == LikeType.LikeMe)
                {
                    filter = v => v.LikedUserId == userId;
                }
            }

            return(filter);
        }
示例#16
0
        public static object GetLikeParameterValue(this string value, LikeType type = LikeType.Contains)
        {
            if (value == null)
            {
                return(DBNull.Value);
            }

            switch (type)
            {
            case LikeType.Contains:
                return("%" + value + "%");

            case LikeType.Starts:
                return(value + "%");

            case LikeType.Ends:
                return("%" + value);

            case LikeType.Equal:
                return(value);
            }

            return(value);
        }
示例#17
0
 public Like(long userId, long itemId, LikeType value)
 {
     UserId          = userId;
     PromotionItemId = itemId;
     Value           = value;
 }
示例#18
0
 /// <summary>
 /// Like request
 /// </summary>
 /// <param name="userID"></param>
 /// <param name="method">POST like, DELETE unlike</param>
 /// <returns></returns>
 public async Task<string> LikeComment(string userID, string url, LikeType likeType)
 {
     HttpMethod httpMethod = likeType == LikeType.Like ? HttpMethod.Post : HttpMethod.Delete;
     string resultLike = string.Empty;
     string UserApi = GenerateApiLikeOnliner(url) + userID + "/like";
     if (!HasInternet()) throw new WebException();
     HttpClientHandler handler = new HttpClientHandler();
     if (CookieSession != null)
     {
         handler.CookieContainer = CookieSession;
     }
     HttpClient httpClient = new HttpClient(handler);
     HttpRequestMessage postRequest = new HttpRequestMessage(httpMethod, UserApi);
     postRequest.Headers.Add("Accept", "application/json; charset=utf-8");
     postRequest.Headers.Add("X-Requested-With", "XMLHttpRequest");
     var response = httpClient.SendAsync(postRequest).Result;
     var resultJson = await response.Content.ReadAsStringAsync();
     Regex pattern = new Regex(@"([0-9]+)");
     resultLike = pattern.Match(resultJson).ToString();
     if (response.StatusCode == HttpStatusCode.OK)
     {
         return resultLike;
     }
     return resultLike;
 }
 public GetCurrentMemberLikesQuery(IAuthenticatedUser user, LikeType likeType)
 {
     User     = user;
     LikeType = likeType;
 }
示例#20
0
 private static string ToLikeString(string input, LikeType likeType, string escapeChar)
 {
     return
         likeType == LikeType.Right
         ?
         input.ToLikeRightString(escapeChar)
         :
             likeType == LikeType.Left
             ?
             input.ToLikeLeftString(escapeChar)
             :
             input.ToLikeString(escapeChar);
 }
示例#21
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="core"></param>
        /// <param name="itemType"></param>
        /// <param name="itemId"></param>
        /// <param name="rating"></param>
        /// <remarks>ItemRated should implement a transaction.</remarks>
        public static void LikeItem(Core core, ItemKey itemKey, LikeType like)
        {
            if (core == null)
            {
                throw new NullCoreException();
            }

            if (itemKey.Id < 1)
            {
                throw new InvalidItemException();
            }

            if (like < LikeType.Dislike || like > LikeType.Like)
            {
                throw new InvalidLikeException();
            }

            /* after 7 days release the IP for dynamics ip fairness */
            SelectQuery query = Like.GetSelectQueryStub(core, typeof(Like));
            query.AddCondition("like_item_id", itemKey.Id);
            query.AddCondition("like_item_type_id", itemKey.TypeId);
            QueryCondition qc1 = query.AddCondition("user_id", core.LoggedInMemberId);
            QueryCondition qc2 = qc1.AddCondition(ConditionRelations.Or, "like_ip", core.Session.IPAddress.ToString());
            qc2.AddCondition("like_time_ut", ConditionEquality.GreaterThan, UnixTime.UnixTimeStamp() - 60 * 60 * 24 * 7);

            /*DataTable ratingsTable = db.Query(string.Format("SELECT user_id FROM ratings WHERE rate_item_id = {0} AND rate_item_type = '{1}' AND (user_id = {2} OR (rate_ip = '{3}' AND rate_time_ut > UNIX_TIMESTAMP() - (60 * 60 * 24 * 7)))",
                itemId, Mysql.Escape(itemType), loggedInMember.UserId, session.IPAddress.ToString()));*/

            DataTable likesTable = core.Db.Query(query);

            ItemInfo ii = null;

            try
            {
                ii = new ItemInfo(core, itemKey);
            }
            catch (InvalidIteminfoException)
            {
                ii = ItemInfo.Create(core, itemKey);
            }

            if (likesTable.Rows.Count > 0)
            {
                Like liked = new Like(core, likesTable.Rows[0]);

                if (liked.Liking == like)
                {
                    throw new AlreadyLikedException();
                }

                switch (like)
                {
                    case LikeType.Like:
                        ii.DecrementDislikes();
                        ii.IncrementLikes();
                        break;
                    case LikeType.Dislike:
                        ii.DecrementLikes();
                        ii.IncrementDislikes();
                        break;
                }

                UpdateQuery uQuery = new UpdateQuery("likes");
                uQuery.AddField("like_time_ut", UnixTime.UnixTimeStamp());
                uQuery.AddField("like_liking", (sbyte)like);
                uQuery.AddField("like_ip", core.Session.IPAddress.ToString());
                uQuery.AddCondition("user_id", core.LoggedInMemberId);
                uQuery.AddCondition("like_item_id", itemKey.Id);
                uQuery.AddCondition("like_item_type_id", itemKey.TypeId);

                // commit the transaction
                core.Db.Query(uQuery);

            }
            else
            {
                switch (like)
                {
                    case LikeType.Like:
                        ii.IncrementLikes();
                        break;
                    case LikeType.Dislike:
                        ii.IncrementDislikes();
                        break;
                }

                InsertQuery iQuery = new InsertQuery("likes");
                iQuery.AddField("like_item_id", itemKey.Id);
                iQuery.AddField("like_item_type_id", itemKey.TypeId);
                iQuery.AddField("user_id", core.LoggedInMemberId);
                iQuery.AddField("like_time_ut", UnixTime.UnixTimeStamp());
                iQuery.AddField("like_liking", (sbyte)like);
                iQuery.AddField("like_ip", core.Session.IPAddress.ToString());

                // commit the transaction
                core.Db.Query(iQuery);
            }

            return;
        }
示例#22
0
        private static DataResult GetLikeCaluseInternal(NonEmptyString fieldName, NonEmptyString paramName, NonEmptyString value, LikeType likeType)
        {
            var escapeChar = (NonEmptyString)@"\";
            var dp         = new DynamicParameters();

            dp.Add(paramName.Value.ToUpperInvariant(), ToLikeString(value, likeType, escapeChar).Value);
            return(new DataResult((NonEmptyString)$@"{fieldName.Value.ToUpperInvariant()} LIKE @{paramName.Value.ToUpperInvariant()} ESCAPE '{escapeChar}'", dp));
        }
示例#23
0
 public FbLikeViewModel(string pageUrl, LikeType likeType, bool sendButton = false)
 {
     PageUrl = pageUrl;
     LikeType = likeType;
     SendButton = sendButton;
 }
示例#24
0
        //TODO: 没有对返回的user列表和当前用户做 互相关注判断。
        #region like

        public LikeCoutomerResponse LikeInfoResponseMapping(LikeEntity source, LikeType likeType)
        {
            if (source == null)
            {
                return null;
            }

            var t = LikeInfoResponseMapping(new List<LikeEntity> { source }, likeType);

            if (t == null || t.Count == 0)
            {
                return null;
            }

            return new LikeCoutomerResponse { CustomerInfoResponse = t[0], Id = source.Id };
        }
示例#25
0
        public Task <List <MemberSummary> > GetLikes(LikeType likeType, CancellationToken cancellationToken)
        {
            var user = new AuthenticatedUser(User);

            return(_mediator.Send(new GetCurrentMemberLikesQuery(user, likeType), cancellationToken));
        }
示例#26
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="source"></param>
        /// <param name="likeType">true 是喜欢(返回的喜欢人的列表) false 是被喜欢(返回的是被喜欢人的列表)</param>
        /// <returns></returns>
        public List<ShowCustomerInfoResponse> LikeInfoResponseMapping(List<LikeEntity> source, LikeType likeType)
        {
            if (source == null || source.Count == 0)
            {
                return null;
            }
            List<int> mpUserList = null;

            if (likeType == LikeType.ILike)
            {
                mpUserList = source.Select(v => v.LikedUserId).Distinct().ToList();
            }
            else
            {
                if (likeType == LikeType.LikeMe)
                {
                    mpUserList = source.Select(v => v.LikeUserId).Distinct().ToList();
                }
            }

            List<ShowCustomerInfoResponse> users = null;

            if (mpUserList != null)
            {
                users = ShowCustomerInfoResponseMapping(_customerRepository.GetListByIds(mpUserList.ToList())).ToList();
            }

            return users ?? new List<ShowCustomerInfoResponse>(0);
        }
示例#27
0
 public ItemLikedEventArgs(LikeType likeing, User rater, ItemKey itemKey)
 {
     this.likeing = likeing;
     this.rater = rater;
     this.itemKey = itemKey;
 }