diff --git a/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/ApiVersion.java b/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/ApiVersion.java index 059445b4c..fa5d9ca51 100644 --- a/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/ApiVersion.java +++ b/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/ApiVersion.java @@ -2,6 +2,7 @@ public final class ApiVersion { + public static final long V20201104 = 20201104; public static final long V20201005 = 20201005; public static final long V20200518 = 20200518; public static final long V20200513 = 20200513; @@ -26,7 +27,7 @@ public final class ApiVersion public static final long V20180101 = 20180101; public static final long NO_VERSION = 0; - public static final Long LATEST_API_VERSION = V20201005; + public static final Long LATEST_API_VERSION = V20201104; private ApiVersion() { diff --git a/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/dto/CustomResellingPriceDTO.java b/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/dto/CustomResellingPriceDTO.java index 9f1a1d9fe..5f242f5e8 100644 --- a/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/dto/CustomResellingPriceDTO.java +++ b/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/dto/CustomResellingPriceDTO.java @@ -2,15 +2,31 @@ import com.cloudesire.platform.apiclient.dto.ApiVersion; import com.cloudesire.platform.apiclient.dto.annotations.FieldAPI; +import com.cloudesire.platform.apiclient.dto.annotations.UnsupportedAPI; import com.cloudesire.platform.apiclient.dto.model.enums.CustomCostRuleType; +import javax.validation.Valid; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; import java.math.BigDecimal; +import java.util.List; import java.util.Objects; -public class CustomResellingPriceDTO extends BaseResellingPriceDTO +import static java.util.Collections.singletonList; + +public class CustomResellingPriceDTO extends BaseEntityDTO { + @Valid + private UrlEntityDTO resellerPricing; + + @FieldAPI( sinceVersion = ApiVersion.V20201104 ) + @Valid + private List prices; + + @UnsupportedAPI( sinceVersion = ApiVersion.V20201104 ) + @Valid + private ResellingPriceDTO price; + @NotNull @Size( min = 1, max = 125 ) private String identifier; @@ -27,7 +43,7 @@ public CustomResellingPriceDTO( CustomCostRuleType ruleType, String identifier, public CustomResellingPriceDTO( String identifier, BigDecimal sellout ) { this.identifier = identifier; - this.price = new ResellingPriceDTO( null, sellout ); + this.prices = singletonList( new VariableResellingPriceDTO( sellout ) ); this.rule = new CustomCostRuleDTO( CustomCostRuleType.EXACT, 0 ); } @@ -35,6 +51,44 @@ public CustomResellingPriceDTO() { } + public UrlEntityDTO getResellerPricing() + { + return resellerPricing; + } + + public void setResellerPricing( UrlEntityDTO resellerPricing ) + { + this.resellerPricing = resellerPricing; + } + + public List getPrices() + { + return prices; + } + + public void setPrices( List prices ) + { + this.prices = prices; + } + + /** + * @deprecated by {@link #getPrices()} + */ + @Deprecated + public ResellingPriceDTO getPrice() + { + return price; + } + + /** + * @deprecated by {@link #setPrices(List)} + */ + @Deprecated + public void setPrice( ResellingPriceDTO price ) + { + this.price = price; + } + public String getIdentifier() { return identifier; diff --git a/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/dto/VariableResellingPriceDTO.java b/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/dto/VariableResellingPriceDTO.java new file mode 100644 index 000000000..421c12df8 --- /dev/null +++ b/cloudesire-api-client-dto/src/main/java/com/cloudesire/platform/apiclient/dto/model/dto/VariableResellingPriceDTO.java @@ -0,0 +1,67 @@ +package com.cloudesire.platform.apiclient.dto.model.dto; + +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; +import java.util.Objects; + +public class VariableResellingPriceDTO extends NamedEntityDTO +{ + @NotNull + private Integer duration; + + private BigDecimal sellout; + + // region Auto-generated code + public VariableResellingPriceDTO( String name, Integer duration, BigDecimal sellout ) + { + super( name ); + this.duration = duration; + this.sellout = sellout; + } + + public VariableResellingPriceDTO( BigDecimal sellout ) + { + this( "Default", 0, sellout ); + } + + public VariableResellingPriceDTO() + { + } + + public Integer getDuration() + { + return duration; + } + + public void setDuration( Integer duration ) + { + this.duration = duration; + } + + public BigDecimal getSellout() + { + return sellout; + } + + public void setSellout( BigDecimal sellout ) + { + this.sellout = sellout; + } + + @Override + public boolean equals( Object o ) + { + if ( this == o ) return true; + if ( o == null || getClass() != o.getClass() ) return false; + if ( ! super.equals( o ) ) return false; + VariableResellingPriceDTO that = (VariableResellingPriceDTO) o; + return Objects.equals( duration, that.duration ) && Objects.equals( sellout, that.sellout ); + } + + @Override + public int hashCode() + { + return Objects.hash( super.hashCode(), duration, sellout ); + } + // endregion +}