using System;
using System.ComponentModel.DataAnnotations;
using AutoMapper;
using Dpz.Core.EnumLibrary;
using Dpz.Core.Infrastructure;
using Dpz.Core.Public.Entity;
namespace Dpz.Core.Public.ViewModel;
public class VmPublishComment:IHaveCustomMapping
{
/// <summary>
/// 评论类型
/// </summary>
[Required(ErrorMessage = "comment node is empty.")]
public required CommentNode Node { get; set; }
/// <summary>
/// 关联
/// </summary>
[Required(ErrorMessage = "relation is empty."),MaxLength(500,ErrorMessage = "relation max length 20.")]
public required string Relation { get; set; }
/// <summary>
/// 昵称
/// </summary>
[Required(ErrorMessage = "昵称不能为空"),MaxLength(200,ErrorMessage = "昵称最大长度为200")]
public required string NickName { get; set; }
/// <summary>
/// 邮箱地址
/// </summary>
[Required(ErrorMessage = "请填写邮箱地址"),EmailAddress(ErrorMessage = "请填写正确的邮箱地址"),MaxLength(200,ErrorMessage = "邮箱地址最大长度为200")]
public required string Email { get; set; }
/// <summary>
/// 回复内容
/// </summary>
[Required(ErrorMessage = "请输入回复内容"),MaxLength(2000,ErrorMessage = "回复内容最大长度为2000")]
public required string CommentText { get; set; }
/// <summary>
/// 个人网站
/// </summary>
[Url(ErrorMessage = "请填写正确的个人网站地址"),MaxLength(200,ErrorMessage = "个人网站最大长度为200")]
public string? Site { get; set; }
/// <summary>
/// 回复ID
/// </summary>
[MaxLength(50,ErrorMessage = "reply id max length 15")]
public string? ReplyId { get; set; }
/// <summary>
/// 发送时间
/// </summary>
public DateTime SendTime => DateTime.Now;
public void CreateMappings(MapperConfigurationExpression cfg)
{
cfg.CreateMap<VmPublishComment, Comment>().ConstructUsing((viewModel, _) =>
{
var entity = new Comment
{
Node = viewModel.Node,
Relation = viewModel.Relation,
CommentText = viewModel.CommentText,
Commenter = new GuestCommenter
{
Email = viewModel.Email,
NickName = viewModel.NickName,
Site = viewModel.Site
},
};
return entity;
});
}
}