public AutoMapperProfile()
        {
            this.CreateMap <Post, UserActionViewModel>()
            .ForMember(dest => dest.PostId, opt => opt.MapFrom(src => src.Id))
            .ForMember(dest => dest.ActionInvokerId, opt => opt.MapFrom(src => src.AuthorId))
            .ForMember(dest => dest.ActionInvokerUsername, opt => opt.MapFrom(src => src.Author.UserName))
            .ForMember(dest => dest.PostTitle, opt => opt.MapFrom(src => string.Concat(src.Title.Take(ModelsConstants.TitlePostPreviewLength))))
            .ForMember(dest => dest.SubredditName, opt => opt.MapFrom(src => src.Subreddit.Name))
            .ForMember(dest => dest.PostCreatorId, opt => opt.MapFrom(src => src.AuthorId))
            .ForMember(dest => dest.PostCreatorUsername, opt => opt.MapFrom(src => src.Author.UserName))
            .ForMember(dest => dest.DescriptionConcise,
                       opt => opt.MapFrom(src => string.Concat(src.Description.Take(ModelsConstants.DescriptionAccountPreviewLength))))
            .ForMember(dest => dest.ActionName, opt => opt.MapFrom(src => ModelsConstants.ActionNamePost));

            this.CreateMap <Comment, UserActionViewModel>()
            .ForMember(dest => dest.ActionInvokerId, opt => opt.MapFrom(src => src.AuthorId))
            .ForMember(dest => dest.ActionInvokerUsername, opt => opt.MapFrom(src => src.Author.UserName))
            .ForMember(dest => dest.PostTitle, opt => opt.MapFrom(src => string.Concat(src.Post.Title.Take(ModelsConstants.TitlePostPreviewLength))))
            .ForMember(dest => dest.SubredditId, opt => opt.MapFrom(src => src.Post.SubredditId))
            .ForMember(dest => dest.SubredditName, opt => opt.MapFrom(src => src.Post.Subreddit.Name))
            .ForMember(dest => dest.PostCreatorId, opt => opt.MapFrom(src => src.Post.AuthorId))
            .ForMember(dest => dest.PostCreatorUsername, opt => opt.MapFrom(src => src.Post.Author.UserName))
            .ForMember(dest => dest.DescriptionConcise,
                       opt => opt.MapFrom(src => string.Concat(src.Description.Take(ModelsConstants.DescriptionAccountPreviewLength))))
            .ForMember(dest => dest.ActionName, opt => opt.MapFrom(src => ModelsConstants.ActionNameComment));

            //------------------------------------------------------------------------------------------------------------

            this.CreateMap <PostCreationBindingModel, Post>()
            .ForMember(dest => dest.SubredditId, opt => opt.MapFrom(src => src.SelectedSubredditId));

            //------------------------------------------------------------------------------------------------------------

            this.CreateMap <SubredditCreationBindingModel, Subreddit>();

            //------------------------------------------------------------------------------------------------------------

            this.CreateMap <Post, PostConciseViewModel>()
            .ForMember(dest => dest.CommentsCount, opt => opt.MapFrom(src => CountComments.Count(src.Comments)))
            .ForMember(dest => dest.VotesCount, opt => opt.MapFrom(src => src.UpVotesCount - src.DownVotesCount))
            .ForMember(dest => dest.DescriptionConcise, opt => opt.MapFrom(src =>
                                                                           string.Concat(src.Description.Take(ModelsConstants.DescriptionIndexPreviewLength))));

            //------------------------------------------------------------------------------------------------------------

            this.CreateMap <Post, PostViewModel>()
            .ForMember(dest => dest.VotesCount, opt => opt.MapFrom(src => src.UpVotesCount - src.DownVotesCount))
            .ForMember(dest => dest.Comments, opt => opt.Ignore());

            //------------------------------------------------------------------------------------------------------------

            this.CreateMap <Comment, CommentViewModel>()
            .ForMember(dest => dest.VotesCount, opt => opt.MapFrom(src => src.UpVotesCount - src.DownVotesCount));

            //------------------------------------------------------------------------------------------------------------

            this.CreateMap <Subreddit, SubredditConciseViewModel>()
            .ForMember(dest => dest.SubscribedUsersCount, opt => opt.MapFrom(src => src.SubscribedUsers.Count));
        }
Example #2
0
        public PostViewModel MapPostViewModelForQuest(Post post, CommentSortType sortType, IEnumerable <Comment> comments)
        {
            int commentCount = CountComments.Count(comments);
            var model        = this.mapper.Map <PostViewModel>(post);

            model.SelectedCommentSortType = sortType;
            model.CommentsCount           = commentCount;
            model.Comments = this.mapper.Map <IEnumerable <CommentViewModel> >(comments);

            return(model);
        }