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;

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

public class RoamingOpenApiVo   {
  @JsonProperty("fastRoamingEnable")
  private Boolean fastRoamingEnable;

  @JsonProperty("aiRoamingEnable")
  private Boolean aiRoamingEnable;

  @JsonProperty("dualBand11kReportEnable")
  private Boolean dualBand11kReportEnable;

  @JsonProperty("forceDisassociationEnable")
  private Boolean forceDisassociationEnable;

  @JsonProperty("nonStickRoamingEnable")
  private Boolean nonStickRoamingEnable;

  public RoamingOpenApiVo fastRoamingEnable(Boolean fastRoamingEnable) {
    this.fastRoamingEnable = fastRoamingEnable;
    return this;
  }

  /**
   * Whether to enable fast roaming
   * @return fastRoamingEnable
  */
  @ApiModelProperty(required = true, value = "Whether to enable fast roaming")
  @NotNull


  public Boolean getFastRoamingEnable() {
    return fastRoamingEnable;
  }

  public void setFastRoamingEnable(Boolean fastRoamingEnable) {
    this.fastRoamingEnable = fastRoamingEnable;
  }

  public RoamingOpenApiVo aiRoamingEnable(Boolean aiRoamingEnable) {
    this.aiRoamingEnable = aiRoamingEnable;
    return this;
  }

  /**
   * Whether to enable AI roaming, this configuration will take effect only when fast roaming is enabled
   * @return aiRoamingEnable
  */
  @ApiModelProperty(required = true, value = "Whether to enable AI roaming, this configuration will take effect only when fast roaming is enabled")
  @NotNull


  public Boolean getAiRoamingEnable() {
    return aiRoamingEnable;
  }

  public void setAiRoamingEnable(Boolean aiRoamingEnable) {
    this.aiRoamingEnable = aiRoamingEnable;
  }

  public RoamingOpenApiVo dualBand11kReportEnable(Boolean dualBand11kReportEnable) {
    this.dualBand11kReportEnable = dualBand11kReportEnable;
    return this;
  }

  /**
   * Whether to enable 802.11k report. It has been deprecated.
   * @return dualBand11kReportEnable
  */
  @ApiModelProperty(value = "Whether to enable 802.11k report. It has been deprecated.")


  public Boolean getDualBand11kReportEnable() {
    return dualBand11kReportEnable;
  }

  public void setDualBand11kReportEnable(Boolean dualBand11kReportEnable) {
    this.dualBand11kReportEnable = dualBand11kReportEnable;
  }

  public RoamingOpenApiVo forceDisassociationEnable(Boolean forceDisassociationEnable) {
    this.forceDisassociationEnable = forceDisassociationEnable;
    return this;
  }

  /**
   * Whether to enable forced disassociation. Note: This field will no longer be supported since Omada Controller 5.14.24.40.
   * @return forceDisassociationEnable
  */
  @ApiModelProperty(value = "Whether to enable forced disassociation. Note: This field will no longer be supported since Omada Controller 5.14.24.40.")


  public Boolean getForceDisassociationEnable() {
    return forceDisassociationEnable;
  }

  public void setForceDisassociationEnable(Boolean forceDisassociationEnable) {
    this.forceDisassociationEnable = forceDisassociationEnable;
  }

  public RoamingOpenApiVo nonStickRoamingEnable(Boolean nonStickRoamingEnable) {
    this.nonStickRoamingEnable = nonStickRoamingEnable;
    return this;
  }

  /**
   * Whether to enable non-stick roaming
   * @return nonStickRoamingEnable
  */
  @ApiModelProperty(value = "Whether to enable non-stick roaming")


  public Boolean getNonStickRoamingEnable() {
    return nonStickRoamingEnable;
  }

  public void setNonStickRoamingEnable(Boolean nonStickRoamingEnable) {
    this.nonStickRoamingEnable = nonStickRoamingEnable;
  }


  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    RoamingOpenApiVo roamingOpenApiVo = (RoamingOpenApiVo) o;
    return Objects.equals(this.fastRoamingEnable, roamingOpenApiVo.fastRoamingEnable) &&
        Objects.equals(this.aiRoamingEnable, roamingOpenApiVo.aiRoamingEnable) &&
        Objects.equals(this.dualBand11kReportEnable, roamingOpenApiVo.dualBand11kReportEnable) &&
        Objects.equals(this.forceDisassociationEnable, roamingOpenApiVo.forceDisassociationEnable) &&
        Objects.equals(this.nonStickRoamingEnable, roamingOpenApiVo.nonStickRoamingEnable);
  }

  @Override
  public int hashCode() {
    return Objects.hash(fastRoamingEnable, aiRoamingEnable, dualBand11kReportEnable, forceDisassociationEnable, nonStickRoamingEnable);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class RoamingOpenApiVo {\n");
    
    sb.append("    fastRoamingEnable: ").append(toIndentedString(fastRoamingEnable)).append("\n");
    sb.append("    aiRoamingEnable: ").append(toIndentedString(aiRoamingEnable)).append("\n");
    sb.append("    dualBand11kReportEnable: ").append(toIndentedString(dualBand11kReportEnable)).append("\n");
    sb.append("    forceDisassociationEnable: ").append(toIndentedString(forceDisassociationEnable)).append("\n");
    sb.append("    nonStickRoamingEnable: ").append(toIndentedString(nonStickRoamingEnable)).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    ");
  }
}

