Sale.java

package org.oxerr.viagogo.model.response.sale;

import java.time.Instant;
import java.util.List;

import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.oxerr.viagogo.model.request.inventory.SaleBarcodeUpload;
import org.oxerr.viagogo.model.response.catalog.EmbeddedEvent;
import org.oxerr.viagogo.model.response.catalog.EmbeddedVenue;
import org.oxerr.viagogo.model.response.inventory.TicketType;

import io.openapitools.jackson.dataformat.hal.HALLink;
import io.openapitools.jackson.dataformat.hal.annotation.EmbeddedResource;
import io.openapitools.jackson.dataformat.hal.annotation.Link;

public class Sale extends EmbeddedSale {

	private static final long serialVersionUID = 2023021801L;

	/**
	 * A short localised string describing the current status of the sale.
	 */
	private String status;

	/**
	 * A localised in-depth description of the current status of the sale.
	 */
	private String statusDescription;

	/**
	 * The date by which the seller must confirm the sale.
	 */
	private Instant confirmBy;

	/**
	 * The date by which the seller must ship the tickets.
	 */
	private Instant shipBy;

	private Instant updatedAt;

	/**
	 * The listing identifier assigned by an external system,
	 * typically generated by the seller's inventory management software.
	 */
	private String externalListingId;

	/**
	 * The barcode(s) for the ticket(s).
	 */
	private List<SaleBarcodeUpload> barcodes;

	/**
	 * Boolean value that is set to true for legacy stubhub orders.
	 */
	private Boolean isLegacyStubhubOrder;

	/**
	 * The date and time that the seller has the tickets 'in hand' to deliver
	 * to the buyer.
	 */
	private Instant inHandAt;

	/**
	 * The webpage where a shipment of tickets can be tracked automatically.
	 */
	@Link("sale:autotrackshipment")
	private HALLink autotraceShipmentLink;

	@Link("sale:changepapertickettoeticket")
	private HALLink changepapertickettoeticket;

	/**
	 * Confirm the sale.
	 */
	@Link("sale:confirm")
	private HALLink confirmLink;

	@Link("sale:contactuswebpage")
	private HALLink contactUsWebPageLink;

	/**
	 * The uploaded E-Tickets that have been assigned to the tickets
	 * that have been sold.
	 */
	@Link("sale:etickets")
	private HALLink eTicketLink;

	/**
	 * The uploaded files containing E-Tickets that have not been assigned to
	 * the tickets that have been sold.
	 */
	@Link("sale:eticketuploads")
	private HALLink eTicketUploadsLink;

	@Link("sale:listing")
	private HALLink listingLink;

	/**
	 * Report a problem with the sale.
	 */
	@Link("sale:reject")
	private HALLink rejectLink;

	/**
	 * Assign uploaded E-Tickets to the tickets that have been sold.
	 */
	@Link("sale:saveetickets")
	private HALLink saveETicketsLink;

	/**
	 * The shipments related to a sale.
	 */
	@Link("sale:shipments")
	private HALLink shipmentsLink;

	@Link("sale:ticketholders")
	private HALLink ticketHoldersLink;

	/**
	 * The webpage where a shipment of tickets can be tracked
	 * after entering the tracking_number.
	 */
	@Link("sale:trackshipment")
	private HALLink trackShipmentLink;

	/**
	 * Upload a file containing E-Tickets.
	 */
	@Link("sale:uploadetickets")
	private HALLink uploadETicketsLink;

	@Link("sale:uploadeticketurls")
	private HALLink uploadSaleETicketUrlsLink;

	@Link("sale:savetransferreceipts")
	private HALLink saveTransferReceiptsLink;

	@Link("sale:uploadtransferreceipts")
	private HALLink uploadTransferReceiptLink;

	@Link("sale:webpage")
	private HALLink webPageLink;

	@EmbeddedResource
	private EmbeddedEvent event;

	@EmbeddedResource
	private EmbeddedVenue venue;

	@EmbeddedResource
	private TicketType ticketType;

	@EmbeddedResource
	private DeliveryMethod deliveryMethod;

	public String getStatus() {
		return status;
	}

	public void setStatus(String status) {
		this.status = status;
	}

	public String getStatusDescription() {
		return statusDescription;
	}

	public void setStatusDescription(String statusDescription) {
		this.statusDescription = statusDescription;
	}

	public Instant getConfirmBy() {
		return confirmBy;
	}

	public void setConfirmBy(Instant confirmBy) {
		this.confirmBy = confirmBy;
	}

	public Instant getShipBy() {
		return shipBy;
	}

	public void setShipBy(Instant shipBy) {
		this.shipBy = shipBy;
	}

	public Instant getUpdatedAt() {
		return updatedAt;
	}

	public void setUpdatedAt(Instant updatedAt) {
		this.updatedAt = updatedAt;
	}

	public String getExternalListingId() {
		return externalListingId;
	}

	public void setExternalListingId(String externalListingId) {
		this.externalListingId = externalListingId;
	}

	public List<SaleBarcodeUpload> getBarcodes() {
		return barcodes;
	}

	public void setBarcodes(List<SaleBarcodeUpload> barcodes) {
		this.barcodes = barcodes;
	}

