package org.wfc.omada.api.sitesetting.model;

import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModelProperty;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import java.util.Objects;

/**
 * SslVpnUserEntity
 */
@javax.annotation.Generated(value = "org.openapitools.codegen.languages.SpringCodegen", date = "2024-12-04T11:32:19.054+08:00[Asia/Shanghai]")

public class SslVpnUserEntity   {
  @JsonProperty("id")
  private String id;

  @JsonProperty("groupId")
  private String groupId;

  @JsonProperty("groupName")
  private String groupName;

  @JsonProperty("name")
  private String name;

  @JsonProperty("status")
  private Boolean status;

  @JsonProperty("available")
  private Boolean available;

  @JsonProperty("password")
  private String password;

  @JsonProperty("validity")
  private String validity;

  @JsonProperty("concurrentNumber")
  private Integer concurrentNumber;

  public SslVpnUserEntity id(String id) {
    this.id = id;
    return this;
  }

  /**
   * ID of the SSL VPN user
   * @return id
  */
  @ApiModelProperty(value = "ID of the SSL VPN user")


  public String getId() {
    return id;
  }

  public void setId(String id) {
    this.id = id;
  }

  public SslVpnUserEntity groupId(String groupId) {
    this.groupId = groupId;
    return this;
  }

  /**
   * Group ID of the SSL VPN user. User group can be created using 'Create SSL VPN user group' interface, and User Group ID can be obtained from 'Get user group list for SSL VPN server' interface.
   * @return groupId
  */
  @ApiModelProperty(value = "Group ID of the SSL VPN user. User group can be created using 'Create SSL VPN user group' interface, and User Group ID can be obtained from 'Get user group list for SSL VPN server' interface.")


  public String getGroupId() {
    return groupId;
  }

  public void setGroupId(String groupId) {
    this.groupId = groupId;
  }

  public SslVpnUserEntity groupName(String groupName) {
    this.groupName = groupName;
    return this;
  }

  /**
   * Group name of the SSL VPN user
   * @return groupName
  */
  @ApiModelProperty(value = "Group name of the SSL VPN user")


  public String getGroupName() {
    return groupName;
  }

  public void setGroupName(String groupName) {
    this.groupName = groupName;
  }

  public SslVpnUserEntity name(String name) {
    this.name = name;
    return this;
  }

  /**
   * Name of the SSL VPN user
   * @return name
  */
  @ApiModelProperty(required = true, value = "Name of the SSL VPN user")
  @NotNull

@Pattern(regexp="^[\\041-\\0176]$|^[\\041-\\0176][\\040-\\0176]{0,18}[\\041-\\0176]$") 
  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public SslVpnUserEntity status(Boolean status) {
    this.status = status;
    return this;
  }

  /**
   * Status of the SSL VPN user
   * @return status
  */
  @ApiModelProperty(required = true, value = "Status of the SSL VPN user")
  @NotNull


  public Boolean getStatus() {
    return status;
  }

  public void setStatus(Boolean status) {
    this.status = status;
  }

  public SslVpnUserEntity available(Boolean available) {
    this.available = available;
    return this;
  }

  /**
   * Available of the SSL VPN user
   * @return available
  */
  @ApiModelProperty(value = "Available of the SSL VPN user")


  public Boolean getAvailable() {
    return available;
  }

  public void setAvailable(Boolean available) {
    this.available = available;
  }

  public SslVpnUserEntity password(String password) {
    this.password = password;
    return this;
  }

  /**
   * Password of the SSL VPN user
   * @return password
  */
  @ApiModelProperty(required = true, value = "Password of the SSL VPN user")
  @NotNull

@Pattern(regexp="^[\\041-\\0176]$|^[\\041-\\0176][\\040-\\0176]{0,62}[\\041-\\0176]$") 
  public String getPassword() {
    return password;
  }

  public void setPassword(String password) {
    this.password = password;
  }

  public SslVpnUserEntity validity(String validity) {
    this.validity = validity;
    return this;
  }

  /**
   * Validity of the SSL VPN user
   * @return validity
  */
  @ApiModelProperty(required = true, value = "Validity of the SSL VPN user")
  @NotNull


  public String getValidity() {
    return validity;
  }

  public void setValidity(String validity) {
    this.validity = validity;
  }

  public SslVpnUserEntity concurrentNumber(Integer concurrentNumber) {
    this.concurrentNumber = concurrentNumber;
    return this;
  }

  /**
   * Concurrent number of the SSL VPN user
   * @return concurrentNumber
  */
  @ApiModelProperty(required = true, value = "Concurrent number of the SSL VPN user")
  @NotNull


  public Integer getConcurrentNumber() {
    return concurrentNumber;
  }

  public void setConcurrentNumber(Integer concurrentNumber) {
    this.concurrentNumber = concurrentNumber;
  }


  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    SslVpnUserEntity sslVpnUserEntity = (SslVpnUserEntity) o;
    return Objects.equals(this.id, sslVpnUserEntity.id) &&
        Objects.equals(this.groupId, sslVpnUserEntity.groupId) &&
        Objects.equals(this.groupName, sslVpnUserEntity.groupName) &&
        Objects.equals(this.name, sslVpnUserEntity.name) &&
        Objects.equals(this.status, sslVpnUserEntity.status) &&
        Objects.equals(this.available, sslVpnUserEntity.available) &&
        Objects.equals(this.password, sslVpnUserEntity.password) &&
        Objects.equals(this.validity, sslVpnUserEntity.validity) &&
        Objects.equals(this.concurrentNumber, sslVpnUserEntity.concurrentNumber);
  }

  @Override
  public int hashCode() {
    return Objects.hash(id, groupId, groupName, name, status, available, password, validity, concurrentNumber);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class SslVpnUserEntity {\n");
    
    sb.append("    id: ").append(toIndentedString(id)).append("\n");
    sb.append("    groupId: ").append(toIndentedString(groupId)).append("\n");
    sb.append("    groupName: ").append(toIndentedString(groupName)).append("\n");
    sb.append("    name: ").append(toIndentedString(name)).append("\n");
    sb.append("    status: ").append(toIndentedString(status)).append("\n");
    sb.append("    available: ").append(toIndentedString(available)).append("\n");
    sb.append("    password: ").append(toIndentedString(password)).append("\n");
    sb.append("    validity: ").append(toIndentedString(validity)).append("\n");
    sb.append("    concurrentNumber: ").append(toIndentedString(concurrentNumber)).append("\n");
    sb.append("}");
    return sb.toString();
  }

  /**
   * Convert the given object to string with each line indented by 4 spaces
   * (except the first line).
   */
  private String toIndentedString(Object o) {
    if (o == null) {
      return "null";
    }
    return o.toString().replace("\n", "\n    ");
  }
}

