public override void Execute() { var notifications = ActivityNotifications.GetByUserId(_userId).Select(n => new NotificationWrapper(n)).ToArray();; foreach (var notification in notifications) { if (notification.object_type == "activity_action") { var activity = ActivityActions.GetById(notification.object_id); Feed f = new Feed(new Activity(activity), notification.subject_id, notification.subject_type, false); notification._object = new ActivityActionWrapper(activity); notification.feed_title = f.feed_title; notification.action_type_body_params = f.action_type_body_params; notification.url = f.Subject.Url; } else { } } var response = new { recentUpdateTotalItemCount = notifications.Length, recentUpdates = notifications }; Response = JsonConvert.SerializeObject(response); }
public override void Execute() { // if (HandlePromptCommands()) // { // return; //special prompt handling // } base.Execute(); Logger.Instance.Debug($"action privacy is {activity.RawActivity.privacy} and given in parameter : {reqParams.auth_view}"); if (string.IsNullOrEmpty(activity.RawActivity.privacy)) { activity.RawActivity.privacy = reqParams.auth_view; //will fix this in fb posts activityModified = true; } HandleFBUserPosts(); HandleFBLinks(); HandleFBVideos(); //check if the post contain interesting source like fb page CheckForSources(); if (activityModified) { ActivityActions.Update(activity.RawActivity); } //return the feed Logger.Instance.Debug($"returning the feed"); GetFeedHandler getFeedHandler = new GetFeedHandler(userId, reqParams); getFeedHandler.Execute(); Response = getFeedHandler.Response; }
private SourceData GetSource(ulong actionId, bool useBank = false) { Logger.Instance.Debug($"Getting source for action {actionId} useBank={useBank}"); ActivityAction rawAction = null; if (useBank) { rawAction = FetchActionFromBank(actionId); } else { Logger.Instance.Debug("Geiint from db"); rawAction = ActivityActions.GetById((uint)actionId, false); } if (rawAction == null) { Logger.Instance.Info($"no ActivityAction {actionId} in DB or bank"); return(null); } ulong subjectId = rawAction.subject_id; var subjectType = rawAction.subject_type; return(SourcesMap.Instance.GetSource(subjectId, subjectType)); }
public List <uint> Get(uint objectId) { //return Likes.GetByResourceId(resourceId).ToArray(); return(ActivityActions .GetByObjectId(objectId, "activity_action", "like_activity_action") .Select(a => a.subject_id).ToList()); }
public void UpdateAction(ulong actionId) { var rawActivity = ActivityActions.GetById((uint)actionId); var activity = FindActivity(actionId, out var source); activity.RawActivity = rawActivity; source.ActivityFeed.AdvanceActivity(actionId); }
protected virtual void RemoveActivityAction(ActivityAction action) { Activity activity = new Activity(action); activity.Source.ActivityFeed.RemoveActivity(activity, true); //remove it from the feeds ActivityCache.Instance.Remove(action.action_id); ActivityActions.Delete(action.action_id, deleteAttachments: true); HiddenActivities.RemoveForActivity(action.action_id); ActivityNotifications.RemoveForActivity(action.action_id); }
public void TestMethod1() { var rc = ActivityActions.Get(306, 20); var str = Encoding.UTF8.GetString(rc[0].body); var ser = new XmlSerializer(typeof(ActivityAction)); var sw = new StringWriter(); ser.Serialize(sw, rc[0]); var result = sw.ToString(); Console.WriteLine("{0}", result); Assert.IsNotNull(rc); }
private void RemoveRefActions(ActivityAction action) { var refActions = ActivityActions.GetByObjectId((uint)action.action_id, "activity_action"); //ActivityActions.RemoveRefActivities(activity.ActivityId); if (refActions != null) { foreach (var refAction in refActions) { RemoveActivityAction(refAction); } } }
protected override void CheckIfRefExists(out ActivityAction refActivity, out object activityRecord) { refActivity = ActivityActions.GetRefActivity("like_activity_action", activity.ActivityId, "activity_action", userId, false); activityRecord = Likes.GetByResourceAndPoster((uint)activity.ActivityId, "activity_action", userId, "user"); if (refActivity != null && !IsActivityUpdate(refActivity)) { throw new Exception($"Like to {activity.ActivityId} by user {userId} already exists in activity actions"); } if (activityRecord != null && !IsRecordUpdate(activityRecord)) { throw new Exception($"Like to {activity.ActivityId} by user {userId} already exists in Likes table"); } }
public bool AppendFeed(DateTime endTime, int count) { if (!canAppend) { return(false); } lock (_lock) { var newfeed = new List <ulong>(); var fetchedActivities = ActivityActions.GetBySubjectOrObjectId((uint)_sourceId, _sourceType, endTime, count); if (_sourceId == 339) { Logger.Instance.Debug($"got {fetchedActivities.Count()} ativities from DB before date {endTime}"); } if (fetchedActivities.Count() < count) { canAppend = false; //there is no point in trying to fetch more } foreach (var rawActivity in fetchedActivities.Reverse()) { //add it to the cache (if needed) and the id to the list ActivityCache.Instance.Set(new Activity(rawActivity)); newfeed.Add(rawActivity.action_id); } if (newfeed.Count > 0) { //update minDate MinimumDate = ActivityCache.Instance.Get(newfeed.Min(id => id)).CreationDate; } if (_feed == null) { //first time _feed = newfeed; } else { //we are appending to existing feed newfeed.AddRange(_feed); _feed = newfeed; } return(canAppend); } }
public void CheckAndUpdateAction(ulong actionId) { //get the raw action var rawActivity = ActivityActions.GetById((uint)actionId); if (rawActivity == null) { Console.WriteLine($"action {actionId} was not found in DB"); return; } var activity = FindActivity(actionId, out var source); activity.RawActivity = rawActivity; source.ActivityFeed.AdvanceActivity(actionId); }
public override void Execute() { Logger.Instance.Debug($"Sharing activity {reqParams.action_id} by user:{userId}"); activity.Source.ActivityFeed.AdvanceActivity(activity); activity.RawActivity.modified_date = DateTime.Now; ActivityActions.Update(activity.RawActivity); if (activity.IsShare) { //we want to share the primary activity = activity.InnerActivity; } var share = CreateRefActivity(ActivityType.Share); userSource.ActivityFeed.AddActivity(share); SendNotifications(); LikeSourceIfPossible(activity.EffectiveSubjectId, activity.EffectiveSubjetType); }
private Activity GetReferenceActivityOnCreation(Activity activity, ulong userId, string type) { Logger.Instance.Debug($"trying to find {type} to type {activity.RawActivity.type} object type {activity.ObjectType}:{activity.ObjectId}"); var objectId = activity.ActivityId; var objectType = "activity_action"; //fixing SEAO missing activities if (activity.ObjectType == "album_photo") { objectId = activity.ObjectId; objectType = activity.ObjectType; //if (type == "like") //{ // //add like to the table // Like newLike = new Like() { poster_id = (uint)userId,poster_type = "user",reaction = "like",resource_id = (uint)activity.ActivityId}; // Likes.Add(newLike); //} } ActivityAction rawRefAction = null; if (type == "like") { rawRefAction = ActivityActions.GetLikeActivity(objectId, objectType, userId); } if (rawRefAction == null) { Logger.Instance.Warn($"Didn't find in db the {type} activity of {userId} to action {activity.ActivityId}"); } else { //if (rawRefAction.object_type != "activity_action") //{ // Logger.Instance.Debug($"need to update the inner activity of the {type} action {rawRefAction.action_id} to {activity.ActivityId}, currently it is pointing to {rawRefAction.object_type}"); // ActivityActions.SetInnerActivity(rawRefAction.action_id, activity.ActivityId, "like"); // //fetch it again from DB // rawRefAction = ActivityActions.GetByID(rawRefAction.action_id); //} } var refActivity = new Activity(rawRefAction); return(refActivity); }
protected Activity CreateRefActivity(ActivityType type) { string typeStr = type.ToString().ToLower(); if (type != ActivityType.Share) { typeStr += "_activity_action"; } ActivityAction refAction = ActivityAction.CreateReferenceAction(activity.RawActivity, typeStr, userId); refAction.body = GetRefBody(); //add it to the DB & Cache ActivityActions.Add(refAction, true); var newActivity = new Activity(refAction); ActivityCache.Instance.Set(newActivity); return(newActivity); }
protected override void CheckIfRefNotExists(out ActivityAction refActivityAction, out object actionRecord) { refActivityAction = ActivityActions.GetRefActivity("like_activity_action", activity.ActivityId, "activity_action", userId, true); actionRecord = Likes.GetByResourceAndPoster((uint)activity.ActivityId, "activity_action", userId, "user"); if ((actionRecord == null && refActivityAction != null) || (actionRecord != null && refActivityAction == null)) { Logger.Instance.Warn($"Inconsistancy in likes and activity tables, to {activity.ActivityId} by user {userId}"); } if (refActivityAction == null) { Logger.Instance.Warn($"like to {activity.ActivityId} by user {userId} not exists in activity actions"); } if (actionRecord == null) { Logger.Instance.Warn($"like to {activity.ActivityId} by user {userId} not exists in likes table"); } }
public void AddComment(ulong userId, ulong actionId, ulong commentId, ActivityAction commentAction) { var activity = FindActivity(actionId, out var source); var user = SourcesMap.Instance.GetSource(userId, "user"); Console.WriteLine($"Adding comment {commentId} to {actionId} by user {userId}"); activity.RawActivity.comment_count++; source.ActivityFeed.AdvanceActivity(actionId); if (activity.IsShare) { Logger.Instance.Info("for comments on shares we do not create activity in user's feed"); return; } if (!activity.CommentersList.Contains((uint)userId)) { activity.CommentersList.Add((uint)userId); } //add "comment" activity to the user's feed var commentActivity = user.ActivityFeed.AddActivity(commentAction.action_id, commentAction); if (commentAction.object_type != "activity_action") { Logger.Instance.Debug($"need to update the inner activity of the comment action {commentAction.action_id} to {actionId}, currently it is pointing to {commentAction.object_type}"); ActivityActions.SetInnerActivity(commentAction.action_id, activity.ActivityId, "comment"); if (commentActivity != null) { //fetch it again from DB commentAction = ActivityActions.GetById(commentAction.action_id); commentActivity.RawActivity = commentAction;//put it in the activity commentActivity.InnerActivity = activity; Logger.Instance.Debug($"inner activity updated"); } } }
protected override void CheckIfRefNotExists(out ActivityAction refActivityAction, out object actionRecord) { Logger.Instance.Debug($"Comment id = {reqParams.comment_id}"); var comment = Comments.GetByCommentId(reqParams.comment_id); actionRecord = comment ?? throw new Exception($"Comment to {activity.ActivityId} by user {userId} not exists in Comments table"); var allComments = ActivityActions.GetByObjectId((uint)activity.ActivityId, "activity_actions"); foreach (var aa in allComments) { Logger.Instance.Debug($"found {aa.type} , id {aa.action_id} on time {aa.modified_date}"); } Logger.Instance.Debug($"looking to match comment on {activity.ActivityId} with date {comment.creation_date}"); refActivityAction = ActivityActions.GetRefActivity("comment_activity_action", activity.ActivityId, "activity_action", userId, false, comment.creation_date); if (refActivityAction == null) { Logger.Instance.Warn($"Inconsistancy in Comments and activity tables , to {activity.ActivityId} by user {userId}"); //throw new Exception($"Inconsistancy in Comments and activity tables , to {activity.ActivityId} by user {userId}"); } }
public override void Execute() { SetReqParamsDefaults(); CheckIfRefExists(out ActivityAction refActivityAction, out object activityRecord); Activity refActivity = null; if (refActivityAction == null) { //adding new referenc activity IncreaseCount(); activity.Source.ActivityFeed.AdvanceActivity(activity); // advance the activity that is reference in it's ownr's feed activity.RawActivity.modified_date = DateTime.Now; ActivityActions.Update(activity.RawActivity); //update DB refActivity = CreateRefActivity(type); userSource.ActivityFeed.AddActivity(refActivity); AddUpdateRefItemToSource(refActivity.RawActivity, reqParams.reaction); AddRefToTable(); SendNotifications(); LikeSourceIfPossible(activity.EffectiveSubjectId, activity.EffectiveSubjetType); } else { //update content of existing activity reference Logger.Instance.Debug($"Update content of existing activity {refActivityAction.action_id}"); activity.Source.ActivityFeed.AdvanceActivity(activity); // advance the activity that is reference in it's ownr's feed activity.RawActivity.modified_date = DateTime.Now; ActivityActions.Update(activity.RawActivity); //update DB refActivity = ActivityCache.Instance.Get(refActivityAction.action_id); refActivity.RawActivity.body = GetRefBody(); AddUpdateRefItemToSource(refActivity.RawActivity, reqParams.reaction); UpdateActionInDB(refActivity.RawActivity); UpdateRefInTable((Like)activityRecord); } }
public Activity Get(ulong actionId) { lock (_lock) { if (_cache.TryGetValue(actionId, out ActivityCacheItem item)) { item.LastAccess = DateTime.Now; return(item.Activity); } } //else var newitem = new ActivityCacheItem(); var action = ActivityActions.GetById((uint)actionId); if (action != null) { newitem.Activity = new Activity(action); } lock (_lock) { _cache[actionId] = newitem; } return(newitem.Activity); }
static void Main(string[] args) { var user = Users.GetFullById(3);// GetAll().Where(u => u.email == "*****@*****.**").FirstOrDefault(); MembersBrowseHandler h = new MembersBrowseHandler(0, new RequestParams()); h.Execute(); var ums = UserMemberships.Get(3).Where(u => u.active == true && u.user_approved == false).ToList(); var users = Users.GetAllFull(); var act = ActivityActions.GetById(11526); //var vid = Videos.GetById(2047); //GetFeedHandler feedHandler = new GetFeedHandler(3, new RequestParams() { filter_type = "all" }); //feedHandler.Execute(); //var json = feedHandler.Response; //Logger.Instance.Level = LogLevel.Info; //PrintTime("get source", new Action(() => //{ // for (int i = 0; i < 100; i++) // { // GetFeedHandler feedHandler2 = new GetFeedHandler(3, new RequestParams() { filter_type = "all" }); // feedHandler2.Execute(); // } //})); //PageSources.GetByType("fb_page").ForEach(s => Console.WriteLine($"x{s.source_id}x")); //var x = PageSources.GetBySourceId("18793419640", "fb_page"); //var f = CoreSettings.Get("advancedactivity.feed.font.size", "20"); //ResponseBody resp = new ResponseBody(random pages as source FeedWrapper[0]); //var json= JsonConvert.SerializeObject(resp); //var feedHandler = HandlerFactory.CreateHandler("feed", 370, new RequestParams() { subject_id = 370 , subject_type = "user"}, new Dictionary<string, object>()); //feedHandler.Execute(); GetActivitiesFromServer(); Random r = new Random(); //List<int> simplesort = new List<int>(); //for (int i = 0; i < 1000; i++) //{ // simplesort.Add(r.Next(100000)); //} //PrintTime("sort time", new Action(() => //{ // for (int i = 0; i < 10000; i++) // { // var copyList = simplesort.ToList(); // copyList.Sort(); // } //})); //PrintTime("reverse enumaration", new Action(() => //{ // for (int i = 0; i < 100000; i++) // { // foreach (var f in ll.Reverse<int>() ){ } // } //})); //var src = SourcesMap.Instance.GetSource(3, "user"); //var sf = src.Feed; //foreach(var sssss in sf.Reverse()) { } //var U = Users.GetAll().Where(u => u.user_id == 306).ToArray(); ////var z = Storages.GetByFileId(1); ////z = Storages.GetByFileId(1); //var x = Users.GetAll(); ////PrintTime("initial db read", new Action(() => DbAccess.Instance.InitialDBRead())); //var d = 1; ////var rc = ActivityActions.Get(306, 20); ////var actions = rc.Select(act => act.action_id).ToArray(); ////uint actNum = 10000; //PrintTime("get from DB", new Action(() => //{ // for (int i = 0; i < 500; i++) // { // var r = ActivityActions.GetByID((uint)i,false); // } //})); //double y = RandomBytes.Rand.Next(200) / 1.2; //byte a = (byte)y; //int count = 100000000; //var x = RandomBytes.Next; ////PrintTime($"Create {count} randoms", new Action(()=>CreateRandoms(count))); ////PrintTime($"Create {count} regular randoms", new Action(() => CreateRegularRandoms(count))); ////PrintTime($"Create {count} randoms", new Action(() => CreateRandoms(count))); ////ListToArrayTest(); //PrintTime("LIst to array test", ListToArrayTest); //PrintTime("Array copy test", ArrayCopyTest); ulong userId = 3; ////set categories for the user //SourcesMap.Instance.GetSource(userId); //ulong[] sources = null; //PrintTime("Generate User Sources", () => { sources = FeedController.Instance.GetUserSources(userId).Select(s => s.MemberId).ToArray(); }); ////var s = //PrintTime("Creating 1000000 items feed", () => ItemFeed.Instance.Init()); //PrintTime("Generating Random Activity", () => GenerateRandomActivity(sources, 20)); // PrintTime("Getting 1 user's activityfeed", () => FeedController.Instance.GetActivityFeed(userId, 60)); //PrintTime("Getting 1000 mobile user's activityfeed", () => { // //var x22 = File.ReadAllText(@"C:\Workspace\feedtests\10757.txt"); // //var ooo = JsonConvert.DeserializeObject(x22); // RequestParams request = new RequestParams() // { // viewerId = (uint)userId, // subject_id = (uint)userId, // subject_type = "user" // }; // for (var i = 0; i < 1000; i++) { // FeedGenerator generator = new SourceFeedGenerator(request); // var feed = generator.GetFeedJson(); // //var feed = FeedController.Instance.GetActivityFeed(userId, 60000); // //var resultJson = JsonConvert.SerializeObject(feed); // } //}); // PrintTime("Get 1000000 source activites", () => TestGetSourceActivites(sources[0], 1000000)); PrintTime("DB Get Updated Network members", () => { for (var i = 0; i < 1000000; i++) { DbAccess.Instance.UpdateAllNetworkMembers(); } return; }); // PrintTime("Add 1000 activities", () => TestAddActivity(1000)); PrintTime("DB Get Updated SourceData", () => { for (var i = 0; i < 1000; i++) { DbAccess.Instance.UpdateSourceData(); } return; }); var sw = new Stopwatch(); sw.Start(); //var items = ItemFeed.Instance.QuickList; //for (int i = 0; i < 100; i++) //{ // //var controller = new FeedController(); // var sources = FeedController.Instance.GetUserSources(i); //} sw.Stop(); Console.WriteLine(sw.ElapsedMilliseconds); Console.ReadLine(); }
public ActivityAction Get(uint action_id) { /// return(ActivityActions.GetById(action_id, true)); }
private static void GetActivitiesFromServer() { // var ccc = Comments.GetForComment(861); // LikesCommentsHandler lch = new LikesCommentsHandler(3, new RequestParams() { action_id = 37409 }); // lch.Execute(); // LikesHandler ulike = new LikesHandler(3, new RequestParams() { action_id = 37072 }); // ulike.Execute(); var cl = Likes.GetByResourceId(29846); //LikesCommentsHandler lch = new LikesCommentsHandler(3, new RequestParams() { action_id = 28869 , viewAllComments = "1" }); //lch.Execute(); // var u = Users.GetById(3); //var s = Storages.GetByFileId(u.photo_id); // Dictionary<string, object> apar = new Dictionary<string, object>(); // apar["action_id"] = "18021";// "17998"; // ViewHandler vh = new ViewHandler(3, new RequestParams(), apar); // vh.Execute(); //RemoveActivityHandler rh = new RemoveActivityHandler(3, new RequestParams() { action_id = 20811 }); //rh.Execute(); // PostHandler ph = new PostHandler(339, new RequestParams() { action_id = 31633 }); // ph.Execute(); //var x = CoreSettings.Get("core.iframely.secretIframelyKey");//All().Where(s => s.Key.Contains("iframe")).ToArray(); using (var wc = new WebClient()) { //var photo = AlbumPhotos.GetById(2410); //var link = CoreLinks.GetById(12095); // var video = Videos.GetById(748); //var refs = ActivityActions.GetByObjectId(8005, "activity_action").ToArray(); //SourceData han = SourcesMap.Instance.GetSource(368, "user"); // var hanFeed = han.ActivityFeed.Feed; uint aid = 29846;// 26864;// 26843; var activity = ActivityActions.GetById(aid); var a = new KoobecaFeedController.BL.Activity(activity); var wrapper = new FeedWrapper(a, 3, "user", false); var res = JsonConvert.SerializeObject(wrapper, Newtonsoft.Json.Formatting.None, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }); var ourFeeds = new List <FeedWrapper>(); //FeedController.Instance.AddLike(3, activity.action_id); //FeedController.Instance.RemoveLike(3, activity.action_id); var sb = new StringBuilder(); //foreach (var feed in json.body.data) //{ // uint action_id = feed.feed.action_id; // sb.AppendLine(action_id.ToString()); // var rawActivity = ActivityActions.GetByID(action_id); // if (action_id == aid) { // if (rawActivity != null) // { // sb.AppendLine(action_id.ToString()); // ourFeeds.Add(new FeedWrapper(new KoobecaFeedController.BL.Activity(rawActivity))); // } // } //} var str = sb.ToString(); var result = JsonConvert.SerializeObject(new ResponseBody(ourFeeds.ToArray(), 0, 0, 50), Newtonsoft.Json.Formatting.None, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }); } }
protected void UpdateActionInDB(ActivityAction rawActivity) { ActivityActions.Update(rawActivity); }