public MappingProfile(ICensor censor) { _censor = censor; CreateMap <string, Tag>() .ForMember(m => m.Name, opt => opt.MapFrom(m => m.ToLower())); CreateMap <Tag, string>() .ConvertUsing(source => source.Name ?? string.Empty); CreateMap <CategoryCreateDto, Category>(); CreateMap <Comment, CommentLiteDto>() .ForMember(m => m.AuthorName, opt => opt.MapFrom(m => m.Author.UserName)) .ForMember(m => m.PublicationDate, opt => opt.MapFrom(m => m.PublicationTime.Flexible())) .ForMember(m => m.Value, opt => opt.MapFrom(m => _censor.HandleMessage(m.Value).Result)); CreateMap <NewCommentDto, Comment>() .ForMember(m => m.PublicationTime, opt => opt.MapFrom(m => DateTime.Now)); CreateMap <PostCreateDto, Post>() .ForMember(m => m.HasImage, opt => opt.MapFrom(m => m.Image != null)) .ForMember(m => m.Tags, opt => opt.Ignore()) .ForMember(m => m.PublicationTime, opt => opt.MapFrom(m => DateTime.Now)); CreateMap <PostUpdateDto, Post>() .ForMember(m => m.Tags, opt => opt.Ignore()); CreateMap <Post, PostLiteDto>() .ForMember(m => m.PublicationDate, opt => opt.MapFrom(m => m.PublicationTime.Flexible())) .ForMember(m => m.AuthorName, opt => opt.MapFrom(m => m.Author.UserName)) .ForMember(m => m.AuthorId, opt => opt.MapFrom(m => m.Author.Id)) .ForMember(m => m.Tags, opt => opt.Ignore()) .ForMember(m => m.Comments, opt => opt.Ignore()); CreateMap <Post, PostFullDto>() .ForMember(m => m.PublicationDate, opt => opt.MapFrom(m => m.PublicationTime.Flexible())) .ForMember(m => m.AuthorName, opt => opt.MapFrom(m => m.Author.UserName)) .ForMember(m => m.AuthorId, opt => opt.MapFrom(m => m.Author.Id)) .ForMember(m => m.Tags, opt => opt.Ignore()); CreateMap <Post, PostToUpdateDto>() .ForMember(m => m.Tags, opt => opt.Ignore()); CreateMap <User, UserToBanDto>() .ForMember(m => m.IsBanned, opt => opt.MapFrom(m => m.UnlockTime != null && m.UnlockTime > DateTime.Now)); CreateMap <User, UserToUpdateDto>(); CreateMap <User, UserToChangeRoleDto>(); CreateMap <User, UserFullDto>() .ForMember(m => m.Role, opt => opt.MapFrom(m => m.Role.Name)) .ForMember(m => m.Status, opt => opt.MapFrom(m => m.UnlockTime == null || m.UnlockTime < DateTime.Now ? null : $"Blocked until {m.UnlockTime}")) .ForMember(m => m.RegistrationDate, opt => opt.MapFrom(m => m.RegistrationDate.ToString("dd.MM.yyyy"))) .ForMember(m => m.WritedPosts, opt => opt.MapFrom(m => m.Posts.Count)); CreateMap <User, UserLiteDto>() .ForMember(m => m.RoleName, opt => opt.MapFrom(m => m.Role.Name)) .ForMember(m => m.Status, opt => opt.MapFrom(m => m.UnlockTime == null || m.UnlockTime < DateTime.Now ? null : $"Blocked until {m.UnlockTime}")); CreateMap <UserUpdateDto, User>(); CreateMap <RegisterDto, User>() .ForMember(m => m.Password, opt => opt.MapFrom(m => HashGenerator.Encrypt(m.Password))) .ForMember(m => m.RegistrationDate, opt => opt.MapFrom(m => DateTime.Now)); }