private void AddUser(SEActivities activities, SEActivities.Thread.Activity activity, DataRow ar) { bool found = activities.users.Any(u => u.id == activity.userId); if (found) { return; } lock (_locker) { found = activities.users.Any(u => u.id == activity.userId); if (found) { return; } activities.users.Add(new SEActivities.User { id = activity.userId, name = (string)ar["UserName"], displayName = (string)ar["UserDisplayName"], picture = ((ar["UserPicture"] as string) ?? string.Empty).Split(',')[0] }); } }
private void BuildComments(IEnumerable <DataRow> commentRows, SEActivities activities, SEActivities.Thread thread) { Parallel.ForEach(commentRows, r => { foreach (string column in _activityDateTimeColumns) { SetLocalDateTime(r, column, _utcTimeDict, _regionalSettings); } SEActivities.Thread.Activity activity = BuildActivity(r, activities); thread.comments.Add(activity); }); }
private SEActivities.Thread.Activity BuildActivity(DataRow ar, SEActivities activities) { var activity = new SEActivities.Thread.Activity { id = (Guid)ar["ActivityId"], key = ar["ActivityKey"] as string, data = ar["ActivityData"] as string, kind = ((ActivityKind)ar["ActivityKind"]).ToString(), time = ((DateTime)ar["ActivityDate"]).ToString(DATE_FORMAT), isBulkOperation = (bool)ar["ActivityIsMassOperation"], userId = (int)ar["UserId"] }; AddUser(activities, activity, ar); return(activity); }