package org.wfc.omada.api.device.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;

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

public class ApPowerSavingConfigOpenApiVo   {
  @JsonProperty("timeEnable")
  private Boolean timeEnable;

  @JsonProperty("startTimeH")
  private Integer startTimeH;

  @JsonProperty("startTimeM")
  private Integer startTimeM;

  @JsonProperty("endTimeH")
  private Integer endTimeH;

  @JsonProperty("endTimeM")
  private Integer endTimeM;

  @JsonProperty("bandEnable")
  private Boolean bandEnable;

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

  @JsonProperty("idleDuration")
  private Integer idleDuration;

  @JsonProperty("supportPowerSaving")
  private Boolean supportPowerSaving;

  public ApPowerSavingConfigOpenApiVo timeEnable(Boolean timeEnable) {
    this.timeEnable = timeEnable;
    return this;
  }

  /**
   * Power Saving trigger by time config status. True: enable, false: disable.
   * @return timeEnable
  */
  @ApiModelProperty(value = "Power Saving trigger by time config status. True: enable, false: disable.")


  public Boolean getTimeEnable() {
    return timeEnable;
  }

  public void setTimeEnable(Boolean timeEnable) {
    this.timeEnable = timeEnable;
  }

  public ApPowerSavingConfigOpenApiVo startTimeH(Integer startTimeH) {
    this.startTimeH = startTimeH;
    return this;
  }

  /**
   * Start time of trigger by time(unit: hour); It should be within the range of 0–23.
   * @return startTimeH
  */
  @ApiModelProperty(value = "Start time of trigger by time(unit: hour); It should be within the range of 0–23.")


  public Integer getStartTimeH() {
    return startTimeH;
  }

  public void setStartTimeH(Integer startTimeH) {
    this.startTimeH = startTimeH;
  }

  public ApPowerSavingConfigOpenApiVo startTimeM(Integer startTimeM) {
    this.startTimeM = startTimeM;
    return this;
  }

  /**
   * Start time of trigger by time(unit: minute); It should be within the range of 0–59.
   * @return startTimeM
  */
  @ApiModelProperty(value = "Start time of trigger by time(unit: minute); It should be within the range of 0–59.")


  public Integer getStartTimeM() {
    return startTimeM;
  }

  public void setStartTimeM(Integer startTimeM) {
    this.startTimeM = startTimeM;
  }

  public ApPowerSavingConfigOpenApiVo endTimeH(Integer endTimeH) {
    this.endTimeH = endTimeH;
    return this;
  }

  /**
   * End time of trigger by time(unit: hour); It should be within the range of 0–23.
   * @return endTimeH
  */
  @ApiModelProperty(value = "End time of trigger by time(unit: hour); It should be within the range of 0–23.")


  public Integer getEndTimeH() {
    return endTimeH;
  }

  public void setEndTimeH(Integer endTimeH) {
    this.endTimeH = endTimeH;
  }

  public ApPowerSavingConfigOpenApiVo endTimeM(Integer endTimeM) {
    this.endTimeM = endTimeM;
    return this;
  }

  /**
   * End time of trigger by time(unit: minute); It should be within the range of 0–59.
   * @return endTimeM
  */
  @ApiModelProperty(value = "End time of trigger by time(unit: minute); It should be within the range of 0–59.")


  public Integer getEndTimeM() {
    return endTimeM;
  }

  public void setEndTimeM(Integer endTimeM) {
    this.endTimeM = endTimeM;
  }

  public ApPowerSavingConfigOpenApiVo bandEnable(Boolean bandEnable) {
    this.bandEnable = bandEnable;
    return this;
  }

  /**
   * Power Saving trigger by band config status. True: enable, false: disable.
   * @return bandEnable
  */
  @ApiModelProperty(value = "Power Saving trigger by band config status. True: enable, false: disable.")


  public Boolean getBandEnable() {
    return bandEnable;
  }

  public void setBandEnable(Boolean bandEnable) {
    this.bandEnable = bandEnable;
  }

