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 MembleComment: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(2000,ErrorMessage = "回复内容最大长度为2000")]
public required string CommentText { get; set; }
/// <summary>
/// 回复ID
/// </summary>
[MaxLength(50,ErrorMessage = "reply id max length 15")]
public string? ReplyId { get; set; }
public VmUserInfo? User { get; set; }
public void CreateMappings(MapperConfigurationExpression cfg)
{
cfg.CreateMap<MembleComment, Comment>().ConstructUsing((viewModel, _) =>
{
var entity = new Comment
{
Node = viewModel.Node,
Relation = viewModel.Relation,
CommentText = viewModel.CommentText,
Commenter = new MembleCommenter()
{
Avatar = viewModel.User?.Avatar,
Identity = viewModel.User?.Permissions?.HasFlag(Permissions.System) == true ? "管理员" : "成员",
NickName = viewModel.User?.Name
},
};
return entity;
});
}
}