adminFront/src/model/cart.ts

157 lines
4.0 KiB
TypeScript
Raw Normal View History

2023-02-18 14:00:49 +00:00
import { ServiceType } from "./tariff";
export interface CartSummary {
mbs: number;
points: number;
days: number;
}
export interface Promocode {
id: number;
name: string;
endless: boolean;
from: string;
dueTo: string;
privileges: Array<Privileges>;
}
export interface Privileges {
good: ServiceType,
discount: number;
}
export interface Discount {
id: number;
name: string;
endless: boolean;
from: string;
dueTo: string;
privileges: Array<Privileges>;
active: boolean;
basketMore: number;
incomeMore: number;
toTime: number;
toCapacity: number;
2023-02-22 15:07:53 +00:00
}
// New types from snippet
export namespace Cart {
type ServiceType =
| "templategen"
| "squiz"
| "dwarfener";
type PrivilegeType =
| "unlim"
| "gencount"
| "activequiz"
| "abcount"
| "extended";
export interface Privilege {
serviceKey: ServiceType;
name: PrivilegeType;
privilegeId: string;
description: string;
type: "day" | "count";
price: number;
}
export type Discount = {
_id: string;
name: string;
description: string;
/**
* Этап применения скидки
*/
layer: number;
} & ({
conditionType: "purchasesAmount";
condition: {
purchasesAmount: number;
};
/**
* Множитель, на который умножается сумма при применении скидки
*/
factor: number;
} | {
conditionType: "cartPurchasesAmount";
condition: {
cartPurchasesAmount: number;
};
/**
* Множитель, на который умножается сумма при применении скидки
*/
factor: number;
} | {
conditionType: "privilege";
condition: {
privilege: {
id: string;
/**
* Скидка применяется, если значение больше или равно этому значению
*/
value: number;
};
};
target: {
products: Array<{
productId: string;
/**
* Множитель, на который умножается сумма при применении скидки
*/
factor: number;
}>;
};
} | {
conditionType: "service";
condition: {
service: {
id: ServiceType;
/**
* Скидка применяется, если значение больше или равно этому значению
*/
value: number;
};
};
target: {
service: ServiceType;
/**
* Множитель, на который умножается сумма при применении скидки
*/
factor: number;
};
} | {
conditionType: "userType";
condition: {
userType: string;
};
target: {
IsAllProducts: boolean;
/**
* Множитель, на который умножается сумма при применении скидки
*/
factor: number;
};
overwhelm: boolean;
} | {
conditionType: "user";
condition: {
coupon: string;
user: string;
};
target: {
products: Array<{
productId: string;
/**
* Множитель, на который умножается сумма при применении скидки
*/
factor: number;
}>;
};
overwhelm: boolean;
});
export type DiscountConditionType = Discount["conditionType"];
2023-02-18 14:00:49 +00:00
}