public override void Execute()
 {
     if (activity.EffectiveSubjetType == "sitepage_page")
     {
         var likedSrc = UsersNetworks.Instance.GetLikedSources(userId).GetSource(activity.EffectiveSubjectId, activity.EffectiveSubjetType);
         if (likedSrc != null)
         {
             //update the cache
             likedSrc.AffinityLevel = (byte)(likedSrc.AffinityLevel / 2); //reduce it by 50%
             //update the DB
             SourceAffinities.UpdateAffinity(userId, activity.EffectiveSubjectId, activity.EffectiveSubjetType, likedSrc.AffinityLevel);
         }
         else
         {
             //if we never liked it before and we don't like it, we will set it with affinity 0 to make sure we don't get it
             SourceAffinities.Add(new SourceAffinity()
             {
                 affinity    = 0,
                 user_id     = this.userId,
                 source_id   = activity.EffectiveSubjectId,
                 source_type = activity.EffectiveSubjetType,
                 date        = DateTime.Now
             });
             UsersNetworks.Instance.GetLikedSources(userId).AddSource(activity.EffectiveSubjectId, activity.EffectiveSubjetType, 0);
         }
     }
     else
     {
         Logger.Instance.Warn($"can't unlike this source.subject type is {activity.EffectiveSubjetType}");
     }
 }
Beispiel #2
0
 private void RelikePublisher()
 {
     if (activity.EffectiveSubjetType == "sitepage_page")
     {
         var likedSrc = UsersNetworks.Instance.GetLikedSources(userId).GetSource(activity.EffectiveSubjectId, activity.EffectiveSubjetType);
         if (likedSrc != null)
         {
             //update the cache
             if (likedSrc.AffinityLevel == 0)
             {
                 //remove it
                 UsersNetworks.Instance.GetLikedSources(userId).RemoveSource(activity.EffectiveSubjectId, activity.EffectiveSubjetType);
                 SourceAffinities.RemoveAffinity(userId, activity.EffectiveSubjectId, activity.EffectiveSubjetType);
             }
             else
             {
                 likedSrc.AffinityLevel = (byte)(likedSrc.AffinityLevel * 2); //double it to undo the reduction
                 //update the DB
                 SourceAffinities.UpdateAffinity(userId, activity.EffectiveSubjectId, activity.EffectiveSubjetType, likedSrc.AffinityLevel);
             }
         }
     }
     else
     {
         Logger.Instance.Debug($"can't relike this source.subject type is {activity.EffectiveSubjetType}");
     }
 }
Beispiel #3
0
        protected void LikeSourceIfPossible(ulong sourceId, string sourceType)
        {
            try
            {
                var likedSource = UsersNetworks.Instance.GetLikedSources(userId).GetSource(sourceId, sourceType);
                if (likedSource == null)// && (sourceType == "sitepage_page" || sourceType == "sitegroup_group"))
                {
                    //set affinity to this page/group/user
                    Logger.Instance.Debug($"start liking {sourceType} {sourceId}");
                    byte affinity = 50;
                    SourceAffinities.Add(new SourceAffinity()
                    {
                        affinity    = affinity,//TODO manage affinity in the future
                        user_id     = this.userId,
                        source_id   = sourceId,
                        source_type = sourceType,
                        date        = DateTime.Now
                    });
                    UsersNetworks.Instance.GetLikedSources(userId).AddSource(sourceId, sourceType, affinity);
                }
                else
                {
                    //increase existing affinity up to 100
                    if (likedSource.AffinityLevel < 50)
                    {
                        likedSource.AffinityLevel = 50;      //give it a new chance
                    }
                    else if (likedSource.AffinityLevel > 55) // that mean we have a history of liking this
                    {
                        likedSource.AffinityLevel += 10;
                    }
                    else
                    {
                        likedSource.AffinityLevel++;
                    }

                    //fix it on max 100
                    if (likedSource.AffinityLevel > 100)
                    {
                        likedSource.AffinityLevel = 100;
                    }
                    //update the db
                    SourceAffinities.UpdateAffinity(userId, (uint)sourceId, sourceType, likedSource.AffinityLevel);
                }
            }
            catch (Exception e)
            {
                Logger.Instance.Error($"Failed to like source:{e.Message}");
                Logger.Instance.Debug(e.ToString());
            }
        }