Exemple #1
0
        private UserCommentPublicModel PrepareCommentPublicModel(Comment comment, IEnumerable <User> users)
        {
            //get the customer
            var user = users.FirstOrDefault(x => x.Id == comment.UserId);

            if (user == null)
            {
                return(null);
            }

            //process the comment text
            _timelinePostProcessor.ProcessInlineTags(comment);

            var likeStatus = _customerLikeService.GetCustomerLike <Comment>(ApplicationContext.Current.CurrentUser.Id, comment.Id) == null ? 0 : 1;
            //and create it's response model
            var cModel = new UserCommentPublicModel()
            {
                EntityName     = comment.EntityName,
                EntityId       = comment.EntityId,
                CommentText    = comment.CommentText,
                AdditionalData = comment.AdditionalData,
                Id             = comment.Id,
                DateCreatedUtc = comment.DateCreated,
                DateCreated    = DateTimeHelper.GetDateInUserTimeZone(comment.DateCreated, DateTimeKind.Utc, user),
                CanDelete      = comment.UserId == ApplicationContext.Current.CurrentUser.Id || ApplicationContext.Current.CurrentUser.IsAdministrator(),
                IsSpam         = false, //TODO: change it when spam system has been implemented
                LikeCount      = _customerLikeService.GetLikeCount <Comment>(comment.Id),
                LikeStatus     = likeStatus,
                User           = user.ToModel(_mediaService, _mediaSettings)
            };

            return(cModel);
        }
Exemple #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);
        }