예제 #1
0
        public async Task <IHttpActionResult> Create(EventCreateModel createModel)
        {
            if (!await _eventsService.CanCreateAsync(createModel.GroupId))
            {
                return(StatusCode(System.Net.HttpStatusCode.Forbidden));
            }

            var @event     = MapToEvent(createModel);
            var activityId = _eventsService.Create(@event);

            _reminderService.CreateIfNotExists(activityId, ReminderTypeEnum.OneDayBefore);

            @event = _eventsService.Get(activityId);

            if (createModel.GroupId.HasValue)
            {
                _groupActivityService.AddRelation(createModel.GroupId.Value, activityId);
                @event.GroupId = createModel.GroupId;
            }

            _activityTagsHelper.ReplaceTags(activityId, createModel.TagIdsData);

            ResolveMentions(createModel.Description, @event);

            var redirectUrl = _activityLinkService.GetLinks(activityId).Details;

            ReloadFeed();
            return(Ok(redirectUrl));
        }
예제 #2
0
 public ActivityNotifierDataModel GetActivityNotifierDataModel(IIntranetActivity activity, Enum notificationType, Guid notifierId)
 {
     return(new ActivityNotifierDataModel
     {
         NotificationType = notificationType,
         ActivityType = activity.Type,
         Title = GetNotifierDataTitle(activity).TrimByWordEnd(MaxTitleLength),
         Url = _linkService.GetLinks(activity.Id).Details,
         NotifierId = notifierId,
         IsPinned = activity.IsPinned,
         IsPinActual = activity.IsPinActual
     });
 }
예제 #3
0
        private IntranetActivityPreviewModelBase GetBaseModel(IFeedItem feedItem, bool isGroupFeed)
        {
            if (feedItem is IntranetActivity activity)
            {
                var baseModel = new IntranetActivityPreviewModelBase
                {
                    Id            = feedItem.Id,
                    Links         = _linkService.GetLinks(feedItem.Id),
                    Type          = _localizationService.Translate(activity.Type.ToString()),
                    CommentsCount = _commentsService.GetCount(feedItem.Id),
                    Likes         = _likesService.GetLikeModels(activity.Id),
                    GroupInfo     = isGroupFeed ? null : _feedActivityHelper.GetGroupInfo(feedItem.Id),
                    ActivityType  = feedItem.Type,
                };
                if (feedItem is Social social)
                {
                    baseModel.LinkPreviewId = social.LinkPreviewId;
                    baseModel.LinkPreview   = social.LinkPreview;
                }
                _lightboxHelper.FillGalleryPreview(baseModel, activity.MediaIds);

                return(baseModel);
            }

            _logger.Warn <FeedPresentationService>("Feed item is not IntranetActivity (id={0};type={1})", feedItem.Id, feedItem.Type.ToInt());

            return(null);
        }
예제 #4
0
        private SearchableUintraActivity Map(Bulletin bulletin)
        {
            var searchableActivity = bulletin.Map <SearchableUintraActivity>();

            searchableActivity.Url          = _linkService.GetLinks(bulletin.Id).Details;
            searchableActivity.UserTagNames = _userTagService.Get(bulletin.Id).Select(t => t.Text);
            return(searchableActivity);
        }
예제 #5
0
        private SearchableUintraActivity Map(Entities.Social social)
        {
            var searchableActivity = social.Map <SearchableUintraActivity>();

            searchableActivity.Url          = _activityLinkService.GetLinks(social.Id).Details;
            searchableActivity.UserTagNames = _userTagService.Get(social.Id).Select(t => t.Text);
            return(searchableActivity);
        }
예제 #6
0
        private SearchableUintraActivity Map(Entities.News news)
        {
            var searchableActivity = news.Map <SearchableUintraActivity>();

            searchableActivity.Url          = _linkService.GetLinks(news.Id).Details;
            searchableActivity.UserTagNames = _userTagService.Get(news.Id).Select(t => t.Text);
            return(searchableActivity);
        }
