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

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

public class LteWanPortSettingConfigOpenApiVo   {
  @JsonProperty("portId")
  private String portId;

  @JsonProperty("portDescription")
  private String portDescription;

  @JsonProperty("mobileData")
  private Boolean mobileData;

  @JsonProperty("dataRoaming")
  private Boolean dataRoaming;

  @JsonProperty("networkMode")
  private Integer networkMode;

  @JsonProperty("bandMode")
  private Integer bandMode;

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

  @JsonProperty("dialupSetting")
  private DialupSettingOpenApiVo dialupSetting;

  public LteWanPortSettingConfigOpenApiVo portId(String portId) {
    this.portId = portId;
    return this;
  }

  /**
   * Port ID
   * @return portId
  */
  @ApiModelProperty(required = true, value = "Port ID")
  @NotNull


  public String getPortId() {
    return portId;
  }

  public void setPortId(String portId) {
    this.portId = portId;
  }

  public LteWanPortSettingConfigOpenApiVo portDescription(String portDescription) {
    this.portDescription = portDescription;
    return this;
  }

  /**
   * Port description should contain 1 to 32 characters.
   * @return portDescription
  */
  @ApiModelProperty(value = "Port description should contain 1 to 32 characters.")


  public String getPortDescription() {
    return portDescription;
  }

  public void setPortDescription(String portDescription) {
    this.portDescription = portDescription;
  }

  public LteWanPortSettingConfigOpenApiVo mobileData(Boolean mobileData) {
    this.mobileData = mobileData;
    return this;
  }

  /**
   * mobile data
   * @return mobileData
  */
  @ApiModelProperty(required = true, value = "mobile data")
  @NotNull


  public Boolean getMobileData() {
    return mobileData;
  }

  public void setMobileData(Boolean mobileData) {
    this.mobileData = mobileData;
  }

  public LteWanPortSettingConfigOpenApiVo dataRoaming(Boolean dataRoaming) {
    this.dataRoaming = dataRoaming;
    return this;
  }

  /**
   * data roaming
   * @return dataRoaming
  */
  @ApiModelProperty(required = true, value = "data roaming")
  @NotNull


  public Boolean getDataRoaming() {
    return dataRoaming;
  }

  public void setDataRoaming(Boolean dataRoaming) {
    this.dataRoaming = dataRoaming;
  }

  public LteWanPortSettingConfigOpenApiVo networkMode(Integer networkMode) {
    this.networkMode = networkMode;
    return this;
  }

  /**
   * networkMode: 0:3G Only, 1:4G Only, 2:4G Preferred
   * @return networkMode
  */
  @ApiModelProperty(required = true, value = "networkMode: 0:3G Only, 1:4G Only, 2:4G Preferred")
  @NotNull


  public Integer getNetworkMode() {
    return networkMode;
  }

  public void setNetworkMode(Integer networkMode) {
    this.networkMode = networkMode;
  }

  public LteWanPortSettingConfigOpenApiVo bandMode(Integer bandMode) {
    this.bandMode = bandMode;
    return this;
  }

  /**
   * bandMode: 0:auto, 1:manual, only for networkMode 4g Only and 4G Preferred
   * @return bandMode
  */
  @ApiModelProperty(value = "bandMode: 0:auto, 1:manual, only for networkMode 4g Only and 4G Preferred")


  public Integer getBandMode() {
    return bandMode;
  }

  public void setBandMode(Integer bandMode) {
    this.bandMode = bandMode;
  }

  public LteWanPortSettingConfigOpenApiVo bands(List<String> bands) {
    this.bands = bands;
    return this;
  }

  public LteWanPortSettingConfigOpenApiVo addBandsItem(String bandsItem) {
    if (this.bands == null) {
      this.bands = new ArrayList<>();
    }
    this.bands.add(bandsItem);
    return this;
  }

  /**
   * Only for band mode manual
   * @return bands
  */
  @ApiModelProperty(value = "Only for band mode manual")


  public List<String> getBands() {
    return bands;
  }

  public void setBands(List<String> bands) {
    this.bands = bands;
  }

  public LteWanPortSettingConfigOpenApiVo dialupSetting(DialupSettingOpenApiVo dialupSetting) {
    this.dialupSetting = dialupSetting;
    return this;
  }

  /**
   * Get dialupSetting
   * @return dialupSetting
  */
  @ApiModelProperty(required = true, value = "")
  @NotNull

  @Valid

  public DialupSettingOpenApiVo getDialupSetting() {
    return dialupSetting;
  }

  public void setDialupSetting(DialupSettingOpenApiVo dialupSetting) {
    this.dialupSetting = dialupSetting;
  }


  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    LteWanPortSettingConfigOpenApiVo lteWanPortSettingConfigOpenApiVo = (LteWanPortSettingConfigOpenApiVo) o;
    return Objects.equals(this.portId, lteWanPortSettingConfigOpenApiVo.portId) &&
        Objects.equals(this.portDescription, lteWanPortSettingConfigOpenApiVo.portDescription) &&
        Objects.equals(this.mobileData, lteWanPortSettingConfigOpenApiVo.mobileData) &&
        Objects.equals(this.dataRoaming, lteWanPortSettingConfigOpenApiVo.dataRoaming) &&
        Objects.equals(this.networkMode, lteWanPortSettingConfigOpenApiVo.networkMode) &&
        Objects.equals(this.bandMode, lteWanPortSettingConfigOpenApiVo.bandMode) &&
        Objects.equals(this.bands, lteWanPortSettingConfigOpenApiVo.bands) &&
        Objects.equals(this.dialupSetting, lteWanPortSettingConfigOpenApiVo.dialupSetting);
  }

  @Override
  public int hashCode() {
    return Objects.hash(portId, portDescription, mobileData, dataRoaming, networkMode, bandMode, bands, dialupSetting);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class LteWanPortSettingConfigOpenApiVo {\n");
    
    sb.append("    portId: ").append(toIndentedString(portId)).append("\n");
    sb.append("    portDescription: ").append(toIndentedString(portDescription)).append("\n");
    sb.append("    mobileData: ").append(toIndentedString(mobileData)).append("\n");
    sb.append("    dataRoaming: ").append(toIndentedString(dataRoaming)).append("\n");
    sb.append("    networkMode: ").append(toIndentedString(networkMode)).append("\n");
    sb.append("    bandMode: ").append(toIndentedString(bandMode)).append("\n");
    sb.append("    bands: ").append(toIndentedString(bands)).append("\n");
    sb.append("    dialupSetting: ").append(toIndentedString(dialupSetting)).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    ");
  }
}

