package jnpf.model.attendance.dto;

import jnpf.model.workflow.dto.AttendanceBaseForOa;
import lombok.Data;
import lombok.ToString;

import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @Author huanglinpan
 * @Date 2024/11/4 17:35
 * @Version 1.0 （版本号）
 */
@Data
@ToString(callSuper = true)
public class LeaveApproveForOaDto  extends AttendanceBaseForOa {
    /**
     * 主键id
     */
    private String id;

    /** 岗位id */
    private String postId;

    /** 请假类型id */
    private String typeId;

    /**
     * 配置的请假类型(事假/调休...)
     */
    private String type;


    /**当请假类型为天时开始时间选择的班次信息 同ftb_attendance_shift_setting_period表F_Type类型：1 上半天 2 下半天 （半天制班次使用）当请假类型单位为半天时生效 */
    private Integer startTimeType;

    /** 请假开始时间 命中的时间 */
    private Date startTimeHit;

    /**当请假类型为天时结束时间选择的班次信息 同ftb_attendance_shift_setting_period表F_Type类型：1 上半天 2 下半天 （半天制班次使用）当请假类型单位为半天时生效 */
    private Integer endTimeType;

    /** 请假结束时间 命中的时间 */
    private Date endTimeHit;

    /**
     * 申请时长
     */
    private BigDecimal applicationduration;

    /**
     * 请假原因
     */
    private String reasonforleave;

    /**
     * 未抵扣时间
     */
    private Integer undeductedTime;

    /**oa收拢使用  【是否使用余额抵扣,是否选中带薪抵扣,是否选中非带薪抵扣】 【1,1,0】 */
    private Integer[] selected;

    /**
     * 是否使用余额抵扣 0 否 1是
     */
    private Integer balanceStatus;

    /**
     * 是否选中带薪抵扣 0 未选中  1选中
     */
    private Integer paid;

    /**
     * 是否选中非带薪抵扣  0 未选中  1选中
     */
    private Integer noPaid;

    /** 是否审核通过 0.待审核  1.通过 2.未通过 */
    private Integer status = 0;

    /**
     * 照片   暂弃
     */
    private String picture;

    /**
     * 照片
     */
    private String fileJson;

    /** 流程标题 */
    private String flowTitle;

    /** 申请人员 */
    private String applyUser;

    /** 申请日期 */
    private Date applyDate;


    /** 提交/保存 0-1 */
    private String submitStatus;

    /** 涉及班次JSON */
    private String shiftInvolved;

    /** 余额JSON */
    private String balanceJson;

    /** 2.0余额相关JSON */
    private String balanceJsonNew;

    /** 考勤组名称 */
    private String groupId;


    public Integer getStartTimeType() {
        if (getTime() != null && getTime().length > 1 && null != getUnit() && 3 == getUnit()) {
            //半天时 time ['2024-1-1 上午','2024-1-1 下午']
            try {
                return getTime()[0].split(" ")[1].contains("上午") ? 1 : 2;
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        }
        return startTimeType;
    }

    public Integer getEndTimeType() {
        if (getTime() != null && getTime().length > 1 && null != getUnit() && 3 == getUnit()) {
            //半天时 time ['2024-1-1 上午','2024-1-1 下午']
            try {
                return getTime()[1].split(" ")[1].contains("上午") ? 1 : 2;
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        }
        return endTimeType;
    }


    public Integer getBalanceStatus() {
        if (null != selected && selected.length > 0) {
            return selected[0];
        }
        return balanceStatus;
    }

    public Integer getPaid() {
        if (null != selected && selected.length > 1) {
            return selected[1];
        }
        return paid;
    }

    public Integer getNoPaid() {
        if (null != selected && selected.length > 2) {
            return selected[2];
        }
        return noPaid;
    }
}
