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

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

public class CreateFormAuthOpenApiVo   {
  @JsonProperty("title")
  private String title;

  @JsonProperty("name")
  private String name;

  @JsonProperty("note")
  private String note;

  @JsonProperty("authTimeout")
  private AuthTimeOpenApiVo authTimeout;

  @JsonProperty("cardList")
  @Valid
  private List<FormAuthCardOpenApiVo> cardList = new ArrayList<>();

  @JsonProperty("published")
  private Boolean published;

  public CreateFormAuthOpenApiVo title(String title) {
    this.title = title;
    return this;
  }

  /**
   * Form title (display for the authentication user). It should contain 1-2000 characters.
   * @return title
  */
  @ApiModelProperty(required = true, value = "Form title (display for the authentication user). It should contain 1-2000 characters.")
  @NotNull


  public String getTitle() {
    return title;
  }

  public void setTitle(String title) {
    this.title = title;
  }

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

  /**
   * Form name (display for the controller user). It should contain 1-2000 characters.
   * @return name
  */
  @ApiModelProperty(required = true, value = "Form name (display for the controller user). It should contain 1-2000 characters.")
  @NotNull


  public String getName() {
    return name;
  }

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

  public CreateFormAuthOpenApiVo note(String note) {
    this.note = note;
    return this;
  }

  /**
   * Note should contain 1-2000 characters.
   * @return note
  */
  @ApiModelProperty(required = true, value = "Note should contain 1-2000 characters.")
  @NotNull


  public String getNote() {
    return note;
  }

  public void setNote(String note) {
    this.note = note;
  }

  public CreateFormAuthOpenApiVo authTimeout(AuthTimeOpenApiVo authTimeout) {
    this.authTimeout = authTimeout;
    return this;
  }

  /**
   * Get authTimeout
   * @return authTimeout
  */
  @ApiModelProperty(required = true, value = "")
  @NotNull

  @Valid

  public AuthTimeOpenApiVo getAuthTimeout() {
    return authTimeout;
  }

  public void setAuthTimeout(AuthTimeOpenApiVo authTimeout) {
    this.authTimeout = authTimeout;
  }

  public CreateFormAuthOpenApiVo cardList(List<FormAuthCardOpenApiVo> cardList) {
    this.cardList = cardList;
    return this;
  }

  public CreateFormAuthOpenApiVo addCardListItem(FormAuthCardOpenApiVo cardListItem) {
    this.cardList.add(cardListItem);
    return this;
  }

  /**
   * Form card list.
   * @return cardList
  */
  @ApiModelProperty(required = true, value = "Form card list.")
  @NotNull

  @Valid

  public List<FormAuthCardOpenApiVo> getCardList() {
    return cardList;
  }

  public void setCardList(List<FormAuthCardOpenApiVo> cardList) {
    this.cardList = cardList;
  }

  public CreateFormAuthOpenApiVo published(Boolean published) {
    this.published = published;
    return this;
  }

  /**
   * Whether to publish.
   * @return published
  */
  @ApiModelProperty(required = true, value = "Whether to publish.")
  @NotNull


  public Boolean getPublished() {
    return published;
  }

  public void setPublished(Boolean published) {
    this.published = published;
  }


  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    CreateFormAuthOpenApiVo createFormAuthOpenApiVo = (CreateFormAuthOpenApiVo) o;
    return Objects.equals(this.title, createFormAuthOpenApiVo.title) &&
        Objects.equals(this.name, createFormAuthOpenApiVo.name) &&
        Objects.equals(this.note, createFormAuthOpenApiVo.note) &&
        Objects.equals(this.authTimeout, createFormAuthOpenApiVo.authTimeout) &&
        Objects.equals(this.cardList, createFormAuthOpenApiVo.cardList) &&
        Objects.equals(this.published, createFormAuthOpenApiVo.published);
  }

  @Override
  public int hashCode() {
    return Objects.hash(title, name, note, authTimeout, cardList, published);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class CreateFormAuthOpenApiVo {\n");
    
    sb.append("    title: ").append(toIndentedString(title)).append("\n");
    sb.append("    name: ").append(toIndentedString(name)).append("\n");
    sb.append("    note: ").append(toIndentedString(note)).append("\n");
    sb.append("    authTimeout: ").append(toIndentedString(authTimeout)).append("\n");
    sb.append("    cardList: ").append(toIndentedString(cardList)).append("\n");
    sb.append("    published: ").append(toIndentedString(published)).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    ");
  }
}

