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

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

import javax.validation.Valid;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

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

public class PortalDetailResOpenApiVo   {
  @JsonProperty("id")
  private String id;

  @JsonProperty("name")
  private String name;

  @JsonProperty("enable")
  private Boolean enable;

  @JsonProperty("ssidList")
  @Valid
  private List<String> ssidList = null;

  @JsonProperty("networkList")
  @Valid
  private List<String> networkList = null;

  @JsonProperty("authType")
  private Integer authType;

  @JsonProperty("authTimeout")
  private AuthTimeOpenApiVo authTimeout;

  @JsonProperty("httpsRedirectEnable")
  private Boolean httpsRedirectEnable;

  @JsonProperty("landingPage")
  private Integer landingPage;

  @JsonProperty("landingUrlScheme")
  private String landingUrlScheme;

  @JsonProperty("landingUrl")
  private String landingUrl;

  @JsonProperty("noAuth")
  private Object noAuth;

  @JsonProperty("simplePassword")
  private Object simplePassword;

  @JsonProperty("hotspot")
  private Object hotspot;

  @JsonProperty("sms")
  private SmsSettingResOpenApiVo sms;

  @JsonProperty("portalFormId")
  private String portalFormId;

  @JsonProperty("hotspotRadius")
  private HotspotRadiusSettingResOpenApiVo hotspotRadius;

  @JsonProperty("externalPortal")
  private Object externalPortal;

  @JsonProperty("externalRadius")
  private ExternalRadiusSettingResOpenApiVo externalRadius;

  @JsonProperty("ldap")
  private LdapSetting ldap;

  public PortalDetailResOpenApiVo id(String id) {
    this.id = id;
    return this;
  }

  /**
   * Portal ID
   * @return id
  */
  @ApiModelProperty(value = "Portal ID")


  public String getId() {
    return id;
  }

  public void setId(String id) {
    this.id = id;
  }

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

  /**
   * Portal name, should contain 1 to 128 characters
   * @return name
  */
  @ApiModelProperty(value = "Portal name, should contain 1 to 128 characters")


  public String getName() {
    return name;
  }

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

  public PortalDetailResOpenApiVo enable(Boolean enable) {
    this.enable = enable;
    return this;
  }

  /**
   * Portal enable status
   * @return enable
  */
  @ApiModelProperty(value = "Portal enable status")


  public Boolean getEnable() {
    return enable;
  }

  public void setEnable(Boolean enable) {
    this.enable = enable;
  }

  public PortalDetailResOpenApiVo ssidList(List<String> ssidList) {
    this.ssidList = ssidList;
    return this;
  }

  public PortalDetailResOpenApiVo addSsidListItem(String ssidListItem) {
    if (this.ssidList == null) {
      this.ssidList = new ArrayList<>();
    }
    this.ssidList.add(ssidListItem);
    return this;
  }

  /**
   * SSID ID list bound with this Portal. SSID can be created using 'Create new SSID' ('Create new SSID template') interface, and SSID ID can be obtained from 'Get SSID list' ('Get SSID template list') interface
   * @return ssidList
  */
  @ApiModelProperty(value = "SSID ID list bound with this Portal. SSID can be created using 'Create new SSID' ('Create new SSID template') interface, and SSID ID can be obtained from 'Get SSID list' ('Get SSID template list') interface")


  public List<String> getSsidList() {
    return ssidList;
  }

  public void setSsidList(List<String> ssidList) {
    this.ssidList = ssidList;
  }

  public PortalDetailResOpenApiVo networkList(List<String> networkList) {
    this.networkList = networkList;
    return this;
  }

  public PortalDetailResOpenApiVo addNetworkListItem(String networkListItem) {
    if (this.networkList == null) {
      this.networkList = new ArrayList<>();
    }
    this.networkList.add(networkListItem);
    return this;
  }

  /**
   * Lan network ID list bound with this Portal. LAN Network can be created using 'Create LAN network' ('Create LAN network template') interface, and LAN Network ID can be obtained from 'Get LAN network list' ('Get LAN network template list') interface
   * @return networkList
  */
  @ApiModelProperty(value = "Lan network ID list bound with this Portal. LAN Network can be created using 'Create LAN network' ('Create LAN network template') interface, and LAN Network ID can be obtained from 'Get LAN network list' ('Get LAN network template list') interface")


