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

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

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

/**
 * WPA-Enterprise SSID config. This is necessary when the value of security is 2(WPA-Enterprise).
 */
@ApiModel(description = "WPA-Enterprise SSID config. This is necessary when the value of security is 2(WPA-Enterprise).")
@javax.annotation.Generated(value = "org.openapitools.codegen.languages.SpringCodegen", date = "2024-12-04T11:32:19.054+08:00[Asia/Shanghai]")

public class SsidEnterpriseSettingOpenApiVo   {
  @JsonProperty("radiusProfileId")
  private String radiusProfileId;

  @JsonProperty("versionEnt")
  private Integer versionEnt;

  @JsonProperty("encryptionEnt")
  private Integer encryptionEnt;

  @JsonProperty("gikRekeyEntEnable")
  private Boolean gikRekeyEntEnable;

  @JsonProperty("rekeyEntInterval")
  private Integer rekeyEntInterval;

  @JsonProperty("intervalEntType")
  private Integer intervalEntType;

  @JsonProperty("nasIdMode")
  private Integer nasIdMode;

  @JsonProperty("nasId")
  private String nasId;

  public SsidEnterpriseSettingOpenApiVo radiusProfileId(String radiusProfileId) {
    this.radiusProfileId = radiusProfileId;
    return this;
  }

  /**
   * This field represents RADIUS Profile ID. RADIUS Profile(RADIUS Profile Template) can be created using Create a new Radius profile(Create a new Radius profile template) interface, and RADIUS Profile ID(RADIUS Profile Template ID) can be obtained from Get Radius profile list(Get Radius profile template list) interface.
   * @return radiusProfileId
  */
  @ApiModelProperty(required = true, value = "This field represents RADIUS Profile ID. RADIUS Profile(RADIUS Profile Template) can be created using Create a new Radius profile(Create a new Radius profile template) interface, and RADIUS Profile ID(RADIUS Profile Template ID) can be obtained from Get Radius profile list(Get Radius profile template list) interface.")
  @NotNull


  public String getRadiusProfileId() {
    return radiusProfileId;
  }

  public void setRadiusProfileId(String radiusProfileId) {
    this.radiusProfileId = radiusProfileId;
  }

  public SsidEnterpriseSettingOpenApiVo versionEnt(Integer versionEnt) {
    this.versionEnt = versionEnt;
    return this;
  }

  /**
   * WPA-Enterprise version. This is necessary when the value of security is 2(WPA-Enterprise); It should be a value as follows: 1: WPA-Enterprise; 2: WPA2-Enterprise; 3: WPA/WPA2-Enterprise; 4.WPA3-Enterprise.
   * @return versionEnt
  */
  @ApiModelProperty(required = true, value = "WPA-Enterprise version. This is necessary when the value of security is 2(WPA-Enterprise); It should be a value as follows: 1: WPA-Enterprise; 2: WPA2-Enterprise; 3: WPA/WPA2-Enterprise; 4.WPA3-Enterprise.")
  @NotNull


  public Integer getVersionEnt() {
    return versionEnt;
  }

  public void setVersionEnt(Integer versionEnt) {
    this.versionEnt = versionEnt;
  }

  public SsidEnterpriseSettingOpenApiVo encryptionEnt(Integer encryptionEnt) {
    this.encryptionEnt = encryptionEnt;
    return this;
  }

  /**
   * WPA-Enterprise encryption. This is necessary when the value of security is 2(WPA-Enterprise); It should be a value as follows: 1: Auto; 3: AES; 4: AES-GCM 256; 5:AES-CNSA; When versionEnt is WPA3-Enterprise, Parameter [encryptionEnt] must be AES.
   * @return encryptionEnt
  */
  @ApiModelProperty(required = true, value = "WPA-Enterprise encryption. This is necessary when the value of security is 2(WPA-Enterprise); It should be a value as follows: 1: Auto; 3: AES; 4: AES-GCM 256; 5:AES-CNSA; When versionEnt is WPA3-Enterprise, Parameter [encryptionEnt] must be AES.")
  @NotNull


  public Integer getEncryptionEnt() {
    return encryptionEnt;
  }

  public void setEncryptionEnt(Integer encryptionEnt) {
    this.encryptionEnt = encryptionEnt;
  }

  public SsidEnterpriseSettingOpenApiVo gikRekeyEntEnable(Boolean gikRekeyEntEnable) {
    this.gikRekeyEntEnable = gikRekeyEntEnable;
    return this;
  }

  /**
   * WPA-Enterprise SSID group key update period config status. True: enable, false: disable.
   * @return gikRekeyEntEnable
  */
  @ApiModelProperty(required = true, value = "WPA-Enterprise SSID group key update period config status. True: enable, false: disable.")
  @NotNull


  public Boolean getGikRekeyEntEnable() {
    return gikRekeyEntEnable;
  }

  public void setGikRekeyEntEnable(Boolean gikRekeyEntEnable) {
    this.gikRekeyEntEnable = gikRekeyEntEnable;
  }

  public SsidEnterpriseSettingOpenApiVo rekeyEntInterval(Integer rekeyEntInterval) {
    this.rekeyEntInterval = rekeyEntInterval;
    return this;
  }

