package de.rwth.idsg.bikeman.service; import de.rwth.idsg.bikeman.app.dto.ViewTariffPriceDTO; import de.rwth.idsg.bikeman.domain.TariffType; import de.rwth.idsg.bikeman.domain.Transaction; import de.rwth.idsg.bikeman.service.tariffPriceCalculations.Ticket2000Impl; import de.rwth.idsg.bikeman.service.tariffPriceCalculations.Ticket3000Impl; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import javax.annotation.PostConstruct; import java.math.BigDecimal; import java.util.Collections; import java.util.List; /** * Created by swam on 20/01/15. */ @Service @Slf4j public class TariffService { private TariffPriceCalculation ticket2000; private TariffPriceCalculation ticket3000; @PostConstruct public void init() { ticket2000 = new Ticket2000Impl(); ticket3000 = new Ticket3000Impl(); } public BigDecimal calculatePrice(Transaction transaction) { if (transaction.getStartDateTime() == null || transaction.getEndDateTime() == null) { return BigDecimal.ZERO; } switch (transaction.getBookedTariff().getName()) { case Ticket2000: return ticket2000.calculate(transaction); case Ticket3000: return ticket3000.calculate(transaction); default: return BigDecimal.ZERO; } } public List<ViewTariffPriceDTO> listPrice(TariffType name) { switch (name) { case Ticket2000: return ticket2000.listPrice(); case Ticket3000: return ticket3000.listPrice(); default: return Collections.emptyList(); } } }