package jnpf.entity.attendance;

import jnpf.enums.attendance.AttendanceTypeEnum;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

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


/**
 * 申请参数类，用于封装申请相关的信息
 */
@Builder
@NoArgsConstructor
@Data
@AllArgsConstructor
public class ApplyParam {

    // 考勤组ID
    private String groupId;
    // 用户ID
    private String userId;
    // 申请ID
    private String applyId;
    // 申请开始时间
    private Date start;
    // 申请结束时间
    private Date end;
    // 有效时长，以小时为单位
    private BigDecimal validDuration;
    // 出勤类型，如请假、加班等
    private AttendanceTypeEnum attendanceType;
    //开始时间类型 1 上半天 2 下半天
    private Integer startTimeType;
    //结束时间类型 1 上半天 2 下半天
    private Integer endTimeType;
    //请假类型单位  1 小时 2 天 3 半天
    private Integer leaveUnit;
    // 有效时长，以小时为单位
    private BigDecimal validDay;

    public ApplyParam(String userId, Date start, Date end, AttendanceTypeEnum attendanceType){
        this.userId = userId;
        this.start = start;
        this.end = end;
        this.attendanceType = attendanceType;
    }
    public ApplyParam(String userId, String applyId, Date start, Date end, BigDecimal validDuration, AttendanceTypeEnum attendanceType){
        this.userId = userId;
        this.applyId = applyId;
        this.start = start;
        this.end = end;
        this.validDuration = validDuration;
        this.attendanceType = attendanceType;
    }

    public ApplyParam(String userId, Date start, Date end, AttendanceTypeEnum attendanceType, Integer startTimeType, Integer endTimeType, Integer leaveUnit) {
        this.userId = userId;
        this.start = start;
        this.end = end;
        this.attendanceType = attendanceType;
        this.startTimeType = startTimeType;
        this.endTimeType = endTimeType;
        this.leaveUnit = leaveUnit;
    }

    public ApplyParam(String userId, String applyId, Date startTime, Date endTime, BigDecimal validDuration, AttendanceTypeEnum attendanceTypeEnum, Integer startTimeType, Integer endTimeType, Integer leaveUnit, BigDecimal validDay) {
        this.userId = userId;
        this.applyId = applyId;
        this.start = startTime;
        this.end = endTime;
        this.validDuration = validDuration;
        this.attendanceType = attendanceTypeEnum;
        this.startTimeType = startTimeType;
        this.endTimeType = endTimeType;
        this.leaveUnit = leaveUnit;
        this.validDay = validDay;
    }
}
