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

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

public class SiteSummaryInfo   {
  @JsonProperty("siteId")
  private String siteId;

  @JsonProperty("siteName")
  private String siteName;

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

  @JsonProperty("customerId")
  private String customerId;

  @JsonProperty("customerName")
  private String customerName;

  @JsonProperty("region")
  private String region;

  @JsonProperty("timeZone")
  private String timeZone;

  @JsonProperty("scenario")
  private String scenario;

  @JsonProperty("longitude")
  private Double longitude;

  @JsonProperty("latitude")
  private Double latitude;

  @JsonProperty("address")
  private String address;

  @JsonProperty("wan")
  private Boolean wan;

  @JsonProperty("connectedApNum")
  private Long connectedApNum;

  @JsonProperty("disconnectedApNum")
  private Long disconnectedApNum;

  @JsonProperty("isolatedApNum")
  private Long isolatedApNum;

  @JsonProperty("connectedSwitchNum")
  private Long connectedSwitchNum;

  @JsonProperty("disconnectedSwitchNum")
  private Long disconnectedSwitchNum;

  @JsonProperty("type")
  private Integer type;

  @JsonProperty("supportES")
  private Boolean supportES;

  @JsonProperty("supportL2")
  private Boolean supportL2;

  public SiteSummaryInfo siteId(String siteId) {
    this.siteId = siteId;
    return this;
  }

  /**
   * Site ID
   * @return siteId
  */
  @ApiModelProperty(value = "Site ID")


  public String getSiteId() {
    return siteId;
  }

  public void setSiteId(String siteId) {
    this.siteId = siteId;
  }

  public SiteSummaryInfo siteName(String siteName) {
    this.siteName = siteName;
    return this;
  }

  /**
   * Site name
   * @return siteName
  */
  @ApiModelProperty(value = "Site name")


  public String getSiteName() {
    return siteName;
  }

  public void setSiteName(String siteName) {
    this.siteName = siteName;
  }

  public SiteSummaryInfo tagIds(List<String> tagIds) {
    this.tagIds = tagIds;
    return this;
  }

  public SiteSummaryInfo addTagIdsItem(String tagIdsItem) {
    if (this.tagIds == null) {
      this.tagIds = new ArrayList<>();
    }
    this.tagIds.add(tagIdsItem);
    return this;
  }

  /**
   * Site tag ID
   * @return tagIds
  */
  @ApiModelProperty(value = "Site tag ID")


  public List<String> getTagIds() {
    return tagIds;
  }

  public void setTagIds(List<String> tagIds) {
    this.tagIds = tagIds;
  }

  public SiteSummaryInfo customerId(String customerId) {
    this.customerId = customerId;
    return this;
  }

  /**
   * Customer ID
   * @return customerId
  */
  @ApiModelProperty(value = "Customer ID")


  public String getCustomerId() {
    return customerId;
  }

  public void setCustomerId(String customerId) {
    this.customerId = customerId;
  }

  public SiteSummaryInfo customerName(String customerName) {
    this.customerName = customerName;
    return this;
  }

  /**
   * Customer name
   * @return customerName
  */
  @ApiModelProperty(value = "Customer name")


  public String getCustomerName() {
    return customerName;
  }

  public void setCustomerName(String customerName) {
    this.customerName = customerName;
  }

  public SiteSummaryInfo region(String region) {
    this.region = region;
    return this;
  }

  /**
   * Country/Region of the site; For the values of region, refer to the abbreviation of the ISO country code; For example, you need to input \"United States\" for the United States of America.
   * @return region
  */
  @ApiModelProperty(value = "Country/Region of the site; For the values of region, refer to the abbreviation of the ISO country code; For example, you need to input \"United States\" for the United States of America.")


  public String getRegion() {
    return region;
  }

  public void setRegion(String region) {
    this.region = region;
  }

  public SiteSummaryInfo timeZone(String timeZone) {
    this.timeZone = timeZone;
    return this;
  }

  /**
   * For the values of the timezone of the site, refer to section 5.1 of the Open API Access Guide.
   * @return timeZone
  */
  @ApiModelProperty(value = "For the values of the timezone of the site, refer to section 5.1 of the Open API Access Guide.")


  public String getTimeZone() {
    return timeZone;
  }

  public void setTimeZone(String timeZone) {
    this.timeZone = timeZone;
  }

  public SiteSummaryInfo scenario(String scenario) {
    this.scenario = scenario;
    return this;
  }

  /**
   * Site scenario
   * @return scenario
  */
  @ApiModelProperty(value = "Site scenario")


  public String getScenario() {
    return scenario;
  }

  public void setScenario(String scenario) {
    this.scenario = scenario;
  }

