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

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

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

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

public class CreateSsidOpenApiVo   {
  @JsonProperty("name")
  private String name;

  @JsonProperty("deviceType")
  private Integer deviceType;

  @JsonProperty("band")
  private Integer band;

  @JsonProperty("guestNetEnable")
  private Boolean guestNetEnable;

  @JsonProperty("security")
  private Integer security;

  @JsonProperty("broadcast")
  private Boolean broadcast;

  @JsonProperty("vlanEnable")
  private Boolean vlanEnable;

  @JsonProperty("vlanId")
  private Integer vlanId;

  @JsonProperty("pskSetting")
  private Object pskSetting;

  @JsonProperty("entSetting")
  private Object entSetting;

  @JsonProperty("ppskSetting")
  private Object ppskSetting;

  @JsonProperty("mloEnable")
  private Boolean mloEnable;

  @JsonProperty("pmfMode")
  private Integer pmfMode;

  @JsonProperty("enable11r")
  private Boolean enable11r;

  @JsonProperty("hidePwd")
  private Boolean hidePwd;

  @JsonProperty("greEnable")
  private Boolean greEnable;

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

  /**
   * SSID name. It should contain 1 to 32 UTF-8 characters.
   * @return name
  */
  @ApiModelProperty(required = true, value = "SSID name. It should contain 1 to 32 UTF-8 characters.")
  @NotNull


  public String getName() {
    return name;
  }

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

  public CreateSsidOpenApiVo deviceType(Integer deviceType) {
    this.deviceType = deviceType;
    return this;
  }

  /**
   * SSID device type, identify which devices this SSID will take effect; The lowest bit indicates whether [EAP] is included, the second low bit indicates whether [Gateway] is included, 1 means included while 0 means not included; For example, 3(11) means that EAP/Gateway is enabled, 1(01) means that EAP is enabled.
   * @return deviceType
  */
  @ApiModelProperty(required = true, value = "SSID device type, identify which devices this SSID will take effect; The lowest bit indicates whether [EAP] is included, the second low bit indicates whether [Gateway] is included, 1 means included while 0 means not included; For example, 3(11) means that EAP/Gateway is enabled, 1(01) means that EAP is enabled.")
  @NotNull


  public Integer getDeviceType() {
    return deviceType;
  }

  public void setDeviceType(Integer deviceType) {
    this.deviceType = deviceType;
  }

  public CreateSsidOpenApiVo band(Integer band) {
    this.band = band;
    return this;
  }

  /**
   * SSID band. The lowest bit indicates whether 2.4G is included; the second lowest bit indicates whether 5G is included; the third lowest bit indicates whether 6G is included; 1 means included while 0 means not included. For example, 7(111) means that 2G/5G/6G are enabled; 1(001) means that 2G is enabled. (When 5G is included，it means 5G/5G1/5G2 are enabled.)
   * @return band
  */
  @ApiModelProperty(required = true, value = "SSID band. The lowest bit indicates whether 2.4G is included; the second lowest bit indicates whether 5G is included; the third lowest bit indicates whether 6G is included; 1 means included while 0 means not included. For example, 7(111) means that 2G/5G/6G are enabled; 1(001) means that 2G is enabled. (When 5G is included，it means 5G/5G1/5G2 are enabled.)")
  @NotNull


  public Integer getBand() {
    return band;
  }

  public void setBand(Integer band) {
    this.band = band;
  }

  public CreateSsidOpenApiVo guestNetEnable(Boolean guestNetEnable) {
    this.guestNetEnable = guestNetEnable;
    return this;
  }

  /**
   * SSID guest network config status. True: enable, false: disable.
   * @return guestNetEnable
  */
  @ApiModelProperty(required = true, value = "SSID guest network config status. True: enable, false: disable.")
  @NotNull


  public Boolean getGuestNetEnable() {
    return guestNetEnable;
  }

  public void setGuestNetEnable(Boolean guestNetEnable) {
    this.guestNetEnable = guestNetEnable;
  }

  public CreateSsidOpenApiVo security(Integer security) {
    this.security = security;
    return this;
  }

  /**
   * SSID security mode; Security should be a value as follows: 0: None; 2: WPA-Enterprise; 3: WPA-Personal; 4: PPSK without RADIUS; 5: PPSK with RADIUS.
   * @return security
  */
  @ApiModelProperty(required = true, value = "SSID security mode; Security should be a value as follows: 0: None; 2: WPA-Enterprise; 3: WPA-Personal; 4: PPSK without RADIUS; 5: PPSK with RADIUS.")
  @NotNull


  public Integer getSecurity() {
    return security;
  }