  public List<String> getNetworkList() {
    return networkList;
  }

  public void setNetworkList(List<String> networkList) {
    this.networkList = networkList;
  }

  public PortalDetailResOpenApiVo authType(Integer authType) {
    this.authType = authType;
    return this;
  }

  /**
   * Auth Type, should be a value as follows: <br/>0：No Authentication; 1：Simple Password;<br/>2: External Radius Server; 4：External Portal Server;<br/>11：Hotspot; 15: Ldap.
   * @return authType
  */
  @ApiModelProperty(value = "Auth Type, should be a value as follows: <br/>0：No Authentication; 1：Simple Password;<br/>2: External Radius Server; 4：External Portal Server;<br/>11：Hotspot; 15: Ldap.")


  public Integer getAuthType() {
    return authType;
  }

  public void setAuthType(Integer authType) {
    this.authType = authType;
  }

  public PortalDetailResOpenApiVo authTimeout(AuthTimeOpenApiVo authTimeout) {
    this.authTimeout = authTimeout;
    return this;
  }

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

  @Valid

  public AuthTimeOpenApiVo getAuthTimeout() {
    return authTimeout;
  }

  public void setAuthTimeout(AuthTimeOpenApiVo authTimeout) {
    this.authTimeout = authTimeout;
  }

  public PortalDetailResOpenApiVo httpsRedirectEnable(Boolean httpsRedirectEnable) {
    this.httpsRedirectEnable = httpsRedirectEnable;
    return this;
  }

  /**
   * With this option enabled, unauthenticated clients will be redirected to the Portal page when they are trying to browse HTTPS websites.
   * @return httpsRedirectEnable
  */
  @ApiModelProperty(value = "With this option enabled, unauthenticated clients will be redirected to the Portal page when they are trying to browse HTTPS websites.")


  public Boolean getHttpsRedirectEnable() {
    return httpsRedirectEnable;
  }

  public void setHttpsRedirectEnable(Boolean httpsRedirectEnable) {
    this.httpsRedirectEnable = httpsRedirectEnable;
  }

  public PortalDetailResOpenApiVo landingPage(Integer landingPage) {
    this.landingPage = landingPage;
    return this;
  }

  /**
   * LandingPage enum, should be a value as follows: 1: Redirect to the original URL, 2: Redirect to Promotional URL. <br/>With The Original URL selected, clients are directed to the URL they request for after they pass Portal authentication. <br/>With The Promotional URL selected, clients are directed to the specified URL here after they pass Portal authentication.
   * @return landingPage
  */
  @ApiModelProperty(value = "LandingPage enum, should be a value as follows: 1: Redirect to the original URL, 2: Redirect to Promotional URL. <br/>With The Original URL selected, clients are directed to the URL they request for after they pass Portal authentication. <br/>With The Promotional URL selected, clients are directed to the specified URL here after they pass Portal authentication.")


  public Integer getLandingPage() {
    return landingPage;
  }

  public void setLandingPage(Integer landingPage) {
    this.landingPage = landingPage;
  }

  public PortalDetailResOpenApiVo landingUrlScheme(String landingUrlScheme) {
    this.landingUrlScheme = landingUrlScheme;
    return this;
  }

  /**
   * If Parameter [landingPage] is 2(Redirect to Promotional URL),this Parameter is requested, content is http or https.
   * @return landingUrlScheme
  */
  @ApiModelProperty(value = "If Parameter [landingPage] is 2(Redirect to Promotional URL),this Parameter is requested, content is http or https.")


  public String getLandingUrlScheme() {
    return landingUrlScheme;
  }

  public void setLandingUrlScheme(String landingUrlScheme) {
    this.landingUrlScheme = landingUrlScheme;
  }

  public PortalDetailResOpenApiVo landingUrl(String landingUrl) {
    this.landingUrl = landingUrl;
    return this;
  }

