Exemplo n.º 1
0
        public GroupDetailsViewModel(Group group, Guid?userId = null)
        {
            if (group != null)
            {
                GroupId = group.Id;
                Url     = group.Url;

                Logo           = group.Logo;
                Name           = group.Name;
                Summary        = group.Summary;
                PollQuorum     = group.PollQuorum;
                ElectionQuorum = group.ElectionQuorum;

                if (group.Categories.Count > 0)
                {
                    Category = group.Categories.First().Title;
                }

                IsContentModeration = group.PrivacyEnum.HasFlag(GroupPrivacy.ContentModeration);
                IsMemberModeration  = group.PrivacyEnum.HasFlag(GroupPrivacy.MemberModeration);
                IsPrivateDiscussion = group.PrivacyEnum.HasFlag(GroupPrivacy.PrivateDiscussion);

                Badges             = new _BadgesViewModel(group);
                MembersCount       = group.GroupMembers.Count(gm => gm.State == (byte)GroupMemberState.Approved || gm.State == (byte)GroupMemberState.Moderator);
                MaxModeratorsCount = group.ModeratorsCount;

                ModeratorList = new Group_ModersViewModel(group);

                Topics = group.Tags.Where(x => x.TopicState == (byte)TopicState.GroupTopic).OrderByDescending(x => x.LowerTitle).Select(x => new TagViewModel(x)).ToList();
                Tags   = group.Tags.Where(x => x.TopicState != (byte)TopicState.GroupTopic).OrderByDescending(x => x.Weight).Select(x => new TagViewModel(x)).Take(50).ToList();

                if (userId.HasValue)
                {
                    var uig = GroupService.UserInGroup(userId.Value, group.Id);

                    if (uig != null && uig.State == (byte)GroupMemberState.Moderator)
                    {
                        ProposedTags = group.Tags.Where(x => x.TopicState == (byte)TopicState.ProposedTopic).Select(x => new TagViewModel(x)).ToList();
                    }
                }
            }
        }
Exemplo n.º 2
0
        public GroupMembersViewModel(Group group, string query = null)
        {
            if (group != null)
            {
                GroupId            = group.Id;
                GroupUrl           = group.Url;
                GroupName          = group.Name;
                GroupPrivacy       = (GroupPrivacy)group.Privacy;
                MaxModers          = group.ModeratorsCount;
                IsMemberModeration = group.PrivacyEnum.HasFlag(GroupPrivacy.MemberModeration);
                IsBlank            = group.State == (byte)GroupState.Blank;


                MembersTotalCount = DataService.PerThread.GroupMemberSet.Count(x => x.GroupId == group.Id && (x.State == (byte)GroupMemberState.Approved || x.State == (byte)GroupMemberState.Moderator));

                var groupMembers = group.GroupMembers;

                RequestsCount = groupMembers.Count(x => x.State == (byte)GroupMemberState.NotApproved);
                Moderators    = new Group_ModersViewModel(group);
                NoPhotoCount  = groupMembers.Count(x => x.State == (byte)GroupMemberState.Approved && x.User.Avatar == null);

                if (string.IsNullOrWhiteSpace(query))
                {
                    Members = groupMembers.Where(x => x.State == (byte)GroupMemberState.Approved && x.User.Avatar != null)
                              .OrderBy(x => Guid.NewGuid()).Take(ShowCount).Select(x => new GroupMembers_MemberViewModel(x)).ToList();
                }
                else
                {
                    Query = query;

                    var fullnamed = groupMembers
                                    .Where(x => !string.IsNullOrEmpty(x.User.SurName) && !string.IsNullOrEmpty(x.User.FirstName) &&
                                           query.Contains(x.User.SurName) && query.Contains(x.User.FirstName));
                    var lastnamed  = groupMembers.Where(x => !string.IsNullOrEmpty(x.User.SurName) && query.Contains(x.User.SurName));
                    var firstnamed = groupMembers.Where(x => !string.IsNullOrEmpty(x.User.FirstName) && query.Contains(x.User.FirstName));

                    Members = fullnamed.Union(lastnamed.Union(firstnamed)).Distinct().Take(ShowCount).Select(x => new GroupMembers_MemberViewModel(x)).ToList();
                }
            }
        }
