@novha/anlia-core-lib 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cdk/bin/infrastructure.ts +18 -0
- package/cdk/bin/project-names.ts +7 -0
- package/cdk/lib/infrastructure.ts +37 -0
- package/cdk.json +70 -0
- package/dist/cdk/bin/infrastructure.d.ts +1 -0
- package/dist/cdk/bin/infrastructure.js +20 -0
- package/dist/cdk/bin/project-names.d.ts +6 -0
- package/dist/cdk/bin/project-names.js +4 -0
- package/dist/cdk/lib/infrastructure.d.ts +6 -0
- package/dist/cdk/lib/infrastructure.js +32 -0
- package/dist/src/enums/domain/DayOfWeek.d.ts +9 -0
- package/dist/src/enums/domain/DayOfWeek.js +13 -0
- package/dist/src/enums/domain/Delivery.d.ts +19 -0
- package/dist/src/enums/domain/Delivery.js +24 -0
- package/dist/src/enums/domain/Employee.d.ts +12 -0
- package/dist/src/enums/domain/Employee.js +16 -0
- package/dist/src/enums/domain/Ingredient.d.ts +31 -0
- package/dist/src/enums/domain/Ingredient.js +37 -0
- package/dist/src/enums/domain/Inventory.d.ts +29 -0
- package/dist/src/enums/domain/Inventory.js +36 -0
- package/dist/src/enums/domain/Kitchen.d.ts +49 -0
- package/dist/src/enums/domain/Kitchen.js +59 -0
- package/dist/src/enums/domain/Menu.d.ts +13 -0
- package/dist/src/enums/domain/Menu.js +18 -0
- package/dist/src/enums/domain/Payments.d.ts +21 -0
- package/dist/src/enums/domain/Payments.js +26 -0
- package/dist/src/enums/domain/Recipe.d.ts +14 -0
- package/dist/src/enums/domain/Recipe.js +19 -0
- package/dist/src/enums/domain/Reservation.d.ts +17 -0
- package/dist/src/enums/domain/Reservation.js +22 -0
- package/dist/src/enums/domain/Restaurant.d.ts +39 -0
- package/dist/src/enums/domain/Restaurant.js +45 -0
- package/dist/src/enums/domain/Table.d.ts +23 -0
- package/dist/src/enums/domain/Table.js +29 -0
- package/dist/src/enums/domain/Vendors.d.ts +29 -0
- package/dist/src/enums/domain/Vendors.js +35 -0
- package/dist/src/enums/index.d.ts +13 -0
- package/dist/src/enums/index.js +29 -0
- package/dist/src/eventBridge/EventBridgeModule.d.ts +2 -0
- package/dist/src/eventBridge/EventBridgeModule.js +26 -0
- package/dist/src/eventBridge/domain/EventBridgeOptions.d.ts +8 -0
- package/dist/src/eventBridge/domain/EventBridgeOptions.js +2 -0
- package/dist/src/eventBridge/ioc/index.d.ts +3 -0
- package/dist/src/eventBridge/ioc/index.js +6 -0
- package/dist/src/eventBridge/ioc.d.ts +3 -0
- package/dist/src/eventBridge/ioc.js +6 -0
- package/dist/src/eventBridge/service/EventBridgeService.d.ts +5 -0
- package/dist/src/eventBridge/service/EventBridgeService.js +2 -0
- package/dist/src/eventBridge/service/EventBridgeServiceImpl.d.ts +13 -0
- package/dist/src/eventBridge/service/EventBridgeServiceImpl.js +63 -0
- package/dist/src/events/domain/CustomerEvents.d.ts +54 -0
- package/dist/src/events/domain/CustomerEvents.js +2 -0
- package/dist/src/events/domain/DeliveryEvents.d.ts +61 -0
- package/dist/src/events/domain/DeliveryEvents.js +2 -0
- package/dist/src/events/domain/DomainEvent.d.ts +12 -0
- package/dist/src/events/domain/DomainEvent.js +2 -0
- package/dist/src/events/domain/DomainEventType.d.ts +119 -0
- package/dist/src/events/domain/DomainEventType.js +136 -0
- package/dist/src/events/domain/EmployeeEvents.d.ts +51 -0
- package/dist/src/events/domain/EmployeeEvents.js +2 -0
- package/dist/src/events/domain/InventoryEvents.d.ts +141 -0
- package/dist/src/events/domain/InventoryEvents.js +2 -0
- package/dist/src/events/domain/OrderEvents.d.ts +105 -0
- package/dist/src/events/domain/OrderEvents.js +2 -0
- package/dist/src/events/domain/PaymentEvents.d.ts +73 -0
- package/dist/src/events/domain/PaymentEvents.js +2 -0
- package/dist/src/events/domain/RecipeEvents.d.ts +45 -0
- package/dist/src/events/domain/RecipeEvents.js +2 -0
- package/dist/src/events/domain/ReservationEvents.d.ts +93 -0
- package/dist/src/events/domain/ReservationEvents.js +2 -0
- package/dist/src/events/domain/RestaurantEvents.d.ts +62 -0
- package/dist/src/events/domain/RestaurantEvents.js +2 -0
- package/dist/src/events/domain/TableEvents.d.ts +71 -0
- package/dist/src/events/domain/TableEvents.js +2 -0
- package/dist/src/events/domain/VendorEvents.d.ts +28 -0
- package/dist/src/events/domain/VendorEvents.js +2 -0
- package/dist/src/events/index.d.ts +13 -0
- package/dist/src/events/index.js +29 -0
- package/dist/src/index.d.ts +4 -0
- package/dist/src/index.js +20 -0
- package/dist/src/interfaces/Address.d.ts +7 -0
- package/dist/src/interfaces/Address.js +2 -0
- package/dist/src/interfaces/Customer.d.ts +21 -0
- package/dist/src/interfaces/Customer.js +2 -0
- package/dist/src/interfaces/Delivery.d.ts +62 -0
- package/dist/src/interfaces/Delivery.js +2 -0
- package/dist/src/interfaces/Employee.d.ts +19 -0
- package/dist/src/interfaces/Employee.js +2 -0
- package/dist/src/interfaces/Ingredient.d.ts +42 -0
- package/dist/src/interfaces/Ingredient.js +2 -0
- package/dist/src/interfaces/Inventory.d.ts +26 -0
- package/dist/src/interfaces/Inventory.js +2 -0
- package/dist/src/interfaces/Kitchen.d.ts +72 -0
- package/dist/src/interfaces/Kitchen.js +2 -0
- package/dist/src/interfaces/Location.d.ts +14 -0
- package/dist/src/interfaces/Location.js +2 -0
- package/dist/src/interfaces/Menu.d.ts +72 -0
- package/dist/src/interfaces/Menu.js +2 -0
- package/dist/src/interfaces/Money.d.ts +5 -0
- package/dist/src/interfaces/Money.js +2 -0
- package/dist/src/interfaces/OpeningHours.d.ts +7 -0
- package/dist/src/interfaces/OpeningHours.js +2 -0
- package/dist/src/interfaces/Payment.d.ts +36 -0
- package/dist/src/interfaces/Payment.js +2 -0
- package/dist/src/interfaces/Recipe.d.ts +58 -0
- package/dist/src/interfaces/Recipe.js +2 -0
- package/dist/src/interfaces/Resevation.d.ts +25 -0
- package/dist/src/interfaces/Resevation.js +2 -0
- package/dist/src/interfaces/Restaurant.d.ts +24 -0
- package/dist/src/interfaces/Restaurant.js +2 -0
- package/dist/src/interfaces/Table.d.ts +54 -0
- package/dist/src/interfaces/Table.js +2 -0
- package/dist/src/interfaces/Vendor.d.ts +19 -0
- package/dist/src/interfaces/Vendor.js +2 -0
- package/dist/src/interfaces/domain/Address.d.ts +7 -0
- package/dist/src/interfaces/domain/Address.js +2 -0
- package/dist/src/interfaces/domain/Customer.d.ts +21 -0
- package/dist/src/interfaces/domain/Customer.js +2 -0
- package/dist/src/interfaces/domain/Delivery.d.ts +62 -0
- package/dist/src/interfaces/domain/Delivery.js +2 -0
- package/dist/src/interfaces/domain/Employee.d.ts +19 -0
- package/dist/src/interfaces/domain/Employee.js +2 -0
- package/dist/src/interfaces/domain/Ingredient.d.ts +42 -0
- package/dist/src/interfaces/domain/Ingredient.js +2 -0
- package/dist/src/interfaces/domain/Inventory.d.ts +26 -0
- package/dist/src/interfaces/domain/Inventory.js +2 -0
- package/dist/src/interfaces/domain/Kitchen.d.ts +72 -0
- package/dist/src/interfaces/domain/Kitchen.js +2 -0
- package/dist/src/interfaces/domain/Location.d.ts +14 -0
- package/dist/src/interfaces/domain/Location.js +2 -0
- package/dist/src/interfaces/domain/Menu.d.ts +72 -0
- package/dist/src/interfaces/domain/Menu.js +2 -0
- package/dist/src/interfaces/domain/Money.d.ts +5 -0
- package/dist/src/interfaces/domain/Money.js +2 -0
- package/dist/src/interfaces/domain/OpeningHours.d.ts +7 -0
- package/dist/src/interfaces/domain/OpeningHours.js +2 -0
- package/dist/src/interfaces/domain/Payment.d.ts +36 -0
- package/dist/src/interfaces/domain/Payment.js +2 -0
- package/dist/src/interfaces/domain/Recipe.d.ts +58 -0
- package/dist/src/interfaces/domain/Recipe.js +2 -0
- package/dist/src/interfaces/domain/Reservation.d.ts +25 -0
- package/dist/src/interfaces/domain/Reservation.js +2 -0
- package/dist/src/interfaces/domain/Restaurant.d.ts +24 -0
- package/dist/src/interfaces/domain/Restaurant.js +2 -0
- package/dist/src/interfaces/domain/Table.d.ts +54 -0
- package/dist/src/interfaces/domain/Table.js +2 -0
- package/dist/src/interfaces/domain/Vendor.d.ts +19 -0
- package/dist/src/interfaces/domain/Vendor.js +2 -0
- package/dist/src/interfaces/index.d.ts +17 -0
- package/dist/src/interfaces/index.js +33 -0
- package/dist/src/orders/OrderModule.d.ts +2 -0
- package/dist/src/orders/OrderModule.js +28 -0
- package/dist/src/orders/domain/Enums.d.ts +16 -0
- package/dist/src/orders/domain/Enums.js +21 -0
- package/dist/src/orders/domain/Order.d.ts +89 -0
- package/dist/src/orders/domain/Order.js +2 -0
- package/dist/src/orders/domain/OrderItem.d.ts +53 -0
- package/dist/src/orders/domain/OrderItem.js +2 -0
- package/dist/src/orders/domain/posDto/SquareOrder.d.ts +347 -0
- package/dist/src/orders/domain/posDto/SquareOrder.js +8 -0
- package/dist/src/orders/index.d.ts +7 -0
- package/dist/src/orders/index.js +25 -0
- package/dist/src/orders/ioc/index.d.ts +3 -0
- package/dist/src/orders/ioc/index.js +6 -0
- package/dist/src/orders/services/square/SquareOrderService.d.ts +22 -0
- package/dist/src/orders/services/square/SquareOrderService.js +4 -0
- package/dist/src/orders/services/square/SquareOrderServiceImpl.d.ts +32 -0
- package/dist/src/orders/services/square/SquareOrderServiceImpl.js +308 -0
- package/jest.config.js +8 -0
- package/package.json +43 -0
- package/src/enums/domain/DayOfWeek.ts +9 -0
- package/src/enums/domain/Delivery.ts +20 -0
- package/src/enums/domain/Employee.ts +12 -0
- package/src/enums/domain/Ingredient.ts +33 -0
- package/src/enums/domain/Inventory.ts +39 -0
- package/src/enums/domain/Kitchen.ts +89 -0
- package/src/enums/domain/Menu.ts +14 -0
- package/src/enums/domain/Payments.ts +41 -0
- package/src/enums/domain/Recipe.ts +15 -0
- package/src/enums/domain/Reservation.ts +18 -0
- package/src/enums/domain/Restaurant.ts +41 -0
- package/src/enums/domain/Table.ts +39 -0
- package/src/enums/domain/Vendors.ts +45 -0
- package/src/enums/index.ts +13 -0
- package/src/eventBridge/EventBridgeModule.ts +14 -0
- package/src/eventBridge/domain/EventBridgeOptions.ts +8 -0
- package/src/eventBridge/ioc/index.ts +3 -0
- package/src/eventBridge/ioc.ts +3 -0
- package/src/eventBridge/service/EventBridgeService.ts +8 -0
- package/src/eventBridge/service/EventBridgeServiceImpl.ts +67 -0
- package/src/events/domain/CustomerEvents.ts +79 -0
- package/src/events/domain/DeliveryEvents.ts +82 -0
- package/src/events/domain/DomainEvent.ts +17 -0
- package/src/events/domain/DomainEventType.ts +143 -0
- package/src/events/domain/EmployeeEvents.ts +74 -0
- package/src/events/domain/InventoryEvents.ts +184 -0
- package/src/events/domain/OrderEvents.ts +142 -0
- package/src/events/domain/PaymentEvents.ts +92 -0
- package/src/events/domain/RecipeEvents.ts +64 -0
- package/src/events/domain/ReservationEvents.ts +133 -0
- package/src/events/domain/RestaurantEvents.ts +89 -0
- package/src/events/domain/TableEvents.ts +102 -0
- package/src/events/domain/VendorEvents.ts +42 -0
- package/src/events/index.ts +13 -0
- package/src/index.ts +4 -0
- package/src/interfaces/domain/Address.ts +7 -0
- package/src/interfaces/domain/Customer.ts +33 -0
- package/src/interfaces/domain/Delivery.ts +96 -0
- package/src/interfaces/domain/Employee.ts +29 -0
- package/src/interfaces/domain/Ingredient.ts +68 -0
- package/src/interfaces/domain/Inventory.ts +52 -0
- package/src/interfaces/domain/Kitchen.ts +128 -0
- package/src/interfaces/domain/Location.ts +20 -0
- package/src/interfaces/domain/Menu.ts +121 -0
- package/src/interfaces/domain/Money.ts +6 -0
- package/src/interfaces/domain/OpeningHours.ts +11 -0
- package/src/interfaces/domain/Payment.ts +45 -0
- package/src/interfaces/domain/Recipe.ts +91 -0
- package/src/interfaces/domain/Reservation.ts +45 -0
- package/src/interfaces/domain/Restaurant.ts +45 -0
- package/src/interfaces/domain/Table.ts +69 -0
- package/src/interfaces/domain/Vendor.ts +35 -0
- package/src/interfaces/index.ts +17 -0
- package/src/orders/OrderModule.ts +17 -0
- package/src/orders/domain/Enums.ts +17 -0
- package/src/orders/domain/Order.ts +109 -0
- package/src/orders/domain/OrderItem.ts +68 -0
- package/src/orders/domain/posDto/SquareOrder.ts +346 -0
- package/src/orders/index.ts +7 -0
- package/src/orders/ioc/index.ts +3 -0
- package/src/orders/services/square/SquareOrderService.ts +27 -0
- package/src/orders/services/square/SquareOrderServiceImpl.ts +330 -0
- package/tsconfig.json +18 -0
|
@@ -0,0 +1,308 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.SquareOrderServiceImpl = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const crypto_1 = require("crypto");
|
|
18
|
+
const Enums_1 = require("../../domain/Enums");
|
|
19
|
+
const Payments_1 = require("../../../enums/domain/Payments");
|
|
20
|
+
const Vendors_1 = require("../../../enums/domain/Vendors");
|
|
21
|
+
const ioc_1 = require("../../../eventBridge/ioc");
|
|
22
|
+
const DomainEventType_1 = require("../../../events/domain/DomainEventType");
|
|
23
|
+
let SquareOrderServiceImpl = class SquareOrderServiceImpl {
|
|
24
|
+
constructor(eventBridge) {
|
|
25
|
+
this.eventBridge = eventBridge;
|
|
26
|
+
}
|
|
27
|
+
// ─── Order lifecycle ──────────────────────────────────────────────────────
|
|
28
|
+
async createOrder(order) {
|
|
29
|
+
const items = (order.line_items ?? []).map((item, i) => this.mapSquareLineItem(item, i));
|
|
30
|
+
const payments = this.mapSquarePayments(order);
|
|
31
|
+
const net = order.net_amounts;
|
|
32
|
+
const result = {
|
|
33
|
+
id: order.id,
|
|
34
|
+
externalId: order.id,
|
|
35
|
+
restaurantId: order.location_id,
|
|
36
|
+
locationId: order.location_id,
|
|
37
|
+
vendor: {
|
|
38
|
+
id: Vendors_1.Vendor.SQUARE,
|
|
39
|
+
restaurantId: order.location_id,
|
|
40
|
+
name: "Square",
|
|
41
|
+
vendorCode: Vendors_1.Vendor.SQUARE,
|
|
42
|
+
type: Vendors_1.VendorType.TECHNOLOGY,
|
|
43
|
+
status: Vendors_1.VendorStatus.ACTIVE,
|
|
44
|
+
createdAt: new Date(),
|
|
45
|
+
updatedAt: new Date(),
|
|
46
|
+
},
|
|
47
|
+
customer: order.customer_id ? { id: order.customer_id } : undefined,
|
|
48
|
+
items,
|
|
49
|
+
status: this.mapSquareOrderStatus(order.state),
|
|
50
|
+
type: this.mapSquareOrderType(order),
|
|
51
|
+
subtotal: this.toMoney(net?.total_money ?? order.total_money),
|
|
52
|
+
discount: this.toMoney(net?.discount_money ?? order.total_discount_money),
|
|
53
|
+
tax: this.toMoney(net?.tax_money ?? order.total_tax_money),
|
|
54
|
+
tip: this.toMoney(net?.tip_money ?? order.total_tip_money),
|
|
55
|
+
total: this.toMoney(order.total_money),
|
|
56
|
+
payments,
|
|
57
|
+
createdAt: order.created_at ? new Date(order.created_at) : new Date(),
|
|
58
|
+
updatedAt: order.updated_at ? new Date(order.updated_at) : new Date(),
|
|
59
|
+
completedAt: order.closed_at ? new Date(order.closed_at) : undefined,
|
|
60
|
+
};
|
|
61
|
+
const event = {
|
|
62
|
+
...this.baseEvent(result.id, result.restaurantId),
|
|
63
|
+
eventType: DomainEventType_1.DomainEventType.OrderCreated,
|
|
64
|
+
aggregateType: DomainEventType_1.AggregateType.Order,
|
|
65
|
+
order: result,
|
|
66
|
+
};
|
|
67
|
+
await this.eventBridge.publish(event);
|
|
68
|
+
return result;
|
|
69
|
+
}
|
|
70
|
+
async updateOrder(orderId, restaurantId, before, after) {
|
|
71
|
+
const event = {
|
|
72
|
+
...this.baseEvent(orderId, restaurantId),
|
|
73
|
+
eventType: DomainEventType_1.DomainEventType.OrderUpdated,
|
|
74
|
+
aggregateType: DomainEventType_1.AggregateType.Order,
|
|
75
|
+
before,
|
|
76
|
+
after,
|
|
77
|
+
};
|
|
78
|
+
await this.eventBridge.publish(event);
|
|
79
|
+
}
|
|
80
|
+
async submitOrder(orderId, restaurantId, submittedBy) {
|
|
81
|
+
const event = {
|
|
82
|
+
...this.baseEvent(orderId, restaurantId),
|
|
83
|
+
eventType: DomainEventType_1.DomainEventType.OrderSubmitted,
|
|
84
|
+
aggregateType: DomainEventType_1.AggregateType.Order,
|
|
85
|
+
submittedAt: new Date(),
|
|
86
|
+
submittedBy,
|
|
87
|
+
};
|
|
88
|
+
await this.eventBridge.publish(event);
|
|
89
|
+
}
|
|
90
|
+
async confirmOrder(orderId, restaurantId, confirmedBy) {
|
|
91
|
+
const event = {
|
|
92
|
+
...this.baseEvent(orderId, restaurantId),
|
|
93
|
+
eventType: DomainEventType_1.DomainEventType.OrderConfirmed,
|
|
94
|
+
aggregateType: DomainEventType_1.AggregateType.Order,
|
|
95
|
+
confirmedAt: new Date(),
|
|
96
|
+
confirmedBy,
|
|
97
|
+
};
|
|
98
|
+
await this.eventBridge.publish(event);
|
|
99
|
+
}
|
|
100
|
+
async rejectOrder(orderId, restaurantId, reason, rejectedBy) {
|
|
101
|
+
const event = {
|
|
102
|
+
...this.baseEvent(orderId, restaurantId),
|
|
103
|
+
eventType: DomainEventType_1.DomainEventType.OrderRejected,
|
|
104
|
+
aggregateType: DomainEventType_1.AggregateType.Order,
|
|
105
|
+
reason,
|
|
106
|
+
rejectedAt: new Date(),
|
|
107
|
+
rejectedBy,
|
|
108
|
+
};
|
|
109
|
+
await this.eventBridge.publish(event);
|
|
110
|
+
}
|
|
111
|
+
async cancelOrder(orderId, restaurantId, previousStatus, reason, cancelledBy) {
|
|
112
|
+
const event = {
|
|
113
|
+
...this.baseEvent(orderId, restaurantId),
|
|
114
|
+
eventType: DomainEventType_1.DomainEventType.OrderCancelled,
|
|
115
|
+
aggregateType: DomainEventType_1.AggregateType.Order,
|
|
116
|
+
previousStatus,
|
|
117
|
+
reason,
|
|
118
|
+
cancelledAt: new Date(),
|
|
119
|
+
cancelledBy,
|
|
120
|
+
};
|
|
121
|
+
await this.eventBridge.publish(event);
|
|
122
|
+
}
|
|
123
|
+
async completeOrder(orderId, restaurantId, completedBy) {
|
|
124
|
+
const event = {
|
|
125
|
+
...this.baseEvent(orderId, restaurantId),
|
|
126
|
+
eventType: DomainEventType_1.DomainEventType.OrderCompleted,
|
|
127
|
+
aggregateType: DomainEventType_1.AggregateType.Order,
|
|
128
|
+
completedAt: new Date(),
|
|
129
|
+
completedBy,
|
|
130
|
+
};
|
|
131
|
+
await this.eventBridge.publish(event);
|
|
132
|
+
}
|
|
133
|
+
async reopenOrder(orderId, restaurantId, previousStatus, reason, reopenedBy) {
|
|
134
|
+
const event = {
|
|
135
|
+
...this.baseEvent(orderId, restaurantId),
|
|
136
|
+
eventType: DomainEventType_1.DomainEventType.OrderReopened,
|
|
137
|
+
aggregateType: DomainEventType_1.AggregateType.Order,
|
|
138
|
+
previousStatus,
|
|
139
|
+
reason,
|
|
140
|
+
reopenedAt: new Date(),
|
|
141
|
+
reopenedBy,
|
|
142
|
+
};
|
|
143
|
+
await this.eventBridge.publish(event);
|
|
144
|
+
}
|
|
145
|
+
async closeOrder(orderId, restaurantId, closedBy) {
|
|
146
|
+
const event = {
|
|
147
|
+
...this.baseEvent(orderId, restaurantId),
|
|
148
|
+
eventType: DomainEventType_1.DomainEventType.OrderClosed,
|
|
149
|
+
aggregateType: DomainEventType_1.AggregateType.Order,
|
|
150
|
+
closedAt: new Date(),
|
|
151
|
+
closedBy,
|
|
152
|
+
};
|
|
153
|
+
await this.eventBridge.publish(event);
|
|
154
|
+
}
|
|
155
|
+
// ─── Order items ──────────────────────────────────────────────────────────
|
|
156
|
+
async addOrderItem(orderId, restaurantId, item, addedBy) {
|
|
157
|
+
const event = {
|
|
158
|
+
...this.baseEvent(orderId, restaurantId),
|
|
159
|
+
eventType: DomainEventType_1.DomainEventType.OrderItemAdded,
|
|
160
|
+
aggregateType: DomainEventType_1.AggregateType.Order,
|
|
161
|
+
item,
|
|
162
|
+
addedBy,
|
|
163
|
+
};
|
|
164
|
+
await this.eventBridge.publish(event);
|
|
165
|
+
}
|
|
166
|
+
async updateOrderItem(orderId, restaurantId, before, after, updatedBy) {
|
|
167
|
+
const event = {
|
|
168
|
+
...this.baseEvent(orderId, restaurantId),
|
|
169
|
+
eventType: DomainEventType_1.DomainEventType.OrderItemUpdated,
|
|
170
|
+
aggregateType: DomainEventType_1.AggregateType.Order,
|
|
171
|
+
before,
|
|
172
|
+
after,
|
|
173
|
+
updatedBy,
|
|
174
|
+
};
|
|
175
|
+
await this.eventBridge.publish(event);
|
|
176
|
+
}
|
|
177
|
+
async removeOrderItem(orderId, restaurantId, itemId, reason, removedBy) {
|
|
178
|
+
const event = {
|
|
179
|
+
...this.baseEvent(orderId, restaurantId),
|
|
180
|
+
eventType: DomainEventType_1.DomainEventType.OrderItemRemoved,
|
|
181
|
+
aggregateType: DomainEventType_1.AggregateType.Order,
|
|
182
|
+
itemId,
|
|
183
|
+
reason,
|
|
184
|
+
removedBy,
|
|
185
|
+
};
|
|
186
|
+
await this.eventBridge.publish(event);
|
|
187
|
+
}
|
|
188
|
+
async markOrderItemPrepared(orderId, restaurantId, itemId, preparedBy) {
|
|
189
|
+
const event = {
|
|
190
|
+
...this.baseEvent(orderId, restaurantId),
|
|
191
|
+
eventType: DomainEventType_1.DomainEventType.OrderItemPrepared,
|
|
192
|
+
aggregateType: DomainEventType_1.AggregateType.Order,
|
|
193
|
+
itemId,
|
|
194
|
+
preparedAt: new Date(),
|
|
195
|
+
preparedBy,
|
|
196
|
+
};
|
|
197
|
+
await this.eventBridge.publish(event);
|
|
198
|
+
}
|
|
199
|
+
async markOrderItemServed(orderId, restaurantId, itemId, servedBy) {
|
|
200
|
+
const event = {
|
|
201
|
+
...this.baseEvent(orderId, restaurantId),
|
|
202
|
+
eventType: DomainEventType_1.DomainEventType.OrderItemServed,
|
|
203
|
+
aggregateType: DomainEventType_1.AggregateType.Order,
|
|
204
|
+
itemId,
|
|
205
|
+
servedAt: new Date(),
|
|
206
|
+
servedBy,
|
|
207
|
+
};
|
|
208
|
+
await this.eventBridge.publish(event);
|
|
209
|
+
}
|
|
210
|
+
async voidOrderItem(orderId, restaurantId, itemId, reason, voidedBy) {
|
|
211
|
+
const event = {
|
|
212
|
+
...this.baseEvent(orderId, restaurantId),
|
|
213
|
+
eventType: DomainEventType_1.DomainEventType.OrderItemVoided,
|
|
214
|
+
aggregateType: DomainEventType_1.AggregateType.Order,
|
|
215
|
+
itemId,
|
|
216
|
+
reason,
|
|
217
|
+
voidedAt: new Date(),
|
|
218
|
+
voidedBy,
|
|
219
|
+
};
|
|
220
|
+
await this.eventBridge.publish(event);
|
|
221
|
+
}
|
|
222
|
+
// ─── Private helpers ──────────────────────────────────────────────────────
|
|
223
|
+
baseEvent(aggregateId, restaurantId) {
|
|
224
|
+
return {
|
|
225
|
+
eventId: (0, crypto_1.randomUUID)(),
|
|
226
|
+
aggregateId,
|
|
227
|
+
restaurantId,
|
|
228
|
+
version: 1,
|
|
229
|
+
occurredAt: new Date(),
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
toMoney(m) {
|
|
233
|
+
return {
|
|
234
|
+
amount: m?.amount ?? 0,
|
|
235
|
+
currency: (m?.currency ?? "USD"),
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
mapSquareOrderType(order) {
|
|
239
|
+
const fulfillment = order.fulfillments?.[0];
|
|
240
|
+
switch (fulfillment?.type) {
|
|
241
|
+
case "DELIVERY":
|
|
242
|
+
case "SHIPMENT": return Enums_1.OrderType.DELIVERY;
|
|
243
|
+
case "PICKUP": {
|
|
244
|
+
if (fulfillment.pickup_details?.is_curbside_pickup)
|
|
245
|
+
return Enums_1.OrderType.CURBSIDE;
|
|
246
|
+
return Enums_1.OrderType.TAKEAWAY;
|
|
247
|
+
}
|
|
248
|
+
default: return Enums_1.OrderType.DINE_IN;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
mapSquareOrderStatus(state) {
|
|
252
|
+
switch (state) {
|
|
253
|
+
case "OPEN": return Enums_1.OrderStatus.IN_PROGRESS;
|
|
254
|
+
case "COMPLETED": return Enums_1.OrderStatus.COMPLETED;
|
|
255
|
+
case "CANCELED": return Enums_1.OrderStatus.CANCELLED;
|
|
256
|
+
default: return Enums_1.OrderStatus.PENDING;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
mapSquareTenderType(type) {
|
|
260
|
+
switch (type) {
|
|
261
|
+
case "CASH": return Payments_1.PaymentMethod.CASH;
|
|
262
|
+
case "CARD":
|
|
263
|
+
case "THIRD_PARTY_CARD": return Payments_1.PaymentMethod.CREDIT_CARD;
|
|
264
|
+
case "SQUARE_GIFT_CARD": return Payments_1.PaymentMethod.GIFT_CARD;
|
|
265
|
+
case "WALLET": return Payments_1.PaymentMethod.MOBILE_PAYMENT;
|
|
266
|
+
case "BANK_ACCOUNT": return Payments_1.PaymentMethod.BANK_TRANSFER;
|
|
267
|
+
default: return Payments_1.PaymentMethod.OTHER;
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
mapSquareLineItem(item, index) {
|
|
271
|
+
const modifiers = (item.modifiers ?? []).map((mod, i) => ({
|
|
272
|
+
id: mod.uid ?? `mod-${i}`,
|
|
273
|
+
name: mod.name ?? "",
|
|
274
|
+
quantity: mod.quantity !== undefined ? parseFloat(mod.quantity) : undefined,
|
|
275
|
+
price: mod.base_price_money ? this.toMoney(mod.base_price_money) : undefined,
|
|
276
|
+
}));
|
|
277
|
+
return {
|
|
278
|
+
id: item.uid ?? `item-${index}`,
|
|
279
|
+
productId: item.catalog_object_id ?? item.uid ?? `item-${index}`,
|
|
280
|
+
name: item.name ?? "",
|
|
281
|
+
quantity: parseFloat(item.quantity ?? "1"),
|
|
282
|
+
unitPrice: this.toMoney(item.base_price_money),
|
|
283
|
+
discount: this.toMoney(item.total_discount_money),
|
|
284
|
+
tax: this.toMoney(item.total_tax_money),
|
|
285
|
+
total: this.toMoney(item.total_money),
|
|
286
|
+
notes: undefined,
|
|
287
|
+
modifiers: modifiers.length > 0 ? modifiers : undefined,
|
|
288
|
+
};
|
|
289
|
+
}
|
|
290
|
+
mapSquarePayments(order) {
|
|
291
|
+
return (order.tenders ?? []).map((tender, i) => ({
|
|
292
|
+
id: tender.id ?? `tender-${i}`,
|
|
293
|
+
externalId: tender.id,
|
|
294
|
+
method: this.mapSquareTenderType(tender.type),
|
|
295
|
+
amount: this.toMoney(tender.amount_money),
|
|
296
|
+
status: Payments_1.PaymentStatus.COMPLETED,
|
|
297
|
+
authorizationCode: tender.card_details?.card?.fingerprint,
|
|
298
|
+
reference: tender.transaction_id,
|
|
299
|
+
paidAt: tender.created_at ? new Date(tender.created_at) : new Date(),
|
|
300
|
+
}));
|
|
301
|
+
}
|
|
302
|
+
};
|
|
303
|
+
exports.SquareOrderServiceImpl = SquareOrderServiceImpl;
|
|
304
|
+
exports.SquareOrderServiceImpl = SquareOrderServiceImpl = __decorate([
|
|
305
|
+
(0, common_1.Injectable)(),
|
|
306
|
+
__param(0, (0, common_1.Inject)(ioc_1.EventBridgeSymbols.EventBridgeService)),
|
|
307
|
+
__metadata("design:paramtypes", [Object])
|
|
308
|
+
], SquareOrderServiceImpl);
|
package/jest.config.js
ADDED
package/package.json
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@novha/anlia-core-lib",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"private": false,
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/types/index.d.ts",
|
|
7
|
+
"bin": {
|
|
8
|
+
"anlia-core-lib.js": "bin/anlia-core-lib.js"
|
|
9
|
+
},
|
|
10
|
+
"scripts": {
|
|
11
|
+
"build": "tsc",
|
|
12
|
+
"watch": "tsc -w",
|
|
13
|
+
"test": "jest",
|
|
14
|
+
"cdk": "cdk"
|
|
15
|
+
},
|
|
16
|
+
"devDependencies": {
|
|
17
|
+
"@types/jest": "^29.5.12",
|
|
18
|
+
"@types/node": "20.12.7",
|
|
19
|
+
"aws-cdk": "2.142.1",
|
|
20
|
+
"jest": "^29.7.0",
|
|
21
|
+
"ts-jest": "^29.1.2",
|
|
22
|
+
"ts-node": "^10.9.2",
|
|
23
|
+
"typescript": "~5.4.5"
|
|
24
|
+
},
|
|
25
|
+
"dependencies": {
|
|
26
|
+
"@aws-sdk/client-eventbridge": "^3.1090.0",
|
|
27
|
+
"@aws-sdk/client-secrets-manager": "^3.721.0",
|
|
28
|
+
"@nestjs/common": "^11.1.28",
|
|
29
|
+
"@nestjs/core": "^11.1.28",
|
|
30
|
+
"aws-cdk-lib": "^2.261.0",
|
|
31
|
+
"constructs": "^10.0.0",
|
|
32
|
+
"json2typescript": "^1.5.1",
|
|
33
|
+
"predikt-cdk-lib": "^0.1.7",
|
|
34
|
+
"reflect-metadata": "^0.2.2",
|
|
35
|
+
"source-map-support": "^0.5.21"
|
|
36
|
+
},
|
|
37
|
+
"author": "Yannick Kazadi",
|
|
38
|
+
"license": "ISC",
|
|
39
|
+
"description": "",
|
|
40
|
+
"publishConfig": {
|
|
41
|
+
"access": "public"
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export enum DeliveryStatus {
|
|
2
|
+
PENDING = "PENDING",
|
|
3
|
+
ASSIGNED = "ASSIGNED",
|
|
4
|
+
PICKED_UP = "PICKED_UP",
|
|
5
|
+
IN_TRANSIT = "IN_TRANSIT",
|
|
6
|
+
DELIVERED = "DELIVERED",
|
|
7
|
+
FAILED = "FAILED",
|
|
8
|
+
CANCELLED = "CANCELLED",
|
|
9
|
+
RETURNED = "RETURNED",
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export enum DeliveryProvider {
|
|
13
|
+
IN_HOUSE = "IN_HOUSE",
|
|
14
|
+
UBER_EATS = "UBER_EATS",
|
|
15
|
+
DOORDASH = "DOORDASH",
|
|
16
|
+
GRUBHUB = "GRUBHUB",
|
|
17
|
+
SKIPTHEDISHES = "SKIPTHEDISHES",
|
|
18
|
+
DELIVEROO = "DELIVEROO",
|
|
19
|
+
OTHER = "OTHER",
|
|
20
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export enum EmployeeRole {
|
|
2
|
+
OWNER = "OWNER",
|
|
3
|
+
MANAGER = "MANAGER",
|
|
4
|
+
SUPERVISOR = "SUPERVISOR",
|
|
5
|
+
CASHIER = "CASHIER",
|
|
6
|
+
SERVER = "SERVER",
|
|
7
|
+
CHEF = "CHEF",
|
|
8
|
+
KITCHEN = "KITCHEN",
|
|
9
|
+
DELIVERY_DRIVER = "DELIVERY_DRIVER",
|
|
10
|
+
HOST = "HOST",
|
|
11
|
+
OTHER = "OTHER"
|
|
12
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export enum IngredientStatus {
|
|
2
|
+
ACTIVE = "ACTIVE",
|
|
3
|
+
INACTIVE = "INACTIVE",
|
|
4
|
+
DISCONTINUED = "DISCONTINUED",
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export enum AllergenType {
|
|
8
|
+
GLUTEN = "GLUTEN",
|
|
9
|
+
CRUSTACEANS = "CRUSTACEANS",
|
|
10
|
+
EGGS = "EGGS",
|
|
11
|
+
FISH = "FISH",
|
|
12
|
+
PEANUTS = "PEANUTS",
|
|
13
|
+
SOYBEANS = "SOYBEANS",
|
|
14
|
+
MILK = "MILK",
|
|
15
|
+
NUTS = "NUTS",
|
|
16
|
+
CELERY = "CELERY",
|
|
17
|
+
MUSTARD = "MUSTARD",
|
|
18
|
+
SESAME = "SESAME",
|
|
19
|
+
SULPHITES = "SULPHITES",
|
|
20
|
+
LUPIN = "LUPIN",
|
|
21
|
+
MOLLUSCS = "MOLLUSCS",
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export enum DietaryFlag {
|
|
25
|
+
VEGAN = "VEGAN",
|
|
26
|
+
VEGETARIAN = "VEGETARIAN",
|
|
27
|
+
GLUTEN_FREE = "GLUTEN_FREE",
|
|
28
|
+
DAIRY_FREE = "DAIRY_FREE",
|
|
29
|
+
NUT_FREE = "NUT_FREE",
|
|
30
|
+
HALAL = "HALAL",
|
|
31
|
+
KOSHER = "KOSHER",
|
|
32
|
+
ORGANIC = "ORGANIC",
|
|
33
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export enum InventoryCategory {
|
|
2
|
+
INGREDIENT = "INGREDIENT",
|
|
3
|
+
BEVERAGE = "BEVERAGE",
|
|
4
|
+
PACKAGING = "PACKAGING",
|
|
5
|
+
CLEANING_SUPPLY = "CLEANING_SUPPLY",
|
|
6
|
+
EQUIPMENT = "EQUIPMENT",
|
|
7
|
+
OTHER = "OTHER"
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export enum InventoryUnit {
|
|
11
|
+
PIECE = "PIECE",
|
|
12
|
+
KILOGRAM = "KILOGRAM",
|
|
13
|
+
GRAM = "GRAM",
|
|
14
|
+
LITER = "LITER",
|
|
15
|
+
MILLILITER = "MILLILITER"
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export enum InventoryStatus {
|
|
19
|
+
ACTIVE = "ACTIVE",
|
|
20
|
+
INACTIVE = "INACTIVE",
|
|
21
|
+
DISCONTINUED = "DISCONTINUED"
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export enum InventoryTransactionType {
|
|
25
|
+
|
|
26
|
+
PURCHASE = "PURCHASE",
|
|
27
|
+
|
|
28
|
+
SALE_CONSUMPTION = "SALE_CONSUMPTION",
|
|
29
|
+
|
|
30
|
+
WASTE = "WASTE",
|
|
31
|
+
|
|
32
|
+
SPOILAGE = "SPOILAGE",
|
|
33
|
+
|
|
34
|
+
RETURN = "RETURN",
|
|
35
|
+
|
|
36
|
+
ADJUSTMENT = "ADJUSTMENT",
|
|
37
|
+
|
|
38
|
+
TRANSFER = "TRANSFER"
|
|
39
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
export enum KitchenStationType {
|
|
2
|
+
GRILL = "GRILL",
|
|
3
|
+
|
|
4
|
+
FRYER = "FRYER",
|
|
5
|
+
|
|
6
|
+
PREP = "PREP",
|
|
7
|
+
|
|
8
|
+
DESSERT = "DESSERT",
|
|
9
|
+
|
|
10
|
+
BAR = "BAR",
|
|
11
|
+
|
|
12
|
+
DRINKS = "DRINKS",
|
|
13
|
+
|
|
14
|
+
BAKERY = "BAKERY",
|
|
15
|
+
|
|
16
|
+
GENERAL = "GENERAL"
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export enum KitchenStatus {
|
|
20
|
+
|
|
21
|
+
OPEN = "OPEN",
|
|
22
|
+
|
|
23
|
+
CLOSED = "CLOSED",
|
|
24
|
+
|
|
25
|
+
BUSY = "BUSY",
|
|
26
|
+
|
|
27
|
+
MAINTENANCE = "MAINTENANCE"
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export enum KitchenTicketStatus {
|
|
31
|
+
|
|
32
|
+
QUEUED = "QUEUED",
|
|
33
|
+
|
|
34
|
+
IN_PROGRESS = "IN_PROGRESS",
|
|
35
|
+
|
|
36
|
+
READY = "READY",
|
|
37
|
+
|
|
38
|
+
COMPLETED = "COMPLETED",
|
|
39
|
+
|
|
40
|
+
CANCELLED = "CANCELLED"
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export enum KitchenPriority {
|
|
44
|
+
|
|
45
|
+
LOW = "LOW",
|
|
46
|
+
|
|
47
|
+
MEDIUM = "MEDIUM",
|
|
48
|
+
|
|
49
|
+
HIGH = "HIGH",
|
|
50
|
+
|
|
51
|
+
URGENT = "URGENT"
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export enum KitchenStationStatus {
|
|
55
|
+
|
|
56
|
+
AVAILABLE = "AVAILABLE",
|
|
57
|
+
|
|
58
|
+
BUSY = "BUSY",
|
|
59
|
+
|
|
60
|
+
OFFLINE = "OFFLINE",
|
|
61
|
+
|
|
62
|
+
MAINTENANCE = "MAINTENANCE"
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export enum KitchenTicketItemStatus {
|
|
66
|
+
|
|
67
|
+
PENDING = "PENDING",
|
|
68
|
+
|
|
69
|
+
IN_PROGRESS = "IN_PROGRESS",
|
|
70
|
+
|
|
71
|
+
READY = "READY",
|
|
72
|
+
|
|
73
|
+
COMPLETED = "COMPLETED",
|
|
74
|
+
|
|
75
|
+
CANCELLED = "CANCELLED"
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export enum KitchenItemStatus {
|
|
79
|
+
|
|
80
|
+
PENDING = "PENDING",
|
|
81
|
+
|
|
82
|
+
IN_PROGRESS = "IN_PROGRESS",
|
|
83
|
+
|
|
84
|
+
READY = "READY",
|
|
85
|
+
|
|
86
|
+
COMPLETED = "COMPLETED",
|
|
87
|
+
|
|
88
|
+
CANCELLED = "CANCELLED"
|
|
89
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export enum MenuItemStatus {
|
|
2
|
+
ACTIVE = "ACTIVE",
|
|
3
|
+
INACTIVE = "INACTIVE",
|
|
4
|
+
OUT_OF_STOCK = "OUT_OF_STOCK",
|
|
5
|
+
SEASONAL = "SEASONAL",
|
|
6
|
+
DISCONTINUED = "DISCONTINUED",
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export enum MenuStatus {
|
|
10
|
+
ACTIVE = "ACTIVE",
|
|
11
|
+
INACTIVE = "INACTIVE",
|
|
12
|
+
DRAFT = "DRAFT",
|
|
13
|
+
ARCHIVED = "ARCHIVED",
|
|
14
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export enum PaymentMethod {
|
|
2
|
+
|
|
3
|
+
CASH = "CASH",
|
|
4
|
+
|
|
5
|
+
CREDIT_CARD = "CREDIT_CARD",
|
|
6
|
+
|
|
7
|
+
DEBIT_CARD = "DEBIT_CARD",
|
|
8
|
+
|
|
9
|
+
MOBILE_PAYMENT = "MOBILE_PAYMENT",
|
|
10
|
+
|
|
11
|
+
GIFT_CARD = "GIFT_CARD",
|
|
12
|
+
|
|
13
|
+
LOYALTY_POINTS = "LOYALTY_POINTS",
|
|
14
|
+
|
|
15
|
+
ONLINE_PAYMENT = "ONLINE_PAYMENT",
|
|
16
|
+
|
|
17
|
+
BANK_TRANSFER = "BANK_TRANSFER",
|
|
18
|
+
|
|
19
|
+
OTHER = "OTHER"
|
|
20
|
+
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export enum PaymentStatus {
|
|
24
|
+
|
|
25
|
+
PENDING = "PENDING",
|
|
26
|
+
|
|
27
|
+
AUTHORIZED = "AUTHORIZED",
|
|
28
|
+
|
|
29
|
+
CAPTURED = "CAPTURED",
|
|
30
|
+
|
|
31
|
+
COMPLETED = "COMPLETED",
|
|
32
|
+
|
|
33
|
+
FAILED = "FAILED",
|
|
34
|
+
|
|
35
|
+
REFUNDED = "REFUNDED",
|
|
36
|
+
|
|
37
|
+
PARTIALLY_REFUNDED = "PARTIALLY_REFUNDED",
|
|
38
|
+
|
|
39
|
+
CANCELLED = "CANCELLED"
|
|
40
|
+
|
|
41
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export enum RecipeStatus {
|
|
2
|
+
ACTIVE = "ACTIVE",
|
|
3
|
+
DRAFT = "DRAFT",
|
|
4
|
+
ARCHIVED = "ARCHIVED",
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export enum RecipeYieldUnit {
|
|
8
|
+
PORTION = "PORTION",
|
|
9
|
+
PIECE = "PIECE",
|
|
10
|
+
TRAY = "TRAY",
|
|
11
|
+
BATCH = "BATCH",
|
|
12
|
+
LITER = "LITER",
|
|
13
|
+
KILOGRAM = "KILOGRAM",
|
|
14
|
+
GRAM = "GRAM",
|
|
15
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export enum ReservationStatus {
|
|
2
|
+
PENDING = "PENDING",
|
|
3
|
+
CONFIRMED = "CONFIRMED",
|
|
4
|
+
CHECKED_IN = "CHECKED_IN",
|
|
5
|
+
SEATED = "SEATED",
|
|
6
|
+
COMPLETED = "COMPLETED",
|
|
7
|
+
CANCELLED = "CANCELLED",
|
|
8
|
+
NO_SHOW = "NO_SHOW"
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export enum ReservationSource {
|
|
12
|
+
PHONE = "PHONE",
|
|
13
|
+
WALK_IN = "WALK_IN",
|
|
14
|
+
WEBSITE = "WEBSITE",
|
|
15
|
+
MOBILE_APP = "MOBILE_APP",
|
|
16
|
+
THIRD_PARTY = "THIRD_PARTY",
|
|
17
|
+
AI_ASSISTANT = "AI_ASSISTANT"
|
|
18
|
+
}
|