  public SiteSummaryInfo longitude(Double longitude) {
    this.longitude = longitude;
    return this;
  }

  /**
   * Site longitude should be within the range of -180~180
   * @return longitude
  */
  @ApiModelProperty(value = "Site longitude should be within the range of -180~180")


  public Double getLongitude() {
    return longitude;
  }

  public void setLongitude(Double longitude) {
    this.longitude = longitude;
  }

  public SiteSummaryInfo latitude(Double latitude) {
    this.latitude = latitude;
    return this;
  }

  /**
   * Site latitude should be within the range of -90~90
   * @return latitude
  */
  @ApiModelProperty(value = "Site latitude should be within the range of -90~90")


  public Double getLatitude() {
    return latitude;
  }

  public void setLatitude(Double latitude) {
    this.latitude = latitude;
  }

  public SiteSummaryInfo address(String address) {
    this.address = address;
    return this;
  }

  /**
   * Site address
   * @return address
  */
  @ApiModelProperty(value = "Site address")


  public String getAddress() {
    return address;
  }

  public void setAddress(String address) {
    this.address = address;
  }

  public SiteSummaryInfo wan(Boolean wan) {
    this.wan = wan;
    return this;
  }

  /**
   * Whether exists gateway is connected of current site
   * @return wan
  */
  @ApiModelProperty(value = "Whether exists gateway is connected of current site")


  public Boolean getWan() {
    return wan;
  }

  public void setWan(Boolean wan) {
    this.wan = wan;
  }

  public SiteSummaryInfo connectedApNum(Long connectedApNum) {
    this.connectedApNum = connectedApNum;
    return this;
  }

  /**
   * Connected ap num of current site
   * @return connectedApNum
  */
  @ApiModelProperty(value = "Connected ap num of current site")


  public Long getConnectedApNum() {
    return connectedApNum;
  }

  public void setConnectedApNum(Long connectedApNum) {
    this.connectedApNum = connectedApNum;
  }

  public SiteSummaryInfo disconnectedApNum(Long disconnectedApNum) {
    this.disconnectedApNum = disconnectedApNum;
    return this;
  }

  /**
   * Disconnected ap num of current site
   * @return disconnectedApNum
  */
  @ApiModelProperty(value = "Disconnected ap num of current site")


  public Long getDisconnectedApNum() {
    return disconnectedApNum;
  }

  public void setDisconnectedApNum(Long disconnectedApNum) {
    this.disconnectedApNum = disconnectedApNum;
  }

  public SiteSummaryInfo isolatedApNum(Long isolatedApNum) {
    this.isolatedApNum = isolatedApNum;
    return this;
  }

  /**
   * Isolated ap num of current site
   * @return isolatedApNum
  */
  @ApiModelProperty(value = "Isolated ap num of current site")


  public Long getIsolatedApNum() {
    return isolatedApNum;
  }

  public void setIsolatedApNum(Long isolatedApNum) {
    this.isolatedApNum = isolatedApNum;
  }

  public SiteSummaryInfo connectedSwitchNum(Long connectedSwitchNum) {
    this.connectedSwitchNum = connectedSwitchNum;
    return this;
  }

  /**
   * Connected switch num of current site
   * @return connectedSwitchNum
  */
  @ApiModelProperty(value = "Connected switch num of current site")


  public Long getConnectedSwitchNum() {
    return connectedSwitchNum;
  }

  public void setConnectedSwitchNum(Long connectedSwitchNum) {
    this.connectedSwitchNum = connectedSwitchNum;
  }

  public SiteSummaryInfo disconnectedSwitchNum(Long disconnectedSwitchNum) {
    this.disconnectedSwitchNum = disconnectedSwitchNum;
    return this;
  }

  /**
   * Disconnected switch num of current site
   * @return disconnectedSwitchNum
  */
  @ApiModelProperty(value = "Disconnected switch num of current site")


  public Long getDisconnectedSwitchNum() {
    return disconnectedSwitchNum;
  }

  public void setDisconnectedSwitchNum(Long disconnectedSwitchNum) {
    this.disconnectedSwitchNum = disconnectedSwitchNum;
  }

  public SiteSummaryInfo type(Integer type) {
    this.type = type;
    return this;
  }

  /**
   * Site type(only for pro controller). It should be a value as follows: 0: Basic Site; 1: Pro Site
   * @return type
  */
  @ApiModelProperty(value = "Site type(only for pro controller). It should be a value as follows: 0: Basic Site; 1: Pro Site")


  public Integer getType() {
    return type;
  }

  public void setType(Integer type) {
    this.type = type;
  }

  public SiteSummaryInfo supportES(Boolean supportES) {
    this.supportES = supportES;
    return this;
  }

