All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.squareup.square.models.FulfillmentPickupDetails Maven / Gradle / Ivy

There is a newer version: 41.2.0.20241017
Show newest version

package com.squareup.square.models;

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonGetter;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import io.apimatic.core.types.OptionalNullable;
import java.util.Objects;

/**
 * This is a model class for FulfillmentPickupDetails type.
 */
public class FulfillmentPickupDetails {
    private final FulfillmentRecipient recipient;
    private final OptionalNullable expiresAt;
    private final OptionalNullable autoCompleteDuration;
    private final String scheduleType;
    private final OptionalNullable pickupAt;
    private final OptionalNullable pickupWindowDuration;
    private final OptionalNullable prepTimeDuration;
    private final OptionalNullable note;
    private final String placedAt;
    private final String acceptedAt;
    private final String rejectedAt;
    private final String readyAt;
    private final String expiredAt;
    private final String pickedUpAt;
    private final String canceledAt;
    private final OptionalNullable cancelReason;
    private final OptionalNullable isCurbsidePickup;
    private final FulfillmentPickupDetailsCurbsidePickupDetails curbsidePickupDetails;

    /**
     * Initialization constructor.
     * @param  recipient  FulfillmentRecipient value for recipient.
     * @param  expiresAt  String value for expiresAt.
     * @param  autoCompleteDuration  String value for autoCompleteDuration.
     * @param  scheduleType  String value for scheduleType.
     * @param  pickupAt  String value for pickupAt.
     * @param  pickupWindowDuration  String value for pickupWindowDuration.
     * @param  prepTimeDuration  String value for prepTimeDuration.
     * @param  note  String value for note.
     * @param  placedAt  String value for placedAt.
     * @param  acceptedAt  String value for acceptedAt.
     * @param  rejectedAt  String value for rejectedAt.
     * @param  readyAt  String value for readyAt.
     * @param  expiredAt  String value for expiredAt.
     * @param  pickedUpAt  String value for pickedUpAt.
     * @param  canceledAt  String value for canceledAt.
     * @param  cancelReason  String value for cancelReason.
     * @param  isCurbsidePickup  Boolean value for isCurbsidePickup.
     * @param  curbsidePickupDetails  FulfillmentPickupDetailsCurbsidePickupDetails value for
     *         curbsidePickupDetails.
     */
    @JsonCreator
    public FulfillmentPickupDetails(
            @JsonProperty("recipient") FulfillmentRecipient recipient,
            @JsonProperty("expires_at") String expiresAt,
            @JsonProperty("auto_complete_duration") String autoCompleteDuration,
            @JsonProperty("schedule_type") String scheduleType,
            @JsonProperty("pickup_at") String pickupAt,
            @JsonProperty("pickup_window_duration") String pickupWindowDuration,
            @JsonProperty("prep_time_duration") String prepTimeDuration,
            @JsonProperty("note") String note,
            @JsonProperty("placed_at") String placedAt,
            @JsonProperty("accepted_at") String acceptedAt,
            @JsonProperty("rejected_at") String rejectedAt,
            @JsonProperty("ready_at") String readyAt,
            @JsonProperty("expired_at") String expiredAt,
            @JsonProperty("picked_up_at") String pickedUpAt,
            @JsonProperty("canceled_at") String canceledAt,
            @JsonProperty("cancel_reason") String cancelReason,
            @JsonProperty("is_curbside_pickup") Boolean isCurbsidePickup,
            @JsonProperty("curbside_pickup_details") FulfillmentPickupDetailsCurbsidePickupDetails curbsidePickupDetails) {
        this.recipient = recipient;
        this.expiresAt = OptionalNullable.of(expiresAt);
        this.autoCompleteDuration = OptionalNullable.of(autoCompleteDuration);
        this.scheduleType = scheduleType;
        this.pickupAt = OptionalNullable.of(pickupAt);
        this.pickupWindowDuration = OptionalNullable.of(pickupWindowDuration);
        this.prepTimeDuration = OptionalNullable.of(prepTimeDuration);
        this.note = OptionalNullable.of(note);
        this.placedAt = placedAt;
        this.acceptedAt = acceptedAt;
        this.rejectedAt = rejectedAt;
        this.readyAt = readyAt;
        this.expiredAt = expiredAt;
        this.pickedUpAt = pickedUpAt;
        this.canceledAt = canceledAt;
        this.cancelReason = OptionalNullable.of(cancelReason);
        this.isCurbsidePickup = OptionalNullable.of(isCurbsidePickup);
        this.curbsidePickupDetails = curbsidePickupDetails;
    }

