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.Pattern;
import java.util.Objects;

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

public class SsidPpskSettingOpenApiVo   {
  @JsonProperty("ppskProfileId")
  private String ppskProfileId;

  @JsonProperty("radiusProfileId")
  private String radiusProfileId;

  @JsonProperty("macFormat")
  private Integer macFormat;

  @JsonProperty("nasId")
  private String nasId;

  @JsonProperty("type")
  private Integer type;

  public SsidPpskSettingOpenApiVo ppskProfileId(String ppskProfileId) {
    this.ppskProfileId = ppskProfileId;
    return this;
  }

  /**
   * This field represents PPSK Profile ID; This is necessary when the value of security is 4(PPSK without RADIUS); PPSK Profile(PPSK Profile Template) can be created using Create PPSK profile interface(Create PPSK profile template interface), and PPSK Profile ID(PPSK Profile Template ID) can be obtained from Get PPSK profiles list(Get PPSK profile templates list) interface.
   * @return ppskProfileId
  */
  @ApiModelProperty(value = "This field represents PPSK Profile ID; This is necessary when the value of security is 4(PPSK without RADIUS); PPSK Profile(PPSK Profile Template) can be created using Create PPSK profile interface(Create PPSK profile template interface), and PPSK Profile ID(PPSK Profile Template ID) can be obtained from Get PPSK profiles list(Get PPSK profile templates list) interface.")


  public String getPpskProfileId() {
    return ppskProfileId;
  }

  public void setPpskProfileId(String ppskProfileId) {
    this.ppskProfileId = ppskProfileId;
  }

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

  /**
   * This field represents RADIUS Profile ID; This is necessary when the value of security is 5(PPSK with RADIUS); 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(value = "This field represents RADIUS Profile ID; This is necessary when the value of security is 5(PPSK with RADIUS); 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.")


  public String getRadiusProfileId() {
    return radiusProfileId;
  }

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

  public SsidPpskSettingOpenApiVo macFormat(Integer macFormat) {
    this.macFormat = macFormat;
    return this;
  }

  /**
   * MAC address format. This is necessary when the value of security is 5(PPSK with RADIUS); It should be a value as follows: 0: aabbccddeeff; 1: aa-bb-cc-dd-ee-ff; 2: aa:bb:cc:dd:ee:ff; 3: AABBCCDDEEFF; 4: AA-BB-CC-DD-EE-FF; 5: AA:BB:CC:DD:EE:FF.
   * @return macFormat
  */
  @ApiModelProperty(value = "MAC address format. This is necessary when the value of security is 5(PPSK with RADIUS); It should be a value as follows: 0: aabbccddeeff; 1: aa-bb-cc-dd-ee-ff; 2: aa:bb:cc:dd:ee:ff; 3: AABBCCDDEEFF; 4: AA-BB-CC-DD-EE-FF; 5: AA:BB:CC:DD:EE:FF.")


  public Integer getMacFormat() {
    return macFormat;
  }

  public void setMacFormat(Integer macFormat) {
    this.macFormat = macFormat;
  }

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

  /**
   * NAS ID. This is necessary when the value of security is 5(PPSK with RADIUS); It should contain 1 to 64 characters.
   * @return nasId
  */
  @ApiModelProperty(value = "NAS ID. This is necessary when the value of security is 5(PPSK with RADIUS); It should contain 1 to 64 characters.")

@Pattern(regexp="^$|^[^ ]$|^[^ ].{0,62}[^ ]$") 
  public String getNasId() {
    return nasId;
  }

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

  public SsidPpskSettingOpenApiVo type(Integer type) {
    this.type = type;
    return this;
  }

  /**
   * Authentication type. This is necessary when the value of security is 5(PPSK with RADIUS); It should be a value as follows: 0: Mac Auth(Generic Radius with bound MAC); 1: EKMS(This configuration applies to the Pro Site of the Omada Pro Controller only); 2: Generic Radius with unbound MAC(This configuration applies to the Pro Site of the Omada Pro Controller only).
   * @return type
  */
  @ApiModelProperty(value = "Authentication type. This is necessary when the value of security is 5(PPSK with RADIUS); It should be a value as follows: 0: Mac Auth(Generic Radius with bound MAC); 1: EKMS(This configuration applies to the Pro Site of the Omada Pro Controller only); 2: Generic Radius with unbound MAC(This configuration applies to the Pro Site of the Omada Pro Controller only).")


  public Integer getType() {
    return type;
  }

  public void setType(Integer type) {
    this.type = type;
  }


  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    SsidPpskSettingOpenApiVo ssidPpskSettingOpenApiVo = (SsidPpskSettingOpenApiVo) o;
    return Objects.equals(this.ppskProfileId, ssidPpskSettingOpenApiVo.ppskProfileId) &&
        Objects.equals(this.radiusProfileId, ssidPpskSettingOpenApiVo.radiusProfileId) &&
        Objects.equals(this.macFormat, ssidPpskSettingOpenApiVo.macFormat) &&
        Objects.equals(this.nasId, ssidPpskSettingOpenApiVo.nasId) &&
        Objects.equals(this.type, ssidPpskSettingOpenApiVo.type);
  }

  @Override
  public int hashCode() {
    return Objects.hash(ppskProfileId, radiusProfileId, macFormat, nasId, type);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class SsidPpskSettingOpenApiVo {\n");
    
    sb.append("    ppskProfileId: ").append(toIndentedString(ppskProfileId)).append("\n");
    sb.append("    radiusProfileId: ").append(toIndentedString(radiusProfileId)).append("\n");
    sb.append("    macFormat: ").append(toIndentedString(macFormat)).append("\n");
    sb.append("    nasId: ").append(toIndentedString(nasId)).append("\n");
    sb.append("    type: ").append(toIndentedString(type)).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    ");
  }
}

