001package com.box.sdkgen.schemas.invite; 002 003import com.box.sdkgen.internal.NullableFieldTracker; 004import com.box.sdkgen.internal.SerializableObject; 005import com.box.sdkgen.internal.utils.DateTimeUtils; 006import com.box.sdkgen.schemas.usermini.UserMini; 007import com.box.sdkgen.serialization.json.EnumWrapper; 008import com.fasterxml.jackson.annotation.JsonFilter; 009import com.fasterxml.jackson.annotation.JsonProperty; 010import com.fasterxml.jackson.databind.annotation.JsonDeserialize; 011import com.fasterxml.jackson.databind.annotation.JsonSerialize; 012import java.time.OffsetDateTime; 013import java.util.Objects; 014 015/** An invite for a user to an enterprise. */ 016@JsonFilter("nullablePropertyFilter") 017public class Invite extends SerializableObject { 018 019 /** The unique identifier for this invite. */ 020 protected final String id; 021 022 /** The value will always be `invite`. */ 023 @JsonDeserialize(using = InviteTypeField.InviteTypeFieldDeserializer.class) 024 @JsonSerialize(using = InviteTypeField.InviteTypeFieldSerializer.class) 025 protected EnumWrapper<InviteTypeField> type; 026 027 /** A representation of a Box enterprise. */ 028 @JsonProperty("invited_to") 029 protected InviteInvitedToField invitedTo; 030 031 @JsonProperty("actionable_by") 032 protected UserMini actionableBy; 033 034 @JsonProperty("invited_by") 035 protected UserMini invitedBy; 036 037 /** The status of the invite. */ 038 protected String status; 039 040 /** When the invite was created. */ 041 @JsonProperty("created_at") 042 @JsonSerialize(using = DateTimeUtils.DateTimeSerializer.class) 043 @JsonDeserialize(using = DateTimeUtils.DateTimeDeserializer.class) 044 protected OffsetDateTime createdAt; 045 046 /** When the invite was modified. */ 047 @JsonProperty("modified_at") 048 @JsonSerialize(using = DateTimeUtils.DateTimeSerializer.class) 049 @JsonDeserialize(using = DateTimeUtils.DateTimeDeserializer.class) 050 protected OffsetDateTime modifiedAt; 051 052 public Invite(@JsonProperty("id") String id) { 053 super(); 054 this.id = id; 055 this.type = new EnumWrapper<InviteTypeField>(InviteTypeField.INVITE); 056 } 057 058 protected Invite(Builder builder) { 059 super(); 060 this.id = builder.id; 061 this.type = builder.type; 062 this.invitedTo = builder.invitedTo; 063 this.actionableBy = builder.actionableBy; 064 this.invitedBy = builder.invitedBy; 065 this.status = builder.status; 066 this.createdAt = builder.createdAt; 067 this.modifiedAt = builder.modifiedAt; 068 markNullableFieldsAsSet(builder.getExplicitlySetNullableFields()); 069 } 070 071 public String getId() { 072 return id; 073 } 074 075 public EnumWrapper<InviteTypeField> getType() { 076 return type; 077 } 078 079 public InviteInvitedToField getInvitedTo() { 080 return invitedTo; 081 } 082 083 public UserMini getActionableBy() { 084 return actionableBy; 085 } 086 087 public UserMini getInvitedBy() { 088 return invitedBy; 089 } 090 091 public String getStatus() { 092 return status; 093 } 094 095 public OffsetDateTime getCreatedAt() { 096 return createdAt; 097 } 098 099 public OffsetDateTime getModifiedAt() { 100 return modifiedAt; 101 } 102 103 @Override 104 public boolean equals(Object o) { 105 if (this == o) { 106 return true; 107 } 108 if (o == null || getClass() != o.getClass()) { 109 return false; 110 } 111 Invite casted = (Invite) o; 112 return Objects.equals(id, casted.id) 113 && Objects.equals(type, casted.type) 114 && Objects.equals(invitedTo, casted.invitedTo) 115 && Objects.equals(actionableBy, casted.actionableBy) 116 && Objects.equals(invitedBy, casted.invitedBy) 117 && Objects.equals(status, casted.status) 118 && Objects.equals(createdAt, casted.createdAt) 119 && Objects.equals(modifiedAt, casted.modifiedAt); 120 } 121 122 @Override 123 public int hashCode() { 124 return Objects.hash( 125 id, type, invitedTo, actionableBy, invitedBy, status, createdAt, modifiedAt); 126 } 127 128 @Override 129 public String toString() { 130 return "Invite{" 131 + "id='" 132 + id 133 + '\'' 134 + ", " 135 + "type='" 136 + type 137 + '\'' 138 + ", " 139 + "invitedTo='" 140 + invitedTo 141 + '\'' 142 + ", " 143 + "actionableBy='" 144 + actionableBy 145 + '\'' 146 + ", " 147 + "invitedBy='" 148 + invitedBy 149 + '\'' 150 + ", " 151 + "status='" 152 + status 153 + '\'' 154 + ", " 155 + "createdAt='" 156 + createdAt 157 + '\'' 158 + ", " 159 + "modifiedAt='" 160 + modifiedAt 161 + '\'' 162 + "}"; 163 } 164 165 public static class Builder extends NullableFieldTracker { 166 167 protected final String id; 168 169 protected EnumWrapper<InviteTypeField> type; 170 171 protected InviteInvitedToField invitedTo; 172 173 protected UserMini actionableBy; 174 175 protected UserMini invitedBy; 176 177 protected String status; 178 179 protected OffsetDateTime createdAt; 180 181 protected OffsetDateTime modifiedAt; 182 183 public Builder(String id) { 184 super(); 185 this.id = id; 186 } 187 188 public Builder type(InviteTypeField type) { 189 this.type = new EnumWrapper<InviteTypeField>(type); 190 return this; 191 } 192 193 public Builder type(EnumWrapper<InviteTypeField> type) { 194 this.type = type; 195 return this; 196 } 197 198 public Builder invitedTo(InviteInvitedToField invitedTo) { 199 this.invitedTo = invitedTo; 200 return this; 201 } 202 203 public Builder actionableBy(UserMini actionableBy) { 204 this.actionableBy = actionableBy; 205 return this; 206 } 207 208 public Builder invitedBy(UserMini invitedBy) { 209 this.invitedBy = invitedBy; 210 return this; 211 } 212 213 public Builder status(String status) { 214 this.status = status; 215 return this; 216 } 217 218 public Builder createdAt(OffsetDateTime createdAt) { 219 this.createdAt = createdAt; 220 return this; 221 } 222 223 public Builder modifiedAt(OffsetDateTime modifiedAt) { 224 this.modifiedAt = modifiedAt; 225 return this; 226 } 227 228 public Invite build() { 229 if (this.type == null) { 230 this.type = new EnumWrapper<InviteTypeField>(InviteTypeField.INVITE); 231 } 232 return new Invite(this); 233 } 234 } 235}