    /**
     * Initialization constructor.
     * @param  recipient  FulfillmentRecipient value for recipient.
     * @param  expiresAt  String value for expiresAt.
     * @param  autoCompleteDuration  String value for autoCompleteDuration.
     * @param  scheduleType  String value for scheduleType.
     * @param  pickupAt  String value for pickupAt.
     * @param  pickupWindowDuration  String value for pickupWindowDuration.
     * @param  prepTimeDuration  String value for prepTimeDuration.
     * @param  note  String value for note.
     * @param  placedAt  String value for placedAt.
     * @param  acceptedAt  String value for acceptedAt.
     * @param  rejectedAt  String value for rejectedAt.
     * @param  readyAt  String value for readyAt.
     * @param  expiredAt  String value for expiredAt.
     * @param  pickedUpAt  String value for pickedUpAt.
     * @param  canceledAt  String value for canceledAt.
     * @param  cancelReason  String value for cancelReason.
     * @param  isCurbsidePickup  Boolean value for isCurbsidePickup.
     * @param  curbsidePickupDetails  FulfillmentPickupDetailsCurbsidePickupDetails value for
     *         curbsidePickupDetails.
     */

    protected FulfillmentPickupDetails(FulfillmentRecipient recipient,
            OptionalNullable expiresAt, OptionalNullable autoCompleteDuration,
            String scheduleType, OptionalNullable pickupAt,
            OptionalNullable pickupWindowDuration,
            OptionalNullable prepTimeDuration, OptionalNullable note,
            String placedAt, String acceptedAt, String rejectedAt, String readyAt, String expiredAt,
            String pickedUpAt, String canceledAt, OptionalNullable cancelReason,
            OptionalNullable isCurbsidePickup,
            FulfillmentPickupDetailsCurbsidePickupDetails curbsidePickupDetails) {
        this.recipient = recipient;
        this.expiresAt = expiresAt;
        this.autoCompleteDuration = autoCompleteDuration;
        this.scheduleType = scheduleType;
        this.pickupAt = pickupAt;
        this.pickupWindowDuration = pickupWindowDuration;
        this.prepTimeDuration = prepTimeDuration;
        this.note = note;
        this.placedAt = placedAt;
        this.acceptedAt = acceptedAt;
        this.rejectedAt = rejectedAt;
        this.readyAt = readyAt;
        this.expiredAt = expiredAt;
        this.pickedUpAt = pickedUpAt;
        this.canceledAt = canceledAt;
        this.cancelReason = cancelReason;
        this.isCurbsidePickup = isCurbsidePickup;
        this.curbsidePickupDetails = curbsidePickupDetails;
    }

    /**
     * Getter for Recipient.
     * Information about the fulfillment recipient.
     * @return Returns the FulfillmentRecipient
     */
    @JsonGetter("recipient")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public FulfillmentRecipient getRecipient() {
        return recipient;
    }

    /**
     * Internal Getter for ExpiresAt.
     * The [timestamp](https://developer.squareup.com/docs/build-basics/working-with-dates)
     * indicating when this fulfillment expires if it is not marked in progress. The timestamp must
     * be in RFC 3339 format (for example, "2016-09-04T23:59:33.123Z"). The expiration time can only
     * be set up to 7 days in the future. If `expires_at` is not set, any new payments attached to
     * the order are automatically completed.
     * @return Returns the Internal String
     */
    @JsonGetter("expires_at")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @JsonSerialize(using = OptionalNullable.Serializer.class)
    protected OptionalNullable internalGetExpiresAt() {
        return this.expiresAt;
    }

    /**
     * Getter for ExpiresAt.
     * The [timestamp](https://developer.squareup.com/docs/build-basics/working-with-dates)
     * indicating when this fulfillment expires if it is not marked in progress. The timestamp must
     * be in RFC 3339 format (for example, "2016-09-04T23:59:33.123Z"). The expiration time can only
     * be set up to 7 days in the future. If `expires_at` is not set, any new payments attached to
     * the order are automatically completed.
     * @return Returns the String
     */
    @JsonIgnore
    public String getExpiresAt() {
        return OptionalNullable.getFrom(expiresAt);
    }

