package org.wfc.omada.api.hotspot.model;

import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import java.util.Objects;

/**
 * Voucher pagination data of the voucher group
 */
@ApiModel(description = "Voucher pagination data of the voucher group")
@javax.annotation.Generated(value = "org.openapitools.codegen.languages.SpringCodegen", date = "2024-12-04T11:35:35.496+08:00[Asia/Shanghai]")

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

  @JsonProperty("code")
  private String code;

  @JsonProperty("status")
  private Integer status;

  @JsonProperty("trafficUsed")
  private Long trafficUsed;

  @JsonProperty("trafficUnused")
  private Long trafficUnused;

  @JsonProperty("trafficLimit")
  private Long trafficLimit;

  @JsonProperty("trafficLimitFrequency")
  private Integer trafficLimitFrequency;

  @JsonProperty("downLimit")
  private Long downLimit;

  @JsonProperty("upLimit")
  private Long upLimit;

  @JsonProperty("startTime")
  private Long startTime;

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

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


  public String getId() {
    return id;
  }

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

  public SimpleVoucherOpenApiVo code(String code) {
    this.code = code;
    return this;
  }

  /**
   * Voucher code
   * @return code
  */
  @ApiModelProperty(value = "Voucher code")


  public String getCode() {
    return code;
  }

  public void setCode(String code) {
    this.code = code;
  }

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

  /**
   * Voucher status. It should be a value as follows: 0: unused, 1: in use, 2: expired
   * @return status
  */
  @ApiModelProperty(value = "Voucher status. It should be a value as follows: 0: unused, 1: in use, 2: expired")


  public Integer getStatus() {
    return status;
  }

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

  public SimpleVoucherOpenApiVo trafficUsed(Long trafficUsed) {
    this.trafficUsed = trafficUsed;
    return this;
  }

  /**
   * Used traffic of the voucher, unit: Byte
   * @return trafficUsed
  */
  @ApiModelProperty(value = "Used traffic of the voucher, unit: Byte")


  public Long getTrafficUsed() {
    return trafficUsed;
  }

  public void setTrafficUsed(Long trafficUsed) {
    this.trafficUsed = trafficUsed;
  }

  public SimpleVoucherOpenApiVo trafficUnused(Long trafficUnused) {
    this.trafficUnused = trafficUnused;
    return this;
  }

  /**
   * Unused traffic of the voucher, unit: Byte
   * @return trafficUnused
  */
  @ApiModelProperty(value = "Unused traffic of the voucher, unit: Byte")


  public Long getTrafficUnused() {
    return trafficUnused;
  }

  public void setTrafficUnused(Long trafficUnused) {
    this.trafficUnused = trafficUnused;
  }

  public SimpleVoucherOpenApiVo trafficLimit(Long trafficLimit) {
    this.trafficLimit = trafficLimit;
    return this;
  }

  /**
   * Traffic limit in MB. It should be within the range of 1–10485760
   * @return trafficLimit
  */
  @ApiModelProperty(value = "Traffic limit in MB. It should be within the range of 1–10485760")


  public Long getTrafficLimit() {
    return trafficLimit;
  }

  public void setTrafficLimit(Long trafficLimit) {
    this.trafficLimit = trafficLimit;
  }

  public SimpleVoucherOpenApiVo trafficLimitFrequency(Integer trafficLimitFrequency) {
    this.trafficLimitFrequency = trafficLimitFrequency;
    return this;
  }

  /**
   * Frequency of traffic limit should be a value as follows: 0: total; 1: daily; 2: weekly; 3: monthly.
   * @return trafficLimitFrequency
  */
  @ApiModelProperty(value = "Frequency of traffic limit should be a value as follows: 0: total; 1: daily; 2: weekly; 3: monthly.")


  public Integer getTrafficLimitFrequency() {
    return trafficLimitFrequency;
  }

  public void setTrafficLimitFrequency(Integer trafficLimitFrequency) {
    this.trafficLimitFrequency = trafficLimitFrequency;
  }

  public SimpleVoucherOpenApiVo downLimit(Long downLimit) {
    this.downLimit = downLimit;
    return this;
  }

  /**
   * Downlink speed limit in Kbps. The value of limit should be within the range of 0–10485760.
   * @return downLimit
  */
  @ApiModelProperty(value = "Downlink speed limit in Kbps. The value of limit should be within the range of 0–10485760.")


  public Long getDownLimit() {
    return downLimit;
  }

  public void setDownLimit(Long downLimit) {
    this.downLimit = downLimit;
  }

  public SimpleVoucherOpenApiVo upLimit(Long upLimit) {
    this.upLimit = upLimit;
    return this;
  }

  /**
   * Uplink speed limit in Kbps. The value of limit should be within the range of 0–10485760.
   * @return upLimit
  */
  @ApiModelProperty(value = "Uplink speed limit in Kbps. The value of limit should be within the range of 0–10485760.")


  public Long getUpLimit() {
    return upLimit;
  }

  public void setUpLimit(Long upLimit) {
    this.upLimit = upLimit;
  }

  public SimpleVoucherOpenApiVo startTime(Long startTime) {
    this.startTime = startTime;
    return this;
  }

  /**
   * The expiration date of the voucher, unit: MS
   * @return startTime
  */
  @ApiModelProperty(value = "The expiration date of the voucher, unit: MS")


  public Long getStartTime() {
    return startTime;
  }

  public void setStartTime(Long startTime) {
    this.startTime = startTime;
  }


  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    SimpleVoucherOpenApiVo simpleVoucherOpenApiVo = (SimpleVoucherOpenApiVo) o;
    return Objects.equals(this.id, simpleVoucherOpenApiVo.id) &&
        Objects.equals(this.code, simpleVoucherOpenApiVo.code) &&
        Objects.equals(this.status, simpleVoucherOpenApiVo.status) &&
        Objects.equals(this.trafficUsed, simpleVoucherOpenApiVo.trafficUsed) &&
        Objects.equals(this.trafficUnused, simpleVoucherOpenApiVo.trafficUnused) &&
        Objects.equals(this.trafficLimit, simpleVoucherOpenApiVo.trafficLimit) &&
        Objects.equals(this.trafficLimitFrequency, simpleVoucherOpenApiVo.trafficLimitFrequency) &&
        Objects.equals(this.downLimit, simpleVoucherOpenApiVo.downLimit) &&
        Objects.equals(this.upLimit, simpleVoucherOpenApiVo.upLimit) &&
        Objects.equals(this.startTime, simpleVoucherOpenApiVo.startTime);
  }

  @Override
  public int hashCode() {
    return Objects.hash(id, code, status, trafficUsed, trafficUnused, trafficLimit, trafficLimitFrequency, downLimit, upLimit, startTime);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class SimpleVoucherOpenApiVo {\n");
    
    sb.append("    id: ").append(toIndentedString(id)).append("\n");
    sb.append("    code: ").append(toIndentedString(code)).append("\n");
    sb.append("    status: ").append(toIndentedString(status)).append("\n");
    sb.append("    trafficUsed: ").append(toIndentedString(trafficUsed)).append("\n");
    sb.append("    trafficUnused: ").append(toIndentedString(trafficUnused)).append("\n");
    sb.append("    trafficLimit: ").append(toIndentedString(trafficLimit)).append("\n");
    sb.append("    trafficLimitFrequency: ").append(toIndentedString(trafficLimitFrequency)).append("\n");
    sb.append("    downLimit: ").append(toIndentedString(downLimit)).append("\n");
    sb.append("    upLimit: ").append(toIndentedString(upLimit)).append("\n");
    sb.append("    startTime: ").append(toIndentedString(startTime)).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    ");
  }
}

