package com.bocloud.nms.model.campus;

import java.util.Date;
import java.util.List;

public class GuestUserModel {

    // 帐号名，必须，无缺省值，帐号名中不能包含如下特殊字符：#+/?%&=*\\'@\\\\"[]()<>`和TAB键，
    // 不能包含连续空格且长度要求为32个字符以内。帐号名不允许为“anonymous”和“computer”。
    private String userName;
    // 密码，必须，无缺省值，长度要求为32个字符以内。
    private String userPassword;
    // 自动生成密码，非必须，缺省值为false。若该元素值为true，则忽略元素userPassword的值，系统自动为该访客生成密码。
    private Boolean autoGeneratePwd;
    // 用户姓名，必须，无缺省值，长度要求为32个字符以内。
    private String fullName;
    // 证件号码，必须，无缺省值，长度要求为32个字符以内。
    private String certification;
    // 单位，非必须，长度要求为127个字符以内。
    private String address;
    // 电话，非必须，该值只能包含数字、“(”、“)”、“+”、“-”和空格，长度要求为32个字符以内。
    private String phone;
    // 电子邮件，非必须，只能由字母、数字以及-_.@组成，长度必须为128个字符以内，格式如xxx@yyy.zzz。
    private String email;
    // 用户分组id
    private Long userGroupId;
    // 用户分组名称
    private String userGroupName;
    // 管理者，必须，无缺省值。
    private String guestManagerName;
    // 失效日期，非必须，缺省值值为注册日期后7天，其值可以是相对时间和绝对时间：绝对时间格式为：yyyy-MM-dd HH:mm，
    // 该值必须晚于当前日期，且不能大于最大值2038-01-01；
    // 相对时间要求为整数(int)类型(以分钟为单位)且转化为绝对时间的值必须晚于当前日期，
    // 且不能大于最大值2038-01-01。
    private Date invalidDate;
    // 接待部门，非必须，无缺省值，长度要求为128个字符以内。
    private String guestDepartment;
    // 接待人员，非必须，无缺省值，长度要求为16个字符以内。
    private String guestHost;
    // 设备IP地址，非必须，无缺省值，长度要求为15个字符以内，要求采用点分十进制形式，例如：127.0.0.1，且范围在[0.0.0.0 — 255.255.255.255]之间，不包括临界值。
    private String nasIp;
    // 设备端口号，非必须，无缺省值，该数字必须为0-255 之间的整数。
    private Integer nasPort;
    // 外层VLAN ID，非必须，无缺省值，该数字必须为1-4094 之间的整数。
    private Long outerVlanId;
    // 内层VLAN ID，非必须，无缺省值，该参数必须为1-4094之间的整数，可以输入多个VLAN ID，最多输入500个。
    private List<Long> innerVlanIds;
    // 无线用户SSID，非必须，无缺省值，长度要求为120个字符以内。
    private String wlanSsid;
    // 计算机名称，非必须，无缺省值，长度要求为128个字符以内。
    private String computerName;
    // 绑定域，非必须，无缺省值，长度要求为128个字符以内。
    private String boundDomainName;
    // 登录域，非必须，无缺省值，长度要求为128个字符以内。
    private String logonDomainName;
    // 用户MAC址，非必须，无缺省值，长度要求为17个字符以内，
    // 输入XX-XX-XX-XX-XX-XX、XX:XX:XX:XX:XX:XX、XXXX-XXXX-XXXX 等完整格式，最多允许1000个。
    private List<String> macs;
    // 用户IPV4地址，非必须，无缺省值，长度要求为15个字符以内，采用点分十进制形式，
    // 例如：127.0.0.1，且范围在[0.0.0.0 — 255.255.255.255]之间，不包括临界值，可以输入多个，最多输入1000个。
    private List<String> ipv4s;
    // 用户IPv6地址，非必须，无缺省值，长度要求为39个字符以内，可以输入多个，最多输入1000个。
    // 只有当前系统配置中启用了IPv6，该输入值才有效。
    private List<String> ipv6s;
    // 设备序列号，非必须，无缺省值，长度要求为128个字符以内。
    private String deviceSn;
    // IMSI 号码，非必须，无缺省值，长度要求为128个字符以内。
    private String imsiCode;
    // IMEI 号码，非必须，无缺省值，长度要求为128个字符以内。
    private String imeiCode;
    // 硬盘序列号，非必须，无缺省值，长度要求为512个字符以内，输入为十六进制字符0-9和A-F，其中A-F不区分大小写。
    private String harddiskSn;
    // 申请的服务模板信息，一个访客只能申请一个服务。
    private GuestServiceModel service;

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getFullName() {
        return fullName;
    }

