Example #1
0
        private TimelinePostDisplayModel PrepareTimelinePostDisplayModel(TimelinePost post)
        {
            //total likes for this post
            var totalLikes = _customerLikeService.GetLikeCount <TimelinePost>(post.Id);
            //the like status for current customer
            var likeStatus =
                _customerLikeService.GetCustomerLike <TimelinePost>(_workContext.CurrentCustomer.Id, post.Id) == null
                    ? 0
                    : 1;

            var totalComments = _customerCommentService.GetCommentsCount(post.Id, typeof(TimelinePost).Name);
            var postModel     = new TimelinePostDisplayModel()
            {
                Id                       = post.Id,
                DateCreatedUtc           = post.DateCreated,
                DateUpdatedUtc           = post.DateUpdated,
                DateCreated              = _dateTimeHelper.ConvertToUserTime(post.DateCreated, DateTimeKind.Utc),
                DateUpdated              = _dateTimeHelper.ConvertToUserTime(post.DateUpdated, DateTimeKind.Utc),
                OwnerId                  = post.OwnerId,
                OwnerEntityType          = post.OwnerEntityType,
                PostTypeName             = post.PostTypeName,
                IsSponsored              = post.IsSponsored,
                Message                  = post.Message,
                AdditionalAttributeValue = post.AdditionalAttributeValue,
                CanDelete                = post.OwnerId == _workContext.CurrentCustomer.Id || _workContext.CurrentCustomer.IsAdmin(),
                TotalLikes               = totalLikes,
                LikeStatus               = likeStatus,
                TotalComments            = totalComments
            };

            if (post.OwnerEntityType == TimelinePostOwnerTypeNames.Customer)
            {
                //get the customer to retrieve info such a profile image, profile url etc.
                var customer = _customerService.GetCustomerById(post.OwnerId);

                postModel.OwnerName     = customer.GetFullName();
                postModel.OwnerImageUrl =
                    _pictureService.GetPictureUrl(
                        customer.GetAttribute <int>(SystemCustomerAttributeNames.AvatarPictureId),
                        _mediaSettings.AvatarPictureSize, true);

                postModel.OwnerProfileUrl = Url.RouteUrl("CustomerProfileUrl", new RouteValueDictionary()
                {
                    { "SeName", customer.GetSeName(_workContext.WorkingLanguage.Id, true, false) }
                });
            }
            //depending on the posttype, we may need to extract additional data e.g. in case of autopublished posts, we may need to query the linked entity
            switch (post.PostTypeName)
            {
            case TimelineAutoPostTypeNames.VideoBattle.Publish:
            case TimelineAutoPostTypeNames.VideoBattle.BattleStart:
            case TimelineAutoPostTypeNames.VideoBattle.BattleComplete:
                //we need to query the video battle
                if (post.LinkedToEntityId != 0)
                {
                    var battle = _videoBattleService.GetById(post.LinkedToEntityId);
                    if (battle == null)
                    {
                        break;
                    }
                    var battleUrl = Url.RouteUrl("VideoBattlePage",
                                                 new RouteValueDictionary()
                    {
                        { "SeName", battle.GetSeName(_workContext.WorkingLanguage.Id, true, false) }
                    });

                    //create a dynamic object for battle, we'll serialize this object to json and store as additional attribute value
                    //todo: to see if we have some better way of doing this
                    var coverImageUrl = "";
                    if (battle.CoverImageId.HasValue)
                    {
                        coverImageUrl = _pictureService.GetPictureUrl(battle.CoverImageId.Value);
                    }
                    var obj = new {
                        Name             = battle.Name,
                        Url              = battleUrl,
                        Description      = battle.Description,
                        VotingStartDate  = battle.VotingStartDate,
                        VotingEndDate    = battle.VotingEndDate,
                        CoverImageUrl    = coverImageUrl,
                        RemainingSeconds = battle.GetRemainingSeconds(),
                        Status           = battle.VideoBattleStatus.ToString()
                    };

                    postModel.AdditionalAttributeValue = JsonConvert.SerializeObject(obj);
                }
                break;
            }

            return(postModel);
        }
