Files
cfw-autumn/shared/utils/planFeatureUtils/planFeatureIntervals.ts
amianthus 334d13ad94 fix: 🐛 crash
2025-10-20 11:12:29 +01:00

88 lines
2.2 KiB
TypeScript

import { ResetInterval } from "@api/models.js";
import {
ProductItemInterval,
RolloverDuration,
} from "@models/productV2Models/productItemModels/productItemModels.js";
export const resetIntvToItemIntv = (
resetIntv: ResetInterval,
): ProductItemInterval | null => {
switch (resetIntv) {
case ResetInterval.OneOff:
return null;
case ResetInterval.Minute:
return ProductItemInterval.Minute;
case ResetInterval.Hour:
return ProductItemInterval.Hour;
case ResetInterval.Day:
return ProductItemInterval.Day;
case ResetInterval.Week:
return ProductItemInterval.Week;
case ResetInterval.Month:
return ProductItemInterval.Month;
case ResetInterval.Quarter:
return ProductItemInterval.Quarter;
case ResetInterval.SemiAnnual:
return ProductItemInterval.SemiAnnual;
case ResetInterval.Year:
return ProductItemInterval.Year;
}
};
export const resetIntvToRollover = (
resetIntv: ResetInterval,
): RolloverDuration => {
switch (resetIntv) {
case ResetInterval.Month:
return RolloverDuration.Month;
case null:
return RolloverDuration.Forever;
default:
return RolloverDuration.Month;
}
};
/**
* Convert ProductItemInterval back to ResetInterval
*/
export const itemIntvToResetIntv = (
itemIntv: ProductItemInterval,
): ResetInterval => {
switch (itemIntv) {
case ProductItemInterval.Minute:
return ResetInterval.Minute;
case ProductItemInterval.Hour:
return ResetInterval.Hour;
case ProductItemInterval.Day:
return ResetInterval.Day;
case ProductItemInterval.Week:
return ResetInterval.Week;
case ProductItemInterval.Month:
return ResetInterval.Month;
case ProductItemInterval.Quarter:
return ResetInterval.Quarter;
case ProductItemInterval.SemiAnnual:
return ResetInterval.SemiAnnual;
case ProductItemInterval.Year:
return ResetInterval.Year;
default:
return ResetInterval.OneOff;
}
};
/**
* Convert RolloverDuration back to ResetInterval
*/
export const rolloverToResetIntv = (
duration: RolloverDuration,
): ResetInterval => {
switch (duration) {
case RolloverDuration.Month:
return ResetInterval.Month;
case RolloverDuration.Forever:
return ResetInterval.OneOff; // Forever maps to one-off/null
default:
return ResetInterval.Month;
}
};