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;

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

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

  @JsonProperty("modelTypeInfos")
  @Valid
  private List<ModelTypeInfoOpenApiVo> modelTypeInfos = null;

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

  @JsonProperty("siteNum")
  private Integer siteNum;

  @JsonProperty("autoCheckTime")
  private String autoCheckTime;

  @JsonProperty("channel")
  private Integer channel;

  @JsonProperty("occurrence")
  private UpgradeBaseScheduleTimeOpenApiVo occurrence;

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

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


  public String getId() {
    return id;
  }

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

  public AutoCheckUpgradeInfo modelTypeInfos(List<ModelTypeInfoOpenApiVo> modelTypeInfos) {
    this.modelTypeInfos = modelTypeInfos;
    return this;
  }

  public AutoCheckUpgradeInfo addModelTypeInfosItem(ModelTypeInfoOpenApiVo modelTypeInfosItem) {
    if (this.modelTypeInfos == null) {
      this.modelTypeInfos = new ArrayList<>();
    }
    this.modelTypeInfos.add(modelTypeInfosItem);
    return this;
  }

  /**
   * List of model type selected by the user
   * @return modelTypeInfos
  */
  @ApiModelProperty(value = "List of model type selected by the user")

  @Valid

  public List<ModelTypeInfoOpenApiVo> getModelTypeInfos() {
    return modelTypeInfos;
  }

  public void setModelTypeInfos(List<ModelTypeInfoOpenApiVo> modelTypeInfos) {
    this.modelTypeInfos = modelTypeInfos;
  }

  public AutoCheckUpgradeInfo siteNames(List<String> siteNames) {
    this.siteNames = siteNames;
    return this;
  }

  public AutoCheckUpgradeInfo addSiteNamesItem(String siteNamesItem) {
    if (this.siteNames == null) {
      this.siteNames = new ArrayList<>();
    }
    this.siteNames.add(siteNamesItem);
    return this;
  }

  /**
   * The siteNames lists selected by the user
   * @return siteNames
  */
  @ApiModelProperty(value = "The siteNames lists selected by the user")


  public List<String> getSiteNames() {
    return siteNames;
  }

  public void setSiteNames(List<String> siteNames) {
    this.siteNames = siteNames;
  }

  public AutoCheckUpgradeInfo siteNum(Integer siteNum) {
    this.siteNum = siteNum;
    return this;
  }

  /**
   * Number of sites selected by the user
   * @return siteNum
  */
  @ApiModelProperty(value = "Number of sites selected by the user")


  public Integer getSiteNum() {
    return siteNum;
  }

  public void setSiteNum(Integer siteNum) {
    this.siteNum = siteNum;
  }

  public AutoCheckUpgradeInfo autoCheckTime(String autoCheckTime) {
    this.autoCheckTime = autoCheckTime;
    return this;
  }

  /**
   * Next execution time
   * @return autoCheckTime
  */
  @ApiModelProperty(value = "Next execution time")


  public String getAutoCheckTime() {
    return autoCheckTime;
  }

  public void setAutoCheckTime(String autoCheckTime) {
    this.autoCheckTime = autoCheckTime;
  }

  public AutoCheckUpgradeInfo channel(Integer channel) {
    this.channel = channel;
    return this;
  }

  /**
   * Channel should be a value as follows: 0: stable; 1: Release Candidate(RC); 2: Beta
   * @return channel
  */
  @ApiModelProperty(value = "Channel should be a value as follows: 0: stable; 1: Release Candidate(RC); 2: Beta")


  public Integer getChannel() {
    return channel;
  }

  public void setChannel(Integer channel) {
    this.channel = channel;
  }

  public AutoCheckUpgradeInfo occurrence(UpgradeBaseScheduleTimeOpenApiVo occurrence) {
    this.occurrence = occurrence;
    return this;
  }

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

  @Valid

  public UpgradeBaseScheduleTimeOpenApiVo getOccurrence() {
    return occurrence;
  }

  public void setOccurrence(UpgradeBaseScheduleTimeOpenApiVo occurrence) {
    this.occurrence = occurrence;
  }


  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    AutoCheckUpgradeInfo autoCheckUpgradeInfo = (AutoCheckUpgradeInfo) o;
    return Objects.equals(this.id, autoCheckUpgradeInfo.id) &&
        Objects.equals(this.modelTypeInfos, autoCheckUpgradeInfo.modelTypeInfos) &&
        Objects.equals(this.siteNames, autoCheckUpgradeInfo.siteNames) &&
        Objects.equals(this.siteNum, autoCheckUpgradeInfo.siteNum) &&
        Objects.equals(this.autoCheckTime, autoCheckUpgradeInfo.autoCheckTime) &&
        Objects.equals(this.channel, autoCheckUpgradeInfo.channel) &&
        Objects.equals(this.occurrence, autoCheckUpgradeInfo.occurrence);
  }

  @Override
  public int hashCode() {
    return Objects.hash(id, modelTypeInfos, siteNames, siteNum, autoCheckTime, channel, occurrence);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class AutoCheckUpgradeInfo {\n");
    
    sb.append("    id: ").append(toIndentedString(id)).append("\n");
    sb.append("    modelTypeInfos: ").append(toIndentedString(modelTypeInfos)).append("\n");
    sb.append("    siteNames: ").append(toIndentedString(siteNames)).append("\n");
    sb.append("    siteNum: ").append(toIndentedString(siteNum)).append("\n");
    sb.append("    autoCheckTime: ").append(toIndentedString(autoCheckTime)).append("\n");
    sb.append("    channel: ").append(toIndentedString(channel)).append("\n");
    sb.append("    occurrence: ").append(toIndentedString(occurrence)).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    ");
  }
}

