package jnpf.model.attendance.vo;

import jnpf.model.attendance.vo.attendance.OvertimeRuleDetailVo;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

import java.util.Date;

/**
 * 出勤规则vo
 *
 * @author yanwenfu
 * @create 2023-11-22
 */
@Getter
@Setter
@NoArgsConstructor
public class AttendanceRuleVo {

    /** 规则id */
    private String id;

    /** 考勤组id */
    private String groupId;

    /** 是否自己的考勤组(1: 是, 0: 否) */
    private Integer selfGroup;

    /** 出勤日期 */
    private Date day;

    /** 申请id */
    private String applyId;

    /** 时段id */
    private String periodId;

    /** 是否当前时段(1:是, 0: 否) */
    private Integer currentPeriod = 0;

    /** 有效时长 */
    private Integer validDuration;

    /** 允许迟到(0否 1是) */
    private Integer lateEnable;

    /** 允许早退(0否 1是) */
    private Integer earlyEnable;

    /** 允许休息时间(0否 1是) */
    private Integer breakEnable;

    /** 允许次日下班(0否 1是) 暂弃 */
    private Integer nextDayEnable;

    /** 打卡开始时间点 */
    private Date clockStartPoint;

    /** 上班时间点 */
    private Date inPoint;

    /** 迟到时间点 */
    private Date latePoint;

    /** 上班缺卡时间点 */
    private Date inLackPoint;

    /** 休息开始时间点 */
    private Date breakStartPoint;

    /** 休息结束时间点 */
    private Date breakEndPoint;

    /** 早退时间点 */
    private Date earlyPoint;

    /** 下班时间点 */
    private Date outPoint;

    /** 下班缺卡时间点 */
    private Date outLackPoint;

    /** 出勤类型(1: 普班, 2: 休, 3: 假, 4: 加班) */
    private Integer attendanceType;

    /** 申请事件开始时间 */
    private Date applyStart;

    /** 申请事件结束时间 */
    private Date applyEnd;

    /** 是否带薪(1: 是, 0: 否) */
    private Integer withSalary;

    /** 审核数据展示标识(1.普通班 9.标识出差 10.标识外出) */
    private Integer applyViewEnable;

    /** 下班是否被外出覆盖(0未覆盖 1覆盖) */
    private Integer outStepOutType;

    /** 上班是否被外出覆盖(0未覆盖 1覆盖) */
    private Integer inStepOutType;

    /** 上班边界覆盖(0:无覆盖, 1:加班, 2:借调, 3:请假) */
    private Integer inUnbounded;
    /** 下班边界覆盖(0:无覆盖, 1:加班, 2:借调, 3:请假) */
    private Integer outUnbounded;

    /** 上班打卡记录 */
    private ClockInVo onWorkInfoVo;

    /** 下班打卡记录 */
    private ClockInVo offWorkInfoVo;

    private String userId;

    private String dayStr;

    /** 隐藏(0:不隐藏, 1:上班隐藏) */
    private String inHideStatus;
    /** 隐藏(0:不隐藏, 1:下班隐藏) */
    private String outHideStatus;
    /** 上班无需打卡(true:是, false:否) */
    private boolean onWorkIgnore;
    /** 下班无需打卡(true:是, false:否) */
    private boolean offWorkIgnore;
    /** 消息(离岗、回岗) */
    private String msg;
    /** 加班规则 */
    private OvertimeRuleDetailVo overtimeRuleDetail;
    /** 无审批加班 */
    private Integer overtime = 0;
    /** 排班类型 2: 划线排班 */
    private Integer fixedMark;

    public AttendanceRuleVo(Integer applyViewEnable, Integer outStepOutType, Integer inStepOutType) {
        this.applyViewEnable = applyViewEnable;
        this.outStepOutType = outStepOutType;
        this.inStepOutType = inStepOutType;
    }
}