Example #2
0
        private TimelinePostDisplayModel PrepareTimelinePostDisplayModel(TimelinePost post)
        {
            //total likes for this post
            var totalLikes = _customerLikeService.GetLikeCount <TimelinePost>(post.Id);
            //the like status for current customer
            var likeStatus =
                _customerLikeService.GetCustomerLike <TimelinePost>(ApplicationContext.Current.CurrentUser.Id, post.Id) == null
                    ? 0
                    : 1;

            //process post content to replace inline tags
            _timelinePostProcessor.ProcessInlineTags(post);

            var totalComments = _customerCommentService.GetCommentsCount(post.Id, typeof(TimelinePost).Name);
            var postModel     = new TimelinePostDisplayModel()
            {
                Id                       = post.Id,
                DateCreatedUtc           = post.DateCreated,
                DateUpdatedUtc           = post.DateUpdated,
                DateCreated              = DateTimeHelper.GetDateInUserTimeZone(post.DateCreated, DateTimeKind.Utc, ApplicationContext.Current.CurrentUser),
                DateUpdated              = DateTimeHelper.GetDateInUserTimeZone(post.DateUpdated, DateTimeKind.Utc, ApplicationContext.Current.CurrentUser),
                OwnerId                  = post.OwnerId,
                OwnerEntityType          = post.OwnerEntityType,
                PostTypeName             = post.PostTypeName,
                IsSponsored              = post.IsSponsored,
                Message                  = post.Message,
                AdditionalAttributeValue = post.AdditionalAttributeValue,
                CanDelete                = post.OwnerId == ApplicationContext.Current.CurrentUser.Id || ApplicationContext.Current.CurrentUser.IsAdministrator(),
                TotalLikes               = totalLikes,
                LikeStatus               = likeStatus,
                TotalComments            = totalComments
            };

            if (post.OwnerEntityType == TimelinePostOwnerTypeNames.Customer)
            {
                //get the customer to retrieve info such a profile image, profile url etc.
                var user = _userService.Get(post.OwnerId);

                postModel.OwnerName     = string.IsNullOrEmpty(user.Name) ? user.Email : user.Name;
                postModel.OwnerImageUrl = _pictureService.GetPictureUrl(user.GetPropertyValueAs <int>(PropertyNames.DefaultPictureId), PictureSizeNames.MediumProfileImage);
                if (string.IsNullOrEmpty(postModel.OwnerImageUrl))
                {
                    postModel.OwnerImageUrl = _mediaSettings.DefaultUserProfileImageUrl;
                }
            }
            //depending on the posttype, we may need to extract additional data e.g. in case of autopublished posts, we may need to query the linked entity
            switch (post.PostTypeName)
            {
            case TimelineAutoPostTypeNames.VideoBattle.Publish:
            case TimelineAutoPostTypeNames.VideoBattle.BattleStart:
            case TimelineAutoPostTypeNames.VideoBattle.BattleComplete:
                //we need to query the video battle
                if (post.LinkedToEntityId != 0)
                {
                    var battle = _videoBattleService.Get(post.LinkedToEntityId);
                    if (battle == null)
                    {
                        break;
                    }
                    var battleUrl = Url.Route("VideoBattlePage",
                                              new RouteValueDictionary()
                    {
                        { "SeName", battle.GetPermalink() }
                    });

                    //create a dynamic object for battle, we'll serialize this object to json and store as additional attribute value
                    //todo: to see if we have some better way of doing this
                    var coverImageUrl = "";
                    var coverImageId  = battle.GetPropertyValueAs <int>(PropertyNames.DefaultCoverId);
                    if (coverImageId != 0)
                    {
                        coverImageUrl = _pictureService.GetPictureUrl(coverImageId);
                    }
                    var obj = new {
                        Name             = battle.Name,
                        Url              = battleUrl,
                        Description      = battle.Description,
                        VotingStartDate  = battle.VotingStartDate,
                        VotingEndDate    = battle.VotingEndDate,
                        CoverImageUrl    = coverImageUrl,
                        RemainingSeconds = battle.GetRemainingSeconds(),
                        Status           = battle.VideoBattleStatus.ToString()
                    };

                    postModel.AdditionalAttributeValue = JsonConvert.SerializeObject(obj);
                }
                break;
            }

            //replace inline tags with html links

            return(postModel);
        }