  /**
   * Whether the site supports adopting Easy Managed switches
   * @return supportES
  */
  @ApiModelProperty(value = "Whether the site supports adopting Easy Managed switches")


  public Boolean getSupportES() {
    return supportES;
  }

  public void setSupportES(Boolean supportES) {
    this.supportES = supportES;
  }

  public SiteSummaryInfo supportL2(Boolean supportL2) {
    this.supportL2 = supportL2;
    return this;
  }

  /**
   * Whether the site supports adopting Smart+ or L2+ or L3 switches
   * @return supportL2
  */
  @ApiModelProperty(value = "Whether the site supports adopting Smart+ or L2+ or L3 switches")


  public Boolean getSupportL2() {
    return supportL2;
  }

  public void setSupportL2(Boolean supportL2) {
    this.supportL2 = supportL2;
  }


  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    SiteSummaryInfo siteSummaryInfo = (SiteSummaryInfo) o;
    return Objects.equals(this.siteId, siteSummaryInfo.siteId) &&
        Objects.equals(this.siteName, siteSummaryInfo.siteName) &&
        Objects.equals(this.tagIds, siteSummaryInfo.tagIds) &&
        Objects.equals(this.customerId, siteSummaryInfo.customerId) &&
        Objects.equals(this.customerName, siteSummaryInfo.customerName) &&
        Objects.equals(this.region, siteSummaryInfo.region) &&
        Objects.equals(this.timeZone, siteSummaryInfo.timeZone) &&
        Objects.equals(this.scenario, siteSummaryInfo.scenario) &&
        Objects.equals(this.longitude, siteSummaryInfo.longitude) &&
        Objects.equals(this.latitude, siteSummaryInfo.latitude) &&
        Objects.equals(this.address, siteSummaryInfo.address) &&
        Objects.equals(this.wan, siteSummaryInfo.wan) &&
        Objects.equals(this.connectedApNum, siteSummaryInfo.connectedApNum) &&
        Objects.equals(this.disconnectedApNum, siteSummaryInfo.disconnectedApNum) &&
        Objects.equals(this.isolatedApNum, siteSummaryInfo.isolatedApNum) &&
        Objects.equals(this.connectedSwitchNum, siteSummaryInfo.connectedSwitchNum) &&
        Objects.equals(this.disconnectedSwitchNum, siteSummaryInfo.disconnectedSwitchNum) &&
        Objects.equals(this.type, siteSummaryInfo.type) &&
        Objects.equals(this.supportES, siteSummaryInfo.supportES) &&
        Objects.equals(this.supportL2, siteSummaryInfo.supportL2);
  }

  @Override
  public int hashCode() {
    return Objects.hash(siteId, siteName, tagIds, customerId, customerName, region, timeZone, scenario, longitude, latitude, address, wan, connectedApNum, disconnectedApNum, isolatedApNum, connectedSwitchNum, disconnectedSwitchNum, type, supportES, supportL2);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class SiteSummaryInfo {\n");
    
    sb.append("    siteId: ").append(toIndentedString(siteId)).append("\n");
    sb.append("    siteName: ").append(toIndentedString(siteName)).append("\n");
    sb.append("    tagIds: ").append(toIndentedString(tagIds)).append("\n");
    sb.append("    customerId: ").append(toIndentedString(customerId)).append("\n");
    sb.append("    customerName: ").append(toIndentedString(customerName)).append("\n");
    sb.append("    region: ").append(toIndentedString(region)).append("\n");
    sb.append("    timeZone: ").append(toIndentedString(timeZone)).append("\n");
    sb.append("    scenario: ").append(toIndentedString(scenario)).append("\n");
    sb.append("    longitude: ").append(toIndentedString(longitude)).append("\n");
    sb.append("    latitude: ").append(toIndentedString(latitude)).append("\n");
    sb.append("    address: ").append(toIndentedString(address)).append("\n");
    sb.append("    wan: ").append(toIndentedString(wan)).append("\n");
    sb.append("    connectedApNum: ").append(toIndentedString(connectedApNum)).append("\n");
    sb.append("    disconnectedApNum: ").append(toIndentedString(disconnectedApNum)).append("\n");
    sb.append("    isolatedApNum: ").append(toIndentedString(isolatedApNum)).append("\n");
    sb.append("    connectedSwitchNum: ").append(toIndentedString(connectedSwitchNum)).append("\n");
    sb.append("    disconnectedSwitchNum: ").append(toIndentedString(disconnectedSwitchNum)).append("\n");
    sb.append("    type: ").append(toIndentedString(type)).append("\n");
    sb.append("    supportES: ").append(toIndentedString(supportES)).append("\n");
    sb.append("    supportL2: ").append(toIndentedString(supportL2)).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    ");
  }
}

