@Nonnull
private static List<JobEvent> createJobEvents (final @Nonnull LocalDate startDate,
final @Nonnull LocalDate endDate,
final @Nonnull Money rate)
{
final List<JobEvent> result = new ArrayList<>();
final long days = startDate.until(endDate, ChronoUnit.DAYS);
for (int i = 1; i <= days; i++)
{
final LocalDateTime s = startDate.plusDays(i - 1).atTime(8, 0).plusMinutes(i * 3);
final LocalDateTime e = s.plusMinutes(60 + i * 4);
final double hours = s.until(e, ChronoUnit.MINUTES) / 60.0;
final BigDecimal earnings = rate.getAmount().multiply(new BigDecimal(hours));
result.add(JobEvent.builder().withId(new Id("" + nextId++))
.withName("Event #" + i)
.withDescription("Description of Event #" + i)
.withType(JobEvent.Type.TIMED)
.withEarnings(new Money(earnings, "EUR"))
.withStartDateTime(s)
.withEndDateTime(e)
.withHourlyRate(rate)
.create());
}
return result;
}