// Copyright © 2015 HSL <https://www.hsl.fi>
// This program is dual-licensed under the EUPL v1.2 and AGPLv3 licenses.
package fi.hsl.parkandride.core.domain;
import static fi.hsl.parkandride.core.domain.Usage.PARK_AND_RIDE;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public enum PricingMethod {
PARK_AND_RIDE_247_FREE {
@Override
public List<Pricing> getPricing(Facility facility) {
return free24h(facility.builtCapacity, PARK_AND_RIDE);
}
},
CUSTOM {
@Override
public List<Pricing> getPricing(Facility facility) {
return facility.pricing;
}
};
public abstract List<Pricing> getPricing(Facility facility);
private static List<Pricing> free24h(Map<CapacityType, Integer> builtCapacity, Usage usage) {
final List<Pricing> pricing = new ArrayList<>();
builtCapacity.entrySet().forEach( e -> {
for (DayType dayType : DayType.values()) {
pricing.add(free24h(e.getKey(), usage, e.getValue(), dayType));
}
});
return pricing;
}
private static Pricing free24h(CapacityType capacityType, Usage usage, int maxCapacity, DayType dayType) {
return new Pricing(capacityType, usage, maxCapacity, dayType, "00", "24", null);
}
}