@devx-commerce/plugin-form-responses 0.0.2-beta.11 → 0.0.2-beta.13
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/api/middlewares.js +8 -1
- package/.medusa/server/src/api/store/form-response/route.js +2 -2
- package/.medusa/server/src/api/store/slot-listing/index.js +3 -0
- package/.medusa/server/src/api/store/slot-listing/query-config.js +14 -0
- package/.medusa/server/src/api/store/slot-listing/route.js +88 -0
- package/.medusa/server/src/api/store/slot-listing/validators.js +12 -0
- package/.medusa/server/src/lib/helper.js +12 -0
- package/.medusa/server/src/workflows/form-response/steps/create-form-response-step.js +43 -3
- package/.medusa/server/src/workflows/form-response/workflows/create-form-response.js +6 -3
- package/package.json +1 -1
|
@@ -5,6 +5,8 @@ const validators_1 = require("./store/form-response/validators");
|
|
|
5
5
|
const query_config_1 = require("./admin/form-response/query-config");
|
|
6
6
|
const validators_2 = require("./admin/form-response/validators");
|
|
7
7
|
const validators_3 = require("./store/newsletter-signup/validators");
|
|
8
|
+
const validators_4 = require("./store/slot-listing/validators");
|
|
9
|
+
const query_config_2 = require("./store/slot-listing/query-config");
|
|
8
10
|
exports.default = (0, framework_1.defineMiddlewares)({
|
|
9
11
|
routes: [
|
|
10
12
|
{
|
|
@@ -15,6 +17,11 @@ exports.default = (0, framework_1.defineMiddlewares)({
|
|
|
15
17
|
(0, framework_1.validateAndTransformBody)(validators_1.createFormResponseSchema),
|
|
16
18
|
],
|
|
17
19
|
},
|
|
20
|
+
{
|
|
21
|
+
matcher: "/store/slot-listing",
|
|
22
|
+
method: "GET",
|
|
23
|
+
middlewares: [(0, framework_1.validateAndTransformQuery)(validators_4.GetSlotParams, query_config_2.slotListingQueryConfig.list)],
|
|
24
|
+
},
|
|
18
25
|
{
|
|
19
26
|
matcher: "/admin/form-response",
|
|
20
27
|
method: "GET",
|
|
@@ -47,4 +54,4 @@ exports.default = (0, framework_1.defineMiddlewares)({
|
|
|
47
54
|
},
|
|
48
55
|
],
|
|
49
56
|
});
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL21pZGRsZXdhcmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsbURBSTZCO0FBQzdCLGlFQUE0RTtBQUM1RSxxRUFHNEM7QUFDNUMsaUVBRzBDO0FBQzFDLHFFQUFvRjtBQUNwRixnRUFBOEQ7QUFDOUQsb0VBQXlFO0FBRXpFLGtCQUFlLElBQUEsNkJBQWlCLEVBQUM7SUFDL0IsTUFBTSxFQUFFO1FBQ047WUFDRSxNQUFNLEVBQUUsTUFBTTtZQUNkLE9BQU8sRUFBRSxzQkFBc0I7WUFDL0IsV0FBVyxFQUFFO2dCQUNYLFlBQVk7Z0JBQ1osSUFBQSxvQ0FBd0IsRUFBQyxxQ0FBd0IsQ0FBQzthQUNuRDtTQUNGO1FBQ0Q7WUFDRSxPQUFPLEVBQUUscUJBQXFCO1lBQzlCLE1BQU0sRUFBRSxLQUFLO1lBQ2IsV0FBVyxFQUFFLENBQUMsSUFBQSxxQ0FBeUIsRUFBQywwQkFBYSxFQUFDLHFDQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3BGO1FBQ0Q7WUFDRSxPQUFPLEVBQUUsc0JBQXNCO1lBQy9CLE1BQU0sRUFBRSxLQUFLO1lBQ2IsV0FBVyxFQUFFO2dCQUNYLElBQUEscUNBQXlCLEVBQ3ZCLGtDQUFxQixFQUNyQixtQ0FBb0IsQ0FBQyxJQUFJLENBQzFCO2dCQUNELHFDQUFzQjthQUN2QjtTQUNGO1FBQ0Q7WUFDRSxPQUFPLEVBQUUsMEJBQTBCO1lBQ25DLE1BQU0sRUFBRSxLQUFLO1lBQ2IsV0FBVyxFQUFFO2dCQUNYLElBQUEscUNBQXlCLEVBQ3ZCLGtDQUFxQixFQUNyQixtQ0FBb0IsQ0FBQyxRQUFRLENBQzlCO2FBQ0Y7U0FDRjtRQUNEO1lBQ0UsT0FBTyxFQUFFLDBCQUEwQjtZQUNuQyxNQUFNLEVBQUUsS0FBSztZQUNiLFdBQVcsRUFBRSxDQUFDLElBQUEsb0NBQXdCLEVBQUMsbUNBQXNCLENBQUMsQ0FBQztTQUNoRTtRQUNEO1lBQ0UsT0FBTyxFQUFFLDBCQUEwQjtZQUNuQyxNQUFNLEVBQUUsTUFBTTtZQUNkLFdBQVcsRUFBRSxDQUFDLElBQUEsb0NBQXdCLEVBQUMseUNBQTRCLENBQUMsQ0FBQztTQUN0RTtRQUNEO1lBQ0UsT0FBTyxFQUFFLDBCQUEwQjtZQUNuQyxNQUFNLEVBQUUsS0FBSztZQUNiLFdBQVcsRUFBRSxDQUFDLHFDQUFzQixDQUFDO1NBQ3RDO0tBQ0Y7Q0FDRixDQUFDLENBQUMifQ==
|
|
@@ -11,8 +11,8 @@ async function POST(req, res) {
|
|
|
11
11
|
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)({ formResponse }, `Form ${formResponse.id} created successfully`));
|
|
12
12
|
}
|
|
13
13
|
catch (error) {
|
|
14
|
-
|
|
14
|
+
console.log(error);
|
|
15
15
|
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(error.message, 500, error));
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL2Zvcm0tcmVzcG9uc2Uvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFZQSxvQkF1QkM7QUE5QkQsb0VBQThFO0FBQzlFLDREQUltQztBQUU1QixLQUFLLFVBQVUsSUFBSSxDQUN4QixHQUF1RCxFQUN2RCxHQUFtQjtJQUVuQixNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO0lBQ3RCLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRTNDLElBQUksQ0FBQztRQUNILE1BQU0sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLEdBQUcsTUFBTSxJQUFBLDBDQUEwQixFQUMvRCxHQUFHLENBQUMsS0FBSyxDQUNWLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFFdkIsT0FBTyxJQUFBLDhCQUFlLEVBQ3BCLEdBQUcsRUFDSCxJQUFBLG9DQUFxQixFQUNuQixFQUFFLFlBQVksRUFBRSxFQUNoQixRQUFRLFlBQVksQ0FBQyxFQUFFLHVCQUF1QixDQUMvQyxDQUNGLENBQUM7SUFDSixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkIsT0FBTyxJQUFBLDhCQUFlLEVBQUMsR0FBRyxFQUFFLElBQUEsa0NBQW1CLEVBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM5RSxDQUFDO0FBQ0gsQ0FBQyJ9
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL3Nsb3QtbGlzdGluZy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.slotListingQueryConfig = void 0;
|
|
4
|
+
exports.slotListingQueryConfig = {
|
|
5
|
+
list: {
|
|
6
|
+
defaults: [], // or [] since we’re not fetching from DB
|
|
7
|
+
isList: true,
|
|
8
|
+
},
|
|
9
|
+
retrieve: {
|
|
10
|
+
defaults: [],
|
|
11
|
+
isList: false,
|
|
12
|
+
},
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwaS9zdG9yZS9zbG90LWxpc3RpbmcvcXVlcnktY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFhLFFBQUEsc0JBQXNCLEdBQUc7SUFDcEMsSUFBSSxFQUFFO1FBQ0osUUFBUSxFQUFFLEVBQUUsRUFBRSx5Q0FBeUM7UUFDdkQsTUFBTSxFQUFFLElBQUk7S0FDYjtJQUNELFFBQVEsRUFBRTtRQUNSLFFBQVEsRUFBRSxFQUFFO1FBQ1osTUFBTSxFQUFFLEtBQUs7S0FDZDtDQUNGLENBQUMifQ==
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GET = void 0;
|
|
4
|
+
const api_response_1 = require("../../../lib/api-response");
|
|
5
|
+
const form_response_1 = require("../../../modules/form-response");
|
|
6
|
+
const generateSlots = (type, date, now) => {
|
|
7
|
+
const slots = [];
|
|
8
|
+
const selectedDate = new Date(date);
|
|
9
|
+
if (type === "try_at_home") {
|
|
10
|
+
let start = new Date(date + "T11:30:00");
|
|
11
|
+
const end = new Date(date + "T19:30:00");
|
|
12
|
+
while (start <= end && slots.length < 4) {
|
|
13
|
+
slots.push(start.toLocaleTimeString([], { hour: "2-digit", minute: "2-digit" }));
|
|
14
|
+
start.setHours(start.getHours() + 2);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
if (type === "virtual_call") {
|
|
18
|
+
let start = new Date(date + "T11:30:00");
|
|
19
|
+
const end = new Date(date + "T20:00:00");
|
|
20
|
+
while (start <= end) {
|
|
21
|
+
if (selectedDate.toDateString() === now.toDateString()) {
|
|
22
|
+
const slotTime = new Date(start);
|
|
23
|
+
if (slotTime.getTime() <= now.getTime() + 60 * 60 * 1000) {
|
|
24
|
+
start.setMinutes(start.getMinutes() + 30);
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
slots.push(start.toLocaleTimeString([], { hour: "2-digit", minute: "2-digit" }));
|
|
29
|
+
start.setMinutes(start.getMinutes() + 30);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (type === "store_visit") {
|
|
33
|
+
let start = new Date(date + "T11:30:00");
|
|
34
|
+
const end = new Date(date + "T20:30:00");
|
|
35
|
+
while (start <= end) {
|
|
36
|
+
slots.push(start.toLocaleTimeString([], { hour: "2-digit", minute: "2-digit" }));
|
|
37
|
+
start.setMinutes(start.getMinutes() + 30);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return slots;
|
|
41
|
+
};
|
|
42
|
+
const GET = async (req, res) => {
|
|
43
|
+
try {
|
|
44
|
+
const { date, type, store_id } = req.validatedQuery;
|
|
45
|
+
if (!date || !type) {
|
|
46
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)({ slots: [], booking: [] }, "Please provide both date and type"));
|
|
47
|
+
}
|
|
48
|
+
const now = new Date();
|
|
49
|
+
let slots = generateSlots(type, date, now);
|
|
50
|
+
// 🔎 Get existing bookings for this date + type
|
|
51
|
+
const formService = req.scope.resolve(form_response_1.FORM_RESPONSE_MODULE);
|
|
52
|
+
const startOfDay = new Date(`${date}T00:00:00Z`); // start of UTC day
|
|
53
|
+
const endOfDay = new Date(`${date}T23:59:59Z`);
|
|
54
|
+
const existing = await formService.listFormResponses({
|
|
55
|
+
type: type === "virtual_call"
|
|
56
|
+
? "VIRTUAL_CALL"
|
|
57
|
+
: type === "store_visit"
|
|
58
|
+
? "STORE_VISIT"
|
|
59
|
+
: type === "try_at_home"
|
|
60
|
+
? "BOOK_YOUR_TRIAL"
|
|
61
|
+
: "",
|
|
62
|
+
scheduled_date_time: {
|
|
63
|
+
$gte: startOfDay.toISOString(),
|
|
64
|
+
$lte: endOfDay.toISOString(),
|
|
65
|
+
},
|
|
66
|
+
...(store_id != " " && { store_id: store_id })
|
|
67
|
+
});
|
|
68
|
+
const slotCount = {};
|
|
69
|
+
existing.forEach((b) => {
|
|
70
|
+
const slotTime = new Date(b.scheduled_date_time || "").toLocaleTimeString([], { hour: "2-digit", minute: "2-digit" });
|
|
71
|
+
slotCount[slotTime] = (slotCount[slotTime] || 0) + 1;
|
|
72
|
+
});
|
|
73
|
+
slots = slots.filter((slot) => {
|
|
74
|
+
if (store_id === " ") {
|
|
75
|
+
return (slotCount[slot] || 0) < 3;
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
return !slotCount[slot];
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)({ date, type, slots }, "Fetched appointment slots"));
|
|
82
|
+
}
|
|
83
|
+
catch (e) {
|
|
84
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)({ slots: [], booking: [] }, `Error generating slots: ${e.message}`));
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
exports.GET = GET;
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL3Nsb3QtbGlzdGluZy9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFJQSw0REFHbUM7QUFDbkMsa0VBQXNFO0FBS3RFLE1BQU0sYUFBYSxHQUFHLENBQUMsSUFBYyxFQUFFLElBQVksRUFBRSxHQUFTLEVBQUUsRUFBRTtJQUNoRSxNQUFNLEtBQUssR0FBYSxFQUFFLENBQUM7SUFDM0IsTUFBTSxZQUFZLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFcEMsSUFBSSxJQUFJLEtBQUssYUFBYSxFQUFFLENBQUM7UUFDM0IsSUFBSSxLQUFLLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxHQUFHLFdBQVcsQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksR0FBRyxXQUFXLENBQUMsQ0FBQztRQUV6QyxPQUFPLEtBQUssSUFBSSxHQUFHLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN4QyxLQUFLLENBQUMsSUFBSSxDQUNSLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUNyRSxDQUFDO1lBQ0YsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDdkMsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJLElBQUksS0FBSyxjQUFjLEVBQUUsQ0FBQztRQUM1QixJQUFJLEtBQUssR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDLENBQUM7UUFDekMsTUFBTSxHQUFHLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxHQUFHLFdBQVcsQ0FBQyxDQUFDO1FBRXpD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
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GetSlotParams = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
exports.GetSlotParams = zod_1.z.object({
|
|
6
|
+
date: zod_1.z
|
|
7
|
+
.string()
|
|
8
|
+
.regex(/^\d{4}-\d{2}-\d{2}$/, "Date must be in YYYY-MM-DD format"),
|
|
9
|
+
type: zod_1.z.enum(["try_at_home", "virtual_call", "store_visit"]),
|
|
10
|
+
store_id: zod_1.z.string()
|
|
11
|
+
});
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvc3RvcmUvc2xvdC1saXN0aW5nL3ZhbGlkYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkJBQXdCO0FBRVgsUUFBQSxhQUFhLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNwQyxJQUFJLEVBQUUsT0FBQztTQUNKLE1BQU0sRUFBRTtTQUNSLEtBQUssQ0FBQyxxQkFBcUIsRUFBRSxtQ0FBbUMsQ0FBQztJQUNwRSxJQUFJLEVBQUUsT0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLGFBQWEsRUFBRSxjQUFjLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDNUQsUUFBUSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7Q0FDckIsQ0FBQyxDQUFDIn0=
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.formatDateToDDMMYYYY = void 0;
|
|
4
|
+
const formatDateToDDMMYYYY = (date) => {
|
|
5
|
+
const d = new Date(date);
|
|
6
|
+
const day = String(d.getDate()).padStart(2, "0");
|
|
7
|
+
const month = String(d.getMonth() + 1).padStart(2, "0");
|
|
8
|
+
const year = d.getFullYear();
|
|
9
|
+
return `${day}-${month}-${year}`;
|
|
10
|
+
};
|
|
11
|
+
exports.formatDateToDDMMYYYY = formatDateToDDMMYYYY;
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQU8sTUFBTSxvQkFBb0IsR0FBRyxDQUFDLElBQW1CLEVBQUUsRUFBRTtJQUMxRCxNQUFNLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNqRCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDeEQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzdCLE9BQU8sR0FBRyxHQUFHLElBQUksS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO0FBQ25DLENBQUMsQ0FBQTtBQU5ZLFFBQUEsb0JBQW9CLHdCQU1oQyJ9
|
|
@@ -3,12 +3,52 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.createFormResponseStep = void 0;
|
|
4
4
|
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
5
|
const form_response_1 = require("../../../modules/form-response");
|
|
6
|
+
const helper_1 = require("../../../lib/helper");
|
|
6
7
|
exports.createFormResponseStep = (0, workflows_sdk_1.createStep)("create-form-response-step", async (data, { container }) => {
|
|
7
8
|
const formService = container.resolve(form_response_1.FORM_RESPONSE_MODULE);
|
|
8
|
-
const
|
|
9
|
-
|
|
9
|
+
const query = container.resolve("query");
|
|
10
|
+
// find all records with same mobile
|
|
11
|
+
const existing = await formService.listFormResponses({
|
|
12
|
+
mobile_number: data.mobile_number,
|
|
13
|
+
});
|
|
14
|
+
let store_id = data.store_id || "";
|
|
15
|
+
if (store_id === "") {
|
|
16
|
+
const virtual_data = await formService.listFormResponses({
|
|
17
|
+
type: data.type,
|
|
18
|
+
scheduled_date_time: data.scheduled_date_time,
|
|
19
|
+
});
|
|
20
|
+
const { data: outlet_data } = await query.graph({
|
|
21
|
+
entity: "outlet",
|
|
22
|
+
fields: ["*"],
|
|
23
|
+
filters: {
|
|
24
|
+
is_active: true,
|
|
25
|
+
},
|
|
26
|
+
});
|
|
27
|
+
if (virtual_data.length === 0) {
|
|
28
|
+
store_id = outlet_data.find((store) => store.city.toLowerCase().includes("ahmedabad"))?.id;
|
|
29
|
+
}
|
|
30
|
+
if (virtual_data.length === 1) {
|
|
31
|
+
store_id = outlet_data.find((store) => store.city.toLowerCase().includes("mumbai"))?.id;
|
|
32
|
+
}
|
|
33
|
+
if (virtual_data.length === 2) {
|
|
34
|
+
store_id = outlet_data.find((store) => store.city.toLowerCase().includes("indore"))?.id;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
if (existing.length > 0) {
|
|
38
|
+
// check if any record has the same date + same type
|
|
39
|
+
const sameDate = existing.find((res) => (0, helper_1.formatDateToDDMMYYYY)(res.scheduled_date_time || "") ===
|
|
40
|
+
(0, helper_1.formatDateToDDMMYYYY)(data.scheduled_date_time || "") &&
|
|
41
|
+
res.type === data.type);
|
|
42
|
+
if (sameDate) {
|
|
43
|
+
throw new Error(`Your booking already exists for ${sameDate.scheduled_date_time}`);
|
|
44
|
+
}
|
|
45
|
+
const formResponse = await formService.createFormResponses({ ...data, store_id });
|
|
46
|
+
return new workflows_sdk_1.StepResponse({ ...formResponse, __operation: "booking" }, formResponse.id);
|
|
47
|
+
}
|
|
48
|
+
const formResponse = await formService.createFormResponses({ ...data, store_id });
|
|
49
|
+
return new workflows_sdk_1.StepResponse({ ...formResponse, __operation: "create" }, formResponse.id);
|
|
10
50
|
}, async (id, { container }) => {
|
|
11
51
|
const formService = container.resolve(form_response_1.FORM_RESPONSE_MODULE);
|
|
12
52
|
await formService.deleteFormResponses([id]);
|
|
13
53
|
});
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWZvcm0tcmVzcG9uc2Utc3RlcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvZm9ybS1yZXNwb25zZS9zdGVwcy9jcmVhdGUtZm9ybS1yZXNwb25zZS1zdGVwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUE2RTtBQUU3RSxrRUFBc0U7QUFFdEUsZ0RBQTJEO0FBRTlDLFFBQUEsc0JBQXNCLEdBQUcsSUFBQSwwQkFBVSxFQUM5QywyQkFBMkIsRUFDM0IsS0FBSyxFQUFFLElBQTRCLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFO0lBQ3BELE1BQU0sV0FBVyxHQUNmLFNBQVMsQ0FBQyxPQUFPLENBQUMsb0NBQW9CLENBQUMsQ0FBQztJQUMxQyxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3pDLG9DQUFvQztJQUNwQyxNQUFNLFFBQVEsR0FBRyxNQUFNLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQztRQUNuRCxhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWE7S0FDbEMsQ0FBQyxDQUFDO0lBQ0gsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUM7SUFDL0IsSUFBSSxRQUFRLEtBQUssRUFBRSxFQUFFLENBQUM7UUFDcEIsTUFBTSxZQUFZLEdBQUcsTUFBTSxXQUFXLENBQUMsaUJBQWlCLENBQUM7WUFDdkQsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLG1CQUFtQjtTQUM5QyxDQUFDLENBQUM7UUFDSCxNQUFNLEVBQUMsSUFBSSxFQUFDLFdBQVcsRUFBQyxHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztZQUMzQyxNQUFNLEVBQUUsUUFBUTtZQUNoQixNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUM7WUFDYixPQUFPLEVBQUU7Z0JBQ1As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
|
|
@@ -7,11 +7,14 @@ const core_flows_1 = require("@medusajs/medusa/core-flows");
|
|
|
7
7
|
exports.createFormResponseWorkflow = (0, workflows_sdk_1.createWorkflow)("create-form-response-workflow", (input) => {
|
|
8
8
|
const formResponse = (0, steps_1.createFormResponseStep)(input);
|
|
9
9
|
(0, core_flows_1.emitEventStep)({
|
|
10
|
-
eventName: "form-response
|
|
10
|
+
eventName: "form-response",
|
|
11
11
|
data: {
|
|
12
|
-
formResponse,
|
|
12
|
+
operation: formResponse.__operation, // "create" or "booking"
|
|
13
|
+
data: formResponse,
|
|
13
14
|
},
|
|
15
|
+
}).config({
|
|
16
|
+
name: "form-response-event",
|
|
14
17
|
});
|
|
15
18
|
return new workflows_sdk_1.WorkflowResponse(formResponse);
|
|
16
19
|
});
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWZvcm0tcmVzcG9uc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2Zvcm0tcmVzcG9uc2Uvd29ya2Zsb3dzL2NyZWF0ZS1mb3JtLXJlc3BvbnNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUcyQztBQUMzQyxvQ0FBa0Q7QUFFbEQsNERBQTREO0FBRS9DLFFBQUEsMEJBQTBCLEdBQUcsSUFBQSw4QkFBYyxFQUN0RCwrQkFBK0IsRUFDL0IsQ0FBQyxLQUE2QixFQUFFLEVBQUU7SUFDaEMsTUFBTSxZQUFZLEdBQUcsSUFBQSw4QkFBc0IsRUFBQyxLQUFLLENBQUMsQ0FBQztJQUVuRCxJQUFBLDBCQUFhLEVBQUM7UUFDWixTQUFTLEVBQUUsZUFBZTtRQUMxQixJQUFJLEVBQUU7WUFDSixTQUFTLEVBQUUsWUFBWSxDQUFDLFdBQVcsRUFBRSx3QkFBd0I7WUFDN0QsSUFBSSxFQUFFLFlBQVk7U0FDbkI7S0FDRixDQUFDLENBQUMsTUFBTSxDQUFDO1FBQ1IsSUFBSSxFQUFFLHFCQUFxQjtLQUM1QixDQUFDLENBQUM7SUFFSCxPQUFPLElBQUksZ0NBQWdCLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDNUMsQ0FBQyxDQUNGLENBQUMifQ==
|