001package com.box.sdkgen.schemas.filerequestupdaterequest;
002
003import com.box.sdkgen.internal.NullableFieldTracker;
004import com.box.sdkgen.internal.SerializableObject;
005import com.box.sdkgen.internal.utils.DateTimeUtils;
006import com.box.sdkgen.serialization.json.EnumWrapper;
007import com.fasterxml.jackson.annotation.JsonFilter;
008import com.fasterxml.jackson.annotation.JsonProperty;
009import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
010import com.fasterxml.jackson.databind.annotation.JsonSerialize;
011import java.time.OffsetDateTime;
012import java.util.Objects;
013
014/** The request body to update a file request. */
015@JsonFilter("nullablePropertyFilter")
016public class FileRequestUpdateRequest extends SerializableObject {
017
018  /**
019   * An optional new title for the file request. This can be used to change the title of the file
020   * request.
021   *
022   * <p>This will default to the value on the existing file request.
023   */
024  protected String title;
025
026  /**
027   * An optional new description for the file request. This can be used to change the description of
028   * the file request.
029   *
030   * <p>This will default to the value on the existing file request.
031   */
032  protected String description;
033
034  /**
035   * An optional new status of the file request.
036   *
037   * <p>When the status is set to `inactive`, the file request will no longer accept new
038   * submissions, and any visitor to the file request URL will receive a `HTTP 404` status code.
039   *
040   * <p>This will default to the value on the existing file request.
041   */
042  @JsonDeserialize(
043      using =
044          FileRequestUpdateRequestStatusField.FileRequestUpdateRequestStatusFieldDeserializer.class)
045  @JsonSerialize(
046      using =
047          FileRequestUpdateRequestStatusField.FileRequestUpdateRequestStatusFieldSerializer.class)
048  protected EnumWrapper<FileRequestUpdateRequestStatusField> status;
049
050  /**
051   * Whether a file request submitter is required to provide their email address.
052   *
053   * <p>When this setting is set to true, the Box UI will show an email field on the file request
054   * form.
055   *
056   * <p>This will default to the value on the existing file request.
057   */
058  @JsonProperty("is_email_required")
059  protected Boolean isEmailRequired;
060
061  /**
062   * Whether a file request submitter is required to provide a description of the files they are
063   * submitting.
064   *
065   * <p>When this setting is set to true, the Box UI will show a description field on the file
066   * request form.
067   *
068   * <p>This will default to the value on the existing file request.
069   */
070  @JsonProperty("is_description_required")
071  protected Boolean isDescriptionRequired;
072
073  /**
074   * The date after which a file request will no longer accept new submissions.
075   *
076   * <p>After this date, the `status` will automatically be set to `inactive`.
077   *
078   * <p>This will default to the value on the existing file request.
079   */
080  @JsonProperty("expires_at")
081  @JsonSerialize(using = DateTimeUtils.DateTimeSerializer.class)
082  @JsonDeserialize(using = DateTimeUtils.DateTimeDeserializer.class)
083  protected OffsetDateTime expiresAt;
084
085  public FileRequestUpdateRequest() {
086    super();
087  }
088
089  protected FileRequestUpdateRequest(Builder builder) {
090    super();
091    this.title = builder.title;
092    this.description = builder.description;
093    this.status = builder.status;
094    this.isEmailRequired = builder.isEmailRequired;
095    this.isDescriptionRequired = builder.isDescriptionRequired;
096    this.expiresAt = builder.expiresAt;
097    markNullableFieldsAsSet(builder.getExplicitlySetNullableFields());
098  }
099
100  public String getTitle() {
101    return title;
102  }
103
104  public String getDescription() {
105    return description;
106  }
107
108  public EnumWrapper<FileRequestUpdateRequestStatusField> getStatus() {
109    return status;
110  }
111
112  public Boolean getIsEmailRequired() {
113    return isEmailRequired;
114  }
115
116  public Boolean getIsDescriptionRequired() {
117    return isDescriptionRequired;
118  }
119
120  public OffsetDateTime getExpiresAt() {
121    return expiresAt;
122  }
123
124  @Override
125  public boolean equals(Object o) {
126    if (this == o) {
127      return true;
128    }
129    if (o == null || getClass() != o.getClass()) {
130      return false;
131    }
132    FileRequestUpdateRequest casted = (FileRequestUpdateRequest) o;
133    return Objects.equals(title, casted.title)
134        && Objects.equals(description, casted.description)
135        && Objects.equals(status, casted.status)
136        && Objects.equals(isEmailRequired, casted.isEmailRequired)
137        && Objects.equals(isDescriptionRequired, casted.isDescriptionRequired)
138        && Objects.equals(expiresAt, casted.expiresAt);
139  }
140
141  @Override
142  public int hashCode() {
143    return Objects.hash(
144        title, description, status, isEmailRequired, isDescriptionRequired, expiresAt);
145  }
146
147  @Override
148  public String toString() {
149    return "FileRequestUpdateRequest{"
150        + "title='"
151        + title
152        + '\''
153        + ", "
154        + "description='"
155        + description
156        + '\''
157        + ", "
158        + "status='"
159        + status
160        + '\''
161        + ", "
162        + "isEmailRequired='"
163        + isEmailRequired
164        + '\''
165        + ", "
166        + "isDescriptionRequired='"
167        + isDescriptionRequired
168        + '\''
169        + ", "
170        + "expiresAt='"
171        + expiresAt
172        + '\''
173        + "}";
174  }
175
176  public static class Builder extends NullableFieldTracker {
177
178    protected String title;
179
180    protected String description;
181
182    protected EnumWrapper<FileRequestUpdateRequestStatusField> status;
183
184    protected Boolean isEmailRequired;
185
186    protected Boolean isDescriptionRequired;
187
188    protected OffsetDateTime expiresAt;
189
190    public Builder title(String title) {
191      this.title = title;
192      return this;
193    }
194
195    public Builder description(String description) {
196      this.description = description;
197      return this;
198    }
199
200    public Builder status(FileRequestUpdateRequestStatusField status) {
201      this.status = new EnumWrapper<FileRequestUpdateRequestStatusField>(status);
202      return this;
203    }
204
205    public Builder status(EnumWrapper<FileRequestUpdateRequestStatusField> status) {
206      this.status = status;
207      return this;
208    }
209
210    public Builder isEmailRequired(Boolean isEmailRequired) {
211      this.isEmailRequired = isEmailRequired;
212      return this;
213    }
214
215    public Builder isDescriptionRequired(Boolean isDescriptionRequired) {
216      this.isDescriptionRequired = isDescriptionRequired;
217      return this;
218    }
219
220    public Builder expiresAt(OffsetDateTime expiresAt) {
221      this.expiresAt = expiresAt;
222      return this;
223    }
224
225    public FileRequestUpdateRequest build() {
226      return new FileRequestUpdateRequest(this);
227    }
228  }
229}