SpecialTariffV2.java

package com.github.jenkaby.bikerental.tariff.domain.model;

import com.github.jenkaby.bikerental.shared.domain.model.vo.Money;
import com.github.jenkaby.bikerental.tariff.BreakdownCostDetails;
import com.github.jenkaby.bikerental.tariff.RentalCostV2;
import com.github.jenkaby.bikerental.tariff.domain.service.BaseRentalCostV2;
import lombok.Getter;

import java.time.Duration;
import java.time.LocalDate;

@Getter
public final class SpecialTariffV2 extends TariffV2 {

    private final Money price;

    public SpecialTariffV2(Long id, String name, String description, String equipmentTypeSlug,
                           String version, LocalDate validFrom, LocalDate validTo, TariffV2Status status) {
        super(id, name, description, equipmentTypeSlug, PricingType.SPECIAL, version, validFrom, validTo, status);
        this.price = Money.zero();
    }

    @Override
    public RentalCostV2 calculateCost(Duration duration) {
        return new BaseRentalCostV2(price, new BreakdownCostDetails.Special());
    }
}