Exemplo n.º 3
0
        public GroupMembersViewModel(Group group, string query = null)
        {
            if (group != null)
            {
                GroupId = group.Id;
                GroupUrl = group.Url;
                GroupName = group.Name;
                GroupPrivacy = (GroupPrivacy)group.Privacy;
                MaxModers = group.ModeratorsCount;
                IsMemberModeration = group.PrivacyEnum.HasFlag(GroupPrivacy.MemberModeration);
                IsBlank = group.State == (byte)GroupState.Blank;

                MembersTotalCount = DataService.PerThread.GroupMemberSet.Count(x => x.GroupId == group.Id && (x.State == (byte)GroupMemberState.Approved || x.State == (byte)GroupMemberState.Moderator));

                var groupMembers = group.GroupMembers;

                RequestsCount = groupMembers.Count(x => x.State == (byte)GroupMemberState.NotApproved);
                Moderators = new Group_ModersViewModel(group);
                NoPhotoCount = groupMembers.Count(x => x.State == (byte)GroupMemberState.Approved && x.User.Avatar == null);

                if (string.IsNullOrWhiteSpace(query))
                {
                    Members = groupMembers.Where(x => x.State == (byte)GroupMemberState.Approved && x.User.Avatar != null)
                        .OrderBy(x => Guid.NewGuid()).Take(ShowCount).Select(x => new GroupMembers_MemberViewModel(x)).ToList();
                }
                else
                {
                    Query = query;

                    var fullnamed = groupMembers
                        .Where(x => !string.IsNullOrEmpty(x.User.SurName) && !string.IsNullOrEmpty(x.User.FirstName) &&
                            query.Contains(x.User.SurName) && query.Contains(x.User.FirstName));
                    var lastnamed = groupMembers.Where(x => !string.IsNullOrEmpty(x.User.SurName) && query.Contains(x.User.SurName));
                    var firstnamed = groupMembers.Where(x => !string.IsNullOrEmpty(x.User.FirstName) && query.Contains(x.User.FirstName));

                    Members = fullnamed.Union(lastnamed.Union(firstnamed)).Distinct().Take(ShowCount).Select(x => new GroupMembers_MemberViewModel(x)).ToList();
                }
            }
        }
Exemplo n.º 4
0
        public GroupDetailsViewModel(Group group, Guid? userId = null)
        {
            if (group != null)
            {
                GroupId = group.Id;
                Url = group.Url;

                Logo = group.Logo;
                Name = group.Name;
                Summary = group.Summary;
                PollQuorum = group.PollQuorum;
                ElectionQuorum = group.ElectionQuorum;

                if (group.Categories.Count > 0)
                    Category = group.Categories.First().Title;

                IsContentModeration = group.PrivacyEnum.HasFlag(GroupPrivacy.ContentModeration);
                IsMemberModeration = group.PrivacyEnum.HasFlag(GroupPrivacy.MemberModeration);
                IsPrivateDiscussion = group.PrivacyEnum.HasFlag(GroupPrivacy.PrivateDiscussion);

                Badges = new _BadgesViewModel(group);
                MembersCount = group.GroupMembers.Count(gm => gm.State == (byte)GroupMemberState.Approved || gm.State == (byte)GroupMemberState.Moderator);
                MaxModeratorsCount = group.ModeratorsCount;

                ModeratorList = new Group_ModersViewModel(group);

                Topics = group.Tags.Where(x => x.TopicState == (byte)TopicState.GroupTopic).OrderByDescending(x=>x.LowerTitle).Select(x=>new TagViewModel(x)).ToList();
                Tags = group.Tags.Where(x => x.TopicState != (byte)TopicState.GroupTopic).OrderByDescending(x => x.Weight).Select(x => new TagViewModel(x)).Take(50).ToList();

                if (userId.HasValue)
                {
                    var uig = GroupService.UserInGroup(userId.Value, group.Id);

                    if (uig != null && uig.State == (byte)GroupMemberState.Moderator)
                        ProposedTags = group.Tags.Where(x => x.TopicState == (byte)TopicState.ProposedTopic).Select(x => new TagViewModel(x)).ToList();
                }
            }
        }
