package com.zhongshu.card.client.model.visitor;

import com.zhongshu.card.client.model.base.SuperSearch;
import com.zhongshu.card.client.type.visitor.VisitorApplyType;
import com.zhongshu.card.client.type.visitor.VisitorState;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.util.ArrayList;
import java.util.List;

/**
 * @author TRX
 * @date 2025/2/11
 */
@Data
public class VisitorMainSearch extends SuperSearch {

    @Schema(description = "组件id")
    private String sceneComponentId;

    @Schema(description = "状态")
    private VisitorState state;

    @Schema(description = "最终状态")
    private List<VisitorState> finalStates;

    @Schema(description = "申请方式，预约类型")
    private VisitorApplyType applyType;

    //-----------------------被访人 start--------------------------
    @Schema(description = "被访人，也是审核人的用户userId")
    private String visitorUserId;

    @Schema(description = "被访人姓名")
    private String visitorUserName;

    @Schema(description = "被访人手机")
    private String visitorUserPhone;

    @Schema(description = "是否已失效")
    private Boolean isCancel = Boolean.FALSE;

    @Schema(description = "清除人脸")
    private Boolean isClearFace;

    @Schema(description = "是否已失效(审核通过，但使用时间已过)")
    private Boolean isOverTime = Boolean.FALSE;

    @Schema(description = "是否离开")
    private Boolean isLeave = Boolean.FALSE;
    //-------------------------------申请信息start--------------------

    @Schema(description = "是否已审核")
    private Boolean isReViewed;

    @Schema(description = "申请人userId")
    private String applyUserId;

    @Schema(description = "微信的openId")
    private String openId;

    @Schema(description = "姓名")
    private String name;

    @Schema(description = "手机号码")
    private String phone;

    @Schema(description = "审核是否成功")
    private Boolean reViewSuccess;

    @Schema(description = "访客类型")
    private List<String> visitorTypes;

    @Schema(description = "身份证号码")
    private String cardNumber;

    @Schema(description = "车牌号码")
    private String carNo;

    @Schema(description = "可使用的设备id集合")
    private List<String> deviceIds = new ArrayList<>();

    @Schema(description = "关联用户信息是否脱敏显示")
    private Boolean isDesen;

    @Schema(description = "预约开始时间（用户申请是填的时间）")
    private Long visitorStartTime;

    @Schema(description = "预约结束时间")
    private Long visitorEndTime;

    @Schema(description = "是否是超时离开")
    private Boolean isOverTimeLeave;

    @Schema(description = "实际到访时间 开始")
    private Long startFirstVisitTime;

    @Schema(description = "实际到访时间 结算")
    private Long endFirstVisitTime;
}
