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

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

import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

/**
 * DeleteSiteEventLogListOpenApiVo
 */
@javax.annotation.Generated(value = "org.openapitools.codegen.languages.SpringCodegen", date = "2025-06-03T17:52:43.984874600+08:00[Asia/Shanghai]")

public class DeleteSiteEventLogListOpenApiVo   {
  @JsonProperty("logs")
  @Valid
  private List<String> logs = null;

  @JsonProperty("selectType")
  private String selectType;

  @JsonProperty("startTime")
  private Long startTime;

  @JsonProperty("endTime")
  private Long endTime;

  @JsonProperty("filterModule")
  private String filterModule;

  public DeleteSiteEventLogListOpenApiVo logs(List<String> logs) {
    this.logs = logs;
    return this;
  }

  public DeleteSiteEventLogListOpenApiVo addLogsItem(String logsItem) {
    if (this.logs == null) {
      this.logs = new ArrayList<>();
    }
    this.logs.add(logsItem);
    return this;
  }

  /**
   * Select the logs to delete; Log ID list can be obtained from 'Get site event log list' interface.
   * @return logs
  */
  @ApiModelProperty(value = "Select the logs to delete; Log ID list can be obtained from 'Get site event log list' interface.")


  public List<String> getLogs() {
    return logs;
  }

  public void setLogs(List<String> logs) {
    this.logs = logs;
  }

  public DeleteSiteEventLogListOpenApiVo selectType(String selectType) {
    this.selectType = selectType;
    return this;
  }

  /**
   * Select type of logs. include: include selected logs, exclude: all but exclude selected logs, all: include all logs(Parameter [logs] need input '[]').
   * @return selectType
  */
  @ApiModelProperty(required = true, value = "Select type of logs. include: include selected logs, exclude: all but exclude selected logs, all: include all logs(Parameter [logs] need input '[]').")
  @NotNull


  public String getSelectType() {
    return selectType;
  }

  public void setSelectType(String selectType) {
    this.selectType = selectType;
  }

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

  /**
   * The start timeStamp of the delete site event log, unit: MS.
   * @return startTime
  */
  @ApiModelProperty(required = true, value = "The start timeStamp of the delete site event log, unit: MS.")
  @NotNull


  public Long getStartTime() {
    return startTime;
  }

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

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

  /**
   * The end timeStamp of the delete site event log, unit: MS.
   * @return endTime
  */
  @ApiModelProperty(required = true, value = "The end timeStamp of the delete site event log, unit: MS.")
  @NotNull


  public Long getEndTime() {
    return endTime;
  }

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

  public DeleteSiteEventLogListOpenApiVo filterModule(String filterModule) {
    this.filterModule = filterModule;
    return this;
  }

  /**
   * The module of the delete site event log; It is required when [selectType] is 'all', filterModule should be a value as follows: ['System', 'Device', 'Client'].
   * @return filterModule
  */
  @ApiModelProperty(value = "The module of the delete site event log; It is required when [selectType] is 'all', filterModule should be a value as follows: ['System', 'Device', 'Client'].")


  public String getFilterModule() {
    return filterModule;
  }

  public void setFilterModule(String filterModule) {
    this.filterModule = filterModule;
  }


  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    DeleteSiteEventLogListOpenApiVo deleteSiteEventLogListOpenApiVo = (DeleteSiteEventLogListOpenApiVo) o;
    return Objects.equals(this.logs, deleteSiteEventLogListOpenApiVo.logs) &&
        Objects.equals(this.selectType, deleteSiteEventLogListOpenApiVo.selectType) &&
        Objects.equals(this.startTime, deleteSiteEventLogListOpenApiVo.startTime) &&
        Objects.equals(this.endTime, deleteSiteEventLogListOpenApiVo.endTime) &&
        Objects.equals(this.filterModule, deleteSiteEventLogListOpenApiVo.filterModule);
  }

  @Override
  public int hashCode() {
    return Objects.hash(logs, selectType, startTime, endTime, filterModule);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class DeleteSiteEventLogListOpenApiVo {\n");
    
    sb.append("    logs: ").append(toIndentedString(logs)).append("\n");
    sb.append("    selectType: ").append(toIndentedString(selectType)).append("\n");
    sb.append("    startTime: ").append(toIndentedString(startTime)).append("\n");
    sb.append("    endTime: ").append(toIndentedString(endTime)).append("\n");
    sb.append("    filterModule: ").append(toIndentedString(filterModule)).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    ");
  }
}

