package cn.com.ty.lift.business.project.dao.entity.model.request;

import cn.com.ty.lift.business.project.dao.entity.Project;
import cn.com.ty.lift.business.project.dao.entity.ProjectLiftRelevance;
import cn.com.ty.lift.business.project.dao.entity.ProjectUser;
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.LocalDateTime;
import java.util.List;

/**
 * @author bieao
 * @date 2019/11/28
 * @description 项目管理列表请求体
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class ProjectRequest extends PageRequest {

    /**
     * 维保公司ID
     */
    @NotNull(message = "维保公司ID不能为空")
    @Min(value = 1, message = "维保公司ID有误")
    private Long mtCompanyId;

    /**
     * 甲方公司ID
     */
    @NotNull(message = "甲方公司ID不能为空")
    @Min(value = 1, message = "甲方公司ID有误")
    private Long ppCompanyId;

    /**
     * 维保工ID
     */
    @NotNull(message = "维保工ID不能为空")
    @Min(value = 1, message = "维保工ID有误")
    private Long workerId;

    /**
     * 项目ID
     */
    @NotNull(message = "项目ID不能为空")
    @Min(value = 1, message = "项目ID有误")
    private Long id;

    /**
     * 项目ID
     */
    @NotNull(message = "项目ID不能为空")
    @Min(value = 1, message = "项目ID有误")
    private Long projectId;

    /**
     * 项目组成员
     */
    @NotEmpty(message = "项目组成员不能为空")
    private List<ProjectUser> userList;

    /**
     * 项目电梯id列表
     */
    @NotEmpty(message = "项目电梯id列表不能为空")
    private List<ProjectLiftRelevance> list;

    /**
     * 项目
     */
    @NotNull(message = "项目不能为空")
    private Project project;

    /**
     * 省编码
     */
    private String provinceCode;
    /**
     * 市编码
     */
    private String cityCode;
    /**
     * 区编码
     */
    private String districtCode;
    /**
     * 区域ID
     */
    private Long regionId;
    /**
     * 用户ID
     */
    @NotNull(message = "用户ID不能为空")
    private Long userId;
    /**
     * 项目名称、项目编号、甲方名称、项目地址
     */
    private String condition;

    /**
     * 项目名称
     */
    private String projectName;

    /**
     * 项目状态 1:未开始,2:服务中,3:停止,4:逾期
     */
    @NotNull(message = "缺少项目状态")
    @Min(value = 1, message = "项目状态最小值为1")
    @Max(value = 4, message = "项目状态最大值为4")
    private Integer projectStatus;

    /**
     * 1:恢复服务，2:停止服务，3:继续服务
     */
    @NotNull(message = "项目操作不能为空")
    @Min(value = 1, message = "项目操作最小值为1")
    @Max(value = 3, message = "项目操作最大值为3")
    private Integer operate;

    /**
     * 项目操作：0：解锁 1：锁定
     */
    @NotNull(message = "项目操作不能为空")
    @Min(value = 0, message = "项目操作最小值为0")
    @Max(value = 1, message = "项目操作最大值为1")
    private Integer lock;

    /**
     * 电梯注册代码
     */
    @NotBlank(message = "电梯注册代码不能为空")
    private String registrationCode;

    /**
     * 停止服务描述
     */
    private String endRemarks;

    /**
     * 新开始时间
     */
    private LocalDate startDate;

    /**
     * 新结束时间
     */
    private LocalDate endDate;

    /**
     * 项目停止时间
     */
    private LocalDateTime stopTime;

    /**
     * 当前年月日
     */
    @NotNull(message = "当前时间不能为空")
    private LocalDate beginTime;

    private String currentRoleCode;

    /**
     * 是否能查看到项目下其他维保工的电梯
     */
    private String look;

}
