示例#1
0
        public _PetitionViewModel(Petition petition, Guid? userId)
        {
            if (petition != null)
            {
                Id = petition.Id;
                Title = petition.Title;
                Text = petition.Text;
                IsFinished = petition.IsFinished;
                IsPrivate = petition.IsPrivate;
                StartDate = petition.PublishDate;
                State = (ContentState)petition.State;

                GroupId = petition.GroupId;

                Coauthors = petition.Coauthors.Where(c => c.IsAccepted.HasValue && c.IsAccepted.Value).Select(c => new _Petition_CoauthorViewModel(c)).ToList();
                SignersCount = DeclinationService.OfNumber(petition.Signers.Count, "человек", "человека", "человек");

                if (userId.HasValue)
                    IsUserSigned = petition.Signers.Count(x => x.Id == userId.Value) != 0;

                if (petition.PublishDate.HasValue && petition.Duration.HasValue)
                    EndDate = petition.PublishDate.Value.AddDays(petition.Duration.Value);

                if (petition.IsPrivate && petition.GroupId.HasValue)
                    Privacy = "только для членов группы";
            }
        }
        public UserDrafts_PetitionViewModel(Petition petition)
        {
            if (petition != null)
            {
                Id = petition.Id;
                AuthorId = petition.AuthorId;
                GroupId = petition.GroupId;

                if (petition.GroupId.HasValue)
                {
                    GroupName = petition.Group.Name;
                    GroupUrl = petition.Group.Url;

                    if (petition.IsPrivate)
                        Privacy = "только для членов группы";
                }

                Controller = petition.Controller;
                CreationDate = petition.CreationDate;
                Title = petition.Title;
                Tags = petition.Tags.Select(x => new TagViewModel(x)).ToList();

                Summary = TextHelper.CleanTags(petition.Text);
                if (Summary.Length > ConstHelper.MiniSummaryLength)
                    Summary = Summary.Substring(0, ConstHelper.MiniSummaryLength) + "…";
            }
        }
        public _PetitionStatus_PetitionViewModel(Petition record, Guid? userId)
        {
            if (record != null)
            {
                GroupId = record.GroupId;
                if (GroupId.HasValue)
                {
                    GroupName = record.Group.Name;
                    GroupUrl = record.Group.Url;

                    Url = record.GetUrl();
                }

                if (record.AuthorId.HasValue)
                {
                    AuthorId = record.AuthorId.Value;
                    AuthorName = record.Author.FirstName;
                    AuthorPatronymic = record.Author.Patronymic;
                    AuthorSurname = record.Author.SurName;
                    AuthorAvatar = ImageService.GetImageUrl<User>(record.Author.Avatar);

                    if (!GroupId.HasValue)
                        Url = record.GetUrl();
                }

                CommentsCount = DeclinationService.OfNumber(record.Comments.Count, "комментарий", "комментария", "комментариев");

                Id = record.Id;
                Title = record.Title;

                SignaturesCount = record.Signers.Count;
                IsFinished = record.IsFinished;
                if (record.Duration.HasValue && record.PublishDate.HasValue)
                    FinishDate = record.PublishDate.Value.AddDays(record.Duration.Value);

                IsUserParticipant = false;

                if (userId.HasValue && userId != Guid.Empty)
                {
                    if (record.GroupId.HasValue)
                    {
                        var member = GroupService.UserInGroup(userId.Value, record.GroupId.Value);
                        if (member != null)
                        {
                            IsUserParticipant = true;
                            var signature = record.Signers.Count(x=>x.Id == userId);
                            UserSigned = (signature > 0);
                        }
                    }
                    else
                    {
                        IsUserParticipant = true;
                        var signature = record.Signers.Count(x => x.Id == userId);
                        UserSigned = (signature > 0);
                    }
                }
            }
        }
        public GroupEditPetitionCoauthorsViewModel(Petition petition)
        {
            if (petition != null)
            {
                if (petition.GroupId.HasValue)
                    GroupId = petition.GroupId.Value;

                EditPetitionCoauthors = new _EditPetitionCoauthorsViewModel(petition);
            }
        }
        public GroupPetitionSignersViewModel(Petition petition)
        {
            if (petition != null)
            {
                if (petition.GroupId.HasValue)
                    GroupId = petition.GroupId.Value;

                PetitionId = petition.Id;
                PetitionTitle = petition.Title;
                Signers = petition.Signers.Select(x => new GroupPetitionSigners_UserViewModel(x)).ToList();
            }
        }
示例#6
0
        private void FixupPetition(Petition previousValue)
        {
            if (previousValue != null && ReferenceEquals(previousValue.Candidate, this))
            {
                previousValue.Candidate = null;
            }

            if (Petition != null)
            {
                Petition.Candidate = this;
            }
        }
 public _EditPetitionCoauthorsViewModel(Petition petition)
 {
     if (petition != null)
     {
         PetitionId = petition.Id;
         PetitionController = petition.Controller;
         PetitionTitle = petition.Title;
         Coauthors = petition.Coauthors.Select(x => new _EditPetitionCoauthors_Coauthor(x)).ToList();
     }
     else
         Coauthors = new List<_EditPetitionCoauthors_Coauthor>();
 }
        public UserPetitionSignersViewModel(Petition petition)
        {
            if (petition != null)
            {
                if (petition.AuthorId.HasValue)
                {
                    AuthorId = petition.AuthorId.Value;
                    AuthorName = petition.Author.FullName;
                }

                PetitionId = petition.Id;
                PetitionTitle = petition.Title;
                Signers = petition.Signers.Select(x => new UserPetitionSigners_UserViewModel(x)).ToList();
            }
        }
        public GroupEditPetitionViewModel(Petition petition)
        {
            if (petition != null)
            {
                if (petition.GroupId.HasValue)
                {
                    GroupId = petition.GroupId.Value;
                    GroupName = petition.Group.Name;
                    GroupUrl = petition.Group.Url;
                    IsContentModeration = petition.Group.PrivacyEnum.HasFlag(GroupPrivacy.ContentModeration);
                }

                EditPetition = new _EditPetitionViewModel(petition);
            }
        }
 public _EditPetitionViewModel(Petition petition)
 {
     Id = petition.Id;
     GroupId = petition.GroupId;
     if (GroupId.HasValue)
     {
         GroupUrl = petition.Group.Url;
         GroupName = petition.Group.Name;
     }
     AuthorId = petition.AuthorId;
     if (AuthorId.HasValue)
     {
         AuthorName = petition.Author.SurName + " " + petition.Author.FirstName + " " + petition.Author.Patronymic;
     }
     Title = petition.Title;
     Text = petition.Text;
     IsPrivate = petition.IsPrivate;
     TagTitles = TagsHelper.ConvertTagListToString(petition.Tags);
 }
示例#11
0
        private void FixupPetition(Petition previousValue)
        {
            if (previousValue != null && previousValue.Coauthors.Contains(this))
            {
                previousValue.Coauthors.Remove(this);
            }

            if (Petition != null)
            {
                if (!Petition.Coauthors.Contains(this))
                {
                    Petition.Coauthors.Add(this);
                }
                if (PetitionId != Petition.Id)
                {
                    PetitionId = Petition.Id;
                }
            }
        }
示例#12
0
        private void FixupPetition(Petition previousValue)
        {
            if (previousValue != null && ReferenceEquals(previousValue.Candidate, this))
            {
                previousValue.Candidate = null;
            }

            if (Petition != null)
            {
                Petition.Candidate = this;
            }
        }
示例#13
0
        public Petition CreatePetition(PetitionContainer data, Guid userId, bool saveChanges)
        {
            if (data.GroupId.HasValue)
            {
                var uig = GroupService.UserInGroup(userId, data.GroupId.Value);
                if (uig == null)
                    throw new BusinessLogicException("Только члены могут создавать петиции в группе");

                if (uig.State == (byte)GroupMemberState.NotApproved)
                    throw new BusinessLogicException("Вы ожидаете одобрения модератора");
            }

            var petition = new Petition
            {
                AuthorId = userId,
                CreationDate = DateTime.Now,
                Duration = 365,
                GroupId = data.GroupId.HasValue ? data.GroupId.Value : (Guid?)null,
                IsDiscussionClosed = false,
                IsPrivate = data.IsPrivate,
                Signers = new List<User>(),
                State = (byte)ContentState.Draft,
                Tags = TagsHelper.ConvertStringToTagList(data.Tags, data.GroupId),
                Text = data.Text,
                Title = data.Title
            };

            var user = DataService.PerThread.BaseUserSet.OfType<User>().SingleOrDefault(u => u.Id == userId);
            if (user == null)
                throw new BusinessLogicException("Перезайдите");

            petition.Signers.Add(user);

            DataService.PerThread.ContentSet.AddObject(petition);

            if (saveChanges)
                DataService.PerThread.SaveChanges();

            return petition;
        }
示例#14
0
        private void FixupPetition(Petition previousValue)
        {
            if (previousValue != null && previousValue.Coauthors.Contains(this))
            {
                previousValue.Coauthors.Remove(this);
            }

            if (Petition != null)
            {
                if (!Petition.Coauthors.Contains(this))
                {
                    Petition.Coauthors.Add(this);
                }
                if (PetitionId != Petition.Id)
                {
                    PetitionId = Petition.Id;
                }
            }
        }