private void handleDynamicMax(SaleTier tier) { if (tier.hasDynamicMax() && (tier.getTomicsMax().compareTo(BigInteger.ZERO) == 0 || tier.getTomicsMax() == null)) { tier.setTomicsMax(getTotalRemainingTomics()); saleTierRepository.save(tier); } }
/** * Calculates the status of the sale tier according to his current properties. * See {@link StatusType} for how which status is determined. * * @param date The date at which to determine the tiers status. Usually one will want to use the * current date. * @return the status of the sale tier at the given date. */ public StatusType getStatusAtDate(Date date) { StatusType status; if (this.getEndDate().compareTo(date) <= 0) { status = StatusType.CLOSED; } else if (this.getStartDate().compareTo(date) <= 0 && this.getEndDate().compareTo(date) > 0) { if (this.getTomicsSold().compareTo(this.getTomicsMax()) >= 0) { status = StatusType.CLOSED; } else { status = StatusType.ACTIVE; } } else { status = StatusType.INCOMING; } return status; } }
public BigInteger getTomicsMax() { return getTier().getTomicsMax(); }
protected SaleTierResponse fromEntityToResponse(SaleTier tier) { SaleTierResponse response = new SaleTierResponse(); response.setAmount(tier.getTomicsSold()); response.setDiscount(tier.getDiscount()); response.setEndDate(tier.getEndDate()); response.setStartDate(tier.getStartDate()); response.setMaxAmount(tier.getTomicsMax()); response.setName(tier.getDescription()); response.setTierNo(tier.getTierNo()); response.setType(tier.getStatusAtDate(Date.from(Instant.now()))); return response; } }
return handleTotalMaxOverflow(tier, remainingTomicsOnTier).addToOverflow(overflowInUsd); } else { tier.setTomicsSold(tier.getTomicsMax()); tier.setTomicsSold(tier.getTomicsMax()); tier = saleTierRepository.save(tier); if (tier.hasDynamicDuration()) shiftDates(tier, blockTime);
public void assertTier() { LOG.info("Asserting Tier {}", tierNo); if (newStartDate != null) assertEquals(0, newStartDate.compareTo(getTier().getStartDate())); else assertEquals(0, initialStartDate.compareTo(getTier().getStartDate())); if (newEndDate != null) assertEquals(0, newEndDate.compareTo(getTier().getEndDate())); else assertEquals(0, initialEndDate.compareTo(getTier().getEndDate())); LOG.info("{} tomics sold on Tier {}", getTier().getTomicsSold(), tierNo); LOG.info("{} tomics should have been sold on Tier {}", tomicsSold, tierNo); if (tomicsSold != null) assertEquals(0, tomicsSold.compareTo(getTier().getTomicsSold())); if (mustBeFull) assertTrue(getTier().isFull()); else assertFalse(getTier().isFull()); if (newTomicsMax != null) assertEquals(0, newTomicsMax.compareTo(getTier().getTomicsMax())); else assertEquals(0, initialTomicsMax.compareTo(getTier().getTomicsMax())); }