  /**
   * If Parameter [landingPage] is 2(Redirect to Promotional URL),this Parameter is requested.
   * @return landingUrl
  */
  @ApiModelProperty(value = "If Parameter [landingPage] is 2(Redirect to Promotional URL),this Parameter is requested.")


  public String getLandingUrl() {
    return landingUrl;
  }

  public void setLandingUrl(String landingUrl) {
    this.landingUrl = landingUrl;
  }

  public PortalDetailResOpenApiVo noAuth(Object noAuth) {
    this.noAuth = noAuth;
    return this;
  }

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

  @Valid

  public Object getNoAuth() {
    return noAuth;
  }

  public void setNoAuth(Object noAuth) {
    this.noAuth = noAuth;
  }

  public PortalDetailResOpenApiVo simplePassword(Object simplePassword) {
    this.simplePassword = simplePassword;
    return this;
  }

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

  @Valid

  public Object getSimplePassword() {
    return simplePassword;
  }

  public void setSimplePassword(Object simplePassword) {
    this.simplePassword = simplePassword;
  }

  public PortalDetailResOpenApiVo hotspot(Object hotspot) {
    this.hotspot = hotspot;
    return this;
  }

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

  @Valid

  public Object getHotspot() {
    return hotspot;
  }

  public void setHotspot(Object hotspot) {
    this.hotspot = hotspot;
  }

  public PortalDetailResOpenApiVo sms(SmsSettingResOpenApiVo sms) {
    this.sms = sms;
    return this;
  }

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

  @Valid

  public SmsSettingResOpenApiVo getSms() {
    return sms;
  }

  public void setSms(SmsSettingResOpenApiVo sms) {
    this.sms = sms;
  }

  public PortalDetailResOpenApiVo portalFormId(String portalFormId) {
    this.portalFormId = portalFormId;
    return this;
  }

  /**
   * Portal form ID, required when [authType] is 11 and hotspot [enabledTypes] contains 12. Portal form can be created using 'Create a new authentication survey' interface, and Portal form ID can be obtained from 'Get authentication survey list' interface
   * @return portalFormId
  */
  @ApiModelProperty(value = "Portal form ID, required when [authType] is 11 and hotspot [enabledTypes] contains 12. Portal form can be created using 'Create a new authentication survey' interface, and Portal form ID can be obtained from 'Get authentication survey list' interface")


  public String getPortalFormId() {
    return portalFormId;
  }

  public void setPortalFormId(String portalFormId) {
    this.portalFormId = portalFormId;
  }

  public PortalDetailResOpenApiVo hotspotRadius(HotspotRadiusSettingResOpenApiVo hotspotRadius) {
    this.hotspotRadius = hotspotRadius;
    return this;
  }

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

  @Valid

  public HotspotRadiusSettingResOpenApiVo getHotspotRadius() {
    return hotspotRadius;
  }

  public void setHotspotRadius(HotspotRadiusSettingResOpenApiVo hotspotRadius) {
    this.hotspotRadius = hotspotRadius;
  }

  public PortalDetailResOpenApiVo externalPortal(Object externalPortal) {
    this.externalPortal = externalPortal;
    return this;
  }

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

  @Valid

  public Object getExternalPortal() {
    return externalPortal;
  }

  public void setExternalPortal(Object externalPortal) {
    this.externalPortal = externalPortal;
  }

  public PortalDetailResOpenApiVo externalRadius(ExternalRadiusSettingResOpenApiVo externalRadius) {
    this.externalRadius = externalRadius;
    return this;
  }

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

  @Valid

  public ExternalRadiusSettingResOpenApiVo getExternalRadius() {
    return externalRadius;
  }

  public void setExternalRadius(ExternalRadiusSettingResOpenApiVo externalRadius) {
    this.externalRadius = externalRadius;
  }

  public PortalDetailResOpenApiVo ldap(LdapSetting ldap) {
    this.ldap = ldap;
    return this;
  }

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

  @Valid

  public LdapSetting getLdap() {
    return ldap;
  }