Exemplo n.º 5
0
        public override ICachedViewModel Initialize()
        {
            var group = GroupService.GetGroupByLabelOrId(_groupId);

            var membersCount = DataService.PerThread.GroupMemberSet.Count(gm => gm.GroupId == group.Id && (gm.State == (byte)GroupMemberState.Approved || gm.State == (byte)GroupMemberState.Moderator));
            var moderatorsCount = DataService.PerThread.GroupMemberSet.Count(gm => gm.GroupId == group.Id && gm.State == (byte)GroupMemberState.Moderator);

            State = (GroupState)group.State;
            GroupId = group.Id;
            MembersCount = membersCount;
            Name = group.Name;
            Summary = TextHelper.CleanTags(group.Summary);
            if (Summary.Length > 500)
                Summary = Summary.Substring(0, 500) + "…";
            Url = group.Url;
            GroupTagsCount = group.Tags.Count;
            RequiredModers = group.ModeratorsCount - moderatorsCount;
            IsExpertable = group.Tags.Count != 0;
            IsEditEnabled = group.Content.OfType<Election>().Count(x => !x.IsFinished) == 0;
            IsInvisible = group.PrivacyEnum.HasFlag(GroupPrivacy.Invisible);
            IsCreateElectionEnabled = GroupService.CanElectionsBeStarted(group);

            Topics = group.Tags.Where(x => x.TopicState == (byte) TopicState.GroupTopic).OrderByDescending(x => x.Weight).Take(5).ToList()
                .Select(x => new GroupIndex_TopicViewModel(x)).ToList();

            IQueryable<Content> feedQueue;

            if (_userId.HasValue && _userId.Value != Guid.Empty)
            {
                var uig = GroupService.UserInGroup(_userId.Value, GroupId);

                if (uig != null)
                {
                    MemberId = uig.Id;

                    feedQueue = DataService.PerThread.ContentSet.Where(x => x.GroupId.HasValue && x.GroupId.Value == _groupId
                        && (x.State == (byte)ContentState.Approved || (x.State == (byte)ContentState.Premoderated && (x.AuthorId.HasValue && x.AuthorId.Value == _userId.Value || uig.State == (byte)GroupMemberState.Moderator))));
                }
                else
                    feedQueue = DataService.PerThread.ContentSet.Where(x => x.GroupId.HasValue && x.GroupId.Value == _groupId && x.State == (byte)ContentState.Approved);
            }
            else
                feedQueue = DataService.PerThread.ContentSet.Where(x => x.GroupId.HasValue && x.GroupId.Value == _groupId && x.State == (byte)ContentState.Approved);

            if (ByDate.HasValue && ByDate.Value)
                feedQueue = feedQueue.OrderByDescending(x => x.PublishDate ?? DateTime.Now);
            else
            {
                /*feedQueue = (from content in feedQueue.Where(x => x.PublishDate.HasValue)
                    join comment in DataService.PerThread.CommentSet on content.Id equals comment.ContentId
                    join like in DataService.PerThread.LikeSet on content.Id equals like.ContentId
                    let commentsCount = content.Comments.Count
                    let likesCount = content.Likes.Count
                    let plusesCount = content.Likes.Count(x => x.Value)
                    let minusesCount = content.Likes.Count(x => !x.Value)
                    //orderby (Math.Pow(plusesCount * likesCount, 0.5) + commentsCount / 10) /
                    //    Math.Pow(EntityFunctions.DiffDays(content.PublishDate.Value, DateTime.Now).Value + 0.01, 0.5) /
                    //    Math.Pow(minusesCount + 1, 0.5) descending
                    orderby (Math.Pow(plusesCount * likesCount, 0.5) + commentsCount / 10 + 7) /
                        Math.Pow((EntityFunctions.DiffDays(content.PublishDate.Value, DateTime.Now).Value + 0.01) * (minusesCount + 1), 0.5)
                        descending
                    select content);*/

                feedQueue = feedQueue.OrderByDescending(x => (Math.Pow(x.Likes.Count(y => y.Value) * x.Likes.Count, 0.5) + x.Comments.Count / 10 + 7) /
                        Math.Pow((EntityFunctions.DiffDays(x.PublishDate.Value, DateTime.Now).Value + 0.01) * (x.Likes.Count(y => !y.Value) + 1), 0.5));
            }

            if (TopicId.HasValue)
                feedQueue = feedQueue.Where(x => x.Tags.Count(y => y.Id == TopicId.Value) != 0);

            Feed = new _ContentFeedViewModel(feedQueue, Url);
            Moders = new Group_ModersViewModel(group);

            return this;
        }
