Ejemplo n.º 1
1
        private void UpdateUserRank(int UserID)
        {
            ComboUser user = new ComboUser();
            user.GetUserByUserId(UserID);

            UserActivityLog log = new UserActivityLog();
            log.GetActivityDaysByUserID(user.ComboUserID);

            ComboPost posts = new ComboPost();
            posts.GetUserPostsCountByUserID(user.ComboUserID);

            ComboComment comments = new ComboComment();
            comments.GetPostCommentsCountByUserID(user.ComboUserID);

            ComboPostLike postLikes = new ComboPostLike();
            postLikes.GetPostLikesCountByUserID(user.ComboUserID);

            ProfileFollower followers = new ProfileFollower();
            followers.GetProfileFollowersCountByUserID(user.ComboUserID);

            ProfileFollower followings = new ProfileFollower();
            followings.GetProfileFollowingCountByUserID(user.ComboUserID);

            ProfileLiker profileLikes = new ProfileLiker();
            profileLikes.GetProfileLikerCountByUserID(user.ComboUserID);

            int oldRank = user.UserRankID;

            if (Convert.ToInt32(log.GetColumn("TotalActivityDays")) > 365 ||
                Convert.ToInt32(posts.GetColumn("TotalPostCount")) > 3000 ||
                Convert.ToInt32(comments.GetColumn("TotalCount")) > 3000 ||
                Convert.ToInt32(postLikes.GetColumn("TotalPostLikes")) > 3000 ||
                Convert.ToInt32(followers.GetColumn("TotalFollowers")) > 3000 ||
                Convert.ToInt32(followings.GetColumn("TotalFollowings")) > 3000 ||
                Convert.ToInt32(profileLikes.GetColumn("TotalProfileLikes")) > 3000)
            {
                user.UserRankID = 5;
            }
            else if (Convert.ToInt32(log.GetColumn("TotalActivityDays")) > 240 ||
                    Convert.ToInt32(posts.GetColumn("TotalPostCount")) > 2000 ||
                    Convert.ToInt32(comments.GetColumn("TotalCount")) > 2000 ||
                    Convert.ToInt32(postLikes.GetColumn("TotalPostLikes")) > 2000 ||
                    Convert.ToInt32(followers.GetColumn("TotalFollowers")) > 2000 ||
                    Convert.ToInt32(followings.GetColumn("TotalFollowings")) > 2000 ||
                    Convert.ToInt32(profileLikes.GetColumn("TotalProfileLikes")) > 2000)
            {
                user.UserRankID = 4;
            }
            else if (Convert.ToInt32(log.GetColumn("TotalActivityDays")) > 120 ||
                    Convert.ToInt32(posts.GetColumn("TotalPostCount")) > 1000 ||
                    Convert.ToInt32(comments.GetColumn("TotalCount")) > 1000 ||
                    Convert.ToInt32(postLikes.GetColumn("TotalPostLikes")) > 1000 ||
                    Convert.ToInt32(followers.GetColumn("TotalFollowers")) > 1000 ||
                    Convert.ToInt32(followings.GetColumn("TotalFollowings")) > 1000 ||
                    Convert.ToInt32(profileLikes.GetColumn("TotalProfileLikes")) > 1000)
            {
                user.UserRankID = 3;
            }
            else if (Convert.ToInt32(log.GetColumn("TotalActivityDays")) > 30 ||
                    Convert.ToInt32(posts.GetColumn("TotalPostCount")) > 500 ||
                    Convert.ToInt32(comments.GetColumn("TotalCount")) > 500 ||
                    Convert.ToInt32(postLikes.GetColumn("TotalPostLikes")) > 500 ||
                    Convert.ToInt32(followers.GetColumn("TotalFollowers")) > 500 ||
                    Convert.ToInt32(followings.GetColumn("TotalFollowings")) > 500 ||
                    Convert.ToInt32(profileLikes.GetColumn("TotalProfileLikes")) > 500)
            {
                user.UserRankID = 2;
            }

            user.Save();
            if (user.UserRankID > oldRank)
            {
                /**************************/
                // save notification and push it to device
                UserRank old = new UserRank();
                old.LoadByPrimaryKey(oldRank);

                UserRank newrank = new UserRank();
                newrank.LoadByPrimaryKey(user.UserRankID);

                List<Models.UserRankUpdated> arequest = user.DefaultView.Table.AsEnumerable().Select(row =>
                {
                    return new Models.UserRankUpdated
                    {
                        ComboUserID = Convert.ToInt32(row["ComboUserID"]),
                        UserName = user.UserName,
                        DisplayName = user.DisplayName,
                        OldUserRankID = oldRank,
                        NewUserRankID = user.UserRankID,
                        OldRankName = old.Name,
                        NewRankName = newrank.Name,
                        ProfilePic = row["ProfilePic"].ToString()
                    };
                }).ToList();

                ComboNotification notification = new ComboNotification();
                notification.AddNew();
                notification.ComboUserID = user.ComboUserID;
                notification.NotificationType = (int)Combo.Models.NotificationType.UPDATE_USER_RANK; // update rank
                notification.NotificationDate = DateTime.UtcNow;
                notification.NotificationBody = Newtonsoft.Json.JsonConvert.SerializeObject(arequest);
                notification.IsRead = false;
                notification.Save();

                List<Models.ComboNotification> notificationJson = notification.DefaultView.Table.AsEnumerable().Select(row =>
                {
                    return new Models.ComboNotification
                    {
                        ComboNotificationID = Convert.ToInt32(row["ComboNotificationID"]),
                        ComboUserID = Convert.ToInt32(row["ComboUserID"]),
                        IsRead = Convert.ToBoolean(row["IsRead"]),
                        NotificationBody = row["NotificationBody"].ToString(),
                        NotificationDate = Convert.ToDateTime(row["NotificationDate"].ToString()).Subtract(new DateTime(1970, 1, 1)).TotalSeconds,
                        NotificationType = Convert.ToInt32(row["NotificationType"])
                    };
                }).ToList();

                SendGCMNotification(Newtonsoft.Json.JsonConvert.SerializeObject(notificationJson), user.DeviceID);
                /**************************/
            }
        }
