public static Group SetPrivacy(GroupPrivacyStruct privacyData) { return Current.SetPrivacy(privacyData); }
public Group SetPrivacy(GroupPrivacyStruct privacyData) { var group = DataService.PerThread.GroupSet.SingleOrDefault(x => x.Id == privacyData.GroupId); if (group == null) throw new BusinessLogicException("Указан неверный идентификатор"); var groupPrivacy = (GroupPrivacy)group.Privacy; if (privacyData.IsContentModeration) { if (!groupPrivacy.HasFlag(GroupPrivacy.ContentModeration)) groupPrivacy = (short)groupPrivacy + GroupPrivacy.ContentModeration; } else { if (groupPrivacy.HasFlag(GroupPrivacy.ContentModeration)) groupPrivacy = (GroupPrivacy)((short)groupPrivacy - (short)GroupPrivacy.ContentModeration); } if (privacyData.IsInvisible) { if (!groupPrivacy.HasFlag(GroupPrivacy.Invisible)) groupPrivacy = (short)groupPrivacy + GroupPrivacy.Invisible; } else { if (groupPrivacy.HasFlag(GroupPrivacy.Invisible)) groupPrivacy = (GroupPrivacy)((short)groupPrivacy - (short)GroupPrivacy.Invisible); } if (privacyData.IsMemberModeration) { if (!groupPrivacy.HasFlag(GroupPrivacy.MemberModeration)) groupPrivacy = (short)groupPrivacy + GroupPrivacy.MemberModeration; } else { if (groupPrivacy.HasFlag(GroupPrivacy.MemberModeration)) groupPrivacy = (GroupPrivacy)((short)groupPrivacy - (short)GroupPrivacy.MemberModeration); } if (privacyData.IsPrivateDiscussion) { if (!groupPrivacy.HasFlag(GroupPrivacy.PrivateDiscussion)) groupPrivacy = (short)groupPrivacy + GroupPrivacy.PrivateDiscussion; } else { if (groupPrivacy.HasFlag(GroupPrivacy.PrivateDiscussion)) groupPrivacy = (GroupPrivacy)((short)groupPrivacy - (short)GroupPrivacy.PrivateDiscussion); } group.Privacy = (short)groupPrivacy; DataService.PerThread.SaveChanges(); return group; }
public static Group SetPrivacy(GroupPrivacyStruct privacyData) { return(Current.SetPrivacy(privacyData)); }
public ActionResult Privacy(GroupPrivacyViewModel model) { if (!Request.IsAuthenticated) throw new AuthenticationException(); var group = GroupService.GetGroupByLabelOrId(model.GroupId); var redirect = HideInvisibleGroup(group); if (redirect != null) return redirect; if (GroupService.UserInGroup(UserContext.Current.Id, model.GroupId).State != (byte)GroupMemberState.Moderator) throw new BusinessLogicException("Вы не являетесь модератором данной группы"); if (group.Content.OfType<Election>().Count(x => !x.IsFinished) != 0) throw new BusinessLogicException("Редактирование группы закрыто на время выборов"); if (ModelState.IsValid) { var groupPrivacyData = new GroupPrivacyStruct { GroupId = model.GroupId, IsContentModeration = model.IsContentModeration, IsMemberModeration = model.IsInvisible || model.IsMemberModeration, IsPrivateDiscussion = model.IsInvisible || model.IsPrivateDiscussion, IsInvisible = model.IsInvisible }; GroupService.SetPrivacy(groupPrivacyData); return RedirectToAction("details", new { id = group.Url }); } return View(model); }
public Group SetPrivacy(GroupPrivacyStruct privacyData) { var group = DataService.PerThread.GroupSet.SingleOrDefault(x => x.Id == privacyData.GroupId); if (group == null) { throw new BusinessLogicException("Указан неверный идентификатор"); } var groupPrivacy = (GroupPrivacy)group.Privacy; if (privacyData.IsContentModeration) { if (!groupPrivacy.HasFlag(GroupPrivacy.ContentModeration)) { groupPrivacy = (short)groupPrivacy + GroupPrivacy.ContentModeration; } } else { if (groupPrivacy.HasFlag(GroupPrivacy.ContentModeration)) { groupPrivacy = (GroupPrivacy)((short)groupPrivacy - (short)GroupPrivacy.ContentModeration); } } if (privacyData.IsInvisible) { if (!groupPrivacy.HasFlag(GroupPrivacy.Invisible)) { groupPrivacy = (short)groupPrivacy + GroupPrivacy.Invisible; } } else { if (groupPrivacy.HasFlag(GroupPrivacy.Invisible)) { groupPrivacy = (GroupPrivacy)((short)groupPrivacy - (short)GroupPrivacy.Invisible); } } if (privacyData.IsMemberModeration) { if (!groupPrivacy.HasFlag(GroupPrivacy.MemberModeration)) { groupPrivacy = (short)groupPrivacy + GroupPrivacy.MemberModeration; } } else { if (groupPrivacy.HasFlag(GroupPrivacy.MemberModeration)) { groupPrivacy = (GroupPrivacy)((short)groupPrivacy - (short)GroupPrivacy.MemberModeration); } } if (privacyData.IsPrivateDiscussion) { if (!groupPrivacy.HasFlag(GroupPrivacy.PrivateDiscussion)) { groupPrivacy = (short)groupPrivacy + GroupPrivacy.PrivateDiscussion; } } else { if (groupPrivacy.HasFlag(GroupPrivacy.PrivateDiscussion)) { groupPrivacy = (GroupPrivacy)((short)groupPrivacy - (short)GroupPrivacy.PrivateDiscussion); } } group.Privacy = (short)groupPrivacy; DataService.PerThread.SaveChanges(); return(group); }