  public void setLdap(LdapSetting ldap) {
    this.ldap = ldap;
  }


  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    PortalDetailResOpenApiVo portalDetailResOpenApiVo = (PortalDetailResOpenApiVo) o;
    return Objects.equals(this.id, portalDetailResOpenApiVo.id) &&
        Objects.equals(this.name, portalDetailResOpenApiVo.name) &&
        Objects.equals(this.enable, portalDetailResOpenApiVo.enable) &&
        Objects.equals(this.ssidList, portalDetailResOpenApiVo.ssidList) &&
        Objects.equals(this.networkList, portalDetailResOpenApiVo.networkList) &&
        Objects.equals(this.authType, portalDetailResOpenApiVo.authType) &&
        Objects.equals(this.authTimeout, portalDetailResOpenApiVo.authTimeout) &&
        Objects.equals(this.httpsRedirectEnable, portalDetailResOpenApiVo.httpsRedirectEnable) &&
        Objects.equals(this.landingPage, portalDetailResOpenApiVo.landingPage) &&
        Objects.equals(this.landingUrlScheme, portalDetailResOpenApiVo.landingUrlScheme) &&
        Objects.equals(this.landingUrl, portalDetailResOpenApiVo.landingUrl) &&
        Objects.equals(this.noAuth, portalDetailResOpenApiVo.noAuth) &&
        Objects.equals(this.simplePassword, portalDetailResOpenApiVo.simplePassword) &&
        Objects.equals(this.hotspot, portalDetailResOpenApiVo.hotspot) &&
        Objects.equals(this.sms, portalDetailResOpenApiVo.sms) &&
        Objects.equals(this.portalFormId, portalDetailResOpenApiVo.portalFormId) &&
        Objects.equals(this.hotspotRadius, portalDetailResOpenApiVo.hotspotRadius) &&
        Objects.equals(this.externalPortal, portalDetailResOpenApiVo.externalPortal) &&
        Objects.equals(this.externalRadius, portalDetailResOpenApiVo.externalRadius) &&
        Objects.equals(this.ldap, portalDetailResOpenApiVo.ldap);
  }

  @Override
  public int hashCode() {
    return Objects.hash(id, name, enable, ssidList, networkList, authType, authTimeout, httpsRedirectEnable, landingPage, landingUrlScheme, landingUrl, noAuth, simplePassword, hotspot, sms, portalFormId, hotspotRadius, externalPortal, externalRadius, ldap);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class PortalDetailResOpenApiVo {\n");
    
    sb.append("    id: ").append(toIndentedString(id)).append("\n");
    sb.append("    name: ").append(toIndentedString(name)).append("\n");
    sb.append("    enable: ").append(toIndentedString(enable)).append("\n");
    sb.append("    ssidList: ").append(toIndentedString(ssidList)).append("\n");
    sb.append("    networkList: ").append(toIndentedString(networkList)).append("\n");
    sb.append("    authType: ").append(toIndentedString(authType)).append("\n");
    sb.append("    authTimeout: ").append(toIndentedString(authTimeout)).append("\n");
    sb.append("    httpsRedirectEnable: ").append(toIndentedString(httpsRedirectEnable)).append("\n");
    sb.append("    landingPage: ").append(toIndentedString(landingPage)).append("\n");
    sb.append("    landingUrlScheme: ").append(toIndentedString(landingUrlScheme)).append("\n");
    sb.append("    landingUrl: ").append(toIndentedString(landingUrl)).append("\n");
    sb.append("    noAuth: ").append(toIndentedString(noAuth)).append("\n");
    sb.append("    simplePassword: ").append(toIndentedString(simplePassword)).append("\n");
    sb.append("    hotspot: ").append(toIndentedString(hotspot)).append("\n");
    sb.append("    sms: ").append(toIndentedString(sms)).append("\n");
    sb.append("    portalFormId: ").append(toIndentedString(portalFormId)).append("\n");
    sb.append("    hotspotRadius: ").append(toIndentedString(hotspotRadius)).append("\n");
    sb.append("    externalPortal: ").append(toIndentedString(externalPortal)).append("\n");
    sb.append("    externalRadius: ").append(toIndentedString(externalRadius)).append("\n");
    sb.append("    ldap: ").append(toIndentedString(ldap)).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    ");
  }
}