    /**
     * Internal Getter for AutoCompleteDuration.
     * The duration of time after which an in progress pickup fulfillment is automatically moved to
     * the `COMPLETED` state. The duration must be in RFC 3339 format (for example, "P1W3D"). If not
     * set, this pickup fulfillment remains in progress until it is canceled or completed.
     * @return Returns the Internal String
     */
    @JsonGetter("auto_complete_duration")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @JsonSerialize(using = OptionalNullable.Serializer.class)
    protected OptionalNullable internalGetAutoCompleteDuration() {
        return this.autoCompleteDuration;
    }

    /**
     * Getter for AutoCompleteDuration.
     * The duration of time after which an in progress pickup fulfillment is automatically moved to
     * the `COMPLETED` state. The duration must be in RFC 3339 format (for example, "P1W3D"). If not
     * set, this pickup fulfillment remains in progress until it is canceled or completed.
     * @return Returns the String
     */
    @JsonIgnore
    public String getAutoCompleteDuration() {
        return OptionalNullable.getFrom(autoCompleteDuration);
    }

    /**
     * Getter for ScheduleType.
     * The schedule type of the pickup fulfillment.
     * @return Returns the String
     */
    @JsonGetter("schedule_type")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public String getScheduleType() {
        return scheduleType;
    }

    /**
     * Internal Getter for PickupAt.
     * The [timestamp](https://developer.squareup.com/docs/build-basics/working-with-dates) that
     * represents the start of the pickup window. Must be in RFC 3339 timestamp format, e.g.,
     * "2016-09-04T23:59:33.123Z". For fulfillments with the schedule type `ASAP`, this is
     * automatically set to the current time plus the expected duration to prepare the fulfillment.
     * @return Returns the Internal String
     */
    @JsonGetter("pickup_at")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @JsonSerialize(using = OptionalNullable.Serializer.class)
    protected OptionalNullable internalGetPickupAt() {
        return this.pickupAt;
    }

    /**
     * Getter for PickupAt.
     * The [timestamp](https://developer.squareup.com/docs/build-basics/working-with-dates) that
     * represents the start of the pickup window. Must be in RFC 3339 timestamp format, e.g.,
     * "2016-09-04T23:59:33.123Z". For fulfillments with the schedule type `ASAP`, this is
     * automatically set to the current time plus the expected duration to prepare the fulfillment.
     * @return Returns the String
     */
    @JsonIgnore
    public String getPickupAt() {
        return OptionalNullable.getFrom(pickupAt);
    }

    /**
     * Internal Getter for PickupWindowDuration.
     * The window of time in which the order should be picked up after the `pickup_at` timestamp.
     * Must be in RFC 3339 duration format, e.g., "P1W3D". Can be used as an informational guideline
     * for merchants.
     * @return Returns the Internal String
     */
    @JsonGetter("pickup_window_duration")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @JsonSerialize(using = OptionalNullable.Serializer.class)
    protected OptionalNullable internalGetPickupWindowDuration() {
        return this.pickupWindowDuration;
    }

    /**
     * Getter for PickupWindowDuration.
     * The window of time in which the order should be picked up after the `pickup_at` timestamp.
     * Must be in RFC 3339 duration format, e.g., "P1W3D". Can be used as an informational guideline
     * for merchants.
     * @return Returns the String
     */
    @JsonIgnore
    public String getPickupWindowDuration() {
        return OptionalNullable.getFrom(pickupWindowDuration);
    }

    /**
     * Internal Getter for PrepTimeDuration.
     * The duration of time it takes to prepare this fulfillment. The duration must be in RFC 3339
     * format (for example, "P1W3D").
     * @return Returns the Internal String
     */
    @JsonGetter("prep_time_duration")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @JsonSerialize(using = OptionalNullable.Serializer.class)
    protected OptionalNullable internalGetPrepTimeDuration() {
        return this.prepTimeDuration;
    }

    /**
     * Getter for PrepTimeDuration.
     * The duration of time it takes to prepare this fulfillment. The duration must be in RFC 3339
     * format (for example, "P1W3D").
     * @return Returns the String
     */
    @JsonIgnore
    public String getPrepTimeDuration() {
        return OptionalNullable.getFrom(prepTimeDuration);
    }

