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
|
|
|
|
}
|