コード例 #1
0
        private static IEnumerable <Guid> ReceiverIds <TActivity>(
            CommentModel comment,
            TActivity activity,
            Enum notificationType,
            IIntranetMember currentMember)
            where TActivity : IIntranetActivity, IHaveOwner
        {
            switch (notificationType)
            {
            case CommentAdded when activity is ISubscribable subscribable:
                return(GetNotifiedSubscribers(subscribable).Concat(OwnerId(activity)).Distinct());

            case CommentAdded:
                return(OwnerId(activity));

            case CommentEdited:
                return(OwnerId(activity));

            case CommentLikeAdded:
                return(currentMember.Id == comment.UserId ? new List <Guid>() : OwnerId(comment));

            case CommentReplied:
                return(OwnerId(comment));

            default:
                throw new InvalidOperationException();
            }
        }
コード例 #2
0
        private new ExtendedProfileEditModel MapToEditModel(IIntranetMember member)
        {
            var baseModel = base.MapToEditModel(member);
            var result    = baseModel.Map <ExtendedProfileEditModel>();

            return(result);
        }
コード例 #3
0
        protected virtual bool CanDelete(IIntranetMember currentMember, GroupModel groupModel, IEnumerable <GroupMember> groupMembers, IMedia media)
        {
            var mediaCreator = media.GetValue <Guid?>(IntranetConstants.IntranetCreatorId);

            return(currentMember.Id == groupModel.CreatorId ||
                   mediaCreator.HasValue && mediaCreator.Value == currentMember.Id &&
                   groupMembers.Any(s => s.MemberId == currentMember.Id));
        }
コード例 #4
0
        protected override MemberModel MapToViewModel(IIntranetMember user)
        {
            var model = base.MapToViewModel(user);

            model.ProfileUrl   = _profileLinkProvider.GetProfileLink(user.Id);
            model.IsGroupAdmin = CurrentGroup().Map(CreatorId) == user.Id;
            return(model);
        }
コード例 #5
0
        protected virtual ProfileEditModel MapToEditModel(IIntranetMember member)
        {
            var result = member.Map <ProfileEditModel>();

            result.MemberNotifierSettings = _memberNotifiersSettingsService.GetForMember(member.Id);

            FillEditData(result);

            return(result);
        }
コード例 #6
0
        public MemberViewModel ToViewModel(IIntranetMember member)
        {
            if (member == null)
            {
                return(null);
            }

            var result = member.Map <MemberViewModel>();

            result.Photo       = _imageHelper.GetImageWithResize(member.Photo, PresetStrategies.ForMemberProfile.ThumbnailPreset);
            result.ProfileLink = _intranetUserContentProvider.GetProfilePage().Url.ToLinkModel().AddParameter("id", member.Id.ToString());

            return(result);
        }
コード例 #7
0
        private MemberModel MapToViewModel(IIntranetMember user, Guid?groupId)
        {
            var model = user.Map <MemberModel>();

            model.ProfileUrl = _profileLinkProvider.GetProfileLink(user.Id);

            var isAdmin = groupId.HasValue && _groupMemberService
                          .IsMemberAdminOfGroup(user.Id, groupId.Value);

            model.IsGroupAdmin = isAdmin;
            model.IsCreator    = groupId.HasValue && _groupService.IsMemberCreator(user.Id, groupId.Value);

            return(model);
        }
コード例 #8
0
        public async Task <bool> CheckAsync(IIntranetMember member, PermissionSettingIdentity settingsIdentity)
        {
            if (member.Groups == null)
            {
                return(false);
            }

            var permission = (await CurrentCacheAsync).Where(p => member.Groups.Select(g => g.Id).Contains(p.Group.Id) && p.SettingIdentity.Equals(settingsIdentity));

            var isAllowed = permission
                            .ToList()
                            .Exists(p => p.SettingValues.IsAllowed);

            return(isAllowed);
        }
コード例 #9
0
        protected virtual CommentViewModel GetCommentView(CommentModel comment, Guid currentMemberId,
                                                          IIntranetMember creator)
        {
            var model = comment.Map <CommentViewModel>();

            model.ModifyDate        = _commentsService.WasChanged(comment) ? comment.ModifyDate : default(DateTime?);
            model.CanEdit           = _commentsService.CanEdit(comment, currentMemberId);
            model.CanDelete         = _commentsService.CanDelete(comment, currentMemberId);
            model.Creator           = creator.Map <MemberViewModel>();
            model.ElementOverviewId = GetOverviewElementId(comment.ActivityId);
            model.CommentViewId     = _commentsService.GetCommentViewId(comment.Id);
            model.CreatorProfileUrl = _profileLinkProvider.GetProfileLink(creator);
            model.LinkPreview       = comment.LinkPreview.Map <LinkPreviewViewModel>();
            return(model);
        }
