package com.aegis.resource.requisition.dto;

import java.util.Date;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

/**
 * 征用申请数据传输对象（DTO）
 * 用于 API 层的数据传输
 *
 * @author aegis
 */
@Getter
@Setter
@ToString
public class RequisitionDTO {

    private Long id;

    /** 队伍ID */
    @NotNull(message = "队伍ID不能为空")
    private Long teamId;

    /** 队伍名称（关联查询，不持久化） */
    private String teamName;

    /** 征用编号 */
    @NotBlank(message = "征用编号不能为空")
    @Size(min = 0, max = 50, message = "征用编号长度不能超过50个字符")
    private String requisitionNo;

    /** 征用原因 */
    @Size(min = 0, max = 500, message = "征用原因长度不能超过500个字符")
    private String reason;

    /** 状态：draft-草稿，approved-已审批，active-进行中，ended-已结束，rejected-已驳回 */
    @Size(min = 0, max = 16, message = "状态长度不能超过16个字符")
    private String status;

    /** 开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date startAt;

    /** 结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date endAt;

    /** 审批人ID */
    private Long approverId;

    /** 审批人姓名 */
    private String approverName;

    /** 审批时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date approvedAt;

    /** 审批意见 */
    @Size(min = 0, max = 500, message = "审批意见长度不能超过500个字符")
    private String approvalComment;

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

