package com.yuchen.saas.torch.api.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.NullSerializer;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.util.Date;
import java.util.List;

/**
 * @ClassName TorchVisitorVo
 * @Description 新增接受访客信息VO
 * @Author mqs
 * @Date 2023/6/12 20:01
 * @Version 1.0
 */
@Data
public class TorchVisitorInfoVO {

    /**
     * 访客主表id
     */
    private Long id;
    private String idStr;
    /**
     * 被访者企业名称
     */
    @ApiModelProperty(name = "intervieweeCompany", value = "被访者企业名称")
    private String intervieweeCompany;
    /**
     * 被访者所属部门
     */
    @ApiModelProperty(name = "intervieweeDept", value = "被访者所属部门")
    private String intervieweeDept;
    /**
     * 公司地址
     */
    @ApiModelProperty(name = "companyAddress", value = "公司地址")
    private String companyAddress;
    /**
     * 预约拜访开始时间
     */
    @ApiModelProperty(name = "startTime", value = "预约拜访开始时间")
    @NotNull(message = "预约拜访开始时间不能为空")
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date startTime;
    /**
     * 预约拜访结束时间
     */
    @ApiModelProperty(name = "endTime", value = "预约拜访结束时间")
    @NotNull(message = "预约拜访结束时间不能为空")
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date endTime;
    /**
     * 被访者Id
     */
    @ApiModelProperty(name = "intervieweeId", value = "被访者Id")
    private Long intervieweeId;
    /**
     * 被访者姓名
     */
    @ApiModelProperty(name = "intervieweeName", value = "被访者姓名")
    @NotNull(message = "被访者姓名不能为空")
    private String intervieweeName;
    /**
     * 被访者手机号
     */
    @ApiModelProperty(name = "intervieweePhone", value = "被访者手机号")
    private String intervieweePhone;
    /**
     * 访客人数
     */
    @ApiModelProperty(name = "visitorNum", value = "访客人数")
    private Integer visitorNum;
    /**
     * 访客车辆数
     */
    @ApiModelProperty(name = "visitorCarNum", value = "访客车辆数")
    private Integer visitorCarNum;
    /**
     * 停车优惠券发放 0:未发放;1:已发放
     */
    @ApiModelProperty(name = "giveParkingCoupon", value = "停车优惠券发放 0:未发放;1:已发放")
    private String giveParkingCoupon;
    /**
     * 发放方式 1:发放到手机号; 2:发放到车牌号
     */
    @ApiModelProperty(name = "giveType", value = "发放方式 1:发放到手机号; 2:发放到车牌号")
    private String giveType;
    /**
     * 抵扣优惠卡ID
     */
    @ApiModelProperty(name = "couponId", value = "抵扣优惠卡ID")
    @JsonSerialize(nullsUsing = NullSerializer.class)
    private Long couponId;
    /**
     * 拜访事项
     */
    @ApiModelProperty(name = "visitMatter", value = "拜访事项")
    @NotNull(message = "拜访事项不能为空")
    private String visitMatter;
    /**
     * 接待地点
     */
    @ApiModelProperty(name = "visitorAddress", value = "接待地点")
    private String visitorAddress;
    /**
     * 到访时间
     */
    @ApiModelProperty(name = "arriveTime", value = "到访时间")
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date arriveTime;
    /**
     * 到访时间字符串
     */
    //private String arriveTimeStr;
    /**
     * 预约时间
     */
    @ApiModelProperty(name = "appointmentTime", value = "预约时间")
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date appointmentTime;

    /**
     * 到访状态 0:未到访;1:已到访;2:已取消;3:已过期
     */
    @ApiModelProperty(name = "visitorState", value = "到访状态 0:未到访;1:已到访;2:已取消;3:已过期")
    @NotNull(message = "到访状态不能为空")
    private String visitorState;
    /**
     * 平台用户id
     */
    @ApiModelProperty(name = "userDetailId", value = "平台用户id")
    private Long userDetailId;
    /**
     * 微信公众号openId
     */
    @ApiModelProperty(name = "userPayId", value = "微信公众号openId")
    private String userPayId;
    /**
     * 备注信息
     */
    @ApiModelProperty(name = "remark", value = "备注信息")
    private String remark;
    /**
     * 访客信息二维码,AES加密
     */
    @ApiModelProperty(name = "qrCode", value = "访客信息二维码,AES加密")
    private String qrCode;

    /**
     * 访客人员信息列表
     */
    @ApiModelProperty(name = "访客人员信息列表")
    private List<TorchVisitorCrewVO> visitorCrewVOList;

    /**
     * openId
     */
    @ApiModelProperty(name = "openId", value = "openId")
    private String openId;

    /**
     * appId
     */
    @ApiModelProperty(name = "appId", value = "appId")
    private String appId;

    /**
     * 来源类型 0.公众号端临时补录;1.公众号端新增; 2.PC端临时补录
     */
    @ApiModelProperty(name = "sourceType", value = "sourceType")
    private String sourceType;

    /**
     * 接收访客预约组织信息
     */
    @NotNull
    @ApiModelProperty(name = "deptId", value = "组织id")
    private Long deptId;

    /**
     * 被访人员接待地址
     */
    @ApiModelProperty(name = "intervieweeAddress", value = "被访人员接待地址")
    private String intervieweeAddress;

}
