package com.njcn.rdms.module.project.controller.admin.overtime.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.time.LocalDate;
import java.time.LocalDateTime;

@Schema(description = "管理后台 - 业务学习 Response VO")
@Data
public class OvertimeApplicationRespVO {

    @Schema(description = "业务学习编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "9001")
    private Long id;

    @Schema(description = "申请人用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3001")
    private Long applicantId;

    @Schema(description = "申请人姓名", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
    private String applicantName;

    @Schema(description = "学习日期", requiredMode = Schema.RequiredMode.REQUIRED)
    private LocalDate overtimeDate;

    @Schema(description = "学习时长", requiredMode = Schema.RequiredMode.REQUIRED, example = "1天")
    private String overtimeDuration;

    @Schema(description = "学习原因", requiredMode = Schema.RequiredMode.REQUIRED)
    private String overtimeReason;

    @Schema(description = "学习内容", requiredMode = Schema.RequiredMode.REQUIRED)
    private String overtimeContent;

    @Schema(description = "审核人用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1001")
    private Long approverId;

    @Schema(description = "审核人姓名", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
    private String approverName;

    @Schema(description = "状态编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "pending")
    private String statusCode;

    @Schema(description = "状态名称", example = "待审批")
    private String statusName;

    @Schema(description = "当前状态是否允许编辑", example = "false")
    private Boolean allowEdit;

    @Schema(description = "是否终态", example = "false")
    private Boolean terminal;

    @Schema(description = "最近一次审核意见")
    private String approvalComment;

    @Schema(description = "提交时间", requiredMode = Schema.RequiredMode.REQUIRED)
    private LocalDateTime submitTime;

    @Schema(description = "最近一次审核时间")
    private LocalDateTime approvalTime;

    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
    private LocalDateTime createTime;

    @Schema(description = "更新时间", requiredMode = Schema.RequiredMode.REQUIRED)
    private LocalDateTime updateTime;
}
