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

import cn.com.ty.lift.business.capital.dao.entity.CapitalRepair;
import cn.com.ty.lift.business.capital.dao.entity.CapitalRepairLiftRelevance;
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 2020/4/27
 * @description 大修项目请求
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class CapitalRepairRequest 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 id;

    /**
     * 用户ID
     */
    @NotNull(message = "用户ID不能为空")
    @Min(value = 1, message = "用户ID有误")
    private Long userId;

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

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

    /**
     * 项目状态
     */
    @NotBlank(message = "项目状态不能为空")
    private String projectStatus;

    /**
     * 逾期时间
     */
    @NotNull(message = "逾期时间不能为空")
    private LocalDate overdueDate;

    /**
     * 逾期原因
     */
    @NotBlank(message = "逾期原因不能为空")
    private String overdueReason;

    /**
     * 竣工单地址
     */
    @NotEmpty(message = "竣工单地址不能为空")
    private List<String> imageUrlList;

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

    /**
     * 经纬度
     */
    @NotBlank(message = "经纬度不能为空")
    private String coordinate;

    /**
     * 签到地址
     */
    @NotBlank(message = "签到地址不能为空")
    private String address;

    /**
     * 是否通过(0:不通过，1:通过)
     */
    @NotNull(message = "是否通过不能为空")
    @Min(value = 0, message = "是否通过最小值为0")
    @Max(value = 1, message = "是否通过最大值为1")
    private Integer pass;

    /**
     * 审核类型 （0：逾期，1：竣工）
     */
    @NotNull(message = "审核类型不能为空")
    @Min(value = 0, message = "审核类型值最小值为1")
    @Max(value = 1, message = "审核类型最大值为2")
    private Integer type;

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

    /**
     * 大修项目
     */
    @NotNull(message = "大修项目不能为空")
    private CapitalRepair capitalRepair;

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

    /**
     * 签到日期
     */
    @NotNull(message = "签到日期不能为空")
    private LocalDate signDate;

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

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

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

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

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

    /**
     * 项目编号
     */
    private String projectCode;


    private String currentRoleCode;
}
