Skip to content

Commit

Permalink
#111 additional model changes
Browse files Browse the repository at this point in the history
  • Loading branch information
syjer committed May 19, 2017
1 parent df42fc9 commit 2060cbd
Show file tree
Hide file tree
Showing 5 changed files with 45 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -120,9 +120,18 @@ public ResponseEntity<EventModification.AdditionalService> insert(@PathVariable(
Validate.isTrue(validationResult.isSuccess(), "validation failed");
return optionally(() -> eventRepository.findById(eventId))
.map(event -> {
AffectedRowCountAndKey<Integer> result = additionalServiceRepository.insert(eventId, Optional.ofNullable(additionalService.getPrice()).map(MonetaryUtil::unitToCents).orElse(0), additionalService.isFixPrice(),
additionalService.getOrdinal(), additionalService.getAvailableQuantity(), additionalService.getMaxQtyPerOrder(), additionalService.getInception().toZonedDateTime(event.getZoneId()),
additionalService.getExpiration().toZonedDateTime(event.getZoneId()), additionalService.getVat(), additionalService.getVatType(), additionalService.getType());
AffectedRowCountAndKey<Integer> result = additionalServiceRepository.insert(eventId,
Optional.ofNullable(additionalService.getPrice()).map(MonetaryUtil::unitToCents).orElse(0),
additionalService.isFixPrice(),
additionalService.getOrdinal(),
additionalService.getAvailableQuantity(),
additionalService.getMaxQtyPerOrder(),
additionalService.getInception().toZonedDateTime(event.getZoneId()),
additionalService.getExpiration().toZonedDateTime(event.getZoneId()),
additionalService.getVat(),
additionalService.getVatType(),
additionalService.getType(),
additionalService.getSupplementPolicy());
Validate.isTrue(result.getAffectedRowCount() == 1, "too many records updated");
int id = result.getKey();
Stream.concat(additionalService.getTitle().stream(), additionalService.getDescription().stream()).
Expand Down
16 changes: 14 additions & 2 deletions src/main/java/alfio/manager/EventManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,18 @@ public void toggleActiveFlag(int id, String username, boolean activate) {
private void createAllAdditionalServices(int eventId, List<EventModification.AdditionalService> additionalServices, ZoneId zoneId) {
Optional.ofNullable(additionalServices)
.ifPresent(list -> list.forEach(as -> {
AffectedRowCountAndKey<Integer> service = additionalServiceRepository.insert(eventId, Optional.ofNullable(as.getPrice()).map(MonetaryUtil::unitToCents).orElse(0), as.isFixPrice(), as.getOrdinal(), as.getAvailableQuantity(), as.getMaxQtyPerOrder(), as.getInception().toZonedDateTime(zoneId), as.getExpiration().toZonedDateTime(zoneId), as.getVat(), as.getVatType(), as.getType());
AffectedRowCountAndKey<Integer> service = additionalServiceRepository.insert(eventId,
Optional.ofNullable(as.getPrice()).map(MonetaryUtil::unitToCents).orElse(0),
as.isFixPrice(),
as.getOrdinal(),
as.getAvailableQuantity(),
as.getMaxQtyPerOrder(),
as.getInception().toZonedDateTime(zoneId),
as.getExpiration().toZonedDateTime(zoneId),
as.getVat(),
as.getVatType(),
as.getType(),
as.getSupplementPolicy());
as.getTitle().forEach(insertAdditionalServiceDescription(service.getKey()));
as.getDescription().forEach(insertAdditionalServiceDescription(service.getKey()));
}));
Expand Down Expand Up @@ -259,7 +270,8 @@ private Integer findAdditionalService(Event event, EventModification.AdditionalS
as.getVat(),
as.getVatType(),
Optional.ofNullable(as.getPrice()).map(MonetaryUtil::unitToCents).orElse(0),
as.getType()).getChecksum();
as.getType(),
as.getSupplementPolicy()).getChecksum();
return additionalServiceRepository.loadAllForEvent(eventId).stream().filter(as1 -> as1.getChecksum().equals(checksum)).findFirst().map(AdditionalService::getId).orElse(null);
}

Expand Down
15 changes: 14 additions & 1 deletion src/main/java/alfio/model/AdditionalService.java
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,13 @@ public enum AdditionalServiceType {
DONATION, SUPPLEMENT
}

public enum SupplementPolicy {
MANDATORY_ONE_FOR_TICKET,
OPTIONAL_UNLIMITED_AMOUNT,
OPTIONAL_MAX_AMOUNT_PER_TICKET,
OPTIONAL_MAX_AMOUNT_PER_RESERVATION
}

private final int id;
private final int eventId;
private final boolean fixPrice;
Expand All @@ -54,6 +61,7 @@ public enum AdditionalServiceType {
private final BigDecimal vat;
private final VatType vatType;
private final AdditionalServiceType type;
private final SupplementPolicy supplementPolicy;

private final Integer srcPriceCts;

Expand All @@ -68,7 +76,8 @@ public AdditionalService(@Column("id") int id,
@Column("vat") BigDecimal vat,
@Column("vat_type") VatType vatType,
@Column("src_price_cts") Integer srcPriceCts,
@Column("service_type") AdditionalServiceType type) {
@Column("service_type") AdditionalServiceType type,
@Column("supplement_policy") SupplementPolicy supplementPolicy) {
this.id = id;
this.eventId = eventId;
this.fixPrice = fixPrice;
Expand All @@ -81,6 +90,7 @@ public AdditionalService(@Column("id") int id,
this.vatType = vatType;
this.srcPriceCts = srcPriceCts;
this.type = type;
this.supplementPolicy = supplementPolicy;
}

public ZonedDateTime getInception(ZoneId zoneId) {
Expand All @@ -103,6 +113,9 @@ public String getChecksum() {
digest.update(Optional.ofNullable(vat).map(BigDecimal::toString).orElse("").getBytes());
digest.update(vatType.name().getBytes());
digest.update(type.name().getBytes());
if (supplementPolicy != null) {
digest.update(supplementPolicy.name().getBytes());
}
return new String(Hex.encode(digest.digest()));
} catch (NoSuchAlgorithmException e) {
throw new IllegalStateException(e);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -221,6 +221,7 @@ public static class AdditionalService {
private final BigDecimal finalPrice;
private final String currencyCode;
private final alfio.model.AdditionalService.AdditionalServiceType type = alfio.model.AdditionalService.AdditionalServiceType.DONATION;
private final alfio.model.AdditionalService.SupplementPolicy supplementPolicy = null;

@JsonCreator
public AdditionalService(@JsonProperty("id") Integer id,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,14 +35,15 @@ public interface AdditionalServiceRepository {
@Query("delete from additional_service where id = :id and event_id_fk = :eventId")
int delete(@Bind("id") int id, @Bind("eventId") int eventId);

@Query("insert into additional_service (event_id_fk, fix_price, ordinal, available_qty, max_qty_per_order, inception_ts, expiration_ts, vat, vat_type, price_cts, src_price_cts, service_type) " +
"values(:eventId, :fixPrice, :ordinal, :availableQty, :maxQtyPerOrder, :inceptionTs, :expirationTs, :vat, :vatType, 0, :srcPriceCts, :type)")
@Query("insert into additional_service (event_id_fk, fix_price, ordinal, available_qty, max_qty_per_order, inception_ts, expiration_ts, vat, vat_type, price_cts, src_price_cts, service_type, supplement_policy) " +
"values(:eventId, :fixPrice, :ordinal, :availableQty, :maxQtyPerOrder, :inceptionTs, :expirationTs, :vat, :vatType, 0, :srcPriceCts, :type, :supplementPolicy)")
@AutoGeneratedKey("id")
AffectedRowCountAndKey<Integer> insert(@Bind("eventId") int eventId, @Bind("srcPriceCts") int srcPriceCts, @Bind("fixPrice") boolean fixPrice,
@Bind("ordinal") int ordinal, @Bind("availableQty") int availableQuantity, @Bind("maxQtyPerOrder") int maxQtyPerOrder,
@Bind("inceptionTs") ZonedDateTime inception, @Bind("expirationTs") ZonedDateTime expiration, @Bind("vat") BigDecimal vat,
@Bind("vatType") AdditionalService.VatType vatType,
@Bind("type")AdditionalService.AdditionalServiceType type);
@Bind("type")AdditionalService.AdditionalServiceType type,
@Bind("supplementPolicy") AdditionalService.SupplementPolicy supplementPolicy);

@Query("update additional_service set fix_price = :fixPrice, ordinal = :ordinal, available_qty = :availableQty, max_qty_per_order = :maxQtyPerOrder," +
" inception_ts = :inceptionTs, expiration_ts = :expirationTs, vat = :vat, vat_type = :vatType, src_price_cts = :srcPriceCts where id = :id")
Expand Down

0 comments on commit 2060cbd

Please sign in to comment.