Exemplo n.º 6
0
        public override ICachedViewModel Initialize()
        {
            var group = GroupService.GetGroupByLabelOrId(_groupId);

            var membersCount    = DataService.PerThread.GroupMemberSet.Count(gm => gm.GroupId == group.Id && (gm.State == (byte)GroupMemberState.Approved || gm.State == (byte)GroupMemberState.Moderator));
            var moderatorsCount = DataService.PerThread.GroupMemberSet.Count(gm => gm.GroupId == group.Id && gm.State == (byte)GroupMemberState.Moderator);

            State        = (GroupState)group.State;
            GroupId      = group.Id;
            MembersCount = membersCount;
            Name         = group.Name;
            Summary      = TextHelper.CleanTags(group.Summary);
            if (Summary.Length > 500)
            {
                Summary = Summary.Substring(0, 500) + "…";
            }
            Url                     = group.Url;
            GroupTagsCount          = group.Tags.Count;
            RequiredModers          = group.ModeratorsCount - moderatorsCount;
            IsExpertable            = group.Tags.Count != 0;
            IsEditEnabled           = group.Content.OfType <Election>().Count(x => !x.IsFinished) == 0;
            IsInvisible             = group.PrivacyEnum.HasFlag(GroupPrivacy.Invisible);
            IsCreateElectionEnabled = GroupService.CanElectionsBeStarted(group);

            Topics = group.Tags.Where(x => x.TopicState == (byte)TopicState.GroupTopic).OrderByDescending(x => x.Weight).Take(5).ToList()
                     .Select(x => new GroupIndex_TopicViewModel(x)).ToList();

            IQueryable <Content> feedQueue;

            if (_userId.HasValue && _userId.Value != Guid.Empty)
            {
                var uig = GroupService.UserInGroup(_userId.Value, GroupId);

                if (uig != null)
                {
                    MemberId = uig.Id;

                    feedQueue = DataService.PerThread.ContentSet.Where(x => x.GroupId.HasValue && x.GroupId.Value == _groupId &&
                                                                       (x.State == (byte)ContentState.Approved || (x.State == (byte)ContentState.Premoderated && (x.AuthorId.HasValue && x.AuthorId.Value == _userId.Value || uig.State == (byte)GroupMemberState.Moderator))));
                }
                else
                {
                    feedQueue = DataService.PerThread.ContentSet.Where(x => x.GroupId.HasValue && x.GroupId.Value == _groupId && x.State == (byte)ContentState.Approved);
                }
            }
            else
            {
                feedQueue = DataService.PerThread.ContentSet.Where(x => x.GroupId.HasValue && x.GroupId.Value == _groupId && x.State == (byte)ContentState.Approved);
            }

            if (ByDate.HasValue && ByDate.Value)
            {
                feedQueue = feedQueue.OrderByDescending(x => x.PublishDate ?? DateTime.Now);
            }
            else
            {
                /*feedQueue = (from content in feedQueue.Where(x => x.PublishDate.HasValue)
                 *  join comment in DataService.PerThread.CommentSet on content.Id equals comment.ContentId
                 *  join like in DataService.PerThread.LikeSet on content.Id equals like.ContentId
                 *  let commentsCount = content.Comments.Count
                 *  let likesCount = content.Likes.Count
                 *  let plusesCount = content.Likes.Count(x => x.Value)
                 *  let minusesCount = content.Likes.Count(x => !x.Value)
                 *  //orderby (Math.Pow(plusesCount * likesCount, 0.5) + commentsCount / 10) /
                 *  //    Math.Pow(EntityFunctions.DiffDays(content.PublishDate.Value, DateTime.Now).Value + 0.01, 0.5) /
                 *  //    Math.Pow(minusesCount + 1, 0.5) descending
                 *  orderby (Math.Pow(plusesCount * likesCount, 0.5) + commentsCount / 10 + 7) /
                 *      Math.Pow((EntityFunctions.DiffDays(content.PublishDate.Value, DateTime.Now).Value + 0.01) * (minusesCount + 1), 0.5)
                 *      descending
                 *  select content);*/

                feedQueue = feedQueue.OrderByDescending(x => (Math.Pow(x.Likes.Count(y => y.Value) * x.Likes.Count, 0.5) + x.Comments.Count / 10 + 7) /
                                                        Math.Pow((EntityFunctions.DiffDays(x.PublishDate.Value, DateTime.Now).Value + 0.01) * (x.Likes.Count(y => !y.Value) + 1), 0.5));
            }

            if (TopicId.HasValue)
            {
                feedQueue = feedQueue.Where(x => x.Tags.Count(y => y.Id == TopicId.Value) != 0);
            }

            Feed   = new _ContentFeedViewModel(feedQueue, Url);
            Moders = new Group_ModersViewModel(group);

            return(this);
        }