RentalOverdueCalculator.java
package com.github.jenkaby.bikerental.rental.application.service;
import com.github.jenkaby.bikerental.rental.domain.model.Rental;
import com.github.jenkaby.bikerental.rental.domain.model.RentalStatus;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.time.Clock;
import java.time.Duration;
import java.time.LocalDateTime;
@Slf4j
@Component
public class RentalOverdueCalculator {
private final Clock clock;
public RentalOverdueCalculator(Clock clock) {
this.clock = clock;
}
public Integer calculateOverdueMinutes(Rental rental) {
if (rental.getStatus() == RentalStatus.ACTIVE && rental.getExpectedReturnAt() != null) {
LocalDateTime now = LocalDateTime.now(clock);
log.info("Now is {}. ReturnAt {}", now, rental.getExpectedReturnAt());
if (rental.getExpectedReturnAt().isBefore(now)) {
Duration overdueTime = Duration.between(rental.getExpectedReturnAt(), now);
return (int) overdueTime.toMinutes();
}
}
return 0;
}
}