  public void setSecurity(Integer security) {
    this.security = security;
  }

  public CreateSsidOpenApiVo broadcast(Boolean broadcast) {
    this.broadcast = broadcast;
    return this;
  }

  /**
   * SSID broadcast config status. True: enable, false: disable.
   * @return broadcast
  */
  @ApiModelProperty(required = true, value = "SSID broadcast config status. True: enable, false: disable.")
  @NotNull


  public Boolean getBroadcast() {
    return broadcast;
  }

  public void setBroadcast(Boolean broadcast) {
    this.broadcast = broadcast;
  }

  public CreateSsidOpenApiVo vlanEnable(Boolean vlanEnable) {
    this.vlanEnable = vlanEnable;
    return this;
  }

  /**
   * SSID VLAN config status. True: enable, false: disable.
   * @return vlanEnable
  */
  @ApiModelProperty(required = true, value = "SSID VLAN config status. True: enable, false: disable.")
  @NotNull


  public Boolean getVlanEnable() {
    return vlanEnable;
  }

  public void setVlanEnable(Boolean vlanEnable) {
    this.vlanEnable = vlanEnable;
  }

  public CreateSsidOpenApiVo vlanId(Integer vlanId) {
    this.vlanId = vlanId;
    return this;
  }

  /**
   * SSID VLAN ID. This field is required when Parameter [vlanEnable] is true; It should be within the range of 1–4094.
   * @return vlanId
  */
  @ApiModelProperty(value = "SSID VLAN ID. This field is required when Parameter [vlanEnable] is true; It should be within the range of 1–4094.")


  public Integer getVlanId() {
    return vlanId;
  }

  public void setVlanId(Integer vlanId) {
    this.vlanId = vlanId;
  }

  public CreateSsidOpenApiVo pskSetting(Object pskSetting) {
    this.pskSetting = pskSetting;
    return this;
  }

  /**
   * Get pskSetting
   * @return pskSetting
  */
  @ApiModelProperty(value = "")

  @Valid

  public Object getPskSetting() {
    return pskSetting;
  }

  public void setPskSetting(Object pskSetting) {
    this.pskSetting = pskSetting;
  }

  public CreateSsidOpenApiVo entSetting(Object entSetting) {
    this.entSetting = entSetting;
    return this;
  }

  /**
   * Get entSetting
   * @return entSetting
  */
  @ApiModelProperty(value = "")

  @Valid

  public Object getEntSetting() {
    return entSetting;
  }

  public void setEntSetting(Object entSetting) {
    this.entSetting = entSetting;
  }

  public CreateSsidOpenApiVo ppskSetting(Object ppskSetting) {
    this.ppskSetting = ppskSetting;
    return this;
  }

  /**
   * Get ppskSetting
   * @return ppskSetting
  */
  @ApiModelProperty(value = "")

  @Valid

  public Object getPpskSetting() {
    return ppskSetting;
  }

  public void setPpskSetting(Object ppskSetting) {
    this.ppskSetting = ppskSetting;
  }

  public CreateSsidOpenApiVo mloEnable(Boolean mloEnable) {
    this.mloEnable = mloEnable;
    return this;
  }

  /**
   * SSID MLO config status. True: enable, false: disable.
   * @return mloEnable
  */
  @ApiModelProperty(required = true, value = "SSID MLO config status. True: enable, false: disable.")
  @NotNull


  public Boolean getMloEnable() {
    return mloEnable;
  }

  public void setMloEnable(Boolean mloEnable) {
    this.mloEnable = mloEnable;
  }

  public CreateSsidOpenApiVo pmfMode(Integer pmfMode) {
    this.pmfMode = pmfMode;
    return this;
  }

  /**
   * SSID PMF mode. It should be a value as follows: 1: Mandatory; 2: Capable; 3: Disable.
   * @return pmfMode
  */
  @ApiModelProperty(required = true, value = "SSID PMF mode. It should be a value as follows: 1: Mandatory; 2: Capable; 3: Disable.")
  @NotNull


  public Integer getPmfMode() {
    return pmfMode;
  }

  public void setPmfMode(Integer pmfMode) {
    this.pmfMode = pmfMode;
  }

  public CreateSsidOpenApiVo enable11r(Boolean enable11r) {
    this.enable11r = enable11r;
    return this;
  }

  /**
   * SSID 802.11r config status. True: enable, false: disable.
   * @return enable11r
  */
  @ApiModelProperty(required = true, value = "SSID 802.11r config status. True: enable, false: disable.")
  @NotNull


  public Boolean getEnable11r() {
    return enable11r;
  }

  public void setEnable11r(Boolean enable11r) {
    this.enable11r = enable11r;
  }

