001package com.box.sdkgen.managers.tasks;
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@JsonFilter("nullablePropertyFilter")
015public class UpdateTaskByIdRequestBody extends SerializableObject {
016
017  /**
018   * The action the task assignee will be prompted to do. Must be
019   *
020   * <p>* `review` defines an approval task that can be approved or rejected, * `complete` defines a
021   * general task which can be completed.
022   */
023  @JsonDeserialize(
024      using =
025          UpdateTaskByIdRequestBodyActionField.UpdateTaskByIdRequestBodyActionFieldDeserializer
026              .class)
027  @JsonSerialize(
028      using =
029          UpdateTaskByIdRequestBodyActionField.UpdateTaskByIdRequestBodyActionFieldSerializer.class)
030  protected EnumWrapper<UpdateTaskByIdRequestBodyActionField> action;
031
032  /** The message included with the task. */
033  protected String message;
034
035  /** When the task is due at. */
036  @JsonProperty("due_at")
037  @JsonSerialize(using = DateTimeUtils.DateTimeSerializer.class)
038  @JsonDeserialize(using = DateTimeUtils.DateTimeDeserializer.class)
039  protected OffsetDateTime dueAt;
040
041  /**
042   * Defines which assignees need to complete this task before the task is considered completed.
043   *
044   * <p>* `all_assignees` (default) requires all assignees to review or approve the task in order
045   * for it to be considered completed. * `any_assignee` accepts any one assignee to review or
046   * approve the task in order for it to be considered completed.
047   */
048  @JsonDeserialize(
049      using =
050          UpdateTaskByIdRequestBodyCompletionRuleField
051              .UpdateTaskByIdRequestBodyCompletionRuleFieldDeserializer.class)
052  @JsonSerialize(
053      using =
054          UpdateTaskByIdRequestBodyCompletionRuleField
055              .UpdateTaskByIdRequestBodyCompletionRuleFieldSerializer.class)
056  @JsonProperty("completion_rule")
057  protected EnumWrapper<UpdateTaskByIdRequestBodyCompletionRuleField> completionRule;
058
059  public UpdateTaskByIdRequestBody() {
060    super();
061  }
062
063  protected UpdateTaskByIdRequestBody(Builder builder) {
064    super();
065    this.action = builder.action;
066    this.message = builder.message;
067    this.dueAt = builder.dueAt;
068    this.completionRule = builder.completionRule;
069    markNullableFieldsAsSet(builder.getExplicitlySetNullableFields());
070  }
071
072  public EnumWrapper<UpdateTaskByIdRequestBodyActionField> getAction() {
073    return action;
074  }
075
076  public String getMessage() {
077    return message;
078  }
079
080  public OffsetDateTime getDueAt() {
081    return dueAt;
082  }
083
084  public EnumWrapper<UpdateTaskByIdRequestBodyCompletionRuleField> getCompletionRule() {
085    return completionRule;
086  }
087
088  @Override
089  public boolean equals(Object o) {
090    if (this == o) {
091      return true;
092    }
093    if (o == null || getClass() != o.getClass()) {
094      return false;
095    }
096    UpdateTaskByIdRequestBody casted = (UpdateTaskByIdRequestBody) o;
097    return Objects.equals(action, casted.action)
098        && Objects.equals(message, casted.message)
099        && Objects.equals(dueAt, casted.dueAt)
100        && Objects.equals(completionRule, casted.completionRule);
101  }
102
103  @Override
104  public int hashCode() {
105    return Objects.hash(action, message, dueAt, completionRule);
106  }
107
108  @Override
109  public String toString() {
110    return "UpdateTaskByIdRequestBody{"
111        + "action='"
112        + action
113        + '\''
114        + ", "
115        + "message='"
116        + message
117        + '\''
118        + ", "
119        + "dueAt='"
120        + dueAt
121        + '\''
122        + ", "
123        + "completionRule='"
124        + completionRule
125        + '\''
126        + "}";
127  }
128
129  public static class Builder extends NullableFieldTracker {
130
131    protected EnumWrapper<UpdateTaskByIdRequestBodyActionField> action;
132
133    protected String message;
134
135    protected OffsetDateTime dueAt;
136
137    protected EnumWrapper<UpdateTaskByIdRequestBodyCompletionRuleField> completionRule;
138
139    public Builder action(UpdateTaskByIdRequestBodyActionField action) {
140      this.action = new EnumWrapper<UpdateTaskByIdRequestBodyActionField>(action);
141      return this;
142    }
143
144    public Builder action(EnumWrapper<UpdateTaskByIdRequestBodyActionField> action) {
145      this.action = action;
146      return this;
147    }
148
149    public Builder message(String message) {
150      this.message = message;
151      return this;
152    }
153
154    public Builder dueAt(OffsetDateTime dueAt) {
155      this.dueAt = dueAt;
156      return this;
157    }
158
159    public Builder completionRule(UpdateTaskByIdRequestBodyCompletionRuleField completionRule) {
160      this.completionRule =
161          new EnumWrapper<UpdateTaskByIdRequestBodyCompletionRuleField>(completionRule);
162      return this;
163    }
164
165    public Builder completionRule(
166        EnumWrapper<UpdateTaskByIdRequestBodyCompletionRuleField> completionRule) {
167      this.completionRule = completionRule;
168      return this;
169    }
170
171    public UpdateTaskByIdRequestBody build() {
172      return new UpdateTaskByIdRequestBody(this);
173    }
174  }
175}