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