    /**
     * Internal Getter for Note.
     * A note to provide additional instructions about the pickup fulfillment displayed in the
     * Square Point of Sale application and set by the API.
     * @return Returns the Internal String
     */
    @JsonGetter("note")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @JsonSerialize(using = OptionalNullable.Serializer.class)
    protected OptionalNullable internalGetNote() {
        return this.note;
    }

    /**
     * Getter for Note.
     * A note to provide additional instructions about the pickup fulfillment displayed in the
     * Square Point of Sale application and set by the API.
     * @return Returns the String
     */
    @JsonIgnore
    public String getNote() {
        return OptionalNullable.getFrom(note);
    }

    /**
     * Getter for PlacedAt.
     * The [timestamp](https://developer.squareup.com/docs/build-basics/working-with-dates)
     * indicating when the fulfillment was placed. The timestamp must be in RFC 3339 format (for
     * example, "2016-09-04T23:59:33.123Z").
     * @return Returns the String
     */
    @JsonGetter("placed_at")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public String getPlacedAt() {
        return placedAt;
    }

    /**
     * Getter for AcceptedAt.
     * The [timestamp](https://developer.squareup.com/docs/build-basics/working-with-dates)
     * indicating when the fulfillment was marked in progress. The timestamp must be in RFC 3339
     * format (for example, "2016-09-04T23:59:33.123Z").
     * @return Returns the String
     */
    @JsonGetter("accepted_at")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public String getAcceptedAt() {
        return acceptedAt;
    }

    /**
     * Getter for RejectedAt.
     * The [timestamp](https://developer.squareup.com/docs/build-basics/working-with-dates)
     * indicating when the fulfillment was rejected. The timestamp must be in RFC 3339 format (for
     * example, "2016-09-04T23:59:33.123Z").
     * @return Returns the String
     */
    @JsonGetter("rejected_at")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public String getRejectedAt() {
        return rejectedAt;
    }

    /**
     * Getter for ReadyAt.
     * The [timestamp](https://developer.squareup.com/docs/build-basics/working-with-dates)
     * indicating when the fulfillment is marked as ready for pickup. The timestamp must be in RFC
     * 3339 format (for example, "2016-09-04T23:59:33.123Z").
     * @return Returns the String
     */
    @JsonGetter("ready_at")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public String getReadyAt() {
        return readyAt;
    }

    /**
     * Getter for ExpiredAt.
     * The [timestamp](https://developer.squareup.com/docs/build-basics/working-with-dates)
     * indicating when the fulfillment expired. The timestamp must be in RFC 3339 format (for
     * example, "2016-09-04T23:59:33.123Z").
     * @return Returns the String
     */
    @JsonGetter("expired_at")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public String getExpiredAt() {
        return expiredAt;
    }

    /**
     * Getter for PickedUpAt.
     * The [timestamp](https://developer.squareup.com/docs/build-basics/working-with-dates)
     * indicating when the fulfillment was picked up by the recipient. The timestamp must be in RFC
     * 3339 format (for example, "2016-09-04T23:59:33.123Z").
     * @return Returns the String
     */
    @JsonGetter("picked_up_at")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public String getPickedUpAt() {
        return pickedUpAt;
    }

    /**
     * Getter for CanceledAt.
     * The [timestamp](https://developer.squareup.com/docs/build-basics/working-with-dates)
     * indicating when the fulfillment was canceled. The timestamp must be in RFC 3339 format (for
     * example, "2016-09-04T23:59:33.123Z").
     * @return Returns the String
     */
    @JsonGetter("canceled_at")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public String getCanceledAt() {
        return canceledAt;
    }

    /**
     * Internal Getter for CancelReason.
     * A description of why the pickup was canceled. The maximum length: 100 characters.
     * @return Returns the Internal String
     */
    @JsonGetter("cancel_reason")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @JsonSerialize(using = OptionalNullable.Serializer.class)
    protected OptionalNullable internalGetCancelReason() {
        return this.cancelReason;
    }

    /**
     * Getter for CancelReason.
     * A description of why the pickup was canceled. The maximum length: 100 characters.
     * @return Returns the String
     */
    @JsonIgnore
    public String getCancelReason() {
        return OptionalNullable.getFrom(cancelReason);
    }

