001
002package com.commercetools.api.models.cart_discount;
003
004import java.util.Optional;
005
006import com.commercetools.api.models.channel.ChannelReference;
007import com.commercetools.api.models.product.ProductReference;
008
009public interface CartDiscountValueGiftLineItemMixin
010        extends GenericCartDiscountValueMixin<CartDiscountValueGiftLineItemDraft> {
011    public ProductReference getProduct();
012
013    public Long getVariantId();
014
015    public ChannelReference getSupplyChannel();
016
017    public ChannelReference getDistributionChannel();
018
019    @Override
020    default CartDiscountValueGiftLineItemDraft toDraft() {
021        return toDraftBuilder().build();
022    }
023
024    @Override
025    default CartDiscountValueGiftLineItemDraftBuilder toDraftBuilder() {
026        return CartDiscountValueGiftLineItemDraft.builder()
027                .distributionChannel(Optional.ofNullable(getDistributionChannel())
028                        .map(ChannelReference::toResourceIdentifier)
029                        .orElse(null))
030                .supplyChannel(
031                    Optional.ofNullable(getSupplyChannel()).map(ChannelReference::toResourceIdentifier).orElse(null))
032                .product(Optional.ofNullable(getProduct()).map(ProductReference::toResourceIdentifier).orElse(null))
033                .variantId(getVariantId());
034    }
035}