예제 #7
0
        private SearchableUintraActivity Map(Event @event)
        {
            var searchableActivity = @event.Map <SearchableUintraActivity>();

            searchableActivity.Url          = _linkService.GetLinks(@event.Id).Details;
            searchableActivity.UserTagNames = _userTagService.Get(@event.Id).Select(t => t.Text);
            return(searchableActivity);
        }
예제 #8
0
        protected virtual (IList <ComingEventViewModel> events, int totalCount) GetComingEvents(int eventsAmount)
        {
            var events = GetComingEvents(DateTime.UtcNow).AsList();

            var ownersDictionary = _intranetMemberService.GetMany(events.Select(e => e.OwnerId)).ToDictionary(c => c.Id);

            var comingEvents = events
                               .Take(eventsAmount)
                               .Select(@event =>
            {
                var viewModel   = @event.Map <ComingEventViewModel>();
                viewModel.Owner = ownersDictionary[@event.OwnerId].Map <MemberViewModel>();
                viewModel.Links = _activityLinkService.GetLinks(@event.Id);
                return(viewModel);
            })
                               .ToList();

            return(comingEvents, events.Count);
        }
예제 #9
0
        protected override IEnumerable <(IIntranetActivity activity, string detailsLink)> GetUserActivitiesFilteredByUserTags(Guid userId)
        {
            var allActivities = GetAllActivities()
                                .Select(activity => (activity: activity, activityTagIds: _userTagService.GetForEntity(activity.Id)));

            var userTagIds = _userTagService
                             .GetForEntity(userId)
                             .ToList();

            var result = allActivities
                         .Where(pair => userTagIds.Intersect(pair.activityTagIds).Any())
                         .Select(pair => (pair.activity, detailsLink: _activityLinkService.GetLinks(pair.activity.Id).Details));

            return(result);
        }
예제 #10
0
        public virtual ActionResult Create(NewsCreateModel createModel)
        {
            if (!ModelState.IsValid)
            {
                return(RedirectToCurrentUmbracoPage(Request.QueryString));
            }
            var newsBaseCreateModel = MapToNews(createModel);
            var activityId          = _newsService.Create(newsBaseCreateModel);

            OnNewsCreated(activityId, createModel);

            string redirectUri = _activityLinkService.GetLinks(activityId).Details;

            return(Redirect(redirectUri));
        }
예제 #11
0
        private void ResolveMentions(string text, EventBase @event)
        {
            var mentionIds = _mentionService.GetMentions(text).ToList();

            if (mentionIds.Any())
            {
                var links = _activityLinkService.GetLinks(@event.Id);
                _mentionService.ProcessMention(new MentionModel()
                {
                    MentionedSourceId = @event.Id,
                    CreatorId         = _intranetMemberService.GetCurrentMemberId(),
                    MentionedUserIds  = mentionIds,
                    Title             = @event.Title.StripHtml(),
                    Url          = links.Details,
                    ActivityType = IntranetActivityTypeEnum.Events
                });
            }
        }
        protected virtual LightboxGalleryPreviewViewModel GetGalleryPreviewModel(LightboxGalleryPreviewModel model, IEnumerable <IPublishedContent> medias)
        {
            var galleryPreviewModel  = model.Map <LightboxGalleryPreviewViewModel>();
            var mediasList           = medias.AsList();
            var galleryViewModelList = mediasList.Select(MapToMedia).ToList();

            TransformPreviewImage(galleryViewModelList);
            model.DisplayedImagesCount = HttpContext.Request.IsMobileBrowser() ? 2 : 3;

            galleryPreviewModel.Links      = _linkService.GetLinks(model.ActivityId);
            galleryPreviewModel.Medias     = FindMedias(galleryViewModelList);
            galleryPreviewModel.OtherFiles = galleryViewModelList.Except(galleryPreviewModel.Medias);
            galleryPreviewModel.Medias.Skip(model.DisplayedImagesCount).ToList().ForEach(i => i.IsHidden = true);
            galleryPreviewModel.HiddenImagesCount = galleryPreviewModel.Medias.Count(i => i.IsHidden);


            return(galleryPreviewModel);
        }