    /**
     * Internal Getter for IsCurbsidePickup.
     * If set to `true`, indicates that this pickup order is for curbside pickup, not in-store
     * pickup.
     * @return Returns the Internal Boolean
     */
    @JsonGetter("is_curbside_pickup")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @JsonSerialize(using = OptionalNullable.Serializer.class)
    protected OptionalNullable internalGetIsCurbsidePickup() {
        return this.isCurbsidePickup;
    }

    /**
     * Getter for IsCurbsidePickup.
     * If set to `true`, indicates that this pickup order is for curbside pickup, not in-store
     * pickup.
     * @return Returns the Boolean
     */
    @JsonIgnore
    public Boolean getIsCurbsidePickup() {
        return OptionalNullable.getFrom(isCurbsidePickup);
    }

    /**
     * Getter for CurbsidePickupDetails.
     * Specific details for curbside pickup.
     * @return Returns the FulfillmentPickupDetailsCurbsidePickupDetails
     */
    @JsonGetter("curbside_pickup_details")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public FulfillmentPickupDetailsCurbsidePickupDetails getCurbsidePickupDetails() {
        return curbsidePickupDetails;
    }

    @Override
    public int hashCode() {
        return Objects.hash(recipient, expiresAt, autoCompleteDuration, scheduleType, pickupAt,
                pickupWindowDuration, prepTimeDuration, note, placedAt, acceptedAt, rejectedAt,
                readyAt, expiredAt, pickedUpAt, canceledAt, cancelReason, isCurbsidePickup,
                curbsidePickupDetails);
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == this) {
            return true;
        }
        if (!(obj instanceof FulfillmentPickupDetails)) {
            return false;
        }
        FulfillmentPickupDetails other = (FulfillmentPickupDetails) obj;
        return Objects.equals(recipient, other.recipient)
            && Objects.equals(expiresAt, other.expiresAt)
            && Objects.equals(autoCompleteDuration, other.autoCompleteDuration)
            && Objects.equals(scheduleType, other.scheduleType)
            && Objects.equals(pickupAt, other.pickupAt)
            && Objects.equals(pickupWindowDuration, other.pickupWindowDuration)
            && Objects.equals(prepTimeDuration, other.prepTimeDuration)
            && Objects.equals(note, other.note)
            && Objects.equals(placedAt, other.placedAt)
            && Objects.equals(acceptedAt, other.acceptedAt)
            && Objects.equals(rejectedAt, other.rejectedAt)
            && Objects.equals(readyAt, other.readyAt)
            && Objects.equals(expiredAt, other.expiredAt)
            && Objects.equals(pickedUpAt, other.pickedUpAt)
            && Objects.equals(canceledAt, other.canceledAt)
            && Objects.equals(cancelReason, other.cancelReason)
            && Objects.equals(isCurbsidePickup, other.isCurbsidePickup)
            && Objects.equals(curbsidePickupDetails, other.curbsidePickupDetails);
    }

    /**
     * Converts this FulfillmentPickupDetails into string format.
     * @return String representation of this class
     */
    @Override
    public String toString() {
        return "FulfillmentPickupDetails [" + "recipient=" + recipient + ", expiresAt=" + expiresAt
                + ", autoCompleteDuration=" + autoCompleteDuration + ", scheduleType="
                + scheduleType + ", pickupAt=" + pickupAt + ", pickupWindowDuration="
                + pickupWindowDuration + ", prepTimeDuration=" + prepTimeDuration + ", note=" + note
                + ", placedAt=" + placedAt + ", acceptedAt=" + acceptedAt + ", rejectedAt="
                + rejectedAt + ", readyAt=" + readyAt + ", expiredAt=" + expiredAt + ", pickedUpAt="
                + pickedUpAt + ", canceledAt=" + canceledAt + ", cancelReason=" + cancelReason
                + ", isCurbsidePickup=" + isCurbsidePickup + ", curbsidePickupDetails="
                + curbsidePickupDetails + "]";
    }

    /**
     * Builds a new {@link FulfillmentPickupDetails.Builder} object.
     * Creates the instance with the state of the current model.
     * @return a new {@link FulfillmentPickupDetails.Builder} object
     */
    public Builder toBuilder() {
        Builder builder = new Builder()
                .recipient(getRecipient())
                .scheduleType(getScheduleType())
                .placedAt(getPlacedAt())
                .acceptedAt(getAcceptedAt())
                .rejectedAt(getRejectedAt())
                .readyAt(getReadyAt())
                .expiredAt(getExpiredAt())
                .pickedUpAt(getPickedUpAt())
                .canceledAt(getCanceledAt())
                .curbsidePickupDetails(getCurbsidePickupDetails());
        builder.expiresAt = internalGetExpiresAt();
        builder.autoCompleteDuration = internalGetAutoCompleteDuration();
        builder.pickupAt = internalGetPickupAt();
        builder.pickupWindowDuration = internalGetPickupWindowDuration();
        builder.prepTimeDuration = internalGetPrepTimeDuration();
        builder.note = internalGetNote();
        builder.cancelReason = internalGetCancelReason();
        builder.isCurbsidePickup = internalGetIsCurbsidePickup();
        return builder;
    }

    /**
     * Class to build instances of {@link FulfillmentPickupDetails}.
     */
    public static class Builder {
        private FulfillmentRecipient recipient;
        private OptionalNullable expiresAt;
        private OptionalNullable autoCompleteDuration;
        private String scheduleType;
        private OptionalNullable pickupAt;
        private OptionalNullable pickupWindowDuration;
        private OptionalNullable prepTimeDuration;
        private OptionalNullable note;
        private String placedAt;
        private String acceptedAt;
        private String rejectedAt;
        private String readyAt;
        private String expiredAt;
        private String pickedUpAt;
        private String canceledAt;
        private OptionalNullable cancelReason;
        private OptionalNullable isCurbsidePickup;
        private FulfillmentPickupDetailsCurbsidePickupDetails curbsidePickupDetails;



        /**
         * Setter for recipient.
         * @param  recipient  FulfillmentRecipient value for recipient.
         * @return Builder
         */
        public Builder recipient(FulfillmentRecipient recipient) {
            this.recipient = recipient;
            return this;
        }

        /**
         * Setter for expiresAt.
         * @param  expiresAt  String value for expiresAt.
         * @return Builder
         */
        public Builder expiresAt(String expiresAt) {
            this.expiresAt = OptionalNullable.of(expiresAt);
            return this;
        }

        /**
         * UnSetter for expiresAt.
         * @return Builder
         */
        public Builder unsetExpiresAt() {
            expiresAt = null;
            return this;
        }

        /**
         * Setter for autoCompleteDuration.
         * @param  autoCompleteDuration  String value for autoCompleteDuration.
         * @return Builder
         */
        public Builder autoCompleteDuration(String autoCompleteDuration) {
            this.autoCompleteDuration = OptionalNullable.of(autoCompleteDuration);
            return this;
        }

        /**
         * UnSetter for autoCompleteDuration.
         * @return Builder
         */
        public Builder unsetAutoCompleteDuration() {
            autoCompleteDuration = null;
            return this;
        }

        /**
         * Setter for scheduleType.
         * @param  scheduleType  String value for scheduleType.
         * @return Builder
         */
        public Builder scheduleType(String scheduleType) {
            this.scheduleType = scheduleType;
            return this;
        }

        /**
         * Setter for pickupAt.
         * @param  pickupAt  String value for pickupAt.
         * @return Builder
         */
        public Builder pickupAt(String pickupAt) {
            this.pickupAt = OptionalNullable.of(pickupAt);
            return this;
        }

        /**
         * UnSetter for pickupAt.
         * @return Builder
         */
        public Builder unsetPickupAt() {
            pickupAt = null;
            return this;
        }

        /**
         * Setter for pickupWindowDuration.
         * @param  pickupWindowDuration  String value for pickupWindowDuration.
         * @return Builder
         */
        public Builder pickupWindowDuration(String pickupWindowDuration) {
            this.pickupWindowDuration = OptionalNullable.of(pickupWindowDuration);
            return this;
        }

        /**
         * UnSetter for pickupWindowDuration.
         * @return Builder
         */
        public Builder unsetPickupWindowDuration() {
            pickupWindowDuration = null;
            return this;
        }

        /**
         * Setter for prepTimeDuration.
         * @param  prepTimeDuration  String value for prepTimeDuration.
         * @return Builder
         */
        public Builder prepTimeDuration(String prepTimeDuration) {
            this.prepTimeDuration = OptionalNullable.of(prepTimeDuration);
            return this;
        }

        /**
         * UnSetter for prepTimeDuration.
         * @return Builder
         */
        public Builder unsetPrepTimeDuration() {
            prepTimeDuration = null;
            return this;
        }

        /**
         * Setter for note.
         * @param  note  String value for note.
         * @return Builder
         */
        public Builder note(String note) {
            this.note = OptionalNullable.of(note);
            return this;
        }

        /**
         * UnSetter for note.
         * @return Builder
         */
        public Builder unsetNote() {
            note = null;
            return this;
        }

        /**
         * Setter for placedAt.
         * @param  placedAt  String value for placedAt.
         * @return Builder
         */
        public Builder placedAt(String placedAt) {
            this.placedAt = placedAt;
            return this;
        }

        /**
         * Setter for acceptedAt.
         * @param  acceptedAt  String value for acceptedAt.
         * @return Builder
         */
        public Builder acceptedAt(String acceptedAt) {
            this.acceptedAt = acceptedAt;
            return this;
        }

        /**
         * Setter for rejectedAt.
         * @param  rejectedAt  String value for rejectedAt.
         * @return Builder
         */
        public Builder rejectedAt(String rejectedAt) {
            this.rejectedAt = rejectedAt;
            return this;
        }

        /**
         * Setter for readyAt.
         * @param  readyAt  String value for readyAt.
         * @return Builder
         */
        public Builder readyAt(String readyAt) {
            this.readyAt = readyAt;
            return this;
        }

        /**
         * Setter for expiredAt.
         * @param  expiredAt  String value for expiredAt.
         * @return Builder
         */
        public Builder expiredAt(String expiredAt) {
            this.expiredAt = expiredAt;
            return this;
        }

        /**
         * Setter for pickedUpAt.
         * @param  pickedUpAt  String value for pickedUpAt.
         * @return Builder
         */
        public Builder pickedUpAt(String pickedUpAt) {
            this.pickedUpAt = pickedUpAt;
            return this;
        }

        /**
         * Setter for canceledAt.
         * @param  canceledAt  String value for canceledAt.
         * @return Builder
         */
        public Builder canceledAt(String canceledAt) {
            this.canceledAt = canceledAt;
            return this;
        }

        /**
         * Setter for cancelReason.
         * @param  cancelReason  String value for cancelReason.
         * @return Builder
         */
        public Builder cancelReason(String cancelReason) {
            this.cancelReason = OptionalNullable.of(cancelReason);
            return this;
        }

        /**
         * UnSetter for cancelReason.
         * @return Builder
         */
        public Builder unsetCancelReason() {
            cancelReason = null;
            return this;
        }

        /**
         * Setter for isCurbsidePickup.
         * @param  isCurbsidePickup  Boolean value for isCurbsidePickup.
         * @return Builder
         */
        public Builder isCurbsidePickup(Boolean isCurbsidePickup) {
            this.isCurbsidePickup = OptionalNullable.of(isCurbsidePickup);
            return this;
        }

        /**
         * UnSetter for isCurbsidePickup.
         * @return Builder
         */
        public Builder unsetIsCurbsidePickup() {
            isCurbsidePickup = null;
            return this;
        }

        /**
         * Setter for curbsidePickupDetails.
         * @param  curbsidePickupDetails  FulfillmentPickupDetailsCurbsidePickupDetails value for
         *         curbsidePickupDetails.
         * @return Builder
         */
        public Builder curbsidePickupDetails(
                FulfillmentPickupDetailsCurbsidePickupDetails curbsidePickupDetails) {
            this.curbsidePickupDetails = curbsidePickupDetails;
            return this;
        }

        /**
         * Builds a new {@link FulfillmentPickupDetails} object using the set fields.
         * @return {@link FulfillmentPickupDetails}
         */
        public FulfillmentPickupDetails build() {
            return new FulfillmentPickupDetails(recipient, expiresAt, autoCompleteDuration,
                    scheduleType, pickupAt, pickupWindowDuration, prepTimeDuration, note, placedAt,
                    acceptedAt, rejectedAt, readyAt, expiredAt, pickedUpAt, canceledAt,
                    cancelReason, isCurbsidePickup, curbsidePickupDetails);
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy