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

/**
 * ClientHistoryInfo
 */
@javax.annotation.Generated(value = "org.openapitools.codegen.languages.SpringCodegen", date = "2024-12-04T10:16:05.926+08:00[Asia/Shanghai]")

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

  @JsonProperty("mac")
  private String mac;

  @JsonProperty("download")
  private Long download;

  @JsonProperty("upload")
  private Long upload;

  @JsonProperty("duration")
  private Long duration;

  @JsonProperty("firstSeen")
  private Long firstSeen;

  @JsonProperty("lastSeen")
  private Long lastSeen;

  @JsonProperty("name")
  private String name;

  @JsonProperty("ssid")
  private String ssid;

  @JsonProperty("port")
  private Integer port;

  @JsonProperty("guest")
  private Boolean guest;

  @JsonProperty("deviceName")
  private String deviceName;

  @JsonProperty("associationTime")
  private Integer associationTime;

  @JsonProperty("ip")
  private String ip;

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

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

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


  public String getId() {
    return id;
  }

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

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

  /**
   * Client MAC Address.
   * @return mac
  */
  @ApiModelProperty(value = "Client MAC Address.")


  public String getMac() {
    return mac;
  }

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

  public ClientHistoryInfo download(Long download) {
    this.download = download;
    return this;
  }

  /**
   * Downstream traffic (Byte).
   * @return download
  */
  @ApiModelProperty(value = "Downstream traffic (Byte).")


  public Long getDownload() {
    return download;
  }

  public void setDownload(Long download) {
    this.download = download;
  }

  public ClientHistoryInfo upload(Long upload) {
    this.upload = upload;
    return this;
  }

  /**
   * Upstream traffic (Byte).
   * @return upload
  */
  @ApiModelProperty(value = "Upstream traffic (Byte).")


  public Long getUpload() {
    return upload;
  }

  public void setUpload(Long upload) {
    this.upload = upload;
  }

  public ClientHistoryInfo duration(Long duration) {
    this.duration = duration;
    return this;
  }

  /**
   * Up time (unit: s).
   * @return duration
  */
  @ApiModelProperty(value = "Up time (unit: s).")


  public Long getDuration() {
    return duration;
  }

  public void setDuration(Long duration) {
    this.duration = duration;
  }

  public ClientHistoryInfo firstSeen(Long firstSeen) {
    this.firstSeen = firstSeen;
    return this;
  }

  /**
   * The timestamp (ms) when the client connected.
   * @return firstSeen
  */
  @ApiModelProperty(value = "The timestamp (ms) when the client connected.")


  public Long getFirstSeen() {
    return firstSeen;
  }

  public void setFirstSeen(Long firstSeen) {
    this.firstSeen = firstSeen;
  }

  public ClientHistoryInfo lastSeen(Long lastSeen) {
    this.lastSeen = lastSeen;
    return this;
  }

  /**
   * Last found time, timestamp (ms).
   * @return lastSeen
  */
  @ApiModelProperty(value = "Last found time, timestamp (ms).")


  public Long getLastSeen() {
    return lastSeen;
  }

  public void setLastSeen(Long lastSeen) {
    this.lastSeen = lastSeen;
  }

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

  /**
   * Client Name.
   * @return name
  */
  @ApiModelProperty(value = "Client Name.")


  public String getName() {
    return name;
  }

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

  public ClientHistoryInfo ssid(String ssid) {
    this.ssid = ssid;
    return this;
  }

  /**
   * (Wireless)  SSID name.
   * @return ssid
  */
  @ApiModelProperty(value = "(Wireless)  SSID name.")


  public String getSsid() {
    return ssid;
  }

  public void setSsid(String ssid) {
    this.ssid = ssid;
  }

  public ClientHistoryInfo port(Integer port) {
    this.port = port;
    return this;
  }

  /**
   * (Wired) Port ID.
   * @return port
  */
  @ApiModelProperty(value = "(Wired) Port ID.")


  public Integer getPort() {
    return port;
  }

  public void setPort(Integer port) {
    this.port = port;
  }

  public ClientHistoryInfo guest(Boolean guest) {
    this.guest = guest;
    return this;
  }

  /**
   * (Wireless) Whether it is Guest (used to display the wireless Guest client icon).
   * @return guest
  */
  @ApiModelProperty(value = "(Wireless) Whether it is Guest (used to display the wireless Guest client icon).")


  public Boolean getGuest() {
    return guest;
  }

  public void setGuest(Boolean guest) {
    this.guest = guest;
  }

  public ClientHistoryInfo deviceName(String deviceName) {
    this.deviceName = deviceName;
    return this;
  }

  /**
   * Device name.
   * @return deviceName
  */
  @ApiModelProperty(value = "Device name.")


  public String getDeviceName() {
    return deviceName;
  }

  public void setDeviceName(String deviceName) {
    this.deviceName = deviceName;
  }

  public ClientHistoryInfo associationTime(Integer associationTime) {
    this.associationTime = associationTime;
    return this;
  }

  /**
   * (Wireless) The time (ms) it takes for the client to connect to SSID.
   * @return associationTime
  */
  @ApiModelProperty(value = "(Wireless) The time (ms) it takes for the client to connect to SSID.")


  public Integer getAssociationTime() {
    return associationTime;
  }

  public void setAssociationTime(Integer associationTime) {
    this.associationTime = associationTime;
  }

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

  /**
   * IP Address.
   * @return ip
  */
  @ApiModelProperty(value = "IP Address.")


  public String getIp() {
    return ip;
  }

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

  public ClientHistoryInfo ipv6List(List<String> ipv6List) {
    this.ipv6List = ipv6List;
    return this;
  }

  public ClientHistoryInfo addIpv6ListItem(String ipv6ListItem) {
    if (this.ipv6List == null) {
      this.ipv6List = new ArrayList<>();
    }
    this.ipv6List.add(ipv6ListItem);
    return this;
  }

  /**
   * IPv6 Address.
   * @return ipv6List
  */
  @ApiModelProperty(value = "IPv6 Address.")


  public List<String> getIpv6List() {
    return ipv6List;
  }

  public void setIpv6List(List<String> ipv6List) {
    this.ipv6List = ipv6List;
  }


  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    ClientHistoryInfo clientHistoryInfo = (ClientHistoryInfo) o;
    return Objects.equals(this.id, clientHistoryInfo.id) &&
        Objects.equals(this.mac, clientHistoryInfo.mac) &&
        Objects.equals(this.download, clientHistoryInfo.download) &&
        Objects.equals(this.upload, clientHistoryInfo.upload) &&
        Objects.equals(this.duration, clientHistoryInfo.duration) &&
        Objects.equals(this.firstSeen, clientHistoryInfo.firstSeen) &&
        Objects.equals(this.lastSeen, clientHistoryInfo.lastSeen) &&
        Objects.equals(this.name, clientHistoryInfo.name) &&
        Objects.equals(this.ssid, clientHistoryInfo.ssid) &&
        Objects.equals(this.port, clientHistoryInfo.port) &&
        Objects.equals(this.guest, clientHistoryInfo.guest) &&
        Objects.equals(this.deviceName, clientHistoryInfo.deviceName) &&
        Objects.equals(this.associationTime, clientHistoryInfo.associationTime) &&
        Objects.equals(this.ip, clientHistoryInfo.ip) &&
        Objects.equals(this.ipv6List, clientHistoryInfo.ipv6List);
  }

  @Override
  public int hashCode() {
    return Objects.hash(id, mac, download, upload, duration, firstSeen, lastSeen, name, ssid, port, guest, deviceName, associationTime, ip, ipv6List);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class ClientHistoryInfo {\n");
    
    sb.append("    id: ").append(toIndentedString(id)).append("\n");
    sb.append("    mac: ").append(toIndentedString(mac)).append("\n");
    sb.append("    download: ").append(toIndentedString(download)).append("\n");
    sb.append("    upload: ").append(toIndentedString(upload)).append("\n");
    sb.append("    duration: ").append(toIndentedString(duration)).append("\n");
    sb.append("    firstSeen: ").append(toIndentedString(firstSeen)).append("\n");
    sb.append("    lastSeen: ").append(toIndentedString(lastSeen)).append("\n");
    sb.append("    name: ").append(toIndentedString(name)).append("\n");
    sb.append("    ssid: ").append(toIndentedString(ssid)).append("\n");
    sb.append("    port: ").append(toIndentedString(port)).append("\n");
    sb.append("    guest: ").append(toIndentedString(guest)).append("\n");
    sb.append("    deviceName: ").append(toIndentedString(deviceName)).append("\n");
    sb.append("    associationTime: ").append(toIndentedString(associationTime)).append("\n");
    sb.append("    ip: ").append(toIndentedString(ip)).append("\n");
    sb.append("    ipv6List: ").append(toIndentedString(ipv6List)).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    ");
  }
}

