Skip to content

Commit

Permalink
#111 update admin ui for supporting the new additional service types …
Browse files Browse the repository at this point in the history
…and policies
  • Loading branch information
syjer committed May 21, 2017
1 parent 4d495d4 commit d5a9e19
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 11 deletions.
13 changes: 8 additions & 5 deletions src/main/java/alfio/model/modification/EventModification.java
Original file line number Diff line number Diff line change
Expand Up @@ -221,7 +221,7 @@ public static class AdditionalService {
private final BigDecimal finalPrice;
private final String currencyCode;
private final alfio.model.AdditionalService.AdditionalServiceType type;
private final alfio.model.AdditionalService.SupplementPolicy supplementPolicy = null;
private final alfio.model.AdditionalService.SupplementPolicy supplementPolicy;

@JsonCreator
public AdditionalService(@JsonProperty("id") Integer id,
Expand All @@ -237,8 +237,9 @@ public AdditionalService(@JsonProperty("id") Integer id,
@JsonProperty("additionalServiceFields") List<AdditionalField> additionalServiceFields,
@JsonProperty("title") List<AdditionalServiceText> title,
@JsonProperty("description") List<AdditionalServiceText> description,
@JsonProperty("type")alfio.model.AdditionalService.AdditionalServiceType type) {
this(id, price, fixPrice, ordinal, availableQuantity, maxQtyPerOrder, inception, expiration, vat, vatType, additionalServiceFields, title, description, null, null, type);
@JsonProperty("type")alfio.model.AdditionalService.AdditionalServiceType type,
@JsonProperty("supplementPolicy")alfio.model.AdditionalService.SupplementPolicy supplementPolicy) {
this(id, price, fixPrice, ordinal, availableQuantity, maxQtyPerOrder, inception, expiration, vat, vatType, additionalServiceFields, title, description, null, null, type, supplementPolicy);
}

private AdditionalService(Integer id,
Expand All @@ -256,7 +257,8 @@ private AdditionalService(Integer id,
List<AdditionalServiceText> description,
BigDecimal finalPrice,
String currencyCode,
alfio.model.AdditionalService.AdditionalServiceType type) {
alfio.model.AdditionalService.AdditionalServiceType type,
alfio.model.AdditionalService.SupplementPolicy supplementPolicy) {
this.id = id;
this.price = price;
this.fixPrice = fixPrice;
Expand All @@ -273,6 +275,7 @@ private AdditionalService(Integer id,
this.finalPrice = finalPrice;
this.currencyCode = currencyCode;
this.type = type;
this.supplementPolicy = supplementPolicy;
}

public static Builder from(alfio.model.AdditionalService src) {
Expand Down Expand Up @@ -317,7 +320,7 @@ public AdditionalService build() {
String currencyCode = priceContainer.map(PriceContainer::getCurrencyCode).orElse("");
return new AdditionalService(src.getId(), Optional.ofNullable(src.getSrcPriceCts()).map(MonetaryUtil::centsToUnit).orElse(BigDecimal.ZERO),
src.isFixPrice(), src.getOrdinal(), src.getAvailableQuantity(), src.getMaxQtyPerOrder(), DateTimeModification.fromZonedDateTime(src.getInception(zoneId)),
DateTimeModification.fromZonedDateTime(src.getExpiration(zoneId)), src.getVat(), src.getVatType(), additionalServiceFields, title, description, finalPrice, currencyCode, src.getType());
DateTimeModification.fromZonedDateTime(src.getExpiration(zoneId)), src.getVat(), src.getVatType(), additionalServiceFields, title, description, finalPrice, currencyCode, src.getType(), src.getSupplementPolicy());
}

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -223,7 +223,7 @@
availableQuantity: -1,
maxQtyPerOrder: 1,
priceInCents: 0,
fixPrice: false,
fixPrice: ctrl.type === 'SUPPLEMENT',
inception: {},
expiration: {}
};
Expand Down Expand Up @@ -260,6 +260,12 @@
{key: 'CUSTOM_INCLUDED', value::'Price VAT inclusive, apply special VAT'},
{key: 'CUSTOM_EXCLUDED', value:: 'Price VAT exclusive, apply special VAT'}*/];
ctrl.types = ['DONATION'];
ctrl.supplementPolicies = [
{key: 'MANDATORY_ONE_FOR_TICKET', value:'Make the additional service mandatory: one for each ticket bought'},
{key: 'OPTIONAL_UNLIMITED_AMOUNT', value:'Apply no limit on the quantity'},
{key: 'OPTIONAL_MAX_AMOUNT_PER_TICKET', value:'Apply a limit for each ticket bought'},
{key: 'OPTIONAL_MAX_AMOUNT_PER_RESERVATION', value:'Apply a limit for the whole reservation'}
];
ctrl.save = function() {
if(ctrl.additionalServiceForm.$valid) {
ctrl.item.type = ctrl.type; // fix type
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,16 @@ <h3><i class="fa {{ctrl.icon}}"></i> {{ctrl.title}}</h3>
<span data-ng-if="item.fixPrice">{{item.price | currency : (item.currency || "")}}</span>
</div>
</div>
<div class="row" data-ng-if="item.fixPrice">
<div class="col-sm-4"><strong>Max Qty per order</strong></div>
<div class="row">
<div class="col-sm-4"><strong>Type</strong></div>
<div class="col-sm-8">{{item.type}}</div>
</div>
<div class="row" ng-if="item.type === 'SUPPLEMENT'">
<div class="col-sm-4"><strong>Policy</strong></div>
<div class="col-sm-8">{{item.supplementPolicy}}</div>
</div>
<div class="row" data-ng-if="item.fixPrice && (item.supplementPolicy !== 'MANDATORY_ONE_FOR_TICKET' && item.supplementPolicy !== 'OPTIONAL_UNLIMITED_AMOUNT')">
<div class="col-sm-4"><strong>Max Qty per {{item.supplementPolicy === 'OPTIONAL_MAX_AMOUNT_PER_TICKET' ? 'ticket' : 'order'}}</strong></div>
<div class="col-sm-8">{{item.maxQtyPerOrder}}</div>
</div>
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,18 @@ <h3>Availability and prices</h3>
</div>
</div>
</div>
<div class="row" ng-if="ctrl.type === 'SUPPLEMENT'">
<div class="col-sm-12">
<label>
Additional service policy:
<select class="form-control" data-ng-model="ctrl.item.supplementPolicy" required>
<option data-ng-repeat="type in ctrl.supplementPolicies" data-ng-selected="{{ctrl.item.supplementPolicy === type.key}}" data-ng-value="type.key">{{type.value}}</option>
</select>
</label>
</div>
</div>
<div class="row">
<div class="col-sm-3">
<div class="col-sm-12" ng-if="ctrl.type === 'DONATION'">
<label class="control-label">Price policy</label>
<div class="form-group">
<div class="radio-inline">
Expand All @@ -59,9 +69,9 @@ <h3>Availability and prices</h3>
<field-error data-form-obj="ctrl.additionalServiceForm" data-field-obj="ctrl.additionalServiceForm.price" data-show-existing-errors="ctrl.showExistingErrors"></field-error>
</div>
</div>
<div class="col-sm-3" data-ng-if="ctrl.item.fixPrice">
<div class="col-sm-3" data-ng-if="ctrl.item.fixPrice && !(ctrl.type === 'SUPPLEMENT' && (ctrl.item.supplementPolicy === 'MANDATORY_ONE_FOR_TICKET' || ctrl.item.supplementPolicy === 'OPTIONAL_UNLIMITED_AMOUNT'))">
<div class="form-group" bs-form-error="ctrl.additionalServiceForm.maxQtyPerOrder">
<label>Max qty per order: <input type="number" min="1" class="form-control" step="1" data-ng-model="ctrl.item.maxQtyPerOrder" required></label>
<label>Max qty per {{ctrl.item.supplementPolicy === 'OPTIONAL_MAX_AMOUNT_PER_TICKET' ? 'ticket' : 'order'}}: <input type="number" min="1" class="form-control" step="1" data-ng-model="ctrl.item.maxQtyPerOrder" required></label>
</div>
</div>
<div class="col-sm-3">
Expand Down

0 comments on commit d5a9e19

Please sign in to comment.