@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,102 @@
|
|
|
1
|
+
import { DomainEvent } from "./DomainEvent";
|
|
2
|
+
import { ITable } from "../../interfaces/domain/Table";
|
|
3
|
+
import { TableStatus } from "../../enums/domain/Table";
|
|
4
|
+
|
|
5
|
+
// ─── Lifecycle Events ──────────────────────────────────────────────────────────
|
|
6
|
+
|
|
7
|
+
export interface TableCreated extends DomainEvent {
|
|
8
|
+
eventType: "TableCreated";
|
|
9
|
+
aggregateType: "Table";
|
|
10
|
+
table: ITable;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export interface TableUpdated extends DomainEvent {
|
|
14
|
+
eventType: "TableUpdated";
|
|
15
|
+
aggregateType: "Table";
|
|
16
|
+
before: Partial<ITable>;
|
|
17
|
+
after: Partial<ITable>;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// ─── Status Events ─────────────────────────────────────────────────────────────
|
|
21
|
+
|
|
22
|
+
export interface TableOpened extends DomainEvent {
|
|
23
|
+
eventType: "TableOpened";
|
|
24
|
+
aggregateType: "Table";
|
|
25
|
+
previousStatus: TableStatus;
|
|
26
|
+
openedBy?: string;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export interface TableOccupied extends DomainEvent {
|
|
30
|
+
eventType: "TableOccupied";
|
|
31
|
+
aggregateType: "Table";
|
|
32
|
+
partySize: number;
|
|
33
|
+
reservationId?: string;
|
|
34
|
+
seatedBy?: string;
|
|
35
|
+
occupiedAt: Date;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export interface TableReserved extends DomainEvent {
|
|
39
|
+
eventType: "TableReserved";
|
|
40
|
+
aggregateType: "Table";
|
|
41
|
+
reservationId: string;
|
|
42
|
+
reservedAt: Date;
|
|
43
|
+
reservedBy?: string;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export interface TableReleased extends DomainEvent {
|
|
47
|
+
eventType: "TableReleased";
|
|
48
|
+
aggregateType: "Table";
|
|
49
|
+
previousStatus: TableStatus;
|
|
50
|
+
releasedBy?: string;
|
|
51
|
+
releasedAt: Date;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// ─── Combination Events ────────────────────────────────────────────────────────
|
|
55
|
+
|
|
56
|
+
export interface TableMerged extends DomainEvent {
|
|
57
|
+
eventType: "TableMerged";
|
|
58
|
+
aggregateType: "Table";
|
|
59
|
+
/** IDs of all tables joined into this combined group. */
|
|
60
|
+
mergedTableIds: string[];
|
|
61
|
+
combinedCapacity: number;
|
|
62
|
+
mergedBy?: string;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export interface TableSplit extends DomainEvent {
|
|
66
|
+
eventType: "TableSplit";
|
|
67
|
+
aggregateType: "Table";
|
|
68
|
+
/** IDs of tables that were part of the combined group before the split. */
|
|
69
|
+
previousTableIds: string[];
|
|
70
|
+
splitBy?: string;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// ─── Service Events ────────────────────────────────────────────────────────────
|
|
74
|
+
|
|
75
|
+
export interface TableOutOfService extends DomainEvent {
|
|
76
|
+
eventType: "TableOutOfService";
|
|
77
|
+
aggregateType: "Table";
|
|
78
|
+
reason?: string;
|
|
79
|
+
markedBy?: string;
|
|
80
|
+
markedAt: Date;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export interface TableReturnedToService extends DomainEvent {
|
|
84
|
+
eventType: "TableReturnedToService";
|
|
85
|
+
aggregateType: "Table";
|
|
86
|
+
returnedBy?: string;
|
|
87
|
+
returnedAt: Date;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// ─── Union Type ────────────────────────────────────────────────────────────────
|
|
91
|
+
|
|
92
|
+
export type TableEvent =
|
|
93
|
+
| TableCreated
|
|
94
|
+
| TableUpdated
|
|
95
|
+
| TableOpened
|
|
96
|
+
| TableOccupied
|
|
97
|
+
| TableReserved
|
|
98
|
+
| TableReleased
|
|
99
|
+
| TableMerged
|
|
100
|
+
| TableSplit
|
|
101
|
+
| TableOutOfService
|
|
102
|
+
| TableReturnedToService;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { DomainEvent } from "./DomainEvent";
|
|
2
|
+
import { IVendor } from "../../interfaces/domain/Vendor";
|
|
3
|
+
import { VendorStatus } from "../../enums/domain/Vendors";
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
// ─── Lifecycle Events ──────────────────────────────────────────────────────────
|
|
7
|
+
|
|
8
|
+
export interface VendorCreated extends DomainEvent {
|
|
9
|
+
eventType: "VendorCreated";
|
|
10
|
+
aggregateType: "Vendor";
|
|
11
|
+
vendor: IVendor;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export interface VendorUpdated extends DomainEvent {
|
|
15
|
+
eventType: "VendorUpdated";
|
|
16
|
+
aggregateType: "Vendor";
|
|
17
|
+
before: Partial<IVendor>;
|
|
18
|
+
after: Partial<IVendor>;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export interface VendorActivated extends DomainEvent {
|
|
22
|
+
eventType: "VendorActivated";
|
|
23
|
+
aggregateType: "Vendor";
|
|
24
|
+
previousStatus: VendorStatus;
|
|
25
|
+
activatedBy?: string;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export interface VendorDeactivated extends DomainEvent {
|
|
29
|
+
eventType: "VendorDeactivated";
|
|
30
|
+
aggregateType: "Vendor";
|
|
31
|
+
previousStatus: VendorStatus;
|
|
32
|
+
reason?: string;
|
|
33
|
+
deactivatedBy?: string;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// ─── Union Type ────────────────────────────────────────────────────────────────
|
|
37
|
+
|
|
38
|
+
export type VendorEvent =
|
|
39
|
+
| VendorCreated
|
|
40
|
+
| VendorUpdated
|
|
41
|
+
| VendorActivated
|
|
42
|
+
| VendorDeactivated;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export * from "./domain/VendorEvents";
|
|
2
|
+
export * from "./domain/RestaurantEvents";
|
|
3
|
+
export * from "./domain/TableEvents";
|
|
4
|
+
export * from "./domain/EmployeeEvents";
|
|
5
|
+
export * from "./domain/CustomerEvents";
|
|
6
|
+
export * from "./domain/ReservationEvents";
|
|
7
|
+
export * from "./domain/OrderEvents";
|
|
8
|
+
export * from "./domain/PaymentEvents";
|
|
9
|
+
export * from "./domain/RecipeEvents";
|
|
10
|
+
export * from "./domain/InventoryEvents";
|
|
11
|
+
export * from "./domain/DeliveryEvents";
|
|
12
|
+
export * from "./domain/DomainEvent";
|
|
13
|
+
export * from "./domain/DomainEventType";
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { IAddress } from "./Address";
|
|
2
|
+
|
|
3
|
+
export interface ICustomer {
|
|
4
|
+
/**
|
|
5
|
+
* Internal customer identifier.
|
|
6
|
+
*/
|
|
7
|
+
id: string;
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Vendor customer identifier.
|
|
11
|
+
*/
|
|
12
|
+
externalId?: string;
|
|
13
|
+
|
|
14
|
+
firstName?: string;
|
|
15
|
+
|
|
16
|
+
lastName?: string;
|
|
17
|
+
|
|
18
|
+
fullName?: string;
|
|
19
|
+
|
|
20
|
+
email?: string;
|
|
21
|
+
|
|
22
|
+
phoneNumber?: string;
|
|
23
|
+
|
|
24
|
+
loyaltyId?: string;
|
|
25
|
+
|
|
26
|
+
dateOfBirth?: Date;
|
|
27
|
+
|
|
28
|
+
address?: IAddress;
|
|
29
|
+
|
|
30
|
+
createdAt?: Date;
|
|
31
|
+
|
|
32
|
+
updatedAt?: Date;
|
|
33
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { DeliveryProvider, DeliveryStatus } from "../../enums/domain/Delivery";
|
|
2
|
+
import { IAddress } from "./Address";
|
|
3
|
+
import { Money } from "./Money";
|
|
4
|
+
|
|
5
|
+
export interface IDeliveryDriver {
|
|
6
|
+
id?: string;
|
|
7
|
+
|
|
8
|
+
name: string;
|
|
9
|
+
|
|
10
|
+
phoneNumber?: string;
|
|
11
|
+
|
|
12
|
+
/** External driver ID from the delivery provider. */
|
|
13
|
+
externalId?: string;
|
|
14
|
+
|
|
15
|
+
/** Real-time latitude of the driver. */
|
|
16
|
+
latitude?: number;
|
|
17
|
+
|
|
18
|
+
/** Real-time longitude of the driver. */
|
|
19
|
+
longitude?: number;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export interface IDeliveryTracking {
|
|
23
|
+
/** Current latitude of the delivery. */
|
|
24
|
+
latitude?: number;
|
|
25
|
+
|
|
26
|
+
/** Current longitude of the delivery. */
|
|
27
|
+
longitude?: number;
|
|
28
|
+
|
|
29
|
+
/** Estimated arrival time. */
|
|
30
|
+
estimatedArrivalAt?: Date;
|
|
31
|
+
|
|
32
|
+
lastUpdatedAt: Date;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export interface IDeliveryProvider {
|
|
36
|
+
/** Name of the delivery provider. */
|
|
37
|
+
name: string;
|
|
38
|
+
|
|
39
|
+
code: DeliveryProvider;
|
|
40
|
+
|
|
41
|
+
/** External delivery identifier from the provider. */
|
|
42
|
+
externalId?: string;
|
|
43
|
+
|
|
44
|
+
/** Tracking URL for the delivery, if available. */
|
|
45
|
+
trackingUrl?: string;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export interface IDelivery {
|
|
49
|
+
id: string;
|
|
50
|
+
|
|
51
|
+
restaurantId: string;
|
|
52
|
+
|
|
53
|
+
orderId: string;
|
|
54
|
+
|
|
55
|
+
/** External delivery identifier from the provider. */
|
|
56
|
+
externalId?: string;
|
|
57
|
+
|
|
58
|
+
provider: IDeliveryProvider;
|
|
59
|
+
|
|
60
|
+
status: DeliveryStatus;
|
|
61
|
+
|
|
62
|
+
driver?: IDeliveryDriver;
|
|
63
|
+
|
|
64
|
+
/** Destination address for the delivery. */
|
|
65
|
+
deliveryAddress: IAddress;
|
|
66
|
+
|
|
67
|
+
/** Delivery fee charged to the customer. */
|
|
68
|
+
deliveryFee?: Money;
|
|
69
|
+
|
|
70
|
+
/** Tip for the driver. */
|
|
71
|
+
driverTip?: Money;
|
|
72
|
+
|
|
73
|
+
/** Estimated delivery time in minutes from order placement. */
|
|
74
|
+
estimatedDeliveryMinutes?: number;
|
|
75
|
+
|
|
76
|
+
/** Distance to the delivery address in kilometres. */
|
|
77
|
+
distanceKm?: number;
|
|
78
|
+
|
|
79
|
+
tracking?: IDeliveryTracking;
|
|
80
|
+
|
|
81
|
+
/** Free-text delivery instructions from the customer. */
|
|
82
|
+
deliveryInstructions?: string;
|
|
83
|
+
|
|
84
|
+
/** Reason for failure or cancellation, if applicable. */
|
|
85
|
+
failureReason?: string;
|
|
86
|
+
|
|
87
|
+
scheduledAt?: Date;
|
|
88
|
+
|
|
89
|
+
pickedUpAt?: Date;
|
|
90
|
+
|
|
91
|
+
deliveredAt?: Date;
|
|
92
|
+
|
|
93
|
+
createdAt: Date;
|
|
94
|
+
|
|
95
|
+
updatedAt: Date;
|
|
96
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { EmployeeRole } from "../../enums/domain/Employee";
|
|
2
|
+
|
|
3
|
+
export interface IEmployee {
|
|
4
|
+
/**
|
|
5
|
+
* Internal employee identifier.
|
|
6
|
+
*/
|
|
7
|
+
id: string;
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Vendor employee identifier.
|
|
11
|
+
*/
|
|
12
|
+
externalId?: string;
|
|
13
|
+
|
|
14
|
+
firstName: string;
|
|
15
|
+
|
|
16
|
+
lastName: string;
|
|
17
|
+
|
|
18
|
+
fullName?: string;
|
|
19
|
+
|
|
20
|
+
email?: string;
|
|
21
|
+
|
|
22
|
+
phoneNumber?: string;
|
|
23
|
+
|
|
24
|
+
role: EmployeeRole;
|
|
25
|
+
|
|
26
|
+
active: boolean;
|
|
27
|
+
|
|
28
|
+
hiredAt?: Date;
|
|
29
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { InventoryUnit } from "../../enums/domain/Inventory";
|
|
2
|
+
import { Money } from "./Money";
|
|
3
|
+
import { IngredientStatus, AllergenType, DietaryFlag } from "../../enums/domain/Ingredient";
|
|
4
|
+
|
|
5
|
+
export interface INutritionalInfo {
|
|
6
|
+
/** Per 100 g or 100 ml of the ingredient. */
|
|
7
|
+
per100g: boolean;
|
|
8
|
+
|
|
9
|
+
calories?: number;
|
|
10
|
+
|
|
11
|
+
protein?: number;
|
|
12
|
+
|
|
13
|
+
carbohydrates?: number;
|
|
14
|
+
|
|
15
|
+
sugar?: number;
|
|
16
|
+
|
|
17
|
+
fat?: number;
|
|
18
|
+
|
|
19
|
+
saturatedFat?: number;
|
|
20
|
+
|
|
21
|
+
fiber?: number;
|
|
22
|
+
|
|
23
|
+
sodium?: number;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export interface IIngredient {
|
|
27
|
+
id: string;
|
|
28
|
+
|
|
29
|
+
restaurantId: string;
|
|
30
|
+
|
|
31
|
+
/** Human-readable name (e.g. "Whole Wheat Flour"). */
|
|
32
|
+
name: string;
|
|
33
|
+
|
|
34
|
+
/** Optional short code used in recipes and purchase orders. */
|
|
35
|
+
sku?: string;
|
|
36
|
+
|
|
37
|
+
description?: string;
|
|
38
|
+
|
|
39
|
+
status: IngredientStatus;
|
|
40
|
+
|
|
41
|
+
/** Unit used when measuring this ingredient in recipes. */
|
|
42
|
+
unit: InventoryUnit;
|
|
43
|
+
|
|
44
|
+
/** Standard purchase cost per unit. */
|
|
45
|
+
unitCost?: Money;
|
|
46
|
+
|
|
47
|
+
/** Link to the corresponding inventory item. */
|
|
48
|
+
inventoryItemId?: string;
|
|
49
|
+
|
|
50
|
+
allergens?: AllergenType[];
|
|
51
|
+
|
|
52
|
+
dietaryFlags?: DietaryFlag[];
|
|
53
|
+
|
|
54
|
+
nutritionalInfo?: INutritionalInfo;
|
|
55
|
+
|
|
56
|
+
/** Storage location or section (e.g. "Walk-in Cooler", "Dry Storage"). */
|
|
57
|
+
storageLocation?: string;
|
|
58
|
+
|
|
59
|
+
/** Minimum shelf life in days after opening. */
|
|
60
|
+
shelfLifeDays?: number;
|
|
61
|
+
|
|
62
|
+
/** Supplier or vendor reference. */
|
|
63
|
+
supplierId?: string;
|
|
64
|
+
|
|
65
|
+
createdAt: Date;
|
|
66
|
+
|
|
67
|
+
updatedAt: Date;
|
|
68
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { InventoryCategory, InventoryStatus, InventoryUnit } from "../../enums/domain/Inventory";
|
|
2
|
+
|
|
3
|
+
export interface IInventoryItem {
|
|
4
|
+
id: string;
|
|
5
|
+
|
|
6
|
+
restaurantId: string;
|
|
7
|
+
|
|
8
|
+
// Basic information
|
|
9
|
+
name: string;
|
|
10
|
+
sku: string;
|
|
11
|
+
category: InventoryCategory;
|
|
12
|
+
|
|
13
|
+
// Measurement
|
|
14
|
+
unit: InventoryUnit;
|
|
15
|
+
|
|
16
|
+
// Stock levels
|
|
17
|
+
quantityOnHand: number;
|
|
18
|
+
minimumStockLevel: number;
|
|
19
|
+
maximumStockLevel?: number;
|
|
20
|
+
|
|
21
|
+
// Cost
|
|
22
|
+
unitCost: number;
|
|
23
|
+
|
|
24
|
+
// Supplier
|
|
25
|
+
vendorId?: string;
|
|
26
|
+
|
|
27
|
+
// Storage
|
|
28
|
+
location?: string;
|
|
29
|
+
|
|
30
|
+
// Expiration
|
|
31
|
+
expiryDate?: Date;
|
|
32
|
+
|
|
33
|
+
status: InventoryStatus;
|
|
34
|
+
|
|
35
|
+
createdAt: Date;
|
|
36
|
+
updatedAt: Date;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export interface IInventory {
|
|
40
|
+
|
|
41
|
+
id: string;
|
|
42
|
+
|
|
43
|
+
restaurantId: string;
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
items: IInventoryItem[];
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
createdAt: Date;
|
|
50
|
+
|
|
51
|
+
updatedAt: Date;
|
|
52
|
+
}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import {
|
|
2
|
+
KitchenItemStatus,
|
|
3
|
+
KitchenPriority,
|
|
4
|
+
KitchenStationStatus,
|
|
5
|
+
KitchenStationType,
|
|
6
|
+
KitchenStatus,
|
|
7
|
+
KitchenTicketStatus
|
|
8
|
+
} from "../../enums/domain/Kitchen";
|
|
9
|
+
|
|
10
|
+
export interface KitchenStation {
|
|
11
|
+
id: string;
|
|
12
|
+
|
|
13
|
+
kitchenId: string;
|
|
14
|
+
|
|
15
|
+
name: string;
|
|
16
|
+
|
|
17
|
+
type: KitchenStationType;
|
|
18
|
+
|
|
19
|
+
status: KitchenStationStatus;
|
|
20
|
+
|
|
21
|
+
createdAt: Date;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export interface Kitchen {
|
|
25
|
+
id: string;
|
|
26
|
+
|
|
27
|
+
restaurantId: string;
|
|
28
|
+
|
|
29
|
+
name: string;
|
|
30
|
+
|
|
31
|
+
status: KitchenStatus;
|
|
32
|
+
|
|
33
|
+
stations: KitchenStation[];
|
|
34
|
+
|
|
35
|
+
createdAt: Date;
|
|
36
|
+
updatedAt: Date;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export interface KitchenTicket {
|
|
40
|
+
|
|
41
|
+
id: string;
|
|
42
|
+
|
|
43
|
+
restaurantId: string;
|
|
44
|
+
|
|
45
|
+
orderId: string;
|
|
46
|
+
|
|
47
|
+
stationId?: string;
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
items: KitchenTicketItem[];
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
status: KitchenTicketStatus;
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
priority: KitchenPriority;
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
createdAt: Date;
|
|
60
|
+
|
|
61
|
+
startedAt?: Date;
|
|
62
|
+
|
|
63
|
+
completedAt?: Date;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export interface KitchenTicketItem {
|
|
67
|
+
|
|
68
|
+
id: string;
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Parent kitchen ticket
|
|
72
|
+
*/
|
|
73
|
+
kitchenTicketId: string;
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Original order item reference
|
|
78
|
+
*/
|
|
79
|
+
orderItemId: string;
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Menu item being prepared
|
|
84
|
+
*/
|
|
85
|
+
menuItemId: string;
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Snapshot of item name at preparation time
|
|
90
|
+
* (important if menu changes later)
|
|
91
|
+
*/
|
|
92
|
+
menuItemName: string;
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Number of items to prepare
|
|
97
|
+
*/
|
|
98
|
+
quantity: number;
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Kitchen preparation status
|
|
103
|
+
*/
|
|
104
|
+
status: KitchenItemStatus;
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Preparation instructions
|
|
109
|
+
*/
|
|
110
|
+
notes?: string;
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Which kitchen station handles it
|
|
115
|
+
*/
|
|
116
|
+
stationId?: string;
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Timing information
|
|
121
|
+
*/
|
|
122
|
+
startedAt?: Date;
|
|
123
|
+
|
|
124
|
+
completedAt?: Date;
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
createdAt: Date;
|
|
128
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export interface ILocation {
|
|
2
|
+
id?: string;
|
|
3
|
+
|
|
4
|
+
name?: string;
|
|
5
|
+
|
|
6
|
+
addressLine1: string;
|
|
7
|
+
addressLine2?: string;
|
|
8
|
+
|
|
9
|
+
city: string;
|
|
10
|
+
stateOrProvince: string;
|
|
11
|
+
postalCode: string;
|
|
12
|
+
country: string;
|
|
13
|
+
|
|
14
|
+
latitude?: number;
|
|
15
|
+
longitude?: number;
|
|
16
|
+
|
|
17
|
+
timezone?: string;
|
|
18
|
+
|
|
19
|
+
instructions?: string;
|
|
20
|
+
}
|