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;

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

public class SslVpnUserModifyOpenApiVo   {
  @JsonProperty("groupId")
  private String groupId;

  @JsonProperty("status")
  private Boolean status;

  @JsonProperty("password")
  private String password;

  @JsonProperty("validity")
  private String validity;

  @JsonProperty("concurrentNumber")
  private Integer concurrentNumber;

  public SslVpnUserModifyOpenApiVo 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 SslVpnUserModifyOpenApiVo 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 SslVpnUserModifyOpenApiVo password(String password) {
    this.password = password;
    return this;
  }

  /**
   * Password of the SSL VPN user should contain 1 to 64 characters.
   * @return password
  */
  @ApiModelProperty(required = true, value = "Password of the SSL VPN user should contain 1 to 64 characters.")
  @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 SslVpnUserModifyOpenApiVo validity(String validity) {
    this.validity = validity;
    return this;
  }

  /**
   * Validity of the SSL VPN user. The format is Month/Day/Year, for example 08/20/2022
   * @return validity
  */
  @ApiModelProperty(required = true, value = "Validity of the SSL VPN user. The format is Month/Day/Year, for example 08/20/2022")
  @NotNull


  public String getValidity() {
    return validity;
  }

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

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

  /**
   * Concurrent number of the SSL VPN user. It should be within the range of 1–100.
   * @return concurrentNumber
  */
  @ApiModelProperty(required = true, value = "Concurrent number of the SSL VPN user. It should be within the range of 1–100.")
  @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;
    }
    SslVpnUserModifyOpenApiVo sslVpnUserModifyOpenApiVo = (SslVpnUserModifyOpenApiVo) o;
    return Objects.equals(this.groupId, sslVpnUserModifyOpenApiVo.groupId) &&
        Objects.equals(this.status, sslVpnUserModifyOpenApiVo.status) &&
        Objects.equals(this.password, sslVpnUserModifyOpenApiVo.password) &&
        Objects.equals(this.validity, sslVpnUserModifyOpenApiVo.validity) &&
        Objects.equals(this.concurrentNumber, sslVpnUserModifyOpenApiVo.concurrentNumber);
  }

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

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class SslVpnUserModifyOpenApiVo {\n");
    
    sb.append("    groupId: ").append(toIndentedString(groupId)).append("\n");
    sb.append("    status: ").append(toIndentedString(status)).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    ");
  }
}

