package com.aegis.resource.supplier.dto;

import javax.validation.constraints.Email;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

/**
 * 供应商数据传输对象（DTO）
 * 用于 API 层的数据传输
 *
 * @author aegis
 */
@Getter
@Setter
@ToString
public class SupplierDTO {

    private Long id;

    /** 供应商编码 */
    @NotBlank(message = "供应商编码不能为空")
    @Size(min = 0, max = 50, message = "供应商编码长度不能超过50个字符")
    private String supplierCode;

    /** 供应商名称 */
    @NotBlank(message = "供应商名称不能为空")
    @Size(min = 0, max = 200, message = "供应商名称长度不能超过200个字符")
    private String supplierName;

    /** 统一社会信用代码 */
    @Size(min = 0, max = 64, message = "统一社会信用代码长度不能超过64个字符")
    private String creditCode;

    /** 供应商分类 */
    @Size(min = 0, max = 64, message = "供应商分类长度不能超过64个字符")
    private String category;

    /** 所在区域 */
    @Size(min = 0, max = 100, message = "所在区域长度不能超过100个字符")
    private String area;

    /** 联系人 */
    @Size(min = 0, max = 64, message = "联系人长度不能超过64个字符")
    private String contactPerson;

    /** 联系电话 */
    @Size(min = 0, max = 20, message = "联系电话长度不能超过20个字符")
    private String contactPhone;

    /** 邮箱 */
    @Email(message = "邮箱格式不正确")
    @Size(min = 0, max = 100, message = "邮箱长度不能超过100个字符")
    private String email;

    /** 地址 */
    @Size(min = 0, max = 500, message = "地址长度不能超过500个字符")
    private String address;

    /** 状态：active-启用，inactive-停用，blacklisted-黑名单 */
    private String status;

    /** 评分（1-5星） */
    @Min(value = 1, message = "评分不能小于1")
    @Max(value = 5, message = "评分不能大于5")
    private Integer rating;

    /** 备注 */
    @Size(min = 0, max = 500, message = "备注长度不能超过500个字符")
    private String remark;
}