  public CreateSsidOpenApiVo hidePwd(Boolean hidePwd) {
    this.hidePwd = hidePwd;
    return this;
  }

  /**
   * If this field is true, the SSID password will be hidden.
   * @return hidePwd
  */
  @ApiModelProperty(required = true, value = "If this field is true, the SSID password will be hidden.")
  @NotNull


  public Boolean getHidePwd() {
    return hidePwd;
  }

  public void setHidePwd(Boolean hidePwd) {
    this.hidePwd = hidePwd;
  }

  public CreateSsidOpenApiVo greEnable(Boolean greEnable) {
    this.greEnable = greEnable;
    return this;
  }

  /**
   * SSID EoGre Tunnel config status. True: enable, false: disable. This configuration can be enabled only when the [VPN - EoGre Tunnel] global config is enabled;(This configuration applies to the Pro Site of the Omada Pro Controller only).
   * @return greEnable
  */
  @ApiModelProperty(value = "SSID EoGre Tunnel config status. True: enable, false: disable. This configuration can be enabled only when the [VPN - EoGre Tunnel] global config is enabled;(This configuration applies to the Pro Site of the Omada Pro Controller only).")


  public Boolean getGreEnable() {
    return greEnable;
  }

  public void setGreEnable(Boolean greEnable) {
    this.greEnable = greEnable;
  }


  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    CreateSsidOpenApiVo createSsidOpenApiVo = (CreateSsidOpenApiVo) o;
    return Objects.equals(this.name, createSsidOpenApiVo.name) &&
        Objects.equals(this.deviceType, createSsidOpenApiVo.deviceType) &&
        Objects.equals(this.band, createSsidOpenApiVo.band) &&
        Objects.equals(this.guestNetEnable, createSsidOpenApiVo.guestNetEnable) &&
        Objects.equals(this.security, createSsidOpenApiVo.security) &&
        Objects.equals(this.broadcast, createSsidOpenApiVo.broadcast) &&
        Objects.equals(this.vlanEnable, createSsidOpenApiVo.vlanEnable) &&
        Objects.equals(this.vlanId, createSsidOpenApiVo.vlanId) &&
        Objects.equals(this.pskSetting, createSsidOpenApiVo.pskSetting) &&
        Objects.equals(this.entSetting, createSsidOpenApiVo.entSetting) &&
        Objects.equals(this.ppskSetting, createSsidOpenApiVo.ppskSetting) &&
        Objects.equals(this.mloEnable, createSsidOpenApiVo.mloEnable) &&
        Objects.equals(this.pmfMode, createSsidOpenApiVo.pmfMode) &&
        Objects.equals(this.enable11r, createSsidOpenApiVo.enable11r) &&
        Objects.equals(this.hidePwd, createSsidOpenApiVo.hidePwd) &&
        Objects.equals(this.greEnable, createSsidOpenApiVo.greEnable);
  }

  @Override
  public int hashCode() {
    return Objects.hash(name, deviceType, band, guestNetEnable, security, broadcast, vlanEnable, vlanId, pskSetting, entSetting, ppskSetting, mloEnable, pmfMode, enable11r, hidePwd, greEnable);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class CreateSsidOpenApiVo {\n");
    
    sb.append("    name: ").append(toIndentedString(name)).append("\n");
    sb.append("    deviceType: ").append(toIndentedString(deviceType)).append("\n");
    sb.append("    band: ").append(toIndentedString(band)).append("\n");
    sb.append("    guestNetEnable: ").append(toIndentedString(guestNetEnable)).append("\n");
    sb.append("    security: ").append(toIndentedString(security)).append("\n");
    sb.append("    broadcast: ").append(toIndentedString(broadcast)).append("\n");
    sb.append("    vlanEnable: ").append(toIndentedString(vlanEnable)).append("\n");
    sb.append("    vlanId: ").append(toIndentedString(vlanId)).append("\n");
    sb.append("    pskSetting: ").append(toIndentedString(pskSetting)).append("\n");
    sb.append("    entSetting: ").append(toIndentedString(entSetting)).append("\n");
    sb.append("    ppskSetting: ").append(toIndentedString(ppskSetting)).append("\n");
    sb.append("    mloEnable: ").append(toIndentedString(mloEnable)).append("\n");
    sb.append("    pmfMode: ").append(toIndentedString(pmfMode)).append("\n");
    sb.append("    enable11r: ").append(toIndentedString(enable11r)).append("\n");
    sb.append("    hidePwd: ").append(toIndentedString(hidePwd)).append("\n");
    sb.append("    greEnable: ").append(toIndentedString(greEnable)).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    ");
  }
}