Ejemplo n.º 2
0
        public void SearchPosts(string filterText, int requester,int Page)
        {
            Models.ComboResponse _response = new Models.ComboResponse();
            _response.bool_result = true;
            _response.ErrorCode = 0;
            _response.ErrorMsg = "";

            ComboPost posts = new ComboPost();
            posts.SearchPosts(filterText, requester);
            List<Models.ComboPost> Posts = posts.DefaultView.Table.AsEnumerable().Select(row =>
            {
                return new Models.ComboPost
                {
                    ComboPostID = Convert.ToInt32(row["ComboPostID"]),
                    ComboUserID = Convert.ToInt32(row["ComboUserID"]),
                    ComboUserName = row["UserName"].ToString(),
                    ProfilePic = row["ProfilePic"].ToString(),
                    PostText = row["PostText"].ToString(),
                    PostDate = Convert.ToDateTime(row["PostDate"].ToString()).Subtract(new DateTime(1970, 1, 1)).TotalSeconds,
                    IsDownloadable = (row["IsPostsDownloadable"] == DBNull.Value) ? false : Convert.ToBoolean(row["IsPostsDownloadable"])
                };
            }).Skip(Page * PostsPageSize).Take(PostsPageSize).ToList();

            foreach (Models.ComboPost item in Posts)
            {
                ComboPostLike likes = new ComboPostLike();
                likes.GetPostLikesByPostID(item.ComboPostID);
                item.Likes = likes.DefaultView.Table.AsEnumerable().Select(r =>
                {
                    return new Models.ComboPostLike
                    {
                        ComboPostID = Convert.ToInt32(r["ComboPostID"]),
                        ComboUserID = Convert.ToInt32(r["ComboUserID"]),
                        UserName = r["UserName"].ToString(),
                    };
                }).ToList();

                ComboComment totalCount = new ComboComment();
                totalCount.GetPostCommentsCount(item.ComboPostID);

                item.CommentsCount = Convert.ToInt32(totalCount.GetColumn("TotalCount"));

                ComboPostShare shareCount = new ComboPostShare();
                shareCount.GetPostShareCount(item.ComboPostID);

                item.ShareCount = Convert.ToInt32(shareCount.GetColumn("TotalCount"));

                ComboComment comments = new ComboComment();
                comments.GetTopPostCommentsByPostID(item.ComboPostID);
                // get top 3 comments for each post
                item.Comments = comments.DefaultView.Table.AsEnumerable().Select(r =>
                {
                    return new Models.ComboComment
                    {
                        ComboCommentID = Convert.ToInt32(r["ComboCommentID"]),
                        ComboPostID = Convert.ToInt32(r["ComboPostID"]),
                        ComboUserID = Convert.ToInt32(r["ComboUserID"]),
                        ComboUserName = r["UserName"].ToString(),
                        ProfilePic = r["ProfilePic"].ToString(),
                        CommentText = r["CommentText"].ToString(),
                        CommentDate = Convert.ToDateTime(r["CommentDate"].ToString()).Subtract(new DateTime(1970, 1, 1)).TotalSeconds,
                    };
                }).ToList();

                List<Models.ComboComment> _comm = item.Comments as List<Models.ComboComment>;
                foreach (Models.ComboComment _itemcomm in _comm)
                {
                    ComboCommentLike c_likes = new ComboCommentLike();
                    ComboCommentAttachment c_attachments = new ComboCommentAttachment();
                    c_likes.GetCommentLikesByCommentID(_itemcomm.ComboCommentID);
                    c_attachments.GetCommentAttachmentsByCommentID(_itemcomm.ComboCommentID);
                    _itemcomm.Likes = c_likes.DefaultView.Table.AsEnumerable().Select(r =>
                    {
                        return new Models.ComboCommentLike
                        {
                            ComboCommentID = Convert.ToInt32(r["ComboCommentID"]),
                            ComboUserID = Convert.ToInt32(r["ComboUserID"]),
                            UserName = r["UserName"].ToString(),
                        };
                    }).ToList();
                    _itemcomm.Attachments = c_attachments.DefaultView.Table.AsEnumerable().Select(r =>
                    {
                        return new Models.Attachment
                        {
                            AttachmentID = Convert.ToInt32(r["AttachmentID"]),
                            Path = r["Path"].ToString(),
                            AttachmentTypeID = Convert.ToInt32(r["AttachmentTypeID"]),
                            ThumbsPath = r["ThumbsPath"].ToString()
                        };
                    }).ToList();

                    // get user mention
                    CommentUserTag CommentuserTags = new CommentUserTag();
                    CommentuserTags.GetUserTagsByCommentID(_itemcomm.ComboCommentID);
                    _itemcomm.UserTags = CommentuserTags.DefaultView.Table.AsEnumerable().Select(r =>
                    {
                        return new Models.CommentUserTag
                        {
                            ComboCommentID = Convert.ToInt32(r["ComboCommentID"]),
                            UserName = r["Username"].ToString(),
                            ComboUserID = Convert.ToInt32(r["ComboUserID"]),
                            Offset = Convert.ToInt32(r["Offset"])
                        };
                    }).ToList();

                    // get hashtags
                    CommentHashTag Commenthastags = new CommentHashTag();
                    Commenthastags.GetHashTagsByCommnetID(_itemcomm.ComboCommentID);
                    _itemcomm.HashTags = Commenthastags.DefaultView.Table.AsEnumerable().Select(r =>
                    {
                        return new Models.CommentHashTag
                        {
                            HashTagID = Convert.ToInt32(r["HashTagID"]),
                            TagName = r["Name"].ToString(),
                            Offset = Convert.ToInt32(r["Offset"])
                        };
                    }).ToList();
                }

                item.Comments = _comm;

                ComboPostAttachment attachments = new ComboPostAttachment();
                attachments.GetPostAttachmentsByPostID(item.ComboPostID);
                item.Attachments = attachments.DefaultView.Table.AsEnumerable().Select(r =>
                {
                    return new Models.Attachment
                    {
                        AttachmentID = Convert.ToInt32(r["AttachmentID"]),
                        Path = r["Path"].ToString(),
                        AttachmentTypeID = Convert.ToInt32(r["AttachmentTypeID"]),
                        ThumbsPath = r["ThumbsPath"].ToString()
                    };
                }).ToList();

                // get user mention
                PostUserTag userTags = new PostUserTag();
                userTags.GetUserTagsByPostID(item.ComboPostID);
                item.UserTags = userTags.DefaultView.Table.AsEnumerable().Select(r =>
                {
                    return new Models.PostUserTag
                    {
                        ComboPostID = Convert.ToInt32(r["ComboPostID"]),
                        UserName = r["Username"].ToString(),
                        ComboUserID = Convert.ToInt32(r["ComboUserID"]),
                        Offset = Convert.ToInt32(r["Offset"])
                    };
                }).ToList();

                // get hashtags
                PostHashTag hastags = new PostHashTag();
                hastags.GetHashTagsByPostID(item.ComboPostID);
                item.HashTags = hastags.DefaultView.Table.AsEnumerable().Select(r =>
                {
                    return new Models.PostHashTag
                    {
                        HashTagID = Convert.ToInt32(r["HashTagID"]),
                        TagName = r["Name"].ToString(),
                        Offset = Convert.ToInt32(r["Offset"])
                    };
                }).ToList();
            }

            _response.Entity = Posts;
            SetContentResult(_response);
            //return _response;
        }
