2023-02-25 09:22:54 +00:00
|
|
|
|
import { ServiceType, Tariffs } from "./tariff";
|
2023-02-18 14:00:49 +00:00
|
|
|
|
|
|
|
|
|
|
2023-02-25 09:22:54 +00:00
|
|
|
|
/**
|
|
|
|
|
* @deprecated
|
|
|
|
|
*/
|
2023-02-18 14:00:49 +00:00
|
|
|
|
export interface CartSummary {
|
|
|
|
|
mbs: number;
|
|
|
|
|
points: number;
|
|
|
|
|
days: number;
|
|
|
|
|
}
|
|
|
|
|
|
2023-02-25 09:22:54 +00:00
|
|
|
|
/**
|
|
|
|
|
* @deprecated
|
|
|
|
|
*/
|
2023-02-18 14:00:49 +00:00
|
|
|
|
export interface Promocode {
|
|
|
|
|
id: number;
|
|
|
|
|
name: string;
|
|
|
|
|
endless: boolean;
|
|
|
|
|
from: string;
|
|
|
|
|
dueTo: string;
|
|
|
|
|
privileges: Array<Privileges>;
|
|
|
|
|
}
|
|
|
|
|
|
2023-02-25 09:22:54 +00:00
|
|
|
|
/**
|
|
|
|
|
* @deprecated
|
|
|
|
|
*/
|
2023-02-18 14:00:49 +00:00
|
|
|
|
export interface Privileges {
|
|
|
|
|
good: ServiceType,
|
|
|
|
|
discount: number;
|
|
|
|
|
}
|
|
|
|
|
|
2023-02-25 09:22:54 +00:00
|
|
|
|
/**
|
|
|
|
|
* @deprecated
|
|
|
|
|
*/
|
2023-02-18 14:00:49 +00:00
|
|
|
|
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 {
|
|
|
|
|
|
2023-02-25 09:22:54 +00:00
|
|
|
|
export type PrivilegeType =
|
2023-02-22 15:07:53 +00:00
|
|
|
|
| "unlim"
|
|
|
|
|
| "gencount"
|
|
|
|
|
| "activequiz"
|
|
|
|
|
| "abcount"
|
|
|
|
|
| "extended";
|
|
|
|
|
|
|
|
|
|
export interface Privilege {
|
2023-02-25 09:22:54 +00:00
|
|
|
|
serviceKey: Tariffs.ServiceType;
|
2023-02-22 15:07:53 +00:00
|
|
|
|
name: PrivilegeType;
|
|
|
|
|
privilegeId: string;
|
|
|
|
|
description: string;
|
|
|
|
|
type: "day" | "count";
|
|
|
|
|
price: number;
|
|
|
|
|
}
|
|
|
|
|
|
2023-02-25 09:22:54 +00:00
|
|
|
|
interface DiscountBase {
|
2023-02-22 15:07:53 +00:00
|
|
|
|
_id: string;
|
|
|
|
|
name: string;
|
|
|
|
|
description: string;
|
|
|
|
|
/**
|
|
|
|
|
* Этап применения скидки
|
|
|
|
|
*/
|
|
|
|
|
layer: number;
|
2023-02-25 09:22:54 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface PurchasesAmountDiscount extends DiscountBase {
|
2023-02-22 15:07:53 +00:00
|
|
|
|
conditionType: "purchasesAmount";
|
|
|
|
|
condition: {
|
|
|
|
|
purchasesAmount: number;
|
|
|
|
|
};
|
|
|
|
|
/**
|
|
|
|
|
* Множитель, на который умножается сумма при применении скидки
|
|
|
|
|
*/
|
|
|
|
|
factor: number;
|
2023-02-25 09:22:54 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface CartPurchasesAmountDiscount extends DiscountBase {
|
2023-02-22 15:07:53 +00:00
|
|
|
|
conditionType: "cartPurchasesAmount";
|
|
|
|
|
condition: {
|
|
|
|
|
cartPurchasesAmount: number;
|
|
|
|
|
};
|
|
|
|
|
/**
|
|
|
|
|
* Множитель, на который умножается сумма при применении скидки
|
|
|
|
|
*/
|
|
|
|
|
factor: number;
|
2023-02-25 09:22:54 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface PrivilegeDiscount extends DiscountBase {
|
2023-02-22 15:07:53 +00:00
|
|
|
|
conditionType: "privilege";
|
|
|
|
|
condition: {
|
|
|
|
|
privilege: {
|
|
|
|
|
id: string;
|
|
|
|
|
/**
|
|
|
|
|
* Скидка применяется, если значение больше или равно этому значению
|
|
|
|
|
*/
|
|
|
|
|
value: number;
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
target: {
|
|
|
|
|
products: Array<{
|
2023-02-25 09:22:54 +00:00
|
|
|
|
/**
|
|
|
|
|
* TODO Судя по сниппету, это id привелегий, но названо "продукт"
|
|
|
|
|
*/
|
2023-02-22 15:07:53 +00:00
|
|
|
|
productId: string;
|
|
|
|
|
/**
|
|
|
|
|
* Множитель, на который умножается сумма при применении скидки
|
|
|
|
|
*/
|
|
|
|
|
factor: number;
|
|
|
|
|
}>;
|
|
|
|
|
};
|
2023-02-25 09:22:54 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface ServiceDiscount extends DiscountBase {
|
2023-02-22 15:07:53 +00:00
|
|
|
|
conditionType: "service";
|
|
|
|
|
condition: {
|
|
|
|
|
service: {
|
2023-02-25 09:22:54 +00:00
|
|
|
|
id: Tariffs.ServiceType;
|
2023-02-22 15:07:53 +00:00
|
|
|
|
/**
|
|
|
|
|
* Скидка применяется, если значение больше или равно этому значению
|
|
|
|
|
*/
|
|
|
|
|
value: number;
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
target: {
|
2023-02-25 09:22:54 +00:00
|
|
|
|
service: Tariffs.ServiceType;
|
2023-02-22 15:07:53 +00:00
|
|
|
|
/**
|
|
|
|
|
* Множитель, на который умножается сумма при применении скидки
|
|
|
|
|
*/
|
|
|
|
|
factor: number;
|
|
|
|
|
};
|
2023-02-25 09:22:54 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface UserTypeDiscount extends DiscountBase {
|
2023-02-22 15:07:53 +00:00
|
|
|
|
conditionType: "userType";
|
|
|
|
|
condition: {
|
|
|
|
|
userType: string;
|
|
|
|
|
};
|
|
|
|
|
target: {
|
|
|
|
|
IsAllProducts: boolean;
|
|
|
|
|
/**
|
|
|
|
|
* Множитель, на который умножается сумма при применении скидки
|
|
|
|
|
*/
|
|
|
|
|
factor: number;
|
|
|
|
|
};
|
|
|
|
|
overwhelm: boolean;
|
2023-02-25 09:22:54 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface UserDiscount extends DiscountBase {
|
2023-02-22 15:07:53 +00:00
|
|
|
|
conditionType: "user";
|
|
|
|
|
condition: {
|
|
|
|
|
coupon: string;
|
|
|
|
|
user: string;
|
|
|
|
|
};
|
|
|
|
|
target: {
|
|
|
|
|
products: Array<{
|
2023-02-25 09:22:54 +00:00
|
|
|
|
/**
|
|
|
|
|
* TODO Судя по сниппету, это id привелегий, но названо "продукт"
|
|
|
|
|
*/
|
2023-02-22 15:07:53 +00:00
|
|
|
|
productId: string;
|
|
|
|
|
/**
|
|
|
|
|
* Множитель, на который умножается сумма при применении скидки
|
|
|
|
|
*/
|
|
|
|
|
factor: number;
|
|
|
|
|
}>;
|
|
|
|
|
};
|
|
|
|
|
overwhelm: boolean;
|
2023-02-25 09:22:54 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export type AnyDiscount =
|
|
|
|
|
| PurchasesAmountDiscount
|
|
|
|
|
| CartPurchasesAmountDiscount
|
|
|
|
|
| PrivilegeDiscount
|
|
|
|
|
| ServiceDiscount
|
|
|
|
|
| UserTypeDiscount
|
|
|
|
|
| UserDiscount;
|
|
|
|
|
|
|
|
|
|
export interface Promocode {
|
|
|
|
|
id: number;
|
|
|
|
|
name: string;
|
|
|
|
|
endless: boolean;
|
|
|
|
|
from: string;
|
|
|
|
|
dueTo: string;
|
|
|
|
|
privileges: Privilege[];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface CartItem {
|
|
|
|
|
price: number;
|
|
|
|
|
item: Tariffs.Tariff | Tariffs.Package;
|
|
|
|
|
}
|
2023-02-22 15:07:53 +00:00
|
|
|
|
|
2023-02-25 09:22:54 +00:00
|
|
|
|
/**
|
|
|
|
|
* Пункт корзины с уже примененными скидками
|
|
|
|
|
*/
|
|
|
|
|
export interface CartItemTotal {
|
|
|
|
|
/**
|
|
|
|
|
* Массив с id примененных скидок
|
|
|
|
|
*/
|
|
|
|
|
envolvedDiscounts: string[];
|
|
|
|
|
totalPrice: number;
|
|
|
|
|
item: Tariffs.Tariff | Tariffs.Package;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface CartTotal {
|
|
|
|
|
items: CartItemTotal[];
|
|
|
|
|
totalPrice: number;
|
|
|
|
|
priceByService: { [Key in Tariffs.ServiceType]: number;}
|
|
|
|
|
}
|
2023-02-18 14:00:49 +00:00
|
|
|
|
}
|