  public ApPowerSavingConfigOpenApiVo bands(List<Integer> bands) {
    this.bands = bands;
    return this;
  }

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

  /**
   * Select bands list config of trigger by band;It should be a value as follows: 0: 2.4GHz; 1: 5GHz; 2: 5G2Hz; 3: 6GHz.
   * @return bands
  */
  @ApiModelProperty(value = "Select bands list config of trigger by band;It should be a value as follows: 0: 2.4GHz; 1: 5GHz; 2: 5G2Hz; 3: 6GHz.")


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

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

  public ApPowerSavingConfigOpenApiVo idleDuration(Integer idleDuration) {
    this.idleDuration = idleDuration;
    return this;
  }

  /**
   * Idle duration config of trigger by band.
   * @return idleDuration
  */
  @ApiModelProperty(value = "Idle duration config of trigger by band.")


  public Integer getIdleDuration() {
    return idleDuration;
  }

  public void setIdleDuration(Integer idleDuration) {
    this.idleDuration = idleDuration;
  }

  public ApPowerSavingConfigOpenApiVo supportPowerSaving(Boolean supportPowerSaving) {
    this.supportPowerSaving = supportPowerSaving;
    return this;
  }

  /**
   * Indicates whether the device supports power saving. True: support, false: unSupport.
   * @return supportPowerSaving
  */
  @ApiModelProperty(value = "Indicates whether the device supports power saving. True: support, false: unSupport.")


  public Boolean getSupportPowerSaving() {
    return supportPowerSaving;
  }

  public void setSupportPowerSaving(Boolean supportPowerSaving) {
    this.supportPowerSaving = supportPowerSaving;
  }


  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    ApPowerSavingConfigOpenApiVo apPowerSavingConfigOpenApiVo = (ApPowerSavingConfigOpenApiVo) o;
    return Objects.equals(this.timeEnable, apPowerSavingConfigOpenApiVo.timeEnable) &&
        Objects.equals(this.startTimeH, apPowerSavingConfigOpenApiVo.startTimeH) &&
        Objects.equals(this.startTimeM, apPowerSavingConfigOpenApiVo.startTimeM) &&
        Objects.equals(this.endTimeH, apPowerSavingConfigOpenApiVo.endTimeH) &&
        Objects.equals(this.endTimeM, apPowerSavingConfigOpenApiVo.endTimeM) &&
        Objects.equals(this.bandEnable, apPowerSavingConfigOpenApiVo.bandEnable) &&
        Objects.equals(this.bands, apPowerSavingConfigOpenApiVo.bands) &&
        Objects.equals(this.idleDuration, apPowerSavingConfigOpenApiVo.idleDuration) &&
        Objects.equals(this.supportPowerSaving, apPowerSavingConfigOpenApiVo.supportPowerSaving);
  }

  @Override
  public int hashCode() {
    return Objects.hash(timeEnable, startTimeH, startTimeM, endTimeH, endTimeM, bandEnable, bands, idleDuration, supportPowerSaving);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class ApPowerSavingConfigOpenApiVo {\n");
    
    sb.append("    timeEnable: ").append(toIndentedString(timeEnable)).append("\n");
    sb.append("    startTimeH: ").append(toIndentedString(startTimeH)).append("\n");
    sb.append("    startTimeM: ").append(toIndentedString(startTimeM)).append("\n");
    sb.append("    endTimeH: ").append(toIndentedString(endTimeH)).append("\n");
    sb.append("    endTimeM: ").append(toIndentedString(endTimeM)).append("\n");
    sb.append("    bandEnable: ").append(toIndentedString(bandEnable)).append("\n");
    sb.append("    bands: ").append(toIndentedString(bands)).append("\n");
    sb.append("    idleDuration: ").append(toIndentedString(idleDuration)).append("\n");
    sb.append("    supportPowerSaving: ").append(toIndentedString(supportPowerSaving)).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    ");
  }
}