    public void setFullName(String fullName) {
        this.fullName = fullName;
    }

    public String getCertification() {
        return certification;
    }

    public void setCertification(String certification) {
        this.certification = certification;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public Long getUserGroupId() {
        return userGroupId;
    }

    public void setUserGroupId(Long userGroupId) {
        this.userGroupId = userGroupId;
    }

    public String getUserGroupName() {
        return userGroupName;
    }

    public void setUserGroupName(String userGroupName) {
        this.userGroupName = userGroupName;
    }

    public String getGuestManagerName() {
        return guestManagerName;
    }

    public void setGuestManagerName(String guestManagerName) {
        this.guestManagerName = guestManagerName;
    }

    public Date getInvalidDate() {
        return invalidDate;
    }

    public void setInvalidDate(Date invalidDate) {
        this.invalidDate = invalidDate;
    }

    public String getGuestDepartment() {
        return guestDepartment;
    }

    public void setGuestDepartment(String guestDepartment) {
        this.guestDepartment = guestDepartment;
    }

    public String getGuestHost() {
        return guestHost;
    }

    public void setGuestHost(String guestHost) {
        this.guestHost = guestHost;
    }

    public String getNasIp() {
        return nasIp;
    }

    public void setNasIp(String nasIp) {
        this.nasIp = nasIp;
    }

    public Integer getNasPort() {
        return nasPort;
    }

    public void setNasPort(Integer nasPort) {
        this.nasPort = nasPort;
    }

    public Long getOuterVlanId() {
        return outerVlanId;
    }

    public void setOuterVlanId(Long outerVlanId) {
        this.outerVlanId = outerVlanId;
    }

    public List<Long> getInnerVlanIds() {
        return innerVlanIds;
    }

    public void setInnerVlanIds(List<Long> innerVlanIds) {
        this.innerVlanIds = innerVlanIds;
    }

    public String getWlanSsid() {
        return wlanSsid;
    }

    public void setWlanSsid(String wlanSsid) {
        this.wlanSsid = wlanSsid;
    }

    public String getComputerName() {
        return computerName;
    }

    public void setComputerName(String computerName) {
        this.computerName = computerName;
    }

    public String getBoundDomainName() {
        return boundDomainName;
    }

    public void setBoundDomainName(String boundDomainName) {
        this.boundDomainName = boundDomainName;
    }

    public String getLogonDomainName() {
        return logonDomainName;
    }

    public void setLogonDomainName(String logonDomainName) {
        this.logonDomainName = logonDomainName;
    }

    public List<String> getMacs() {
        return macs;
    }

    public void setMacs(List<String> macs) {
        this.macs = macs;
    }

    public List<String> getIpv4s() {
        return ipv4s;
    }

    public void setIpv4s(List<String> ipv4s) {
        this.ipv4s = ipv4s;
    }

    public List<String> getIpv6s() {
        return ipv6s;
    }

    public void setIpv6s(List<String> ipv6s) {
        this.ipv6s = ipv6s;
    }

    public String getDeviceSn() {
        return deviceSn;
    }

    public void setDeviceSn(String deviceSn) {
        this.deviceSn = deviceSn;
    }

    public String getImsiCode() {
        return imsiCode;
    }

    public void setImsiCode(String imsiCode) {
        this.imsiCode = imsiCode;
    }

    public String getImeiCode() {
        return imeiCode;
    }

    public void setImeiCode(String imeiCode) {
        this.imeiCode = imeiCode;
    }

    public String getHarddiskSn() {
        return harddiskSn;
    }

    public void setHarddiskSn(String harddiskSn) {
        this.harddiskSn = harddiskSn;
    }

    public GuestServiceModel getService() {
        return service;
    }

    public GuestServiceModel getOrNewService() {
        if (service == null) {
            service = new GuestServiceModel();
        }
        return service;
    }

    public void setService(GuestServiceModel service) {
        this.service = service;
    }

    public String getUserPassword() {
        return userPassword;
    }

    public void setUserPassword(String userPassword) {
        this.userPassword = userPassword;
    }

    public Boolean getAutoGeneratePwd() {
        return autoGeneratePwd;
    }

    public void setAutoGeneratePwd(Boolean autoGeneratePwd) {
        this.autoGeneratePwd = autoGeneratePwd;
    }
}