  /**
   * WPA-Enterprise SSID group key update period interval config. When the value of Parameter [intervalEntType] is 0(Seconds), it should be within the range of 30-86400; when the value of Parameter [intervalEntType] is 1(Minutes), it should be within the range of 1-1440; when the value of Parameter [intervalEntType] is 2(Hours), it should be within the range of 1-24.
   * @return rekeyEntInterval
  */
  @ApiModelProperty(value = "WPA-Enterprise SSID group key update period interval config. When the value of Parameter [intervalEntType] is 0(Seconds), it should be within the range of 30-86400; when the value of Parameter [intervalEntType] is 1(Minutes), it should be within the range of 1-1440; when the value of Parameter [intervalEntType] is 2(Hours), it should be within the range of 1-24.")


  public Integer getRekeyEntInterval() {
    return rekeyEntInterval;
  }

  public void setRekeyEntInterval(Integer rekeyEntInterval) {
    this.rekeyEntInterval = rekeyEntInterval;
  }

  public SsidEnterpriseSettingOpenApiVo intervalEntType(Integer intervalEntType) {
    this.intervalEntType = intervalEntType;
    return this;
  }

  /**
   * WPA-Enterprise SSID group key update period interval unit config. It should be a value as follows: 0: Seconds; 1: Minutes; 2: Hours.
   * @return intervalEntType
  */
  @ApiModelProperty(value = "WPA-Enterprise SSID group key update period interval unit config. It should be a value as follows: 0: Seconds; 1: Minutes; 2: Hours.")


  public Integer getIntervalEntType() {
    return intervalEntType;
  }

  public void setIntervalEntType(Integer intervalEntType) {
    this.intervalEntType = intervalEntType;
  }

  public SsidEnterpriseSettingOpenApiVo nasIdMode(Integer nasIdMode) {
    this.nasIdMode = nasIdMode;
    return this;
  }

  /**
   * Indicates the status of nasid under enterprise-level encryption. It should be a value as follows: 0: default (TP LINK: MAC Address), 1: follow device name, 2: custom.
   * @return nasIdMode
  */
  @ApiModelProperty(value = "Indicates the status of nasid under enterprise-level encryption. It should be a value as follows: 0: default (TP LINK: MAC Address), 1: follow device name, 2: custom.")


  public Integer getNasIdMode() {
    return nasIdMode;
  }

  public void setNasIdMode(Integer nasIdMode) {
    this.nasIdMode = nasIdMode;
  }

  public SsidEnterpriseSettingOpenApiVo nasId(String nasId) {
    this.nasId = nasId;
    return this;
  }

  /**
   * This field is necessary when the nasIdMode type is custom.
   * @return nasId
  */
  @ApiModelProperty(value = "This field is necessary when the nasIdMode type is custom.")


  public String getNasId() {
    return nasId;
  }

  public void setNasId(String nasId) {
    this.nasId = nasId;
  }


  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    SsidEnterpriseSettingOpenApiVo ssidEnterpriseSettingOpenApiVo = (SsidEnterpriseSettingOpenApiVo) o;
    return Objects.equals(this.radiusProfileId, ssidEnterpriseSettingOpenApiVo.radiusProfileId) &&
        Objects.equals(this.versionEnt, ssidEnterpriseSettingOpenApiVo.versionEnt) &&
        Objects.equals(this.encryptionEnt, ssidEnterpriseSettingOpenApiVo.encryptionEnt) &&
        Objects.equals(this.gikRekeyEntEnable, ssidEnterpriseSettingOpenApiVo.gikRekeyEntEnable) &&
        Objects.equals(this.rekeyEntInterval, ssidEnterpriseSettingOpenApiVo.rekeyEntInterval) &&
        Objects.equals(this.intervalEntType, ssidEnterpriseSettingOpenApiVo.intervalEntType) &&
        Objects.equals(this.nasIdMode, ssidEnterpriseSettingOpenApiVo.nasIdMode) &&
        Objects.equals(this.nasId, ssidEnterpriseSettingOpenApiVo.nasId);
  }

  @Override
  public int hashCode() {
    return Objects.hash(radiusProfileId, versionEnt, encryptionEnt, gikRekeyEntEnable, rekeyEntInterval, intervalEntType, nasIdMode, nasId);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class SsidEnterpriseSettingOpenApiVo {\n");
    
    sb.append("    radiusProfileId: ").append(toIndentedString(radiusProfileId)).append("\n");
    sb.append("    versionEnt: ").append(toIndentedString(versionEnt)).append("\n");
    sb.append("    encryptionEnt: ").append(toIndentedString(encryptionEnt)).append("\n");
    sb.append("    gikRekeyEntEnable: ").append(toIndentedString(gikRekeyEntEnable)).append("\n");
    sb.append("    rekeyEntInterval: ").append(toIndentedString(rekeyEntInterval)).append("\n");
    sb.append("    intervalEntType: ").append(toIndentedString(intervalEntType)).append("\n");
    sb.append("    nasIdMode: ").append(toIndentedString(nasIdMode)).append("\n");
    sb.append("    nasId: ").append(toIndentedString(nasId)).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    ");
  }
}