예제 #13
0
        private void ResolveMentions(string text, SocialBase social)
        {
            var mentionIds = new Guid[] { };//_mentionService.GetMentions(text).ToList();//TODO: uncomment when mention service is ready

            if (mentionIds.Any())
            {
                var       links          = _activityLinkService.GetLinks(social.Id);
                const int maxTitleLength = 100;
                _mentionService.ProcessMention(new MentionModel()
                {
                    MentionedSourceId = social.Id,
                    CreatorId         = _memberService.GetCurrentMemberId(),
                    MentionedUserIds  = mentionIds,
                    Title             = social.Description.StripHtml().TrimByWordEnd(maxTitleLength),
                    Url          = links.Details,
                    ActivityType = IntranetActivityTypeEnum.Social
                });
            }
        }
예제 #14
0
        private void ResolveMentions(string text, BulletinBase bulletin)
        {
            var mentionIds = _mentionService.GetMentions(text).ToList();

            if (mentionIds.Any())
            {
                var       links          = _activityLinkService.GetLinks(bulletin.Id);
                const int maxTitleLength = 100;
                _mentionService.ProcessMention(new MentionModel()
                {
                    MentionedSourceId = bulletin.Id,
                    CreatorId         = _intranetUserService.GetCurrentUserId(),
                    MentionedUserIds  = mentionIds,
                    Title             = bulletin.Description.StripHtml().TrimByWordEnd(maxTitleLength),
                    Url          = links.Details,
                    ActivityType = IntranetActivityTypeEnum.Bulletins
                });
            }
        }
        public void Map(ComingEventsPanelModel node, ComingEventsPanelViewModel viewModel)
        {
            var events = _eventsService.GetComingEvents(DateTime.UtcNow).ToArray();

            var ownersDictionary = _intranetMemberService.GetMany(events.Select(e => e.OwnerId)).ToDictionary(c => c.Id);

            var comingEvents = events
                               .Take(node.EventsAmount)
                               .Select(@event =>
            {
                var eventViewModel   = @event.Map <ComingEventViewModel>();
                eventViewModel.Owner = ownersDictionary[@event.OwnerId].ToViewModel();
                eventViewModel.Links = _activityLinkService.GetLinks(@event.Id);
                return(eventViewModel);
            })
                               .ToList();

            viewModel.Events = comingEvents;
        }
예제 #16
0
        public LatestActivitiesItemViewModel Convert(IFeedItem item)
        {
            if (item is IntranetActivity activity)
            {
                var latestActivityModel = new LatestActivitiesItemViewModel
                {
                    Id          = activity.Id,
                    Type        = _intranetLocalizationService.Translate(activity.Type.ToString()),
                    Title       = activity.Title,
                    Description = activity.Description,
                    Owner       = _intranetMemberService.Get(item.OwnerId).ToViewModel(),
                    Links       = _linkService.GetLinks(activity.Id),
                    Dates       = item.PublishDate.ToDateTimeFormat().ToEnumerable()
                };
                return(latestActivityModel);
            }

            _logger.Warn <LatestActivitiesPanelViewModelConverter>("Feed item is not IntranetActivity (id={0};type={1})", item.Id, item.Type.ToInt());
            return(null);
        }
예제 #17
0
 public string GetDetailsUrlWithComment(Guid activityId, Guid commentId) =>
 $"{_linkService.GetLinks(activityId).Details}#{_commentsService.GetCommentViewId(commentId)}";
예제 #18
0
 public UintraLinkModel GetDetailsUrlWithComment(Guid activityId, Guid commentId) =>
 $"{_linkService.GetLinks(activityId).Details}&commentId={_commentsService.GetCommentViewId(commentId)}".ToLinkModel();