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.Objects;

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

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

  @JsonProperty("mac")
  private String mac;

  @JsonProperty("name")
  private String name;

  @JsonProperty("model")
  private String model;

  @JsonProperty("modelVersion")
  private String modelVersion;

  @JsonProperty("type")
  private String type;

  @JsonProperty("ip")
  private String ip;

  @JsonProperty("statusCategory")
  private Integer statusCategory;

  @JsonProperty("status")
  private Integer status;

  @JsonProperty("addedInAdvanced")
  private Boolean addedInAdvanced;

  @JsonProperty("wirelessLinked")
  private Boolean wirelessLinked;

  @JsonProperty("voipDeviceApConfiguration")
  private Object voipDeviceApConfiguration;

  @JsonProperty("voipDeviceOsgConfiguration")
  private Object voipDeviceOsgConfiguration;

  @JsonProperty("telephoneNumberAdvancedSetting")
  private Object telephoneNumberAdvancedSetting;

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

  /**
   * The ID of voip device.
   * @return id
  */
  @ApiModelProperty(value = "The ID of voip device.")


  public String getId() {
    return id;
  }

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

  public VoipDevice mac(String mac) {
    this.mac = mac;
    return this;
  }

  /**
   * The mac of voip device.
   * @return mac
  */
  @ApiModelProperty(value = "The mac of voip device.")


  public String getMac() {
    return mac;
  }

  public void setMac(String mac) {
    this.mac = mac;
  }

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

  /**
   * The name of voip device.
   * @return name
  */
  @ApiModelProperty(value = "The name of voip device.")


  public String getName() {
    return name;
  }

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

  public VoipDevice model(String model) {
    this.model = model;
    return this;
  }

  /**
   * The model of voip device.
   * @return model
  */
  @ApiModelProperty(value = "The model of voip device.")


  public String getModel() {
    return model;
  }

  public void setModel(String model) {
    this.model = model;
  }

  public VoipDevice modelVersion(String modelVersion) {
    this.modelVersion = modelVersion;
    return this;
  }

  /**
   * The model version of voip device.
   * @return modelVersion
  */
  @ApiModelProperty(value = "The model version of voip device.")


  public String getModelVersion() {
    return modelVersion;
  }

  public void setModelVersion(String modelVersion) {
    this.modelVersion = modelVersion;
  }

  public VoipDevice type(String type) {
    this.type = type;
    return this;
  }

  /**
   * The type of voip device.
   * @return type
  */
  @ApiModelProperty(value = "The type of voip device.")


  public String getType() {
    return type;
  }

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

  public VoipDevice ip(String ip) {
    this.ip = ip;
    return this;
  }

  /**
   * The IP of voip device.
   * @return ip
  */
  @ApiModelProperty(value = "The IP of voip device.")


  public String getIp() {
    return ip;
  }

  public void setIp(String ip) {
    this.ip = ip;
  }

  public VoipDevice statusCategory(Integer statusCategory) {
    this.statusCategory = statusCategory;
    return this;
  }

  /**
   * The status category of voip device.
   * @return statusCategory
  */
  @ApiModelProperty(value = "The status category of voip device.")


  public Integer getStatusCategory() {
    return statusCategory;
  }

  public void setStatusCategory(Integer statusCategory) {
    this.statusCategory = statusCategory;
  }

  public VoipDevice status(Integer status) {
    this.status = status;
    return this;
  }

  /**
   * The status of voip device.
   * @return status
  */
  @ApiModelProperty(value = "The status of voip device.")


  public Integer getStatus() {
    return status;
  }

  public void setStatus(Integer status) {
    this.status = status;
  }

  public VoipDevice addedInAdvanced(Boolean addedInAdvanced) {
    this.addedInAdvanced = addedInAdvanced;
    return this;
  }

  /**
   * Whether the device is added in advanced.
   * @return addedInAdvanced
  */
  @ApiModelProperty(required = true, value = "Whether the device is added in advanced.")
  @NotNull


  public Boolean getAddedInAdvanced() {
    return addedInAdvanced;
  }

  public void setAddedInAdvanced(Boolean addedInAdvanced) {
    this.addedInAdvanced = addedInAdvanced;
  }

  public VoipDevice wirelessLinked(Boolean wirelessLinked) {
    this.wirelessLinked = wirelessLinked;
    return this;
  }

  /**
   * Whether to enable wireless linked.
   * @return wirelessLinked
  */
  @ApiModelProperty(required = true, value = "Whether to enable wireless linked.")
  @NotNull


  public Boolean getWirelessLinked() {
    return wirelessLinked;
  }

  public void setWirelessLinked(Boolean wirelessLinked) {
    this.wirelessLinked = wirelessLinked;
  }

  public VoipDevice voipDeviceApConfiguration(Object voipDeviceApConfiguration) {
    this.voipDeviceApConfiguration = voipDeviceApConfiguration;
    return this;
  }

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

  @Valid

  public Object getVoipDeviceApConfiguration() {
    return voipDeviceApConfiguration;
  }

  public void setVoipDeviceApConfiguration(Object voipDeviceApConfiguration) {
    this.voipDeviceApConfiguration = voipDeviceApConfiguration;
  }

  public VoipDevice voipDeviceOsgConfiguration(Object voipDeviceOsgConfiguration) {
    this.voipDeviceOsgConfiguration = voipDeviceOsgConfiguration;
    return this;
  }

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

  @Valid

  public Object getVoipDeviceOsgConfiguration() {
    return voipDeviceOsgConfiguration;
  }

  public void setVoipDeviceOsgConfiguration(Object voipDeviceOsgConfiguration) {
    this.voipDeviceOsgConfiguration = voipDeviceOsgConfiguration;
  }

  public VoipDevice telephoneNumberAdvancedSetting(Object telephoneNumberAdvancedSetting) {
    this.telephoneNumberAdvancedSetting = telephoneNumberAdvancedSetting;
    return this;
  }

  /**
   * The telephone number advanced setting of voip device.
   * @return telephoneNumberAdvancedSetting
  */
  @ApiModelProperty(value = "The telephone number advanced setting of voip device.")

  @Valid

  public Object getTelephoneNumberAdvancedSetting() {
    return telephoneNumberAdvancedSetting;
  }

  public void setTelephoneNumberAdvancedSetting(Object telephoneNumberAdvancedSetting) {
    this.telephoneNumberAdvancedSetting = telephoneNumberAdvancedSetting;
  }


  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    VoipDevice voipDevice = (VoipDevice) o;
    return Objects.equals(this.id, voipDevice.id) &&
        Objects.equals(this.mac, voipDevice.mac) &&
        Objects.equals(this.name, voipDevice.name) &&
        Objects.equals(this.model, voipDevice.model) &&
        Objects.equals(this.modelVersion, voipDevice.modelVersion) &&
        Objects.equals(this.type, voipDevice.type) &&
        Objects.equals(this.ip, voipDevice.ip) &&
        Objects.equals(this.statusCategory, voipDevice.statusCategory) &&
        Objects.equals(this.status, voipDevice.status) &&
        Objects.equals(this.addedInAdvanced, voipDevice.addedInAdvanced) &&
        Objects.equals(this.wirelessLinked, voipDevice.wirelessLinked) &&
        Objects.equals(this.voipDeviceApConfiguration, voipDevice.voipDeviceApConfiguration) &&
        Objects.equals(this.voipDeviceOsgConfiguration, voipDevice.voipDeviceOsgConfiguration) &&
        Objects.equals(this.telephoneNumberAdvancedSetting, voipDevice.telephoneNumberAdvancedSetting);
  }

  @Override
  public int hashCode() {
    return Objects.hash(id, mac, name, model, modelVersion, type, ip, statusCategory, status, addedInAdvanced, wirelessLinked, voipDeviceApConfiguration, voipDeviceOsgConfiguration, telephoneNumberAdvancedSetting);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class VoipDevice {\n");
    
    sb.append("    id: ").append(toIndentedString(id)).append("\n");
    sb.append("    mac: ").append(toIndentedString(mac)).append("\n");
    sb.append("    name: ").append(toIndentedString(name)).append("\n");
    sb.append("    model: ").append(toIndentedString(model)).append("\n");
    sb.append("    modelVersion: ").append(toIndentedString(modelVersion)).append("\n");
    sb.append("    type: ").append(toIndentedString(type)).append("\n");
    sb.append("    ip: ").append(toIndentedString(ip)).append("\n");
    sb.append("    statusCategory: ").append(toIndentedString(statusCategory)).append("\n");
    sb.append("    status: ").append(toIndentedString(status)).append("\n");
    sb.append("    addedInAdvanced: ").append(toIndentedString(addedInAdvanced)).append("\n");
    sb.append("    wirelessLinked: ").append(toIndentedString(wirelessLinked)).append("\n");
    sb.append("    voipDeviceApConfiguration: ").append(toIndentedString(voipDeviceApConfiguration)).append("\n");
    sb.append("    voipDeviceOsgConfiguration: ").append(toIndentedString(voipDeviceOsgConfiguration)).append("\n");
    sb.append("    telephoneNumberAdvancedSetting: ").append(toIndentedString(telephoneNumberAdvancedSetting)).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    ");
  }
}

