package com.njcn.rdms.module.project.controller.admin.status.vo.model;

import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.Data;

/**
 * 管理后台 - 对象状态模型保存 Request VO
 */
@Schema(description = "管理后台 - 对象状态模型保存 Request VO")
@Data
public class ObjectStatusModelSaveReqVO {

    @Schema(description = "主键 ID", example = "1024")
    private Long id;

    @Schema(description = "对象类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "project")
    @NotBlank(message = "对象类型不能为空")
    @Size(max = 64, message = "对象类型长度不能超过64个字符")
    private String objectType;

    @Schema(description = "状态编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "active")
    @NotBlank(message = "状态编码不能为空")
    @Size(max = 64, message = "状态编码长度不能超过64个字符")
    private String statusCode;

    @Schema(description = "状态名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "进行中")
    @NotBlank(message = "状态名称不能为空")
    @Size(max = 100, message = "状态名称长度不能超过100个字符")
    private String statusName;

    @Schema(description = "排序值", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @NotNull(message = "排序值不能为空")
    private Integer sort;

    @Schema(description = "配置状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "0")
    @NotNull(message = "配置状态不能为空")
    private Integer status;

    @Schema(description = "是否初始状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "true")
    @NotNull(message = "是否初始状态不能为空")
    private Boolean initialFlag;

    @Schema(description = "是否终态", requiredMode = Schema.RequiredMode.REQUIRED, example = "false")
    @NotNull(message = "是否终态不能为空")
    private Boolean terminalFlag;

    @Schema(description = "是否允许编辑对象主数据", requiredMode = Schema.RequiredMode.REQUIRED, example = "true")
    @NotNull(message = "是否允许编辑不能为空")
    private Boolean allowEdit;

    @Schema(description = "备注", example = "默认状态")
    @Size(max = 500, message = "备注长度不能超过500个字符")
    private String remark;

}
