@lodashventure/medusa-booking-for-pickup 0.0.1
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/.medusa/server/src/admin/index.js +1648 -0
- package/.medusa/server/src/admin/index.mjs +1647 -0
- package/.medusa/server/src/api/admin/pickup-date/[id]/route.js +42 -0
- package/.medusa/server/src/api/admin/plugin/route.js +7 -0
- package/.medusa/server/src/api/middlewares.js +37 -0
- package/.medusa/server/src/api/store/carts/[id]/pickup-date/route.js +54 -0
- package/.medusa/server/src/api/store/orders/[id]/pickup-date/route.js +73 -0
- package/.medusa/server/src/links/cart-pickup-date.js +16 -0
- package/.medusa/server/src/links/order-pickup-date.js +15 -0
- package/.medusa/server/src/links/shipping-option-pickup-availability.js +16 -0
- package/.medusa/server/src/modules/pickup-datetime/index.js +14 -0
- package/.medusa/server/src/modules/pickup-datetime/migrations/Migration20250426021722.js +18 -0
- package/.medusa/server/src/modules/pickup-datetime/migrations/Migration20250427042133.js +15 -0
- package/.medusa/server/src/modules/pickup-datetime/migrations/Migration20250428021350.js +14 -0
- package/.medusa/server/src/modules/pickup-datetime/migrations/Migration20250503003504.js +25 -0
- package/.medusa/server/src/modules/pickup-datetime/models/pickup-availability.js +13 -0
- package/.medusa/server/src/modules/pickup-datetime/models/pickup-date.js +11 -0
- package/.medusa/server/src/modules/pickup-datetime/service.js +15 -0
- package/.medusa/server/src/modules/pickup-datetime/types/shippingOptionPickupAvailability.js +25 -0
- package/.medusa/server/src/subscribers/order-placed.js +20 -0
- package/.medusa/server/src/workflows/pickup-availablity/deletePickupAvailabilityWorkflow.js +36 -0
- package/.medusa/server/src/workflows/pickup-availablity/pickup/cancelOrderPickup.js +49 -0
- package/.medusa/server/src/workflows/pickup-availablity/pickup/createOrderPickupDate.js +93 -0
- package/.medusa/server/src/workflows/pickup-availablity/pickup/steps/validatePickupDateStep.js +51 -0
- package/.medusa/server/src/workflows/pickup-availablity/pickup/updateCartPickupDate.js +73 -0
- package/.medusa/server/src/workflows/pickup-availablity/pickup/updateOrderPickupDate.js +50 -0
- package/.medusa/server/src/workflows/pickup-availablity/steps/validateOverlapsPickupStep.js +45 -0
- package/.medusa/server/src/workflows/pickup-availablity/updatePickupAvailabilityWorkflow.js +79 -0
- package/README.md +28 -0
- package/package.json +82 -0
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const framework_1 = require("@medusajs/framework");
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
6
|
+
const pickup_datetime_1 = require("../../../modules/pickup-datetime");
|
|
7
|
+
const core_flows_1 = require("@medusajs/medusa/core-flows");
|
|
8
|
+
const createOrderPickupDateStep = (0, workflows_sdk_1.createStep)("create-order-pickup-date-step", async (input) => {
|
|
9
|
+
const { order_id } = input;
|
|
10
|
+
const link = framework_1.container.resolve(utils_1.ContainerRegistrationKeys.LINK);
|
|
11
|
+
const query = framework_1.container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
12
|
+
const { data: [order], } = await query.graph({
|
|
13
|
+
entity: "order",
|
|
14
|
+
fields: ["id", "cart.*", "cart.pickup_date.*", "shipping_methods.*"],
|
|
15
|
+
filters: {
|
|
16
|
+
id: order_id,
|
|
17
|
+
},
|
|
18
|
+
});
|
|
19
|
+
const shippingOptionId = order.shipping_methods[0].shipping_option_id;
|
|
20
|
+
const { data: [shippingOption], } = await query.graph({
|
|
21
|
+
entity: "shipping_option",
|
|
22
|
+
fields: ["id", "pickup_datetime", "service_zone.fulfillment_set.type"],
|
|
23
|
+
filters: {
|
|
24
|
+
id: shippingOptionId,
|
|
25
|
+
},
|
|
26
|
+
});
|
|
27
|
+
const isPickup = shippingOption.service_zone.fulfillment_set.type === "pickup";
|
|
28
|
+
if (!isPickup) {
|
|
29
|
+
return new workflows_sdk_1.StepResponse(null, null);
|
|
30
|
+
}
|
|
31
|
+
const pickupDatetimeModuleService = framework_1.container.resolve(pickup_datetime_1.PICKUP_DATETIME_MODULE);
|
|
32
|
+
const pickupDate = order.cart.pickup_date;
|
|
33
|
+
if (!pickupDate) {
|
|
34
|
+
return new workflows_sdk_1.StepResponse(null, null);
|
|
35
|
+
}
|
|
36
|
+
const [updatedPickupDate] = await pickupDatetimeModuleService.updatePickupDates([
|
|
37
|
+
{
|
|
38
|
+
selector: {
|
|
39
|
+
id: pickupDate.id,
|
|
40
|
+
cart_id: pickupDate.cart_id,
|
|
41
|
+
},
|
|
42
|
+
data: {
|
|
43
|
+
order_id: order.id,
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
]);
|
|
47
|
+
try {
|
|
48
|
+
await link.create({
|
|
49
|
+
[utils_1.Modules.ORDER]: {
|
|
50
|
+
order_id: order.id,
|
|
51
|
+
},
|
|
52
|
+
[pickup_datetime_1.PICKUP_DATETIME_MODULE]: {
|
|
53
|
+
pickup_date_id: pickupDate.id,
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
console.error(error);
|
|
59
|
+
// revert the pickup date link order
|
|
60
|
+
await pickupDatetimeModuleService.updatePickupDates([
|
|
61
|
+
{
|
|
62
|
+
selector: {
|
|
63
|
+
id: pickupDate.id,
|
|
64
|
+
cart_id: pickupDate.cart_id,
|
|
65
|
+
},
|
|
66
|
+
data: {
|
|
67
|
+
order_id: null,
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
]);
|
|
71
|
+
}
|
|
72
|
+
return new workflows_sdk_1.StepResponse(updatedPickupDate, updatedPickupDate);
|
|
73
|
+
});
|
|
74
|
+
const createOrderPickupDateWorkflow = (0, workflows_sdk_1.createWorkflow)("create-order-pickup-date-workflow", (input) => {
|
|
75
|
+
const data = createOrderPickupDateStep(input);
|
|
76
|
+
const pickupDateId = (0, workflows_sdk_1.transform)(data, (data) => {
|
|
77
|
+
return data?.id;
|
|
78
|
+
});
|
|
79
|
+
(0, workflows_sdk_1.when)(pickupDateId, (pickupDateId) => Boolean(pickupDateId)).then(() => {
|
|
80
|
+
(0, core_flows_1.emitEventStep)({
|
|
81
|
+
eventName: "order.pickup_date.created",
|
|
82
|
+
data: {
|
|
83
|
+
order_id: input.order_id,
|
|
84
|
+
pickup_date_id: pickupDateId,
|
|
85
|
+
},
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
return new workflows_sdk_1.WorkflowResponse({
|
|
89
|
+
pickupDate: data,
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
exports.default = createOrderPickupDateWorkflow;
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlT3JkZXJQaWNrdXBEYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9waWNrdXAtYXZhaWxhYmxpdHkvcGlja3VwL2NyZWF0ZU9yZGVyUGlja3VwRGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLG1EQUFnRDtBQUNoRCxxREFBK0U7QUFDL0UscUVBTzJDO0FBQzNDLHNFQUEwRTtBQUUxRSw0REFBNEQ7QUFNNUQsTUFBTSx5QkFBeUIsR0FBRyxJQUFBLDBCQUFVLEVBQzFDLCtCQUErQixFQUMvQixLQUFLLEVBQUUsS0FBeUMsRUFBRSxFQUFFO0lBQ2xELE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFFM0IsTUFBTSxJQUFJLEdBQUcscUJBQVMsQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0QsTUFBTSxLQUFLLEdBQUcscUJBQVMsQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFakUsTUFBTSxFQUNKLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUNkLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ3BCLE1BQU0sRUFBRSxPQUFPO1FBQ2YsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxvQkFBb0IsRUFBRSxvQkFBb0IsQ0FBQztRQUNwRSxPQUFPLEVBQUU7WUFDUCxFQUFFLEVBQUUsUUFBUTtTQUNiO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUM7SUFDdEUsTUFBTSxFQUNKLElBQUksRUFBRSxDQUFDLGNBQWMsQ0FBQyxHQUN2QixHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztRQUNwQixNQUFNLEVBQUUsaUJBQWlCO1FBQ3pC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
|
package/.medusa/server/src/workflows/pickup-availablity/pickup/steps/validatePickupDateStep.js
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validatePickupDateStep = void 0;
|
|
4
|
+
const workflows_sdk_1 = require("@medusajs/workflows-sdk");
|
|
5
|
+
const framework_1 = require("@medusajs/framework");
|
|
6
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
7
|
+
const pickup_datetime_1 = require("../../../../modules/pickup-datetime");
|
|
8
|
+
const convertDateToMinutes = (date) => {
|
|
9
|
+
const hours = date.getHours();
|
|
10
|
+
const minutes = date.getMinutes();
|
|
11
|
+
return hours * 60 + minutes;
|
|
12
|
+
};
|
|
13
|
+
exports.validatePickupDateStep = (0, workflows_sdk_1.createStep)("validate-pickup-date-step", async (input) => {
|
|
14
|
+
const { shipping_option_id, pickup_datetime: rawPickupDatetime } = input;
|
|
15
|
+
if (!shipping_option_id) {
|
|
16
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Shipping option id is required");
|
|
17
|
+
}
|
|
18
|
+
// cancel pickup date
|
|
19
|
+
if (!rawPickupDatetime) {
|
|
20
|
+
return new workflows_sdk_1.StepResponse(null, null);
|
|
21
|
+
}
|
|
22
|
+
const pickup_datetime = new Date(rawPickupDatetime);
|
|
23
|
+
if (pickup_datetime.getTime() < new Date().getTime()) {
|
|
24
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Pickup date must not be in the past");
|
|
25
|
+
}
|
|
26
|
+
const pickupDatetimeModuleService = framework_1.container.resolve(pickup_datetime_1.PICKUP_DATETIME_MODULE);
|
|
27
|
+
const dayOfWeek = [
|
|
28
|
+
"sunday",
|
|
29
|
+
"monday",
|
|
30
|
+
"tuesday",
|
|
31
|
+
"wednesday",
|
|
32
|
+
"thursday",
|
|
33
|
+
"friday",
|
|
34
|
+
"saturday",
|
|
35
|
+
][pickup_datetime.getUTCDay()];
|
|
36
|
+
const availabilities = await pickupDatetimeModuleService.listPickupAvailabilities({
|
|
37
|
+
shipping_option_id,
|
|
38
|
+
day_of_week: dayOfWeek,
|
|
39
|
+
});
|
|
40
|
+
const isAvailable = availabilities.some((availability) => {
|
|
41
|
+
const availTimeStart = convertDateToMinutes(new Date(availability.timeStart.toLocaleString()));
|
|
42
|
+
const availTimeEnd = convertDateToMinutes(new Date(availability.timeEnd.toLocaleString()));
|
|
43
|
+
const pickupTime = pickup_datetime.getUTCHours() * 60 + pickup_datetime.getUTCMinutes();
|
|
44
|
+
return availTimeStart <= pickupTime && availTimeEnd >= pickupTime;
|
|
45
|
+
});
|
|
46
|
+
if (!isAvailable) {
|
|
47
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, "Pickup date not available");
|
|
48
|
+
}
|
|
49
|
+
return new workflows_sdk_1.StepResponse(pickup_datetime, pickup_datetime);
|
|
50
|
+
});
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGVQaWNrdXBEYXRlU3RlcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvcGlja3VwLWF2YWlsYWJsaXR5L3BpY2t1cC9zdGVwcy92YWxpZGF0ZVBpY2t1cERhdGVTdGVwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJEQUFtRTtBQUNuRSxtREFBZ0Q7QUFFaEQscURBQXdEO0FBRXhELHlFQUE2RTtBQU83RSxNQUFNLG9CQUFvQixHQUFHLENBQUMsSUFBVSxFQUFFLEVBQUU7SUFDMUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzlCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNsQyxPQUFPLEtBQUssR0FBRyxFQUFFLEdBQUcsT0FBTyxDQUFDO0FBQzlCLENBQUMsQ0FBQztBQUVXLFFBQUEsc0JBQXNCLEdBQUcsSUFBQSwwQkFBVSxFQUM5QywyQkFBMkIsRUFDM0IsS0FBSyxFQUFFLEtBQWtDLEVBQUUsRUFBRTtJQUMzQyxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLEdBQUcsS0FBSyxDQUFDO0lBQ3pFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ3hCLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLGdDQUFnQyxDQUNqQyxDQUFDO0lBQ0osQ0FBQztJQUVELHFCQUFxQjtJQUNyQixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN2QixPQUFPLElBQUksNEJBQVksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELE1BQU0sZUFBZSxHQUFHLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDcEQsSUFBSSxlQUFlLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1FBQ3JELE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLHFDQUFxQyxDQUN0QyxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sMkJBQTJCLEdBQy9CLHFCQUFTLENBQUMsT0FBTyxDQUE4Qix3Q0FBc0IsQ0FBQyxDQUFDO0lBRXpFLE1BQU0sU0FBUyxHQUFHO1FBQ2hCLFFBQVE7UUFDUixRQUFRO1FBQ1IsU0FBUztRQUNULFdBQVc7UUFDWCxVQUFVO1FBQ1YsUUFBUTtRQUNSLFVBQVU7S0FDWCxDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBRS9CLE1BQU0sY0FBYyxHQUNsQixNQUFNLDJCQUEyQixDQUFDLHdCQUF3QixDQUFDO1FBQ3pELGtCQUFrQjtRQUNsQixXQUFXLEVBQUUsU0FBUztLQUN2QixDQUFDLENBQUM7SUFFTCxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUU7UUFDdkQsTUFBTSxjQUFjLEdBQUcsb0JBQW9CLENBQ3pDLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FDbEQsQ0FBQztRQUNGLE1BQU0sWUFBWSxHQUFHLG9CQUFvQixDQUN2QyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQ2hELENBQUM7UUFFRixNQUFNLFVBQVUsR0FDZCxlQUFlLENBQUMsV0FBVyxFQUFFLEdBQUcsRUFBRSxHQUFHLGVBQWUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUV2RSxPQUFPLGNBQWMsSUFBSSxVQUFVLElBQUksWUFBWSxJQUFJLFVBQVUsQ0FBQztJQUNwRSxDQUFDLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNqQixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUMzQiwyQkFBMkIsQ0FDNUIsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLElBQUksNEJBQVksQ0FBQyxlQUFlLEVBQUUsZUFBZSxDQUFDLENBQUM7QUFDNUQsQ0FBQyxDQUNGLENBQUMifQ==
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const framework_1 = require("@medusajs/framework");
|
|
4
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
|
+
const pickup_datetime_1 = require("../../../modules/pickup-datetime");
|
|
6
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
7
|
+
const validatePickupDateStep_1 = require("./steps/validatePickupDateStep");
|
|
8
|
+
const core_flows_1 = require("@medusajs/medusa/core-flows");
|
|
9
|
+
const updateCartPickupDateStep = (0, workflows_sdk_1.createStep)("update-cart-pickup-date-step", async (input) => {
|
|
10
|
+
const { cart_id, pickup_datetime } = input;
|
|
11
|
+
if (!cart_id) {
|
|
12
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Cart id is required");
|
|
13
|
+
}
|
|
14
|
+
const link = framework_1.container.resolve(utils_1.ContainerRegistrationKeys.LINK);
|
|
15
|
+
const pickupDatetimeModuleService = framework_1.container.resolve(pickup_datetime_1.PICKUP_DATETIME_MODULE);
|
|
16
|
+
const [existingPickupDate] = await pickupDatetimeModuleService.listPickupDates({
|
|
17
|
+
cart_id,
|
|
18
|
+
}, { take: 1 });
|
|
19
|
+
// update existing pickup date
|
|
20
|
+
if (existingPickupDate) {
|
|
21
|
+
await pickupDatetimeModuleService.updatePickupDates([
|
|
22
|
+
{
|
|
23
|
+
selector: {
|
|
24
|
+
id: existingPickupDate.id,
|
|
25
|
+
cart_id: existingPickupDate.cart_id,
|
|
26
|
+
},
|
|
27
|
+
data: {
|
|
28
|
+
pickup_datetime,
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
]);
|
|
32
|
+
return new workflows_sdk_1.StepResponse(existingPickupDate, existingPickupDate);
|
|
33
|
+
}
|
|
34
|
+
// if no existing pickup date, create new
|
|
35
|
+
const created = await pickupDatetimeModuleService.createPickupDates({
|
|
36
|
+
cart_id,
|
|
37
|
+
pickup_datetime,
|
|
38
|
+
});
|
|
39
|
+
try {
|
|
40
|
+
await link.create({
|
|
41
|
+
[utils_1.Modules.CART]: {
|
|
42
|
+
cart_id: cart_id,
|
|
43
|
+
},
|
|
44
|
+
[pickup_datetime_1.PICKUP_DATETIME_MODULE]: {
|
|
45
|
+
pickup_date_id: created.id,
|
|
46
|
+
},
|
|
47
|
+
});
|
|
48
|
+
return new workflows_sdk_1.StepResponse(created, created);
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
console.error(error);
|
|
52
|
+
await pickupDatetimeModuleService.deletePickupDates(created.id);
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
const updateCartPickupDateWorkflow = (0, workflows_sdk_1.createWorkflow)("update-cart-pickup-date-workflow", (input) => {
|
|
56
|
+
(0, validatePickupDateStep_1.validatePickupDateStep)({
|
|
57
|
+
shipping_option_id: input.shipping_option_id,
|
|
58
|
+
pickup_datetime: input.pickup_datetime,
|
|
59
|
+
});
|
|
60
|
+
const data = updateCartPickupDateStep(input);
|
|
61
|
+
(0, core_flows_1.emitEventStep)({
|
|
62
|
+
eventName: "cart.pickup_date.updated",
|
|
63
|
+
data: {
|
|
64
|
+
cart_id: input.cart_id,
|
|
65
|
+
pickup_date_id: data.id,
|
|
66
|
+
},
|
|
67
|
+
});
|
|
68
|
+
return new workflows_sdk_1.WorkflowResponse({
|
|
69
|
+
pickupDate: data,
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
exports.default = updateCartPickupDateWorkflow;
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlQ2FydFBpY2t1cERhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3BpY2t1cC1hdmFpbGFibGl0eS9waWNrdXAvdXBkYXRlQ2FydFBpY2t1cERhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxtREFBZ0Q7QUFDaEQscUVBSzJDO0FBRTNDLHNFQUEwRTtBQUMxRSxxREFJbUM7QUFDbkMsMkVBQXdFO0FBQ3hFLDREQUE0RDtBQVE1RCxNQUFNLHdCQUF3QixHQUFHLElBQUEsMEJBQVUsRUFDekMsOEJBQThCLEVBQzlCLEtBQUssRUFBRSxLQUF3QyxFQUFFLEVBQUU7SUFDakQsTUFBTSxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFFM0MsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2IsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIscUJBQXFCLENBQ3RCLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcscUJBQVMsQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0QsTUFBTSwyQkFBMkIsR0FDL0IscUJBQVMsQ0FBQyxPQUFPLENBQThCLHdDQUFzQixDQUFDLENBQUM7SUFFekUsTUFBTSxDQUFDLGtCQUFrQixDQUFDLEdBQ3hCLE1BQU0sMkJBQTJCLENBQUMsZUFBZSxDQUMvQztRQUNFLE9BQU87S0FDUixFQUNELEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUNaLENBQUM7SUFFSiw4QkFBOEI7SUFDOUIsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sMkJBQTJCLENBQUMsaUJBQWlCLENBQUM7WUFDbEQ7Z0JBQ0UsUUFBUSxFQUFFO29CQUNSLEVBQUUsRUFBRSxrQkFBa0IsQ0FBQyxFQUFFO29CQUN6QixPQUFPLEVBQUUsa0JBQWtCLENBQUMsT0FBTztpQkFDcEM7Z0JBQ0QsSUFBSSxFQUFFO29CQUNKLGVBQWU7aUJBQ2hCO2FBQ0Y7U0FDRixDQUFDLENBQUM7UUFFSCxPQUFPLElBQUksNEJBQVksQ0FBQyxrQkFBa0IsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRCx5Q0FBeUM7SUFDekMsTUFBTSxPQUFPLEdBQUcsTUFBTSwyQkFBMkIsQ0FBQyxpQkFBaUIsQ0FBQztRQUNsRSxPQUFPO1FBQ1AsZUFBZTtLQUNoQixDQUFDLENBQUM7SUFDSCxJQUFJLENBQUM7UUFDSCxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDaEIsQ0FBQyxlQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ2QsT0FBTyxFQUFFLE9BQU87YUFDakI7WUFDRCxDQUFDLHdDQUFzQixDQUFDLEVBQUU7Z0JBQ3hCLGNBQWMsRUFBRSxPQUFPLENBQUMsRUFBRTthQUMzQjtTQUNGLENBQUMsQ0FBQztRQUVILE9BQU8sSUFBSSw0QkFBWSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsTUFBTSwyQkFBMkIsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEUsQ0FBQztBQUNILENBQUMsQ0FDRixDQUFDO0FBRUYsTUFBTSw0QkFBNEIsR0FBRyxJQUFBLDhCQUFjLEVBQ2pELGtDQUFrQyxFQUNsQyxDQUFDLEtBQXdDLEVBQUUsRUFBRTtJQUMzQyxJQUFBLCtDQUFzQixFQUFDO1FBQ3JCLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxrQkFBa0I7UUFDNUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxlQUFlO0tBQ3ZDLENBQUMsQ0FBQztJQUNILE1BQU0sSUFBSSxHQUFHLHdCQUF3QixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRTdDLElBQUEsMEJBQWEsRUFBQztRQUNaLFNBQVMsRUFBRSwwQkFBMEI7UUFDckMsSUFBSSxFQUFFO1lBQ0osT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO1lBQ3RCLGNBQWMsRUFBRSxJQUFJLENBQUMsRUFBRTtTQUN4QjtLQUNGLENBQUMsQ0FBQztJQUVILE9BQU8sSUFBSSxnQ0FBZ0IsQ0FBQztRQUMxQixVQUFVLEVBQUUsSUFBSTtLQUNqQixDQUFDLENBQUM7QUFDTCxDQUFDLENBQ0YsQ0FBQztBQUVGLGtCQUFlLDRCQUE0QixDQUFDIn0=
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const framework_1 = require("@medusajs/framework");
|
|
4
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
|
+
const core_flows_1 = require("@medusajs/medusa/core-flows");
|
|
6
|
+
const pickup_datetime_1 = require("../../../modules/pickup-datetime");
|
|
7
|
+
const validatePickupDateStep_1 = require("./steps/validatePickupDateStep");
|
|
8
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
9
|
+
const updateOrderPickupDateStep = (0, workflows_sdk_1.createStep)("update-order-pickup-date-step", async (input) => {
|
|
10
|
+
const { order_id, pickup_datetime } = input;
|
|
11
|
+
const pickupDatetimeModuleService = framework_1.container.resolve(pickup_datetime_1.PICKUP_DATETIME_MODULE);
|
|
12
|
+
const [existingPickupDate] = await pickupDatetimeModuleService.listPickupDates({ order_id }, { take: 1 });
|
|
13
|
+
// update existing pickup date
|
|
14
|
+
if (existingPickupDate) {
|
|
15
|
+
await pickupDatetimeModuleService.updatePickupDates([
|
|
16
|
+
{
|
|
17
|
+
selector: {
|
|
18
|
+
id: existingPickupDate.id,
|
|
19
|
+
order_id: existingPickupDate.order_id,
|
|
20
|
+
},
|
|
21
|
+
data: {
|
|
22
|
+
pickup_datetime,
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
]);
|
|
26
|
+
return new workflows_sdk_1.StepResponse(existingPickupDate, existingPickupDate);
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Pickup date not found");
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
const updateOrderPickupDateWorkflow = (0, workflows_sdk_1.createWorkflow)("update-order-pickup-date-workflow", (input) => {
|
|
33
|
+
(0, validatePickupDateStep_1.validatePickupDateStep)({
|
|
34
|
+
shipping_option_id: input.shipping_option_id,
|
|
35
|
+
pickup_datetime: input.pickup_datetime,
|
|
36
|
+
});
|
|
37
|
+
const data = updateOrderPickupDateStep(input);
|
|
38
|
+
(0, core_flows_1.emitEventStep)({
|
|
39
|
+
eventName: "order.pickup_date.updated",
|
|
40
|
+
data: {
|
|
41
|
+
order_id: input.order_id,
|
|
42
|
+
pickup_date_id: data.id,
|
|
43
|
+
},
|
|
44
|
+
});
|
|
45
|
+
return new workflows_sdk_1.WorkflowResponse({
|
|
46
|
+
pickupDate: data,
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
exports.default = updateOrderPickupDateWorkflow;
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlT3JkZXJQaWNrdXBEYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9waWNrdXAtYXZhaWxhYmxpdHkvcGlja3VwL3VwZGF0ZU9yZGVyUGlja3VwRGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLG1EQUFnRDtBQUNoRCxxRUFLMkM7QUFDM0MsNERBQTREO0FBQzVELHNFQUEwRTtBQUUxRSwyRUFBd0U7QUFDeEUscURBQXdEO0FBUXhELE1BQU0seUJBQXlCLEdBQUcsSUFBQSwwQkFBVSxFQUMxQywrQkFBK0IsRUFDL0IsS0FBSyxFQUFFLEtBQXlDLEVBQUUsRUFBRTtJQUNsRCxNQUFNLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxHQUFHLEtBQUssQ0FBQztJQUM1QyxNQUFNLDJCQUEyQixHQUMvQixxQkFBUyxDQUFDLE9BQU8sQ0FBOEIsd0NBQXNCLENBQUMsQ0FBQztJQUV6RSxNQUFNLENBQUMsa0JBQWtCLENBQUMsR0FDeEIsTUFBTSwyQkFBMkIsQ0FBQyxlQUFlLENBQy9DLEVBQUUsUUFBUSxFQUFFLEVBQ1osRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQ1osQ0FBQztJQUVKLDhCQUE4QjtJQUM5QixJQUFJLGtCQUFrQixFQUFFLENBQUM7UUFDdkIsTUFBTSwyQkFBMkIsQ0FBQyxpQkFBaUIsQ0FBQztZQUNsRDtnQkFDRSxRQUFRLEVBQUU7b0JBQ1IsRUFBRSxFQUFFLGtCQUFrQixDQUFDLEVBQUU7b0JBQ3pCLFFBQVEsRUFBRSxrQkFBa0IsQ0FBQyxRQUFRO2lCQUN0QztnQkFDRCxJQUFJLEVBQUU7b0JBQ0osZUFBZTtpQkFDaEI7YUFDRjtTQUNGLENBQUMsQ0FBQztRQUVILE9BQU8sSUFBSSw0QkFBWSxDQUFDLGtCQUFrQixFQUFFLGtCQUFrQixDQUFDLENBQUM7SUFDbEUsQ0FBQztTQUFNLENBQUM7UUFDTixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5Qix1QkFBdUIsQ0FDeEIsQ0FBQztJQUNKLENBQUM7QUFDSCxDQUFDLENBQ0YsQ0FBQztBQUVGLE1BQU0sNkJBQTZCLEdBQUcsSUFBQSw4QkFBYyxFQUNsRCxtQ0FBbUMsRUFDbkMsQ0FBQyxLQUF5QyxFQUFFLEVBQUU7SUFDNUMsSUFBQSwrQ0FBc0IsRUFBQztRQUNyQixrQkFBa0IsRUFBRSxLQUFLLENBQUMsa0JBQWtCO1FBQzVDLGVBQWUsRUFBRSxLQUFLLENBQUMsZUFBZTtLQUN2QyxDQUFDLENBQUM7SUFFSCxNQUFNLElBQUksR0FBRyx5QkFBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUU5QyxJQUFBLDBCQUFhLEVBQUM7UUFDWixTQUFTLEVBQUUsMkJBQTJCO1FBQ3RDLElBQUksRUFBRTtZQUNKLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtZQUN4QixjQUFjLEVBQUUsSUFBSSxDQUFDLEVBQUU7U0FDeEI7S0FDRixDQUFDLENBQUM7SUFFSCxPQUFPLElBQUksZ0NBQWdCLENBQUM7UUFDMUIsVUFBVSxFQUFFLElBQUk7S0FDakIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUNGLENBQUM7QUFFRixrQkFBZSw2QkFBNkIsQ0FBQyJ9
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateOverlapsPickupStep = exports.convertTimeToMinutes = void 0;
|
|
4
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
6
|
+
const convertTimeToMinutes = (time) => {
|
|
7
|
+
const matches = time.match(/\d{2}/g)?.map(Number) || [];
|
|
8
|
+
if (matches.length !== 2) {
|
|
9
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Invalid time format");
|
|
10
|
+
}
|
|
11
|
+
const [hours, minutes] = matches;
|
|
12
|
+
const minutesValue = hours * 60 + minutes;
|
|
13
|
+
if (minutesValue < 0 || minutesValue > 24 * 60) {
|
|
14
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Invalid time format");
|
|
15
|
+
}
|
|
16
|
+
return minutesValue;
|
|
17
|
+
};
|
|
18
|
+
exports.convertTimeToMinutes = convertTimeToMinutes;
|
|
19
|
+
exports.validateOverlapsPickupStep = (0, workflows_sdk_1.createStep)("validate-overlaps-pickup-step", async (input) => {
|
|
20
|
+
const { schedules } = input;
|
|
21
|
+
const timeSlotsInWeek = schedules.map((schedule) => schedule.timeSlots);
|
|
22
|
+
for (const timeSlots of timeSlotsInWeek) {
|
|
23
|
+
while (timeSlots.length > 0) {
|
|
24
|
+
const timeSlot = timeSlots.shift();
|
|
25
|
+
if (!timeSlot)
|
|
26
|
+
break;
|
|
27
|
+
const inputStartTime = (0, exports.convertTimeToMinutes)(timeSlot.start);
|
|
28
|
+
const inputEndTime = (0, exports.convertTimeToMinutes)(timeSlot.end);
|
|
29
|
+
const overLappingAvailabilities = timeSlots.filter((existing) => {
|
|
30
|
+
const existingStartTime = (0, exports.convertTimeToMinutes)(existing.start);
|
|
31
|
+
const existingEndTime = (0, exports.convertTimeToMinutes)(existing.end);
|
|
32
|
+
const isStartBetweenExisting = inputStartTime >= existingStartTime &&
|
|
33
|
+
inputStartTime <= existingEndTime;
|
|
34
|
+
const isEndBetweenExisting = inputEndTime >= existingStartTime &&
|
|
35
|
+
inputEndTime <= existingEndTime;
|
|
36
|
+
return isStartBetweenExisting || isEndBetweenExisting;
|
|
37
|
+
});
|
|
38
|
+
if (overLappingAvailabilities.length) {
|
|
39
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Availability overlaps with existing availabilities");
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return new workflows_sdk_1.StepResponse(true, true);
|
|
44
|
+
});
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGVPdmVybGFwc1BpY2t1cFN0ZXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3BpY2t1cC1hdmFpbGFibGl0eS9zdGVwcy92YWxpZGF0ZU92ZXJsYXBzUGlja3VwU3RlcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxRUFBNkU7QUFDN0UscURBQXdEO0FBV2pELE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxJQUFZLEVBQUUsRUFBRTtJQUNuRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDeEQsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLHFCQUFxQixDQUN0QixDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxDQUFDO0lBQ2pDLE1BQU0sWUFBWSxHQUFHLEtBQUssR0FBRyxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBRTFDLElBQUksWUFBWSxHQUFHLENBQUMsSUFBSSxZQUFZLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO1FBQy9DLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLHFCQUFxQixDQUN0QixDQUFDO0lBQ0osQ0FBQztJQUVELE9BQU8sWUFBWSxDQUFDO0FBQ3RCLENBQUMsQ0FBQztBQXBCVyxRQUFBLG9CQUFvQix3QkFvQi9CO0FBRVcsUUFBQSwwQkFBMEIsR0FBRyxJQUFBLDBCQUFVLEVBQ2xELCtCQUErQixFQUMvQixLQUFLLEVBQUUsS0FBb0IsRUFBRSxFQUFFO0lBQzdCLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFFNUIsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRXhFLEtBQUssTUFBTSxTQUFTLElBQUksZUFBZSxFQUFFLENBQUM7UUFDeEMsT0FBTyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzVCLE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsUUFBUTtnQkFBRSxNQUFNO1lBRXJCLE1BQU0sY0FBYyxHQUFHLElBQUEsNEJBQW9CLEVBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzVELE1BQU0sWUFBWSxHQUFHLElBQUEsNEJBQW9CLEVBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBRXhELE1BQU0seUJBQXlCLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO2dCQUM5RCxNQUFNLGlCQUFpQixHQUFHLElBQUEsNEJBQW9CLEVBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMvRCxNQUFNLGVBQWUsR0FBRyxJQUFBLDRCQUFvQixFQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFFM0QsTUFBTSxzQkFBc0IsR0FDMUIsY0FBYyxJQUFJLGlCQUFpQjtvQkFDbkMsY0FBYyxJQUFJLGVBQWUsQ0FBQztnQkFFcEMsTUFBTSxvQkFBb0IsR0FDeEIsWUFBWSxJQUFJLGlCQUFpQjtvQkFDakMsWUFBWSxJQUFJLGVBQWUsQ0FBQztnQkFFbEMsT0FBTyxzQkFBc0IsSUFBSSxvQkFBb0IsQ0FBQztZQUN4RCxDQUFDLENBQUMsQ0FBQztZQUVILElBQUkseUJBQXlCLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3JDLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLG9EQUFvRCxDQUNyRCxDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxJQUFJLDRCQUFZLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3RDLENBQUMsQ0FDRixDQUFDIn0=
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.updatePickupAvailabilityWorkflow = void 0;
|
|
4
|
+
const framework_1 = require("@medusajs/framework");
|
|
5
|
+
const workflows_sdk_1 = require("@medusajs/workflows-sdk");
|
|
6
|
+
const pickup_datetime_1 = require("../../modules/pickup-datetime");
|
|
7
|
+
const validateOverlapsPickupStep_1 = require("./steps/validateOverlapsPickupStep");
|
|
8
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
9
|
+
const updatePickupAvailabilityStep = (0, workflows_sdk_1.createStep)("update-pickup-availability-step", async (input) => {
|
|
10
|
+
const { shipping_option_id, schedules } = input;
|
|
11
|
+
const pickupDatetimeService = framework_1.container.resolve(pickup_datetime_1.PICKUP_DATETIME_MODULE);
|
|
12
|
+
const link = framework_1.container.resolve(utils_1.ContainerRegistrationKeys.LINK);
|
|
13
|
+
// delete existing availabilities
|
|
14
|
+
const existingAvailabilities = await pickupDatetimeService.listPickupAvailabilities({
|
|
15
|
+
shipping_option_id,
|
|
16
|
+
});
|
|
17
|
+
await link.dismiss({
|
|
18
|
+
[utils_1.Modules.FULFILLMENT]: {
|
|
19
|
+
shipping_option_id,
|
|
20
|
+
},
|
|
21
|
+
[pickup_datetime_1.PICKUP_DATETIME_MODULE]: {
|
|
22
|
+
pickup_availability_id: existingAvailabilities.map((availability) => availability.id),
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
await pickupDatetimeService.deletePickupAvailabilities(existingAvailabilities.map((availability) => availability.id));
|
|
26
|
+
// create new availabilities
|
|
27
|
+
const availabilities = schedules
|
|
28
|
+
.filter((schedule) => schedule.enable)
|
|
29
|
+
.map((schedule) => {
|
|
30
|
+
return schedule.timeSlots.map((timeSlot) => {
|
|
31
|
+
let timeStart = new Date();
|
|
32
|
+
const [hours, minutes] = timeSlot.start.split(":").map(Number);
|
|
33
|
+
timeStart.setHours(hours);
|
|
34
|
+
timeStart.setMinutes(minutes);
|
|
35
|
+
timeStart.setSeconds(0);
|
|
36
|
+
timeStart.setMilliseconds(0);
|
|
37
|
+
let timeEnd = new Date(timeStart);
|
|
38
|
+
const [endHours, endMinutes] = timeSlot.end.split(":").map(Number);
|
|
39
|
+
timeEnd.setHours(endHours);
|
|
40
|
+
timeEnd.setMinutes(endMinutes);
|
|
41
|
+
timeEnd.setSeconds(0);
|
|
42
|
+
timeEnd.setMilliseconds(0);
|
|
43
|
+
return {
|
|
44
|
+
shipping_option_id,
|
|
45
|
+
enable: true,
|
|
46
|
+
day_of_week: schedule.day_of_week,
|
|
47
|
+
timeStart,
|
|
48
|
+
timeEnd,
|
|
49
|
+
};
|
|
50
|
+
});
|
|
51
|
+
})
|
|
52
|
+
.flat();
|
|
53
|
+
const createdAvailabilities = await pickupDatetimeService.createPickupAvailabilities(availabilities);
|
|
54
|
+
try {
|
|
55
|
+
await link.create(createdAvailabilities.map((availability) => ({
|
|
56
|
+
[utils_1.Modules.FULFILLMENT]: {
|
|
57
|
+
shipping_option_id: shipping_option_id,
|
|
58
|
+
},
|
|
59
|
+
[pickup_datetime_1.PICKUP_DATETIME_MODULE]: {
|
|
60
|
+
pickup_availability_id: availability.id,
|
|
61
|
+
},
|
|
62
|
+
})));
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
console.log(error);
|
|
66
|
+
await pickupDatetimeService.deletePickupAvailabilities({
|
|
67
|
+
ids: createdAvailabilities.map((availability) => availability.id),
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
return new workflows_sdk_1.StepResponse(createdAvailabilities, createdAvailabilities);
|
|
71
|
+
});
|
|
72
|
+
exports.updatePickupAvailabilityWorkflow = (0, workflows_sdk_1.createWorkflow)("update-pickup-availability-workflow", (input) => {
|
|
73
|
+
(0, validateOverlapsPickupStep_1.validateOverlapsPickupStep)(input);
|
|
74
|
+
const data = updatePickupAvailabilityStep(input);
|
|
75
|
+
return new workflows_sdk_1.WorkflowResponse({
|
|
76
|
+
availability: data,
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlUGlja3VwQXZhaWxhYmlsaXR5V29ya2Zsb3cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3BpY2t1cC1hdmFpbGFibGl0eS91cGRhdGVQaWNrdXBBdmFpbGFiaWxpdHlXb3JrZmxvdy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtREFBZ0Q7QUFDaEQsMkRBS2lDO0FBQ2pDLG1FQUF1RTtBQUd2RSxtRkFBZ0Y7QUFDaEYscURBQStFO0FBTy9FLE1BQU0sNEJBQTRCLEdBQUcsSUFBQSwwQkFBVSxFQUM3QyxpQ0FBaUMsRUFDakMsS0FBSyxFQUFFLEtBQTRDLEVBQUUsRUFBRTtJQUNyRCxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsU0FBUyxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBRWhELE1BQU0scUJBQXFCLEdBQ3pCLHFCQUFTLENBQUMsT0FBTyxDQUFDLHdDQUFzQixDQUFDLENBQUM7SUFFNUMsTUFBTSxJQUFJLEdBQUcscUJBQVMsQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFL0QsaUNBQWlDO0lBQ2pDLE1BQU0sc0JBQXNCLEdBQzFCLE1BQU0scUJBQXFCLENBQUMsd0JBQXdCLENBQUM7UUFDbkQsa0JBQWtCO0tBQ25CLENBQUMsQ0FBQztJQUVMLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUNqQixDQUFDLGVBQU8sQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUNyQixrQkFBa0I7U0FDbkI7UUFDRCxDQUFDLHdDQUFzQixDQUFDLEVBQUU7WUFDeEIsc0JBQXNCLEVBQUUsc0JBQXNCLENBQUMsR0FBRyxDQUNoRCxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FDbEM7U0FDRjtLQUNGLENBQUMsQ0FBQztJQUVILE1BQU0scUJBQXFCLENBQUMsMEJBQTBCLENBQ3BELHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxDQUFD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
|
package/README.md
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Medusa Plugin booking for pickup
|
|
2
|
+
|
|
3
|
+
## How to install
|
|
4
|
+
1. add the plugin to your medusa backend
|
|
5
|
+
```bash
|
|
6
|
+
yarn add medusa-booking-for-pickup
|
|
7
|
+
```
|
|
8
|
+
2. configure your medusa backend `medusa-config.ts`
|
|
9
|
+
```ts
|
|
10
|
+
module.exports = defineConfig({
|
|
11
|
+
// ... rest of the config
|
|
12
|
+
plugins: [
|
|
13
|
+
// ... rest of the plugins
|
|
14
|
+
{
|
|
15
|
+
resolve: "medusa-booking-for-pickup",
|
|
16
|
+
options: {},
|
|
17
|
+
},
|
|
18
|
+
],
|
|
19
|
+
});
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
3. run the migrations in your medusa core backend
|
|
23
|
+
```bash
|
|
24
|
+
yarn medusa db:migrate
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
4. all done now just start your medusa backend
|
|
28
|
+
`yarn dev` `yarn start` or whatever you use to start your backend
|
package/package.json
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@lodashventure/medusa-booking-for-pickup",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "A starter for Medusa plugins.",
|
|
5
|
+
"author": "Medusa (https://medusajs.com)",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"files": [
|
|
8
|
+
".medusa/server"
|
|
9
|
+
],
|
|
10
|
+
"exports": {
|
|
11
|
+
"./package.json": "./package.json",
|
|
12
|
+
"./workflows": "./.medusa/server/src/workflows/index.js",
|
|
13
|
+
"./.medusa/server/src/modules/*": "./.medusa/server/src/modules/*/index.js",
|
|
14
|
+
"./modules/*": "./.medusa/server/src/modules/*/index.js",
|
|
15
|
+
"./providers/*": "./.medusa/server/src/providers/*/index.js",
|
|
16
|
+
"./admin": "./.medusa/server/src/admin/index.mjs",
|
|
17
|
+
"./*": "./.medusa/server/src/*.js"
|
|
18
|
+
},
|
|
19
|
+
"keywords": [
|
|
20
|
+
"medusa",
|
|
21
|
+
"plugin",
|
|
22
|
+
"medusa-plugin-other",
|
|
23
|
+
"medusa-plugin",
|
|
24
|
+
"medusa-v2"
|
|
25
|
+
],
|
|
26
|
+
"scripts": {
|
|
27
|
+
"build": "medusa plugin:build",
|
|
28
|
+
"dev": "medusa plugin:develop",
|
|
29
|
+
"prepublishOnly": "medusa plugin:build"
|
|
30
|
+
},
|
|
31
|
+
"devDependencies": {
|
|
32
|
+
"@medusajs/admin-sdk": "2.10.0",
|
|
33
|
+
"@medusajs/cli": "2.10.0",
|
|
34
|
+
"@medusajs/framework": "2.10.0",
|
|
35
|
+
"@medusajs/icons": "^2.10.0",
|
|
36
|
+
"@medusajs/medusa": "2.10.0",
|
|
37
|
+
"@medusajs/test-utils": "2.10.0",
|
|
38
|
+
"@medusajs/ui": "4.0.4",
|
|
39
|
+
"@mikro-orm/cli": "6.4.3",
|
|
40
|
+
"@mikro-orm/core": "6.4.3",
|
|
41
|
+
"@mikro-orm/knex": "6.4.3",
|
|
42
|
+
"@mikro-orm/migrations": "6.4.3",
|
|
43
|
+
"@mikro-orm/postgresql": "6.4.3",
|
|
44
|
+
"@swc/core": "1.5.7",
|
|
45
|
+
"@types/node": "^20.0.0",
|
|
46
|
+
"@types/react": "^18.3.2",
|
|
47
|
+
"@types/react-dom": "^18.2.25",
|
|
48
|
+
"awilix": "^8.0.1",
|
|
49
|
+
"pg": "^8.13.0",
|
|
50
|
+
"prop-types": "^15.8.1",
|
|
51
|
+
"react": "^18.2.0",
|
|
52
|
+
"react-dom": "^18.2.0",
|
|
53
|
+
"ts-node": "^10.9.2",
|
|
54
|
+
"typescript": "^5.6.2",
|
|
55
|
+
"vite": "^5.2.11",
|
|
56
|
+
"yalc": "^1.0.0-pre.53"
|
|
57
|
+
},
|
|
58
|
+
"peerDependencies": {
|
|
59
|
+
"@medusajs/admin-sdk": "2.10.0",
|
|
60
|
+
"@medusajs/cli": "2.10.0",
|
|
61
|
+
"@medusajs/framework": "2.10.0",
|
|
62
|
+
"@medusajs/icons": "^2.10.0",
|
|
63
|
+
"@medusajs/medusa": "2.10.0",
|
|
64
|
+
"@medusajs/test-utils": "2.10.0",
|
|
65
|
+
"@medusajs/ui": "4.0.3",
|
|
66
|
+
"@medusajs/js-sdk": "*",
|
|
67
|
+
"@tanstack/react-query": "*",
|
|
68
|
+
"@mikro-orm/cli": "6.4.3",
|
|
69
|
+
"@mikro-orm/core": "6.4.3",
|
|
70
|
+
"@mikro-orm/knex": "6.4.3",
|
|
71
|
+
"@mikro-orm/migrations": "6.4.3",
|
|
72
|
+
"@mikro-orm/postgresql": "6.4.3",
|
|
73
|
+
"awilix": "^8.0.1",
|
|
74
|
+
"pg": "^8.13.0"
|
|
75
|
+
},
|
|
76
|
+
"engines": {
|
|
77
|
+
"node": ">=20"
|
|
78
|
+
},
|
|
79
|
+
"dependencies": {
|
|
80
|
+
"lucide-react": "^0.503.0"
|
|
81
|
+
}
|
|
82
|
+
}
|