package cn.com.ty.lift.enterprise.oa.dto;

import cn.com.ty.lift.common.model.PageRequest;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.*;
import java.time.LocalDate;
import java.time.LocalTime;
import java.util.List;

/**
 * <p>
 * 签到管理接口请求入参
 * </p>
 *
 * @author wcz
 * @since 2019/12/12
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class AttendanceRequest extends PageRequest {
    /**
     * 主键id
     */
    @Min(value = 1, message = "签到记录ID有误")
    private Long id;
    /**
     * 维保公司id
     */
    @Min(value = 1, message = "维保公司ID有误")
    private Long mtCompanyId;
    /**
     * 用户名称
     */
    @NotBlank(message = "缺少用户名")
    private String username;
    /**
     * 签到开始时间
     */
    private LocalDate begin;
    /**
     * 签到结束时间
     */
    private LocalDate end;

    /**
     * 签到时间
     */
    @NotNull(message = "缺少打卡时间")
    private LocalDate clockTime;
    /**
     * 上午上班时间
     */
    @NotNull(message = "缺少上午上班时间")
    private LocalTime topTime;

    /**
     * 上午下班时间
     */
    @NotNull(message = "缺少上午下班时间")
    private LocalTime downTime;

    /**
     * 下午上班时间
     */
    @NotNull(message = "缺少下午上班时间")
    private LocalTime topTimePm;

    /**
     * 下午下班时间
     */
    @NotNull(message = "缺少下午下班时间")
    private LocalTime downTimePm;

    /**
     * 加班上班时间
     */
    @NotNull(message = "缺少加班上班时间")
    private LocalTime topTimeOt;

    /**
     * 加班下班时间
     */
    @NotNull(message = "缺少加班下班时间")
    private LocalTime downTimeOt;

    /**
     * 经纬度
     */
    @NotBlank(message = "缺少签到经纬度")
    private String coordinate;

    /**
     * 地址
     */
    @NotBlank(message = "缺少签到地址")
    private String address;

    /**
     * 类型（上班打卡+’:’+第n次，下班打卡+’:’+第n次，1：上班打卡，2：下班打卡,3:加班打卡）
     * 11 上午上班 12 上午下班
     * 21 下午上班 22 下午下班
     * 31 加班上班 32 加班下班
     */
    @Min(value = 11, message = "签到类型有误")
    @Max(value = 32, message = "签到类型有误")
    private Integer type;

    @Min(value = 1, message = "当前用户ID有误")
    private Long userId;

    /**
     * 导出记录的id列表
     */
    private List<Long> ids;

    private String attendanceYearMonth;
}
