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

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

import javax.validation.Valid;
import java.util.Objects;

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

public class DstDto   {
  @JsonProperty("enable")
  private Boolean enable;

  @JsonProperty("start")
  private DstTimeDto start;

  @JsonProperty("end")
  private DstTimeDto end;

  @JsonProperty("status")
  private Boolean status;

  @JsonProperty("startTime")
  private Long startTime;

  @JsonProperty("endTime")
  private Long endTime;

  @JsonProperty("offset")
  private Long offset;

  @JsonProperty("nextStart")
  private Long nextStart;

  @JsonProperty("nextEnd")
  private Long nextEnd;

  @JsonProperty("timeZone")
  private String timeZone;

  @JsonProperty("lastStart")
  private Long lastStart;

  @JsonProperty("lastEnd")
  private Long lastEnd;

  public DstDto enable(Boolean enable) {
    this.enable = enable;
    return this;
  }

  /**
   * DST config status; If false, other parameters are not required.
   * @return enable
  */
  @ApiModelProperty(value = "DST config status; If false, other parameters are not required.")


  public Boolean getEnable() {
    return enable;
  }

  public void setEnable(Boolean enable) {
    this.enable = enable;
  }

  public DstDto start(DstTimeDto start) {
    this.start = start;
    return this;
  }

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

  @Valid

  public DstTimeDto getStart() {
    return start;
  }

  public void setStart(DstTimeDto start) {
    this.start = start;
  }

  public DstDto end(DstTimeDto end) {
    this.end = end;
    return this;
  }

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

  @Valid

  public DstTimeDto getEnd() {
    return end;
  }

  public void setEnd(DstTimeDto end) {
    this.end = end;
  }

  public DstDto status(Boolean status) {
    this.status = status;
    return this;
  }

  /**
   * DST available status
   * @return status
  */
  @ApiModelProperty(value = "DST available status")


  public Boolean getStatus() {
    return status;
  }

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

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

  /**
   * The timeStamp of the DST available start time
   * @return startTime
  */
  @ApiModelProperty(value = "The timeStamp of the DST available start time")


  public Long getStartTime() {
    return startTime;
  }

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

  public DstDto endTime(Long endTime) {
    this.endTime = endTime;
    return this;
  }

  /**
   * The timeStamp of the DST available end time
   * @return endTime
  */
  @ApiModelProperty(value = "The timeStamp of the DST available end time")


  public Long getEndTime() {
    return endTime;
  }

  public void setEndTime(Long endTime) {
    this.endTime = endTime;
  }

  public DstDto offset(Long offset) {
    this.offset = offset;
    return this;
  }

  /**
   * DST offset config(Unit: ms); It should be a value as follows: [1800000, 3600000, 5400000, 7200000].
   * @return offset
  */
  @ApiModelProperty(value = "DST offset config(Unit: ms); It should be a value as follows: [1800000, 3600000, 5400000, 7200000].")


  public Long getOffset() {
    return offset;
  }

  public void setOffset(Long offset) {
    this.offset = offset;
  }

  public DstDto nextStart(Long nextStart) {
    this.nextStart = nextStart;
    return this;
  }

  /**
   * The timeStamp of the DST start time of the next year(Unit: ms)
   * @return nextStart
  */
  @ApiModelProperty(value = "The timeStamp of the DST start time of the next year(Unit: ms)")


  public Long getNextStart() {
    return nextStart;
  }

  public void setNextStart(Long nextStart) {
    this.nextStart = nextStart;
  }

  public DstDto nextEnd(Long nextEnd) {
    this.nextEnd = nextEnd;
    return this;
  }

  /**
   * The timeStamp of the DST end time of the next year(Unit: ms)
   * @return nextEnd
  */
  @ApiModelProperty(value = "The timeStamp of the DST end time of the next year(Unit: ms)")


  public Long getNextEnd() {
    return nextEnd;
  }

  public void setNextEnd(Long nextEnd) {
    this.nextEnd = nextEnd;
  }

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

  /**
   * Timezone of the site
   * @return timeZone
  */
  @ApiModelProperty(value = "Timezone of the site")


  public String getTimeZone() {
    return timeZone;
  }

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

  public DstDto lastStart(Long lastStart) {
    this.lastStart = lastStart;
    return this;
  }

  /**
   * The timeStamp of the DST start time of the last year(Unit: ms)
   * @return lastStart
  */
  @ApiModelProperty(value = "The timeStamp of the DST start time of the last year(Unit: ms)")


  public Long getLastStart() {
    return lastStart;
  }

  public void setLastStart(Long lastStart) {
    this.lastStart = lastStart;
  }

  public DstDto lastEnd(Long lastEnd) {
    this.lastEnd = lastEnd;
    return this;
  }

  /**
   * The timeStamp of the DST end time of the last year(Unit: ms)
   * @return lastEnd
  */
  @ApiModelProperty(value = "The timeStamp of the DST end time of the last year(Unit: ms)")


  public Long getLastEnd() {
    return lastEnd;
  }

  public void setLastEnd(Long lastEnd) {
    this.lastEnd = lastEnd;
  }


  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    DstDto dstDto = (DstDto) o;
    return Objects.equals(this.enable, dstDto.enable) &&
        Objects.equals(this.start, dstDto.start) &&
        Objects.equals(this.end, dstDto.end) &&
        Objects.equals(this.status, dstDto.status) &&
        Objects.equals(this.startTime, dstDto.startTime) &&
        Objects.equals(this.endTime, dstDto.endTime) &&
        Objects.equals(this.offset, dstDto.offset) &&
        Objects.equals(this.nextStart, dstDto.nextStart) &&
        Objects.equals(this.nextEnd, dstDto.nextEnd) &&
        Objects.equals(this.timeZone, dstDto.timeZone) &&
        Objects.equals(this.lastStart, dstDto.lastStart) &&
        Objects.equals(this.lastEnd, dstDto.lastEnd);
  }

  @Override
  public int hashCode() {
    return Objects.hash(enable, start, end, status, startTime, endTime, offset, nextStart, nextEnd, timeZone, lastStart, lastEnd);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class DstDto {\n");
    
    sb.append("    enable: ").append(toIndentedString(enable)).append("\n");
    sb.append("    start: ").append(toIndentedString(start)).append("\n");
    sb.append("    end: ").append(toIndentedString(end)).append("\n");
    sb.append("    status: ").append(toIndentedString(status)).append("\n");
    sb.append("    startTime: ").append(toIndentedString(startTime)).append("\n");
    sb.append("    endTime: ").append(toIndentedString(endTime)).append("\n");
    sb.append("    offset: ").append(toIndentedString(offset)).append("\n");
    sb.append("    nextStart: ").append(toIndentedString(nextStart)).append("\n");
    sb.append("    nextEnd: ").append(toIndentedString(nextEnd)).append("\n");
    sb.append("    timeZone: ").append(toIndentedString(timeZone)).append("\n");
    sb.append("    lastStart: ").append(toIndentedString(lastStart)).append("\n");
    sb.append("    lastEnd: ").append(toIndentedString(lastEnd)).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    ");
  }
}