コード例 #10
0
        protected override MemberModel MapToViewModel(IIntranetMember user)
        {
            var model = base.MapToViewModel(user);

            model.ProfileUrl = _profileLinkProvider.GetProfileLink(user.Id);

            var isAdmin = _groupMemberService
                          .IsMemberAdminOfGroup(user.Id, CurrentGroup()
                                                .Match(Some: GroupId, None: () => Guid.Empty));

            model.IsGroupAdmin = isAdmin;
            model.IsCreator    = _groupService.IsMemberCreator(user.Id, CurrentGroup()
                                                               .Match(Some: GroupId, None: () => Guid.Empty));

            return(model);
        }
コード例 #11
0
        public PopupNotificationMessage Map(INotifierDataValue notifierData, PopupNotifierTemplate template, IIntranetMember receiver)
        {
            var message = new PopupNotificationMessage
            {
                ReceiverId       = receiver.Id,
                NotificationType = NotificationTypeEnum.Welcome
            };

            (string, string)[] tokens =
コード例 #12
0
 public string GetProfileLink(IIntranetMember member) =>
 GetProfileLink(member.Id);
コード例 #13
0
        public DesktopNotificationMessage Map(INotifierDataValue notifierData, DesktopNotifierTemplate template, IIntranetMember receiver)
        {
            var message = new DesktopNotificationMessage();

            (string, string)[] tokens;
コード例 #14
0
        protected virtual ProfileViewModel MapToViewModel(IIntranetMember member)
        {
            var result = member.Map <ProfileViewModel>();

            return(result);
        }
コード例 #15
0
        public IEnumerable <ActivityFeedTabModel> GetActivityTabs(IPublishedContent currentPage, IIntranetMember member, Guid groupId)
        {
            yield return(GetMainFeedTab(currentPage, groupId));

            foreach (var content in _contentProvider.GetRelatedPages())
            {
                var tabType = GetFeedTabType(content);

                var activityTypeIds = _activityTypeProvider.All.Select(t => t.ToInt());

                if (activityTypeIds.Contains(tabType.ToInt()))
                {
                    var tab = new ActivityFeedTabModel
                    {
                        Content  = content,
                        Type     = tabType,
                        IsActive = content.IsAncestorOrSelf(currentPage),
                        Links    = _feedLinkService.GetCreateLinks(tabType, groupId)
                    };

                    yield return(tab);
                }
            }
        }
コード例 #16
0
        protected virtual MemberModel MapToViewModel(IIntranetMember user)
        {
            var result = user.Map <MemberModel>();

            return(result);
        }
コード例 #17
0
        public virtual CommentViewModel GetCommentView(CommentModel comment, Guid currentMemberId, IIntranetMember creator)
        {
            var likes    = _likesService.GetLikeModels(comment.Id).ToArray();
            var memberId = _intranetMemberService.GetCurrentMemberId();
            var model    = comment.Map <CommentViewModel>();

            model.ModifyDate         = _commentsService.WasChanged(comment) ? comment.ModifyDate.ToDateTimeFormat() : null;
            model.CanEdit            = _commentsService.CanEdit(comment, currentMemberId);
            model.CanDelete          = _commentsService.CanDelete(comment, currentMemberId);
            model.Creator            = creator.ToViewModel();
            model.ElementOverviewId  = GetOverviewElementId(comment.ActivityId);
            model.CommentViewId      = _commentsService.GetCommentViewId(comment.Id);
            model.CreatorProfileUrl  = creator == null ? null : _profileLinkProvider.GetProfileLink(creator);
            model.LinkPreview        = comment.LinkPreview.Map <LinkPreviewModel>();
            model.LikedByCurrentUser = likes.Any(el => el.UserId == memberId);
            model.Likes     = likes;
            model.LikeModel = GetLikesViewModel(comment.Id, memberId, likes);

            return(model);
        }
コード例 #18
0
 protected override MailBase GetMonthlyMailModel(IIntranetMember receiver, MonthlyMailDataModel dataModel, EmailNotifierTemplate template) =>
 _notificationModelMapper.Map(dataModel, template, receiver);
コード例 #19
0
        public UiNotificationMessage Map(INotifierDataValue notifierData, UiNotifierTemplate template, IIntranetMember receiver)
        {
            var message = new UiNotificationMessage
            {
                ReceiverId  = receiver.Id,
                IsPinned    = notifierData.IsPinned,
                IsPinActual = notifierData.IsPinActual,
                //IsDesktopNotificationEnabled = template.IsDesktopNotificationEnabled
            };

            (string, string)[] tokens;
コード例 #20
0
 public MemberChanged(IIntranetMember member)
 {
     Member = member;
 }
コード例 #21
0
        public EmailNotificationMessage Map(INotifierDataValue notifierData, EmailNotifierTemplate template, IIntranetMember receiver)
        {
            var message = new EmailNotificationMessage();

            FillNoReplyFromProps(message);

            (string, string)[] tokens;
コード例 #22
0
 protected virtual MemberModel MapToViewModel(IIntranetMember user) =>
 user.Map <MemberModel>();
コード例 #23
0
 public static MemberViewModel ToViewModel(this IIntranetMember member)
 {
     return(DependencyResolver.Current.GetService <IMemberServiceHelper>().ToViewModel(member));
 }
コード例 #24
0
 public UintraLinkModel GetProfileLink(IIntranetMember member) =>
 GetProfileLink(member.Id);