Esempio n. 1
0
 public static Group SetPrivacy(GroupPrivacyStruct privacyData)
 {
     return Current.SetPrivacy(privacyData);
 }
Esempio n. 2
0
        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;
        }
Esempio n. 3
0
 public static Group SetPrivacy(GroupPrivacyStruct privacyData)
 {
     return(Current.SetPrivacy(privacyData));
 }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
        }