public static Expert CreateExpertWithoutSaving(GroupMember expertGroupMember) { var expert = new Expert { GroupMember = expertGroupMember }; DataService.PerThread.ExpertSet.AddObject(expert); return expert; }
public GroupRequestsViewModel_RequestViewModel(GroupMember member) { if (member != null) { Id = member.UserId; GroupMemberId = member.Id; FullName = member.User.FullName; Avatar = ImageService.GetImageUrl<User>(member.User.Avatar); } }
public GroupContainer(GroupMember groupMember) { if (groupMember != null) { Id = groupMember.Group.Id; Name = groupMember.Group.Name; State = (GroupState)groupMember.Group.State; Url = groupMember.Group.Url; Logo = groupMember.Group.Logo; IsApprovedMember = groupMember.State == (byte)GroupMemberState.Approved || groupMember.State == (byte)GroupMemberState.Moderator; IsModerator = groupMember.State == (byte)GroupMemberState.Moderator; } }
/// <summary> /// Добавление указанного пользователя в группу /// </summary> /// <param name="userId">идентификатор пользователя</param> /// <param name="groupId">идентификатор группы</param> /// <returns>экземпляр участника группы</returns> public GroupMember AddMember(Guid userId, Guid groupId, bool saveChanges = true) { var group = DataService.PerThread.GroupSet.SingleOrDefault(g => g.Id == groupId); if (group == null) throw new BusinessLogicException("Не найдена группа с указанным идентификатором"); var gm = DataService.PerThread.GroupMemberSet.SingleOrDefault(m => m.GroupId == groupId && m.UserId == userId); if (gm == null) { gm = new GroupMember { EntryDate = DateTime.Now, GroupId = groupId, State = (byte)GroupMemberState.NotApproved, UserId = userId }; if (!group.PrivacyEnum.HasFlag(GroupPrivacy.MemberModeration) && group.State != (byte)GroupState.Blank || group.State == (byte)GroupState.Archive) gm.State = (byte)GroupMemberState.Approved; DataService.PerThread.GroupMemberSet.AddObject(gm); DataService.PerThread.SaveChanges(); if (group.GroupMembers.Count(x => x.State == (byte)GroupMemberState.Moderator) == 0) GroupService.ChangeMemberStatus(userId, group.Id, GroupMemberState.Moderator); SubscriptionService.SubscribeToGroup(group.Url, gm.UserId); } else if (gm.State != (byte)GroupMemberState.Approved && gm.State != (byte)GroupMemberState.Moderator) { if (gm.State == (byte)GroupMemberState.Banned && DateTime.Now < gm.ExitDate.Value.AddMonths(2)) throw new BusinessLogicException("Вы не можете вступать в эту группу еще " + (gm.ExitDate.Value.AddMonths(2) - DateTime.Now).Days + ", так как были заблокированы"); if (group.GroupMembers.Count(x => x.State == (byte)GroupMemberState.Moderator) == 0) { GroupService.ChangeMemberStatus(userId, group.Id, GroupMemberState.Moderator); } else if (!group.PrivacyEnum.HasFlag(GroupPrivacy.MemberModeration) && group.State != (byte)GroupState.Blank) { gm.State = (byte)GroupMemberState.Approved; } else gm.State = (byte)GroupMemberState.NotApproved; } UpdateGroupState(group.Id); return gm; }
public static Tag AddTagByUser(string title, string description, GroupMember groupMember) { var tag = GetTag(title, groupMember.Group, true); if (groupMember.State == (byte)GroupMemberState.Approved) { if (tag.TopicState == (byte)TopicState.NotTopic) { tag.TopicState = (byte)TopicState.ProposedTopic; tag.Description = description; } else if (tag.TopicState == (byte)TopicState.GroupTopic) throw new ValidationException("Такая тема группы уже существует"); else if (tag.TopicState == (byte)TopicState.ProposedTopic) throw new ValidationException("Такая тема группы уже преждложена и ожидает решения модераторов."); } else if (groupMember.State == (byte)GroupMemberState.Moderator) { if (tag.TopicState == (byte)TopicState.NotTopic || tag.TopicState == (byte)TopicState.ProposedTopic) { tag.TopicState = (byte)TopicState.GroupTopic; tag.Description = description; tag.IsRecommended = true; } else if (tag.TopicState == (byte)TopicState.GroupTopic) throw new ValidationException("Такая тема группы уже существует"); } DataService.PerThread.SaveChanges(); if (groupMember.Group.State == (byte)GroupMemberState.Approved) { var date = DateTime.Now; MessageService.SendToGroup(groupMember.Group, new MessageStruct { Text = MessageComposer.ComposeGroupModeratorNotice(groupMember.Group.Id, "Поступило предложение на добавление новой темы группы: <a href='" + tag.GetTopicUrl(false) + "'>" + tag.Title + "</a>"), Type = (byte)MessageType.GroupModeratorNotice, Date = date } , GroupMessageRecipientType.Moderators); } return tag; }
public UserGroups_GroupMemberViewModel(GroupMember gm) { if (gm != null) { EntryDate = gm.EntryDate; GroupLogo = ImageService.GetImageUrl<Group>(gm.Group.Logo); GroupName = gm.Group.Name; GroupId = gm.Group.Id; GroupUrl = gm.Group.Url; MembersCount = gm.Group.GroupMembers.Count; IsApproved = gm.State == (byte)GroupMemberState.Approved || gm.State == (byte)GroupMemberState.Moderator; IsModerator = gm.State == (byte)GroupMemberState.Moderator; foreach (var tag in gm.Group.Tags.Where(x => x.TopicState == (byte)TopicState.GroupTopic)) Tags.Add(new TagViewModel(tag)); } }
private void FixupOwner(GroupMember previousValue) { if (previousValue != null && previousValue.Bulletins.Contains(this)) { previousValue.Bulletins.Remove(this); } if (Owner != null) { if (!Owner.Bulletins.Contains(this)) { Owner.Bulletins.Add(this); } if (OwnerId != Owner.Id) { OwnerId = Owner.Id; } } }
private void FixupGroupMember(GroupMember previousValue) { if (previousValue != null && ReferenceEquals(previousValue.Candidate, this)) { previousValue.Candidate = null; } if (GroupMember != null) { GroupMember.Candidate = this; } }
public Group_Election_CandidateViewModel(Candidate candidate, GroupMember gm) { if (candidate != null) { Id = candidate.Id; UserId = candidate.GroupMember.UserId; Avatar = ImageService.GetImageUrl<User>(candidate.GroupMember.User.Avatar); FullName = candidate.GroupMember.User.FullName; Votes = DeclinationService.OfNumber(candidate.Electorate.Count, "голос", "голоса", "голосов"); PetitionId = candidate.Petition == null ? (Guid?)null : candidate.Petition.Id; if (gm != null) IsChecked = candidate.Electorate.Count(x => x.OwnerId == gm.Id) > 0; } }
private void FixupGroupMember(GroupMember previousValue) { if (previousValue != null && previousValue.ExpertVotes.Contains(this)) { previousValue.ExpertVotes.Remove(this); } if (GroupMember != null) { if (!GroupMember.ExpertVotes.Contains(this)) { GroupMember.ExpertVotes.Add(this); } if (GroupMemberId != GroupMember.Id) { GroupMemberId = GroupMember.Id; } } }
private void FixupGroupMember(GroupMember previousValue) { if (previousValue != null && ReferenceEquals(previousValue.Expert, this)) { previousValue.Expert = null; } if (GroupMember != null) { GroupMember.Expert = this; } }
public static bool UpdateTagByUser(Guid tagid, string title, string description, GroupMember groupMember) { var tag = DataService.PerThread.TagSet.SingleOrDefault(x => x.Id == tagid); if (tag == null) throw new BusinessLogicException("Указанная тема не найдена"); if (groupMember.State != (byte)GroupMemberState.Moderator) throw new BusinessLogicException("У вас недастаточно прав для редактирования темы"); var result = UpdateTag(tag, title, description); DataService.PerThread.SaveChanges(); return result; }