	public Boolean getIsLegacyStubhubOrder() {
		return isLegacyStubhubOrder;
	}

	public void setIsLegacyStubhubOrder(Boolean isLegacyStubhubOrder) {
		this.isLegacyStubhubOrder = isLegacyStubhubOrder;
	}

	public Instant getInHandAt() {
		return inHandAt;
	}

	public void setInHandAt(Instant inHandAt) {
		this.inHandAt = inHandAt;
	}

	public HALLink getAutotraceShipmentLink() {
		return autotraceShipmentLink;
	}

	public void setAutotraceShipmentLink(HALLink autotraceShipmentLink) {
		this.autotraceShipmentLink = autotraceShipmentLink;
	}

	public HALLink getChangepapertickettoeticket() {
		return changepapertickettoeticket;
	}

	public void setChangepapertickettoeticket(HALLink changepapertickettoeticket) {
		this.changepapertickettoeticket = changepapertickettoeticket;
	}

	public HALLink getConfirmLink() {
		return confirmLink;
	}

	public void setConfirmLink(HALLink confirmLink) {
		this.confirmLink = confirmLink;
	}

	public HALLink getContactUsWebPageLink() {
		return contactUsWebPageLink;
	}

	public void setContactUsWebPageLink(HALLink contactUsWebPageLink) {
		this.contactUsWebPageLink = contactUsWebPageLink;
	}

	public HALLink geteTicketLink() {
		return eTicketLink;
	}

	public void seteTicketLink(HALLink eTicketLink) {
		this.eTicketLink = eTicketLink;
	}

	public HALLink geteTicketUploadsLink() {
		return eTicketUploadsLink;
	}

	public void seteTicketUploadsLink(HALLink eTicketUploadsLink) {
		this.eTicketUploadsLink = eTicketUploadsLink;
	}

	public HALLink getListingLink() {
		return listingLink;
	}

	public void setListingLink(HALLink listingLink) {
		this.listingLink = listingLink;
	}

	public HALLink getRejectLink() {
		return rejectLink;
	}

	public void setRejectLink(HALLink rejectLink) {
		this.rejectLink = rejectLink;
	}

	public HALLink getSaveETicketsLink() {
		return saveETicketsLink;
	}

	public void setSaveETicketsLink(HALLink saveETicketsLink) {
		this.saveETicketsLink = saveETicketsLink;
	}

	public HALLink getShipmentsLink() {
		return shipmentsLink;
	}

	public void setShipmentsLink(HALLink shipmentsLink) {
		this.shipmentsLink = shipmentsLink;
	}

	public HALLink getTicketHoldersLink() {
		return ticketHoldersLink;
	}

	public void setTicketHoldersLink(HALLink ticketHoldersLink) {
		this.ticketHoldersLink = ticketHoldersLink;
	}

	public HALLink getTrackShipmentLink() {
		return trackShipmentLink;
	}

	public void setTrackShipmentLink(HALLink trackShipmentLink) {
		this.trackShipmentLink = trackShipmentLink;
	}

	public HALLink getUploadETicketsLink() {
		return uploadETicketsLink;
	}

	public void setUploadETicketsLink(HALLink uploadETicketsLink) {
		this.uploadETicketsLink = uploadETicketsLink;
	}

	public HALLink getUploadSaleETicketUrlsLink() {
		return uploadSaleETicketUrlsLink;
	}

	public void setUploadSaleETicketUrlsLink(HALLink uploadSaleETicketUrlsLink) {
		this.uploadSaleETicketUrlsLink = uploadSaleETicketUrlsLink;
	}

	public HALLink getSaveTransferReceiptsLink() {
		return saveTransferReceiptsLink;
	}

	public void setSaveTransferReceiptsLink(HALLink saveTransferReceiptsLink) {
		this.saveTransferReceiptsLink = saveTransferReceiptsLink;
	}

	public HALLink getUploadTransferReceiptLink() {
		return uploadTransferReceiptLink;
	}

	public void setUploadTransferReceiptLink(HALLink uploadTransferReceiptLink) {
		this.uploadTransferReceiptLink = uploadTransferReceiptLink;
	}

	public HALLink getWebPageLink() {
		return webPageLink;
	}

	public void setWebPageLink(HALLink webPageLink) {
		this.webPageLink = webPageLink;
	}

	public EmbeddedEvent getEvent() {
		return event;
	}

	public void setEvent(EmbeddedEvent event) {
		this.event = event;
	}

	public EmbeddedVenue getVenue() {
		return venue;
	}

	public void setVenue(EmbeddedVenue venue) {
		this.venue = venue;
	}

	public TicketType getTicketType() {
		return ticketType;
	}

	public void setTicketType(TicketType ticketType) {
		this.ticketType = ticketType;
	}

	public DeliveryMethod getDeliveryMethod() {
		return deliveryMethod;
	}

	public void setDeliveryMethod(DeliveryMethod deliveryMethod) {
		this.deliveryMethod = deliveryMethod;
	}

	@Override
	public int hashCode() {
		return HashCodeBuilder.reflectionHashCode(this);
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj) {
			return true;
		}
		if (!(obj instanceof Sale)) {
			return false;
		}
		Sale rhs = (Sale) obj;
		return EqualsBuilder.reflectionEquals(this, rhs);
	}

}