Ejemplo n.º 3
0
        public void GetUserInfoByID(int id)
        {
            Models.ComboResponse _response = new Models.ComboResponse();
            _response.bool_result = true;
            _response.ErrorCode = 0;
            _response.ErrorMsg = "";

            ComboUser user = new ComboUser();
            user.GetUserByUserId(id);

            ComboComment comments = new ComboComment();
            comments.GetPostCommentsCountByUserID(user.ComboUserID);

            UserActivityLog log = new UserActivityLog();
            log.GetActivityDaysByUserID(user.ComboUserID);

            ComboUser stats = new ComboUser();
            stats.GetUserStatisticsByUserId(id);

            List<Models.ComboUser> Users = user.DefaultView.Table.AsEnumerable().Select(row =>
            {
                return new Models.ComboUser
                {
                    ComboUserID = Convert.ToInt32(row["ComboUserID"]),
                    UserName = row["UserName"].ToString(),
                    DisplayName = row["DisplayName"].ToString(),
                    Password = row["Password"].ToString(),
                    Email = row["Email"].ToString(),
                    Bio = row["Bio"].ToString(),
                    ProfileImgID = row.IsNull("ProfileImgID") ? 0 : Convert.ToInt32(row["ProfileImgID"]),
                    CoverImgID = row.IsNull("CoverImgID") ? 0 : Convert.ToInt32(row["CoverImgID"]),
                    GenderID = row.IsNull("GenderID") ? 0 : Convert.ToInt32(row["GenderID"]),
                    IsActivated = row.IsNull("IsActivated") ? false : Convert.ToBoolean(row["IsActivated"]),
                    ExternalIDType = row.IsNull("ExternalIDType") ? 0 : Convert.ToInt32(row["ExternalIDType"]),
                    ExternalID = row["ExternalID"].ToString(),
                    DeviceID = row["DeviceID"].ToString(),
                    ActivationCode = row.IsNull("ActivationCode") ? Guid.Empty : new Guid(row["ActivationCode"].ToString()),
                    PassResetCode = row.IsNull("PassResetCode") ? Guid.Empty : new Guid(row["PassResetCode"].ToString()),
                    FollowersCount = Convert.ToInt32(stats.GetColumn("FollowersCount")),
                    FollowingCount = Convert.ToInt32(stats.GetColumn("FollowingsCount")),
                    FriendsCount = Convert.ToInt32(stats.GetColumn("FriendsCount")),
                    PostsCount = Convert.ToInt32(stats.GetColumn("PostsCount")),
                    PostsLikeCount = Convert.ToInt32(stats.GetColumn("PostsLikeCount")),
                    ProfilePic = row["ProfilePic"].ToString(),
                    SecurityQuestion = row["SecurityQuestion"].ToString(),
                    SecurityAnswer = row["SecurityAnswer"].ToString(),
                    UserRankID = Convert.ToInt32(row["UserRankID"]),
                    ProfileLikerCount = Convert.ToInt32(stats.GetColumn("ProfileLikerCount")),
                    SecurityWord = row["SecurityWord"].ToString(),
                    CountryFlagPath = row["CountryFlagPath"].ToString(),
                    Location = row["Location"].ToString(),
                    TotalActivityDays = log.RowCount > 0 ? Convert.ToInt32(log.GetColumn("TotalActivityDays")) : 0,
                    CommentsCount = Convert.ToInt32(comments.GetColumn("TotalCount"))
                };
            }).ToList();

            _response.Entity = Users;
            SetContentResult(_response);
        }
Ejemplo n.º 4
0
        public void GetPosts(int UserID, int Page)
        {
            Models.ComboResponse _response = new Models.ComboResponse();
            _response.bool_result = true;
            _response.ErrorCode = 0;
            _response.ErrorMsg = "";

            ComboPost posts = new ComboPost();
            posts.GetPostByUserID(UserID);
            List<Models.ComboPost> Posts = posts.DefaultView.Table.AsEnumerable().Select(row =>
            {
                return new Models.ComboPost
                {
                    ComboPostID = Convert.ToInt32(row["ComboPostID"]),
                    ComboUserID = Convert.ToInt32(row["ComboUserID"]),
                    ComboUserName = row["UserName"].ToString(),
                    ProfilePic = row["ProfilePic"].ToString(),
                    PostText = row["PostText"].ToString(),
                    PostDate = Convert.ToDateTime(row["PostDate"].ToString()).Subtract(new DateTime(1970, 1, 1)).TotalSeconds,
                    IsDownloadable = (row["IsPostsDownloadable"] == DBNull.Value) ? false : Convert.ToBoolean(row["IsPostsDownloadable"]),
                    Source = Convert.ToInt32(row["Source"]),
                    IsFavourite = Convert.ToBoolean(row["IsFavourite"]),
                    IsLike = Convert.ToBoolean(row["IsLike"]),
                    UserRankID = Convert.ToInt32(row["UserRankID"]),
                    IsCommented = Convert.ToBoolean(row["IsCommented"]),
                    IsReposted = Convert.ToBoolean(row["IsReposted"]),
                };
            }).Skip(Page * PostsPageSize).Take(PostsPageSize).ToList();

            foreach (Models.ComboPost item in Posts)
            {
                ComboPostLike likes = new ComboPostLike();
                likes.GetPostLikesByPostID(item.ComboPostID);
                item.Likes = likes.DefaultView.Table.AsEnumerable().Select(r =>
                    {
                        return new Models.ComboPostLike
                        {
                            ComboPostID = Convert.ToInt32(r["ComboPostID"]),
                            ComboUserID = Convert.ToInt32(r["ComboUserID"]),
                            UserName = r["UserName"].ToString(),
                        };
                    }).ToList();

                ComboComment totalCount = new ComboComment();
                totalCount.GetPostCommentsCount(item.ComboPostID);

                item.CommentsCount = Convert.ToInt32(totalCount.GetColumn("TotalCount"));

                ComboPostShare shareCount = new ComboPostShare();
                shareCount.GetPostShareCount(item.ComboPostID);

                item.ShareCount = Convert.ToInt32(shareCount.GetColumn("TotalCount"));

                ComboComment comments = new ComboComment();
                comments.GetTopPostCommentsByPostID(item.ComboPostID);
                // get top 3 comments for each post
                item.Comments = comments.DefaultView.Table.AsEnumerable().Select(r =>
                    {
                        return new Models.ComboComment
                        {
                            ComboCommentID = Convert.ToInt32(r["ComboCommentID"]),
                            ComboPostID = Convert.ToInt32(r["ComboPostID"]),
                            ComboUserID = Convert.ToInt32(r["ComboUserID"]),
                            ComboUserName = r["UserName"].ToString(),
                            ProfilePic = r["ProfilePic"].ToString(),
                            CommentText = r["CommentText"].ToString(),
                            CommentDate = Convert.ToDateTime(r["CommentDate"].ToString()).Subtract(new DateTime(1970, 1, 1)).TotalSeconds,
                        };
                    }).ToList();

                List<Models.ComboComment> _comm = item.Comments as List<Models.ComboComment>;
                foreach (Models.ComboComment _itemcomm in _comm)
                {
                    ComboCommentLike c_likes = new ComboCommentLike();
                    ComboCommentAttachment c_attachments = new ComboCommentAttachment();
                    c_likes.GetCommentLikesByCommentID(_itemcomm.ComboCommentID);
                    c_attachments.GetCommentAttachmentsByCommentID(_itemcomm.ComboCommentID);

                    _itemcomm.Likes = c_likes.DefaultView.Table.AsEnumerable().Select(r =>
                    {
                        return new Models.ComboCommentLike
                        {
                            ComboCommentID = Convert.ToInt32(r["ComboCommentID"]),
                            ComboUserID = Convert.ToInt32(r["ComboUserID"]),
                            UserName = r["UserName"].ToString(),
                        };
                    }).ToList();
                    _itemcomm.Attachments = c_attachments.DefaultView.Table.AsEnumerable().Select(r =>
                    {
                        return new Models.Attachment
                        {
                            AttachmentID = Convert.ToInt32(r["AttachmentID"]),
                            Path = r["Path"].ToString(),
                            AttachmentTypeID = Convert.ToInt32(r["AttachmentTypeID"]),
                            ThumbsPath = r["ThumbsPath"].ToString()
                        };
                    }).ToList();

                    // get user mention
                    CommentUserTag CommentuserTags = new CommentUserTag();
                    CommentuserTags.GetUserTagsByCommentID(_itemcomm.ComboCommentID);
                    _itemcomm.UserTags = CommentuserTags.DefaultView.Table.AsEnumerable().Select(r =>
                    {
                        return new Models.CommentUserTag
                        {
                            ComboCommentID = Convert.ToInt32(r["ComboCommentID"]),
                            UserName = r["Username"].ToString(),
                            ComboUserID = Convert.ToInt32(r["ComboUserID"]),
                            Offset = Convert.ToInt32(r["Offset"])
                        };
                    }).ToList();

                    // get hashtags
                    CommentHashTag Commenthastags = new CommentHashTag();
                    Commenthastags.GetHashTagsByCommnetID(_itemcomm.ComboCommentID);
                    _itemcomm.HashTags = Commenthastags.DefaultView.Table.AsEnumerable().Select(r =>
                    {
                        return new Models.CommentHashTag
                        {
                            HashTagID = Convert.ToInt32(r["HashTagID"]),
                            TagName = r["Name"].ToString(),
                            Offset = Convert.ToInt32(r["Offset"])
                        };
                    }).ToList();
                }

                item.Comments = _comm;

                ComboPostAttachment attachments = new ComboPostAttachment();
                attachments.GetPostAttachmentsByPostID(item.ComboPostID);
                item.Attachments = attachments.DefaultView.Table.AsEnumerable().Select(r =>
                    {
                        return new Models.Attachment
                        {
                            AttachmentID = Convert.ToInt32(r["AttachmentID"]),
                            Path = r["Path"].ToString(),
                            AttachmentTypeID = Convert.ToInt32(r["AttachmentTypeID"]),
                            ThumbsPath = r["ThumbsPath"].ToString()
                        };
                    }).ToList();

                // get user mention
                PostUserTag userTags = new PostUserTag();
                userTags.GetUserTagsByPostID(item.ComboPostID);
                item.UserTags = userTags.DefaultView.Table.AsEnumerable().Select(r =>
                {
                    return new Models.PostUserTag
                    {
                        ComboPostID = Convert.ToInt32(r["ComboPostID"]),
                        UserName = r["Username"].ToString(),
                        ComboUserID = Convert.ToInt32(r["ComboUserID"]),
                        Offset = Convert.ToInt32(r["Offset"])
                    };
                }).ToList();

                // get hashtags
                PostHashTag hastags = new PostHashTag();
                hastags.GetHashTagsByPostID(item.ComboPostID);
                item.HashTags = hastags.DefaultView.Table.AsEnumerable().Select(r =>
                {
                    return new Models.PostHashTag
                    {
                        HashTagID = Convert.ToInt32(r["HashTagID"]),
                        TagName = r["Name"].ToString(),
                        Offset = Convert.ToInt32(r["Offset"])
                    };
                }).ToList();
            }

            _response.Entity = Posts;
            SetContentResult(_response);

            // calculate user rank in another thread
            // and send notifications with followers birthday
            ThreadPool.QueueUserWorkItem(delegate
            {
                if (AddActivityLog(UserID, DateTime.Now.Date))
                {
                    SendFollowersBirthdaysNotifications(UserID);
                    UpdateUserRank(UserID);
                }
            });

            //return _response;
        }
Ejemplo n.º 5
0
        public void GetPostByID(int id, int CommentPage)
        {
            Models.ComboResponse _response = new Models.ComboResponse();
            _response.bool_result = true;
            _response.ErrorCode = 0;
            _response.ErrorMsg = "";

            ComboPost post = new ComboPost();
            post.GetPostByID(id);
            ComboPostLike likes = new ComboPostLike();
            ComboPostAttachment attachments = new ComboPostAttachment();
            ComboComment comments = new ComboComment();

            likes.GetPostLikesByPostID(post.ComboPostID);
            attachments.GetPostAttachmentsByPostID(post.ComboPostID);
            comments.GetPostCommentsByPostID(post.ComboPostID);

            PostUserTag userTags = new PostUserTag();
            userTags.GetUserTagsByPostID(post.ComboPostID);

            PostHashTag hastags = new PostHashTag();
            hastags.GetHashTagsByPostID(post.ComboPostID);

            ComboComment totalCount = new ComboComment();
            totalCount.GetPostCommentsCount(post.ComboPostID);

            ComboPostShare shareCount = new ComboPostShare();
            shareCount.GetPostShareCount(post.ComboPostID);

            List<Models.ComboPost> Post = post.DefaultView.Table.AsEnumerable().Select(row =>
            {
                return new Models.ComboPost
                {
                    ComboPostID = Convert.ToInt32(row["ComboPostID"]),
                    ComboUserID = Convert.ToInt32(row["ComboUserID"]),
                    ComboUserName = row["UserName"].ToString(),
                    ProfilePic = row["ProfilePic"].ToString(),
                    PostText = row["PostText"].ToString(),
                    PostDate = Convert.ToDateTime(row["PostDate"].ToString()).Subtract(new DateTime(1970, 1, 1)).TotalSeconds,
                    IsDownloadable = (row["IsPostsDownloadable"] == DBNull.Value) ? false : Convert.ToBoolean(row["IsPostsDownloadable"]),
                    CommentsCount = Convert.ToInt32(totalCount.GetColumn("TotalCount")),
                    ShareCount = Convert.ToInt32(shareCount.GetColumn("TotalCount")),
                    Likes = likes.DefaultView.Table.AsEnumerable().Select(r =>
                    {
                        return new Models.ComboPostLike
                        {
                            ComboPostID = Convert.ToInt32(r["ComboPostID"]),
                            ComboUserID = Convert.ToInt32(r["ComboUserID"]),
                            UserName = r["UserName"].ToString(),
                        };
                    }).ToList(),
                    // get top 20 comment for post
                    Comments = comments.DefaultView.Table.AsEnumerable().Select(r =>
                    {
                        return new Models.ComboComment
                        {
                            ComboCommentID = Convert.ToInt32(r["ComboCommentID"]),
                            ComboPostID = Convert.ToInt32(r["ComboPostID"]),
                            ComboUserID = Convert.ToInt32(r["ComboUserID"]),
                            ComboUserName = r["UserName"].ToString(),
                            ProfilePic = r["ProfilePic"].ToString(),
                            CommentText = r["CommentText"].ToString(),
                            CommentDate = Convert.ToDateTime(r["CommentDate"].ToString()).Subtract(new DateTime(1970, 1, 1)).TotalSeconds,
                        };
                    }).Skip(CommentPage * CommentsPageSize).Take(CommentsPageSize).ToList(),
                    Attachments = attachments.DefaultView.Table.AsEnumerable().Select(r =>
                    {
                        return new Models.Attachment
                        {
                            AttachmentID = Convert.ToInt32(r["AttachmentID"]),
                            Path = r["Path"].ToString(),
                            AttachmentTypeID = Convert.ToInt32(r["AttachmentTypeID"]),
                            ThumbsPath = r["ThumbsPath"].ToString()
                        };
                    }).ToList(),

                    // get user mention

                    UserTags = userTags.DefaultView.Table.AsEnumerable().Select(r =>
                    {
                        return new Models.PostUserTag
                        {
                            ComboPostID = Convert.ToInt32(r["ComboPostID"]),
                            UserName = r["Username"].ToString(),
                            ComboUserID = Convert.ToInt32(r["ComboUserID"]),
                            Offset = Convert.ToInt32(r["Offset"])
                        };
                    }).ToList(),

                    // get hashtags

                    HashTags = hastags.DefaultView.Table.AsEnumerable().Select(r =>
                    {
                        return new Models.PostHashTag
                        {
                            HashTagID = Convert.ToInt32(r["HashTagID"]),
                            TagName = r["Name"].ToString(),
                            Offset = Convert.ToInt32(r["Offset"])
                        };
                    }).ToList(),
                    UserRankID = Convert.ToInt32(row["UserRankID"]),

                };
            }).ToList();

            foreach (Models.ComboPost item in Post)
            {
                List<Models.ComboComment> comm = (List<Models.ComboComment>)item.Comments;
                for (int i = 0; i < comm.Count;i++ )
                {
                    ComboCommentLike c_likes = new ComboCommentLike();
                    ComboCommentAttachment c_attachments = new ComboCommentAttachment();
                    c_likes.GetCommentLikesByCommentID(comm[i].ComboCommentID);
                    c_attachments.GetCommentAttachmentsByCommentID(comm[i].ComboCommentID);
                    comm[i].Likes = c_likes.DefaultView.Table.AsEnumerable().Select(r =>
                    {
                        return new Models.ComboCommentLike
                        {
                            ComboCommentID = Convert.ToInt32(r["ComboCommentID"]),
                            ComboUserID = Convert.ToInt32(r["ComboUserID"]),
                            UserName = r["UserName"].ToString(),
                        };
                    }).ToList();
                    comm[i].Attachments = c_attachments.DefaultView.Table.AsEnumerable().Select(r =>
                    {
                        return new Models.Attachment
                        {
                            AttachmentID = Convert.ToInt32(r["AttachmentID"]),
                            Path = r["Path"].ToString(),
                            AttachmentTypeID = Convert.ToInt32(r["AttachmentTypeID"]),
                            ThumbsPath = r["ThumbsPath"].ToString()
                        };
                    }).ToList();

                    // get user mention
                    CommentUserTag CommentuserTags = new CommentUserTag();
                    CommentuserTags.GetUserTagsByCommentID(comm[i].ComboCommentID);
                    comm[i].UserTags = CommentuserTags.DefaultView.Table.AsEnumerable().Select(r =>
                    {
                        return new Models.CommentUserTag
                        {
                            ComboCommentID = Convert.ToInt32(r["ComboCommentID"]),
                            UserName = r["Username"].ToString(),
                            ComboUserID = Convert.ToInt32(r["ComboUserID"]),
                            Offset = Convert.ToInt32(r["Offset"])
                        };
                    }).ToList();

                    // get hashtags
                    CommentHashTag Commenthastags = new CommentHashTag();
                    Commenthastags.GetHashTagsByCommnetID(comm[i].ComboCommentID);
                    comm[i].HashTags = Commenthastags.DefaultView.Table.AsEnumerable().Select(r =>
                    {
                        return new Models.CommentHashTag
                        {
                            HashTagID = Convert.ToInt32(r["HashTagID"]),
                            TagName = r["Name"].ToString(),
                            Offset = Convert.ToInt32(r["Offset"])
                        };
                    }).ToList();
                }

            }
            _response.Entity = Post;
            SetContentResult(_response);
        }
Ejemplo n.º 6
0
        public void GetMessagesBetweenUsers(int _1stUserID,int _2ndUserID ,int Page)
        {
            Models.ComboResponse _response = new Models.ComboResponse();
            _response.bool_result = true;
            _response.ErrorCode = 0;
            _response.ErrorMsg = "";

            ComboMsg Messages = new ComboMsg();
            Messages.GetMessagesBetweenUsers(_1stUserID, _2ndUserID);
            List<Models.ComboMessage> Msgs = Messages.DefaultView.Table.AsEnumerable().Select(row =>
            {
                return new Models.ComboMessage
                {
                    ComboMsgID = Convert.ToInt32(row["ComboMsgID"]),
                    ComboUserID = Convert.ToInt32(row["ComboUserID"]),
                    ComboUserName = row["UserName"].ToString(),
                    ProfilePic = row["ProfilePic"].ToString(),
                    MsgText = row["MsgText"].ToString(),
                    MsgDate = Convert.ToDateTime(row["MsgDate"].ToString()).Subtract(new DateTime(1970, 1, 1)).TotalSeconds,
                    ToIds = row["ToIds"].ToString().Replace("\"", "'")
                };
            }).Skip(Page * MsgsPageSize).Take(MsgsPageSize).ToList();

            foreach (Models.ComboMessage item in Msgs)
            {
                ComboComment totalCount = new ComboComment();
                totalCount.GetMsgCommentsCount(item.ComboMsgID);

                item.CommentsCount = Convert.ToInt32(totalCount.GetColumn("TotalCount"));

                ComboComment comments = new ComboComment();
                comments.GetMsgsCommentsByMsgID(item.ComboMsgID, "asc");
                // get top 3 comments for each post
                item.Comments = comments.DefaultView.Table.AsEnumerable().Select(r =>
                {
                    return new Models.ComboComment
                    {
                        ComboCommentID = Convert.ToInt32(r["ComboCommentID"]),
                        ComboMsgID = Convert.ToInt32(r["ComboMsgID"]),
                        ComboUserID = Convert.ToInt32(r["ComboUserID"]),
                        ComboUserName = r["UserName"].ToString(),
                        ProfilePic = r["ProfilePic"].ToString(),
                        CommentText = r["CommentText"].ToString(),
                        CommentDate = Convert.ToDateTime(r["CommentDate"].ToString()).Subtract(new DateTime(1970, 1, 1)).TotalSeconds,
                    };
                }).Skip(Page * MsgsCommentsPageSize).Take(MsgsCommentsPageSize).ToList();

                List<Models.ComboComment> _comm = item.Comments as List<Models.ComboComment>;
                foreach (Models.ComboComment _itemcomm in _comm)
                {

                    ComboCommentAttachment c_attachments = new ComboCommentAttachment();

                    c_attachments.GetCommentAttachmentsByCommentID(_itemcomm.ComboCommentID);

                    _itemcomm.Attachments = c_attachments.DefaultView.Table.AsEnumerable().Select(r =>
                    {
                        return new Models.Attachment
                        {
                            AttachmentID = Convert.ToInt32(r["AttachmentID"]),
                            Path = r["Path"].ToString(),
                            AttachmentTypeID = Convert.ToInt32(r["AttachmentTypeID"]),
                            ThumbsPath = r["ThumbsPath"].ToString()
                        };
                    }).ToList();
                }

                item.Comments = _comm;

                ComboMsgAttachment attachments = new ComboMsgAttachment();
                attachments.GetMsgAttachmentsByPostID(item.ComboMsgID);
                item.Attachments = attachments.DefaultView.Table.AsEnumerable().Select(r =>
                {
                    return new Models.Attachment
                    {
                        AttachmentID = Convert.ToInt32(r["AttachmentID"]),
                        Path = r["Path"].ToString(),
                        AttachmentTypeID = Convert.ToInt32(r["AttachmentTypeID"]),
                        ThumbsPath = r["ThumbsPath"].ToString()
                    };
                }).ToList();
            }

            _response.Entity = Msgs;
            SetContentResult(_response);
            //return _response;
        }