@smvtech/x-flux 1.0.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/README.md +118 -0
- package/dist/index.d.mts +5242 -0
- package/dist/index.d.ts +5242 -0
- package/dist/index.js +1371 -0
- package/dist/index.mjs +1322 -0
- package/package.json +75 -0
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,1322 @@
|
|
|
1
|
+
import { createContext, useState, useRef, useCallback, useEffect, useContext } from 'react';
|
|
2
|
+
import axios from 'axios';
|
|
3
|
+
import * as z2 from 'zod';
|
|
4
|
+
import z2__default from 'zod';
|
|
5
|
+
import { jsx } from 'react/jsx-runtime';
|
|
6
|
+
|
|
7
|
+
// src/context/index.tsx
|
|
8
|
+
var axiosInstance = null;
|
|
9
|
+
var initializeApiClient = (config) => {
|
|
10
|
+
const baseURL = config.baseUrls[config.environment];
|
|
11
|
+
if (!baseURL) {
|
|
12
|
+
throw new Error(`Invalid environment: ${config.environment}`);
|
|
13
|
+
}
|
|
14
|
+
axiosInstance = axios.create({
|
|
15
|
+
baseURL: `${baseURL}/v1`,
|
|
16
|
+
headers: {
|
|
17
|
+
authorization: config.jwtToken
|
|
18
|
+
},
|
|
19
|
+
withCredentials: true
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
var getClient = () => {
|
|
23
|
+
if (!axiosInstance) {
|
|
24
|
+
throw new Error("API client not initialized. Call initializeEDCFlow() first.");
|
|
25
|
+
}
|
|
26
|
+
return axiosInstance;
|
|
27
|
+
};
|
|
28
|
+
var APPLICATION_STATUS = /* @__PURE__ */ ((APPLICATION_STATUS2) => {
|
|
29
|
+
APPLICATION_STATUS2["CREATED"] = "CREATED";
|
|
30
|
+
APPLICATION_STATUS2["IN_PROGRESS"] = "IN_PROGRESS";
|
|
31
|
+
APPLICATION_STATUS2["READY_TO_SUBMIT"] = "READY_TO_SUBMIT";
|
|
32
|
+
APPLICATION_STATUS2["SUBMITTING"] = "SUBMITTING";
|
|
33
|
+
APPLICATION_STATUS2["AWAITING_RESULT"] = "AWAITING_RESULT";
|
|
34
|
+
APPLICATION_STATUS2["COMPLETED"] = "COMPLETED";
|
|
35
|
+
APPLICATION_STATUS2["VOID"] = "VOID";
|
|
36
|
+
return APPLICATION_STATUS2;
|
|
37
|
+
})(APPLICATION_STATUS || {});
|
|
38
|
+
var APPLICATION_TAGS = /* @__PURE__ */ ((APPLICATION_TAGS2) => {
|
|
39
|
+
APPLICATION_TAGS2["SUBMISSION_PENDING"] = "SUBMISSION_PENDING";
|
|
40
|
+
APPLICATION_TAGS2["EMBASSY_PENDING"] = "EMBASSY_PENDING";
|
|
41
|
+
APPLICATION_TAGS2["VERDICT_QC_PENDING"] = "VERDICT_QC_PENDING";
|
|
42
|
+
APPLICATION_TAGS2["PAYMENT_CARD_PENDING"] = "PAYMENT_CARD_PENDING";
|
|
43
|
+
APPLICATION_TAGS2["DOCUMENT_PENDING"] = "DOCUMENT_PENDING";
|
|
44
|
+
APPLICATION_TAGS2["COMPLETED"] = "COMPLETED";
|
|
45
|
+
APPLICATION_TAGS2["MINOR"] = "MINOR";
|
|
46
|
+
APPLICATION_TAGS2["VRI_OPTED"] = "VRI_OPTED";
|
|
47
|
+
APPLICATION_TAGS2["VRI_APPLIED"] = "VRI_APPLIED";
|
|
48
|
+
APPLICATION_TAGS2["AMENDMENT_REQUESTED"] = "AMENDMENT_REQUESTED";
|
|
49
|
+
APPLICATION_TAGS2["OK_TO_BOARD"] = "OK_TO_BOARD";
|
|
50
|
+
APPLICATION_TAGS2["ABSCONDING_APPLICANT"] = "ABSCONDING_APPLICANT";
|
|
51
|
+
APPLICATION_TAGS2["DRAFTED_APPLICATION"] = "DRAFTED_APPLICATION";
|
|
52
|
+
APPLICATION_TAGS2["DUPLICATE_TRAVELLER"] = "DUPLICATE_TRAVELLER";
|
|
53
|
+
return APPLICATION_TAGS2;
|
|
54
|
+
})(APPLICATION_TAGS || {});
|
|
55
|
+
var TA_QC_EXTRACTION_STATUS = /* @__PURE__ */ ((TA_QC_EXTRACTION_STATUS2) => {
|
|
56
|
+
TA_QC_EXTRACTION_STATUS2["SUCCESS"] = "SUCCESS";
|
|
57
|
+
TA_QC_EXTRACTION_STATUS2["FAIL"] = "FAIL";
|
|
58
|
+
TA_QC_EXTRACTION_STATUS2["NA"] = "NA";
|
|
59
|
+
return TA_QC_EXTRACTION_STATUS2;
|
|
60
|
+
})(TA_QC_EXTRACTION_STATUS || {});
|
|
61
|
+
var QuestionnaireSchema = z2.object({
|
|
62
|
+
questionsWithRank: z2.array(z2.object({ id: z2.string(), rank: z2.number() })),
|
|
63
|
+
questionMap: z2.record(
|
|
64
|
+
z2.object({
|
|
65
|
+
category: z2.string(),
|
|
66
|
+
answer_source: z2.string(),
|
|
67
|
+
isApplicationSpecific: z2.boolean(),
|
|
68
|
+
question: z2.string(),
|
|
69
|
+
subType: z2.string(),
|
|
70
|
+
options: z2.array(z2.string()),
|
|
71
|
+
is_required: z2.boolean(),
|
|
72
|
+
is_root: z2.boolean(),
|
|
73
|
+
type: z2.enum(["CALENDAR", "DOCUMENT", "DROPDOWN", "SINGLE_CHOICE", "TEXT", "TEXTAREA"]),
|
|
74
|
+
renders: z2.array(
|
|
75
|
+
z2.object({
|
|
76
|
+
operation: z2.string(),
|
|
77
|
+
value: z2.string(),
|
|
78
|
+
question_ids: z2.array(z2.string())
|
|
79
|
+
})
|
|
80
|
+
)
|
|
81
|
+
})
|
|
82
|
+
)
|
|
83
|
+
});
|
|
84
|
+
var ApplicationAbscondingMetadataSchema = z2.object({
|
|
85
|
+
is_ecr: z2.string().nullable(),
|
|
86
|
+
is_young: z2.string().nullable(),
|
|
87
|
+
is_solo_traveller: z2.string().nullable(),
|
|
88
|
+
is_high_risk_state: z2.string().nullable(),
|
|
89
|
+
is_regional_signature: z2.string().nullable(),
|
|
90
|
+
is_recent_issue_passport: z2.string().nullable(),
|
|
91
|
+
is_village_pincode: z2.string().nullable(),
|
|
92
|
+
is_flight_confirmed: z2.object({
|
|
93
|
+
label: z2.string().nullable(),
|
|
94
|
+
metadata: z2.any().optional()
|
|
95
|
+
}).nullable()
|
|
96
|
+
});
|
|
97
|
+
var ApplicationSchema = z2.object({
|
|
98
|
+
_id: z2.string(),
|
|
99
|
+
visa_order_id: z2.string(),
|
|
100
|
+
application_status: z2.nativeEnum(APPLICATION_STATUS),
|
|
101
|
+
tags: z2.nativeEnum(APPLICATION_TAGS).array().optional(),
|
|
102
|
+
absconding_metadata: ApplicationAbscondingMetadataSchema.optional(),
|
|
103
|
+
created_at: z2.string(),
|
|
104
|
+
updated_at: z2.string()
|
|
105
|
+
});
|
|
106
|
+
var TravellerSchema = z2.object({
|
|
107
|
+
_id: z2.string(),
|
|
108
|
+
application_id: z2.string(),
|
|
109
|
+
order_id: z2.string(),
|
|
110
|
+
first_name: z2.string(),
|
|
111
|
+
middle_name: z2.string().nullable().optional(),
|
|
112
|
+
last_name: z2.string().nullable().optional(),
|
|
113
|
+
is_demo_traveller: z2.boolean(),
|
|
114
|
+
passport: z2.string(),
|
|
115
|
+
is_foreign_passport: z2.boolean().optional(),
|
|
116
|
+
is_deleted: z2.boolean(),
|
|
117
|
+
created_by: z2.string(),
|
|
118
|
+
created_at: z2.string(),
|
|
119
|
+
updated_at: z2.string()
|
|
120
|
+
});
|
|
121
|
+
var AnswerSchema = z2.object({
|
|
122
|
+
_id: z2.string(),
|
|
123
|
+
visa_questions_id: z2.string(),
|
|
124
|
+
application_id: z2.string(),
|
|
125
|
+
traveller_id: z2.string(),
|
|
126
|
+
assets_id: z2.array(
|
|
127
|
+
z2.object({
|
|
128
|
+
doc_id: z2.string(),
|
|
129
|
+
issue_reason: z2.string().nullable(),
|
|
130
|
+
status: z2.enum(["ANSWERED", "APPROVED", "REJECTED", "DELETED"])
|
|
131
|
+
})
|
|
132
|
+
),
|
|
133
|
+
answer: z2.string().array(),
|
|
134
|
+
issue_reason: z2.string().nullable(),
|
|
135
|
+
status: z2.enum(["ANSWERED", "APPROVED", "REJECTED", "NA", "UNSTARTED", "PENDING"]),
|
|
136
|
+
is_deleted: z2.boolean(),
|
|
137
|
+
visa_order_id: z2.string(),
|
|
138
|
+
created_by: z2.string(),
|
|
139
|
+
created_at: z2.string(),
|
|
140
|
+
updated_at: z2.string()
|
|
141
|
+
});
|
|
142
|
+
|
|
143
|
+
// src/helpers/index.tsx
|
|
144
|
+
var createAllQuestionsWithAnswers = (questionnaire, answers = []) => {
|
|
145
|
+
if (!questionnaire) return [];
|
|
146
|
+
const answerMap = /* @__PURE__ */ new Map();
|
|
147
|
+
answers.forEach((answer) => {
|
|
148
|
+
answerMap.set(answer.visa_questions_id, answer);
|
|
149
|
+
});
|
|
150
|
+
const questionsWithAnswers = [];
|
|
151
|
+
questionnaire.questionsWithRank.forEach(({ id, rank }) => {
|
|
152
|
+
const question = questionnaire.questionMap[id];
|
|
153
|
+
if (question) {
|
|
154
|
+
questionsWithAnswers.push({
|
|
155
|
+
id,
|
|
156
|
+
rank,
|
|
157
|
+
question,
|
|
158
|
+
answer_data: answerMap.get(id)
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
return questionsWithAnswers;
|
|
163
|
+
};
|
|
164
|
+
var filterConditionalQuestions = (questions, order) => {
|
|
165
|
+
const questionMap = /* @__PURE__ */ new Map();
|
|
166
|
+
questions.forEach((q) => {
|
|
167
|
+
questionMap.set(q.id, q);
|
|
168
|
+
});
|
|
169
|
+
const visibleQuestionIds = /* @__PURE__ */ new Set();
|
|
170
|
+
const processRenders = (questionId) => {
|
|
171
|
+
const question = questionMap.get(questionId);
|
|
172
|
+
if (!question) return;
|
|
173
|
+
const answerValue = question.answer_data?.answer || [];
|
|
174
|
+
question.question.renders?.forEach((render) => {
|
|
175
|
+
if (shouldRenderQuestion(render, answerValue, order)) {
|
|
176
|
+
render.question_ids.forEach((id) => {
|
|
177
|
+
if (!visibleQuestionIds.has(id)) {
|
|
178
|
+
visibleQuestionIds.add(id);
|
|
179
|
+
processRenders(id);
|
|
180
|
+
}
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
});
|
|
184
|
+
};
|
|
185
|
+
questions.forEach((q) => {
|
|
186
|
+
if (q.question.is_root) {
|
|
187
|
+
visibleQuestionIds.add(q.id);
|
|
188
|
+
processRenders(q.id);
|
|
189
|
+
}
|
|
190
|
+
});
|
|
191
|
+
return questions.filter((q) => visibleQuestionIds.has(q.id)).sort((a, b) => a.rank - b.rank);
|
|
192
|
+
};
|
|
193
|
+
var extractDynamicFieldName = (value) => {
|
|
194
|
+
const match = value.match(/^\{\{([^}]+)\}\}$/);
|
|
195
|
+
return match ? match[1].trim() : null;
|
|
196
|
+
};
|
|
197
|
+
var isMinor = (dateOfBirth, travelStartDate) => {
|
|
198
|
+
if (!dateOfBirth || !travelStartDate) return false;
|
|
199
|
+
let dob;
|
|
200
|
+
if (dateOfBirth.includes("/")) {
|
|
201
|
+
const [month, day, year] = dateOfBirth.split("/").map(Number);
|
|
202
|
+
dob = new Date(year, month - 1, day);
|
|
203
|
+
} else {
|
|
204
|
+
dob = new Date(dateOfBirth);
|
|
205
|
+
}
|
|
206
|
+
const travelDate = new Date(travelStartDate);
|
|
207
|
+
if (isNaN(dob.getTime()) || isNaN(travelDate.getTime())) return false;
|
|
208
|
+
const ageDiff = travelDate.getFullYear() - dob.getFullYear();
|
|
209
|
+
const monthDiff = travelDate.getMonth() - dob.getMonth();
|
|
210
|
+
const dayDiff = travelDate.getDate() - dob.getDate();
|
|
211
|
+
const actualAge = monthDiff < 0 || monthDiff === 0 && dayDiff < 0 ? ageDiff - 1 : ageDiff;
|
|
212
|
+
return actualAge < 18;
|
|
213
|
+
};
|
|
214
|
+
var shouldRenderQuestion = (render, answerValue, order) => {
|
|
215
|
+
const dynamicFieldName = extractDynamicFieldName(render.value);
|
|
216
|
+
if (dynamicFieldName) {
|
|
217
|
+
switch (dynamicFieldName) {
|
|
218
|
+
case "travel_start_date":
|
|
219
|
+
return isMinor(answerValue[0], order.travel_start_date);
|
|
220
|
+
default:
|
|
221
|
+
return false;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
switch (render.operation) {
|
|
225
|
+
case "answers":
|
|
226
|
+
return !!answerValue;
|
|
227
|
+
case "eq":
|
|
228
|
+
return answerValue.some((value) => value === render.value);
|
|
229
|
+
case "neq":
|
|
230
|
+
return answerValue.some((value) => value !== render.value);
|
|
231
|
+
case "gt":
|
|
232
|
+
return answerValue.some((value) => parseInt(value) > parseInt(render.value));
|
|
233
|
+
case "gte":
|
|
234
|
+
return answerValue.some((value) => parseInt(value) >= parseInt(render.value));
|
|
235
|
+
case "lt":
|
|
236
|
+
return answerValue.some((value) => parseInt(value) < parseInt(render.value));
|
|
237
|
+
case "lte":
|
|
238
|
+
return answerValue.some((value) => parseInt(value) <= parseInt(render.value));
|
|
239
|
+
case "includes":
|
|
240
|
+
return answerValue.some((value) => value.includes(render.value));
|
|
241
|
+
case "nincludes":
|
|
242
|
+
return !answerValue.some((value) => value.includes(render.value));
|
|
243
|
+
default:
|
|
244
|
+
return false;
|
|
245
|
+
}
|
|
246
|
+
};
|
|
247
|
+
var getVisibleQuestions = (questions, order) => {
|
|
248
|
+
return filterConditionalQuestions(questions, order);
|
|
249
|
+
};
|
|
250
|
+
var formatApplicationFromResponse = (application) => {
|
|
251
|
+
return {
|
|
252
|
+
_id: application._id,
|
|
253
|
+
visa_order_id: application.visa_order_id,
|
|
254
|
+
application_status: application.application_status,
|
|
255
|
+
tags: application.tags,
|
|
256
|
+
absconding_metadata: application.absconding_metadata,
|
|
257
|
+
created_at: application.created_at,
|
|
258
|
+
updated_at: application.updated_at
|
|
259
|
+
};
|
|
260
|
+
};
|
|
261
|
+
var formatTravellerFromResponse = (traveller) => {
|
|
262
|
+
return {
|
|
263
|
+
_id: traveller._id,
|
|
264
|
+
application_id: traveller.application_id,
|
|
265
|
+
order_id: traveller.order_id,
|
|
266
|
+
first_name: traveller.first_name,
|
|
267
|
+
middle_name: traveller.middle_name,
|
|
268
|
+
last_name: traveller.last_name,
|
|
269
|
+
is_demo_traveller: traveller.is_demo_traveller,
|
|
270
|
+
passport: traveller.passport,
|
|
271
|
+
is_foreign_passport: traveller.is_foreign_passport,
|
|
272
|
+
is_deleted: traveller.is_deleted,
|
|
273
|
+
created_by: traveller.created_by,
|
|
274
|
+
created_at: traveller.created_at,
|
|
275
|
+
updated_at: traveller.updated_at
|
|
276
|
+
};
|
|
277
|
+
};
|
|
278
|
+
var formatAnswerFromResponse = (updatedAnswer, orderId) => {
|
|
279
|
+
return {
|
|
280
|
+
_id: updatedAnswer._id,
|
|
281
|
+
visa_questions_id: updatedAnswer.visa_questions_id,
|
|
282
|
+
application_id: updatedAnswer.application_id,
|
|
283
|
+
traveller_id: updatedAnswer.traveller_id,
|
|
284
|
+
assets_id: updatedAnswer.assets_id || [],
|
|
285
|
+
answer: updatedAnswer.answer,
|
|
286
|
+
issue_reason: updatedAnswer.issue_reason,
|
|
287
|
+
status: updatedAnswer.status,
|
|
288
|
+
is_deleted: updatedAnswer.is_deleted,
|
|
289
|
+
visa_order_id: updatedAnswer.visa_order_id || orderId,
|
|
290
|
+
created_by: updatedAnswer.created_by,
|
|
291
|
+
created_at: updatedAnswer.created_at,
|
|
292
|
+
updated_at: updatedAnswer.updated_at
|
|
293
|
+
};
|
|
294
|
+
};
|
|
295
|
+
var updateApplicantWithAnswer = (applicant, question_id, answer, questionnaire, order) => {
|
|
296
|
+
const answerMap = /* @__PURE__ */ new Map();
|
|
297
|
+
applicant.questions.forEach((q) => {
|
|
298
|
+
if (q.answer_data) {
|
|
299
|
+
answerMap.set(q.id, q.answer_data);
|
|
300
|
+
}
|
|
301
|
+
});
|
|
302
|
+
answerMap.set(question_id, answer);
|
|
303
|
+
const answers = Array.from(answerMap.values());
|
|
304
|
+
const questions = createAllQuestionsWithAnswers(questionnaire, answers);
|
|
305
|
+
const visibleQuestions = getVisibleQuestions(questions, order);
|
|
306
|
+
return {
|
|
307
|
+
...applicant,
|
|
308
|
+
questions: visibleQuestions
|
|
309
|
+
};
|
|
310
|
+
};
|
|
311
|
+
var createApplicantData = (traveller, answers, questionnaire, application, order) => {
|
|
312
|
+
if (!questionnaire) return null;
|
|
313
|
+
const questions = createAllQuestionsWithAnswers(questionnaire, answers);
|
|
314
|
+
const visibleQuestions = getVisibleQuestions(questions, order);
|
|
315
|
+
return {
|
|
316
|
+
application_id: application._id,
|
|
317
|
+
application,
|
|
318
|
+
traveller,
|
|
319
|
+
questions: visibleQuestions
|
|
320
|
+
};
|
|
321
|
+
};
|
|
322
|
+
var transformApplicationResponse = (response) => {
|
|
323
|
+
return {
|
|
324
|
+
application: formatApplicationFromResponse(response.application),
|
|
325
|
+
traveller: formatTravellerFromResponse(response.traveller),
|
|
326
|
+
answers: (response.answers || []).map((answer) => formatAnswerFromResponse(answer, response.application.visa_order_id))
|
|
327
|
+
};
|
|
328
|
+
};
|
|
329
|
+
var createApplicantsFromApplications = (applications, questionnaire, order) => {
|
|
330
|
+
if (!applications || !Array.isArray(applications)) {
|
|
331
|
+
return {};
|
|
332
|
+
}
|
|
333
|
+
const applicants = {};
|
|
334
|
+
applications.forEach((applicationData) => {
|
|
335
|
+
const applicant = createApplicantData(
|
|
336
|
+
applicationData.traveller,
|
|
337
|
+
applicationData.answers,
|
|
338
|
+
questionnaire,
|
|
339
|
+
applicationData.application,
|
|
340
|
+
order
|
|
341
|
+
);
|
|
342
|
+
if (applicant) {
|
|
343
|
+
applicants[applicationData.application._id] = applicant;
|
|
344
|
+
}
|
|
345
|
+
});
|
|
346
|
+
return applicants;
|
|
347
|
+
};
|
|
348
|
+
var getExt = (filename) => {
|
|
349
|
+
return filename.split(".").pop()?.toLowerCase() ?? "";
|
|
350
|
+
};
|
|
351
|
+
async function getSignedUrlFromAsset(docId) {
|
|
352
|
+
if (!docId) return null;
|
|
353
|
+
try {
|
|
354
|
+
const { data: documentData } = await getDocumentData([docId]);
|
|
355
|
+
const docData = Array.isArray(documentData) ? documentData[0] : documentData;
|
|
356
|
+
if (docData && typeof docData === "object" && "s3_path" in docData && docData.s3_path) {
|
|
357
|
+
const { data: urls } = await getFileURLfromFilename(docData.s3_path);
|
|
358
|
+
return urls?.[0]?.url || null;
|
|
359
|
+
}
|
|
360
|
+
return null;
|
|
361
|
+
} catch (error) {
|
|
362
|
+
console.error("Failed to fetch signed URL:", error);
|
|
363
|
+
return null;
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
var findQuestionsWithDynamicOptions = (questionnaire, dynamicValue) => {
|
|
367
|
+
return Object.entries(questionnaire.questionMap).filter(([, question]) => question.options?.includes(`{{${dynamicValue}}}`)).map(([id]) => id);
|
|
368
|
+
};
|
|
369
|
+
var buildDynamicQuestionMap = (questionnaire) => {
|
|
370
|
+
const dynamicMap = {};
|
|
371
|
+
const dynamicValues = ["adults"];
|
|
372
|
+
for (const dynamicValue of dynamicValues) {
|
|
373
|
+
const questionIds = findQuestionsWithDynamicOptions(questionnaire, dynamicValue);
|
|
374
|
+
for (const questionId of questionIds) {
|
|
375
|
+
dynamicMap[questionId] = `{{${dynamicValue}}}`;
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
return dynamicMap;
|
|
379
|
+
};
|
|
380
|
+
var computeDynamicOptions = (dynamicValue, applicants) => {
|
|
381
|
+
switch (dynamicValue) {
|
|
382
|
+
case "{{adults}}": {
|
|
383
|
+
const adults = Object.values(applicants).filter(
|
|
384
|
+
(applicant) => !applicant.application.tags?.includes("MINOR" /* MINOR */)
|
|
385
|
+
);
|
|
386
|
+
return adults.map((adult) => `app_id_${adult.application_id}`);
|
|
387
|
+
}
|
|
388
|
+
// Add more cases for future dynamic options
|
|
389
|
+
// case "{{non-dependents}}": { ... }
|
|
390
|
+
default:
|
|
391
|
+
return [];
|
|
392
|
+
}
|
|
393
|
+
};
|
|
394
|
+
var updateQuestionnaireWithDynamicOptions = (questionnaire, dynamicQuestionMap, applicants) => {
|
|
395
|
+
if (Object.keys(dynamicQuestionMap).length === 0) return questionnaire;
|
|
396
|
+
const updatedQuestionMap = { ...questionnaire.questionMap };
|
|
397
|
+
for (const [questionId, dynamicValue] of Object.entries(dynamicQuestionMap)) {
|
|
398
|
+
const question = questionnaire.questionMap[questionId];
|
|
399
|
+
if (!question) continue;
|
|
400
|
+
const computedOptions = computeDynamicOptions(dynamicValue, applicants);
|
|
401
|
+
updatedQuestionMap[questionId] = {
|
|
402
|
+
...question,
|
|
403
|
+
options: computedOptions
|
|
404
|
+
};
|
|
405
|
+
}
|
|
406
|
+
return {
|
|
407
|
+
...questionnaire,
|
|
408
|
+
questionMap: updatedQuestionMap
|
|
409
|
+
};
|
|
410
|
+
};
|
|
411
|
+
var updateApplicantsQuestionOptions = (applicants, dynamicQuestionMap, updatedQuestionnaire) => {
|
|
412
|
+
const dynamicQuestionIds = new Set(Object.keys(dynamicQuestionMap));
|
|
413
|
+
const updatedApplicants = {};
|
|
414
|
+
for (const [applicationId, applicant] of Object.entries(applicants)) {
|
|
415
|
+
const hasDynamicQuestions = applicant.questions.some((q) => dynamicQuestionIds.has(q.id));
|
|
416
|
+
if (!hasDynamicQuestions) {
|
|
417
|
+
updatedApplicants[applicationId] = applicant;
|
|
418
|
+
continue;
|
|
419
|
+
}
|
|
420
|
+
const updatedQuestions = applicant.questions.map((questionWithAnswer) => {
|
|
421
|
+
if (dynamicQuestionIds.has(questionWithAnswer.id)) {
|
|
422
|
+
const updatedQuestion = updatedQuestionnaire.questionMap[questionWithAnswer.id];
|
|
423
|
+
if (updatedQuestion) {
|
|
424
|
+
return {
|
|
425
|
+
...questionWithAnswer,
|
|
426
|
+
question: {
|
|
427
|
+
...questionWithAnswer.question,
|
|
428
|
+
options: updatedQuestion.options
|
|
429
|
+
}
|
|
430
|
+
};
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
return questionWithAnswer;
|
|
434
|
+
});
|
|
435
|
+
updatedApplicants[applicationId] = {
|
|
436
|
+
...applicant,
|
|
437
|
+
questions: updatedQuestions
|
|
438
|
+
};
|
|
439
|
+
}
|
|
440
|
+
return updatedApplicants;
|
|
441
|
+
};
|
|
442
|
+
var runApplicantSideEffects = (applicants, questionnaire, dynamicQuestionMap) => {
|
|
443
|
+
if (Object.keys(dynamicQuestionMap).length === 0) {
|
|
444
|
+
return { updatedQuestionnaire: questionnaire, updatedApplicants: applicants };
|
|
445
|
+
}
|
|
446
|
+
const updatedQuestionnaire = updateQuestionnaireWithDynamicOptions(questionnaire, dynamicQuestionMap, applicants);
|
|
447
|
+
const updatedApplicants = updateApplicantsQuestionOptions(applicants, dynamicQuestionMap, updatedQuestionnaire);
|
|
448
|
+
return { updatedQuestionnaire, updatedApplicants };
|
|
449
|
+
};
|
|
450
|
+
|
|
451
|
+
// src/api/index.ts
|
|
452
|
+
var transformApplicationData = (rawData) => {
|
|
453
|
+
const transformed = transformApplicationResponse(rawData);
|
|
454
|
+
return {
|
|
455
|
+
application: transformed.application,
|
|
456
|
+
traveller: transformed.traveller,
|
|
457
|
+
answers: transformed.answers
|
|
458
|
+
};
|
|
459
|
+
};
|
|
460
|
+
var getOrderByOrderId = async (orderId, signal) => {
|
|
461
|
+
const client = getClient();
|
|
462
|
+
const response = await client.get(`/visa_orders/order-details/${orderId}`, { signal });
|
|
463
|
+
return { data: response.data.data };
|
|
464
|
+
};
|
|
465
|
+
var getQuestionnaires = async (orderId, isSmvUser = false, signal) => {
|
|
466
|
+
const client = getClient();
|
|
467
|
+
const response = await client.get(`/visa_orders/generate-questionnaire/${orderId}?showAll=${isSmvUser}`, {
|
|
468
|
+
signal
|
|
469
|
+
});
|
|
470
|
+
return { data: response.data.data };
|
|
471
|
+
};
|
|
472
|
+
var getApplicantsForOrder = async (orderId, signal) => {
|
|
473
|
+
const client = getClient();
|
|
474
|
+
const response = await client.get(`/visa_orders/edc-applicants/${orderId}`, { signal });
|
|
475
|
+
const rawData = response.data.data;
|
|
476
|
+
const transformedData = rawData.map(transformApplicationData);
|
|
477
|
+
return { data: transformedData };
|
|
478
|
+
};
|
|
479
|
+
var getApplicant = async (applicationId, signal) => {
|
|
480
|
+
const client = getClient();
|
|
481
|
+
const response = await client.get(`/applications/edc-applicant/${applicationId}`, { signal });
|
|
482
|
+
const rawData = response.data.data;
|
|
483
|
+
return { data: transformApplicationData(rawData) };
|
|
484
|
+
};
|
|
485
|
+
var addApplicant = async (orderId, payload) => {
|
|
486
|
+
const client = getClient();
|
|
487
|
+
const response = await client.post(`/travellers/edc-applicant/${orderId}`, payload);
|
|
488
|
+
const rawData = response.data.data;
|
|
489
|
+
return { data: transformApplicationData(rawData) };
|
|
490
|
+
};
|
|
491
|
+
var deleteApplicant = async (applicationId) => {
|
|
492
|
+
const client = getClient();
|
|
493
|
+
await client.delete(`/applications/${applicationId}`);
|
|
494
|
+
return { data: void 0 };
|
|
495
|
+
};
|
|
496
|
+
var updateAnswer = async (applicationId, data, onProgress) => {
|
|
497
|
+
const client = getClient();
|
|
498
|
+
const formData = new FormData();
|
|
499
|
+
formData.append("application_id", applicationId);
|
|
500
|
+
formData.append("visa_question_id", data.visa_question_id);
|
|
501
|
+
formData.append("answer", data.answer);
|
|
502
|
+
if (data.file) {
|
|
503
|
+
formData.append("docs", data.file);
|
|
504
|
+
}
|
|
505
|
+
const response = await client.post(`/visa_answers/upsert-answer-edc`, formData, {
|
|
506
|
+
onUploadProgress: (event) => {
|
|
507
|
+
onProgress?.({
|
|
508
|
+
percent: event.loaded / (event.total ?? 100) * 100
|
|
509
|
+
});
|
|
510
|
+
}
|
|
511
|
+
});
|
|
512
|
+
const rawData = response.data.data;
|
|
513
|
+
const transformedApplication = formatApplicationFromResponse(rawData.application);
|
|
514
|
+
const transformedTraveller = formatTravellerFromResponse(rawData.traveller);
|
|
515
|
+
const transformedAnswer = formatAnswerFromResponse(rawData.upsertedAnswer, rawData.application.visa_order_id);
|
|
516
|
+
return {
|
|
517
|
+
data: {
|
|
518
|
+
application: transformedApplication,
|
|
519
|
+
traveller: transformedTraveller,
|
|
520
|
+
answers: transformedAnswer,
|
|
521
|
+
docId: rawData.docId,
|
|
522
|
+
signedUrl: rawData.signedUrl,
|
|
523
|
+
ocrStatus: rawData.ocrStatus
|
|
524
|
+
}
|
|
525
|
+
};
|
|
526
|
+
};
|
|
527
|
+
var getDocumentData = async (assetId, signal) => {
|
|
528
|
+
const client = getClient();
|
|
529
|
+
const documentIds = Array.isArray(assetId) ? assetId : [assetId];
|
|
530
|
+
const response = await client.get("/documents/assets", {
|
|
531
|
+
params: { documentIds },
|
|
532
|
+
paramsSerializer: (params) => new URLSearchParams(params.documentIds.map((id) => ["documentIds", id])).toString(),
|
|
533
|
+
signal
|
|
534
|
+
});
|
|
535
|
+
return { data: response.data.data };
|
|
536
|
+
};
|
|
537
|
+
var getFileURLfromFilename = async (filename, signal) => {
|
|
538
|
+
const client = getClient();
|
|
539
|
+
const response = await client.get(`/documents/signed-url?filename=${encodeURIComponent(filename)}`, { signal });
|
|
540
|
+
const signedURLs = response.data.data.map((url) => {
|
|
541
|
+
const urlObj = new URL(url);
|
|
542
|
+
const extractedFilename = urlObj.pathname.split("/").pop();
|
|
543
|
+
const extension = getExt(extractedFilename ?? "");
|
|
544
|
+
if (!extractedFilename) return { url, filename: "", extension: "" };
|
|
545
|
+
return { url, filename: extractedFilename, extension };
|
|
546
|
+
});
|
|
547
|
+
return { data: signedURLs };
|
|
548
|
+
};
|
|
549
|
+
var EDCFlowContext = createContext(void 0);
|
|
550
|
+
var EDCFlowProvider = ({ children, orderId }) => {
|
|
551
|
+
const [order, setOrder] = useState(null);
|
|
552
|
+
const [questionnaire, setQuestionnaire] = useState(null);
|
|
553
|
+
const [dynamicQuestionMap, setDynamicQuestionMap] = useState({});
|
|
554
|
+
const [applicants, setApplicants] = useState({});
|
|
555
|
+
const [activeApplicant, setActiveApplicant] = useState(null);
|
|
556
|
+
const [loading, setLoading] = useState(true);
|
|
557
|
+
const [error, setError] = useState(null);
|
|
558
|
+
const [success, setSuccess] = useState(null);
|
|
559
|
+
const [docIdToS3Url, setDocIdToS3Url] = useState({});
|
|
560
|
+
const s3UrlFetchFlightRequests = useRef(/* @__PURE__ */ new Map());
|
|
561
|
+
const fetchOrder = useCallback(async () => {
|
|
562
|
+
if (!orderId) return;
|
|
563
|
+
try {
|
|
564
|
+
const { data: order2 } = await getOrderByOrderId(orderId);
|
|
565
|
+
setOrder(order2);
|
|
566
|
+
return order2;
|
|
567
|
+
} catch (err) {
|
|
568
|
+
console.error("Failed to fetch order:", err);
|
|
569
|
+
setError("Failed to load order details");
|
|
570
|
+
return null;
|
|
571
|
+
}
|
|
572
|
+
}, [orderId]);
|
|
573
|
+
const fetchQuestionnaire = useCallback(async () => {
|
|
574
|
+
if (!orderId) return null;
|
|
575
|
+
try {
|
|
576
|
+
const { data: questionnaire2 } = await getQuestionnaires(orderId, true);
|
|
577
|
+
setQuestionnaire(questionnaire2);
|
|
578
|
+
if (questionnaire2) {
|
|
579
|
+
const dynamicMap = buildDynamicQuestionMap(questionnaire2);
|
|
580
|
+
setDynamicQuestionMap(dynamicMap);
|
|
581
|
+
}
|
|
582
|
+
return questionnaire2;
|
|
583
|
+
} catch (err) {
|
|
584
|
+
console.error("Failed to fetch questionnaire:", err);
|
|
585
|
+
setError("Failed to load questionnaire");
|
|
586
|
+
return null;
|
|
587
|
+
}
|
|
588
|
+
}, [orderId]);
|
|
589
|
+
const fetchApplicantsForOrder = useCallback(async () => {
|
|
590
|
+
if (!orderId) return null;
|
|
591
|
+
try {
|
|
592
|
+
const { data: applications } = await getApplicantsForOrder(orderId);
|
|
593
|
+
return applications;
|
|
594
|
+
} catch (err) {
|
|
595
|
+
console.error("Failed to fetch applicants:", err);
|
|
596
|
+
setError("Failed to fetch applicants");
|
|
597
|
+
return null;
|
|
598
|
+
}
|
|
599
|
+
}, [orderId]);
|
|
600
|
+
const addApplicant2 = useCallback(
|
|
601
|
+
async (payload) => {
|
|
602
|
+
if (!order || !questionnaire) {
|
|
603
|
+
setError("Order or questionnaire not loaded");
|
|
604
|
+
return null;
|
|
605
|
+
}
|
|
606
|
+
try {
|
|
607
|
+
const { data: newApplicant } = await addApplicant(order._id, payload);
|
|
608
|
+
const applicant = createApplicantData(
|
|
609
|
+
newApplicant.traveller,
|
|
610
|
+
newApplicant.answers,
|
|
611
|
+
questionnaire,
|
|
612
|
+
newApplicant.application,
|
|
613
|
+
order
|
|
614
|
+
);
|
|
615
|
+
if (!applicant) {
|
|
616
|
+
setError("Failed to create applicant data");
|
|
617
|
+
return null;
|
|
618
|
+
}
|
|
619
|
+
setApplicants((prev) => {
|
|
620
|
+
const updatedApplicants = {
|
|
621
|
+
...prev,
|
|
622
|
+
[applicant.application_id]: applicant
|
|
623
|
+
};
|
|
624
|
+
const { updatedQuestionnaire, updatedApplicants: applicantsWithSideEffects } = runApplicantSideEffects(updatedApplicants, questionnaire, dynamicQuestionMap);
|
|
625
|
+
setQuestionnaire(updatedQuestionnaire);
|
|
626
|
+
return applicantsWithSideEffects;
|
|
627
|
+
});
|
|
628
|
+
setActiveApplicant(applicant.application_id);
|
|
629
|
+
setSuccess("Traveller added and Applicant created");
|
|
630
|
+
return applicant;
|
|
631
|
+
} catch (err) {
|
|
632
|
+
setError("Failed to add traveller, Applicant not created");
|
|
633
|
+
return null;
|
|
634
|
+
}
|
|
635
|
+
},
|
|
636
|
+
[questionnaire, order, dynamicQuestionMap]
|
|
637
|
+
);
|
|
638
|
+
const refreshApplicant = useCallback(
|
|
639
|
+
async (application_id) => {
|
|
640
|
+
if (!order || !questionnaire) return;
|
|
641
|
+
try {
|
|
642
|
+
const { data: refreshedApplicantData } = await getApplicant(application_id);
|
|
643
|
+
const applicant = createApplicantData(
|
|
644
|
+
refreshedApplicantData.traveller,
|
|
645
|
+
refreshedApplicantData.answers,
|
|
646
|
+
questionnaire,
|
|
647
|
+
refreshedApplicantData.application,
|
|
648
|
+
order
|
|
649
|
+
);
|
|
650
|
+
if (!applicant) return;
|
|
651
|
+
setApplicants((prev) => {
|
|
652
|
+
const updatedApplicants = {
|
|
653
|
+
...prev,
|
|
654
|
+
[application_id]: applicant
|
|
655
|
+
};
|
|
656
|
+
const { updatedQuestionnaire, updatedApplicants: applicantsWithSideEffects } = runApplicantSideEffects(updatedApplicants, questionnaire, dynamicQuestionMap);
|
|
657
|
+
setQuestionnaire(updatedQuestionnaire);
|
|
658
|
+
return applicantsWithSideEffects;
|
|
659
|
+
});
|
|
660
|
+
} catch (err) {
|
|
661
|
+
console.error(`Failed to refresh applicant ${application_id}:`, err);
|
|
662
|
+
setError("Failed to refresh applicant");
|
|
663
|
+
}
|
|
664
|
+
},
|
|
665
|
+
[questionnaire, order, dynamicQuestionMap]
|
|
666
|
+
);
|
|
667
|
+
const updateAnswer2 = useCallback(
|
|
668
|
+
async (application_id, question_type, question, data, onProgress) => {
|
|
669
|
+
if (!order || !questionnaire) return;
|
|
670
|
+
try {
|
|
671
|
+
const { data: updatedAnswerData } = await updateAnswer(
|
|
672
|
+
application_id,
|
|
673
|
+
data,
|
|
674
|
+
onProgress ? (event) => onProgress({ percent: event.percent ?? 0 }) : void 0
|
|
675
|
+
);
|
|
676
|
+
if (updatedAnswerData.docId && updatedAnswerData.signedUrl) {
|
|
677
|
+
setDocIdToS3Url((prev) => ({
|
|
678
|
+
...prev,
|
|
679
|
+
[updatedAnswerData.docId]: updatedAnswerData.signedUrl
|
|
680
|
+
}));
|
|
681
|
+
}
|
|
682
|
+
if (question_type === "DOCUMENT") {
|
|
683
|
+
await refreshApplicant(application_id);
|
|
684
|
+
} else {
|
|
685
|
+
const shouldRecalculateSideEffects = question.toLowerCase().includes("birth");
|
|
686
|
+
setApplicants((prev) => {
|
|
687
|
+
const currentApplicant = prev[application_id];
|
|
688
|
+
if (!currentApplicant) return prev;
|
|
689
|
+
const applicantWithUpdatedAnswer = updateApplicantWithAnswer(
|
|
690
|
+
currentApplicant,
|
|
691
|
+
updatedAnswerData.answers.visa_questions_id,
|
|
692
|
+
updatedAnswerData.answers,
|
|
693
|
+
questionnaire,
|
|
694
|
+
order
|
|
695
|
+
);
|
|
696
|
+
const updatedApplicants = {
|
|
697
|
+
...prev,
|
|
698
|
+
[application_id]: {
|
|
699
|
+
...applicantWithUpdatedAnswer,
|
|
700
|
+
application: updatedAnswerData.application,
|
|
701
|
+
traveller: updatedAnswerData.traveller
|
|
702
|
+
}
|
|
703
|
+
};
|
|
704
|
+
if (shouldRecalculateSideEffects) {
|
|
705
|
+
const { updatedQuestionnaire, updatedApplicants: applicantsWithSideEffects } = runApplicantSideEffects(updatedApplicants, questionnaire, dynamicQuestionMap);
|
|
706
|
+
setQuestionnaire(updatedQuestionnaire);
|
|
707
|
+
return applicantsWithSideEffects;
|
|
708
|
+
}
|
|
709
|
+
return updatedApplicants;
|
|
710
|
+
});
|
|
711
|
+
}
|
|
712
|
+
} catch (err) {
|
|
713
|
+
console.error("Failed to update answer:", err);
|
|
714
|
+
setError("Failed to update answer");
|
|
715
|
+
}
|
|
716
|
+
},
|
|
717
|
+
[questionnaire, refreshApplicant, order, dynamicQuestionMap]
|
|
718
|
+
);
|
|
719
|
+
const deleteApplicantById = useCallback(async (application_id) => {
|
|
720
|
+
if (!questionnaire || !order) return;
|
|
721
|
+
try {
|
|
722
|
+
await deleteApplicant(application_id);
|
|
723
|
+
setApplicants((prev) => {
|
|
724
|
+
const { [application_id]: _, ...updatedApplicants } = prev;
|
|
725
|
+
const { updatedQuestionnaire, updatedApplicants: applicantsWithSideEffects } = runApplicantSideEffects(updatedApplicants, questionnaire, dynamicQuestionMap);
|
|
726
|
+
setQuestionnaire(updatedQuestionnaire);
|
|
727
|
+
setActiveApplicant((prevActive) => {
|
|
728
|
+
if (prevActive === application_id) {
|
|
729
|
+
const remainingIds = Object.keys(applicantsWithSideEffects);
|
|
730
|
+
return remainingIds.length > 0 ? remainingIds[remainingIds.length - 1] : null;
|
|
731
|
+
}
|
|
732
|
+
return prevActive;
|
|
733
|
+
});
|
|
734
|
+
return applicantsWithSideEffects;
|
|
735
|
+
});
|
|
736
|
+
setSuccess("Applicant deleted successfully");
|
|
737
|
+
} catch (err) {
|
|
738
|
+
console.error("Failed to delete applicant:", err);
|
|
739
|
+
setError("Failed to delete applicant");
|
|
740
|
+
throw err;
|
|
741
|
+
}
|
|
742
|
+
}, [questionnaire, order, dynamicQuestionMap]);
|
|
743
|
+
const refreshOrder = useCallback(async () => {
|
|
744
|
+
await fetchOrder();
|
|
745
|
+
}, [fetchOrder]);
|
|
746
|
+
const getS3UrlForAsset = useCallback(async (doc_id) => {
|
|
747
|
+
if (!doc_id) return null;
|
|
748
|
+
if (docIdToS3Url[doc_id] !== void 0) {
|
|
749
|
+
return docIdToS3Url[doc_id];
|
|
750
|
+
}
|
|
751
|
+
const existingRequest = s3UrlFetchFlightRequests.current.get(doc_id);
|
|
752
|
+
if (existingRequest) {
|
|
753
|
+
return existingRequest;
|
|
754
|
+
}
|
|
755
|
+
const request = (async () => {
|
|
756
|
+
try {
|
|
757
|
+
const s3Url = await getSignedUrlFromAsset(doc_id);
|
|
758
|
+
setDocIdToS3Url((prev) => ({
|
|
759
|
+
...prev,
|
|
760
|
+
[doc_id]: s3Url
|
|
761
|
+
}));
|
|
762
|
+
s3UrlFetchFlightRequests.current.delete(doc_id);
|
|
763
|
+
return s3Url;
|
|
764
|
+
} catch (error2) {
|
|
765
|
+
setDocIdToS3Url((prev) => ({
|
|
766
|
+
...prev,
|
|
767
|
+
[doc_id]: null
|
|
768
|
+
}));
|
|
769
|
+
s3UrlFetchFlightRequests.current.delete(doc_id);
|
|
770
|
+
return null;
|
|
771
|
+
}
|
|
772
|
+
})();
|
|
773
|
+
s3UrlFetchFlightRequests.current.set(doc_id, request);
|
|
774
|
+
return request;
|
|
775
|
+
}, [docIdToS3Url]);
|
|
776
|
+
useEffect(() => {
|
|
777
|
+
if (!orderId) return;
|
|
778
|
+
const initialize = async () => {
|
|
779
|
+
setLoading(true);
|
|
780
|
+
setError(null);
|
|
781
|
+
try {
|
|
782
|
+
const [orderData, questionnaireData, applications] = await Promise.all([
|
|
783
|
+
fetchOrder(),
|
|
784
|
+
fetchQuestionnaire(),
|
|
785
|
+
fetchApplicantsForOrder()
|
|
786
|
+
]);
|
|
787
|
+
if (orderData && questionnaireData && applications) {
|
|
788
|
+
const applicants2 = createApplicantsFromApplications(
|
|
789
|
+
applications,
|
|
790
|
+
questionnaireData,
|
|
791
|
+
orderData
|
|
792
|
+
);
|
|
793
|
+
const dynamicMap = buildDynamicQuestionMap(questionnaireData);
|
|
794
|
+
const { updatedQuestionnaire, updatedApplicants } = runApplicantSideEffects(applicants2, questionnaireData, dynamicMap);
|
|
795
|
+
setQuestionnaire(updatedQuestionnaire);
|
|
796
|
+
setApplicants(updatedApplicants);
|
|
797
|
+
const applicantIds = Object.keys(updatedApplicants);
|
|
798
|
+
if (applicantIds.length > 0) {
|
|
799
|
+
setActiveApplicant(applicantIds[0]);
|
|
800
|
+
}
|
|
801
|
+
}
|
|
802
|
+
} catch (err) {
|
|
803
|
+
console.error("Failed to initialize:", err);
|
|
804
|
+
setError("Failed to load data");
|
|
805
|
+
} finally {
|
|
806
|
+
setLoading(false);
|
|
807
|
+
}
|
|
808
|
+
};
|
|
809
|
+
initialize();
|
|
810
|
+
}, [orderId, fetchOrder, fetchQuestionnaire, fetchApplicantsForOrder]);
|
|
811
|
+
const value = {
|
|
812
|
+
orderId,
|
|
813
|
+
order,
|
|
814
|
+
questionnaire,
|
|
815
|
+
applicants,
|
|
816
|
+
activeApplicant,
|
|
817
|
+
setActiveApplicant,
|
|
818
|
+
loading,
|
|
819
|
+
error,
|
|
820
|
+
addApplicant: addApplicant2,
|
|
821
|
+
updateAnswer: updateAnswer2,
|
|
822
|
+
deleteApplicant: deleteApplicantById,
|
|
823
|
+
refreshOrder,
|
|
824
|
+
refreshApplicant,
|
|
825
|
+
getS3UrlForAsset,
|
|
826
|
+
success
|
|
827
|
+
};
|
|
828
|
+
return /* @__PURE__ */ jsx(EDCFlowContext.Provider, { value, children });
|
|
829
|
+
};
|
|
830
|
+
var useEDCFlow = () => {
|
|
831
|
+
const context = useContext(EDCFlowContext);
|
|
832
|
+
if (!context) {
|
|
833
|
+
throw new Error("useEDCFlow must be used within EDCFlowProvider");
|
|
834
|
+
}
|
|
835
|
+
return context;
|
|
836
|
+
};
|
|
837
|
+
var VisaOrderStatusSchema = z2__default.enum([
|
|
838
|
+
"PENDING",
|
|
839
|
+
"TO_BE_STARTED",
|
|
840
|
+
"PROCESSING",
|
|
841
|
+
"APPROVAL_FOR_SUBMISSION",
|
|
842
|
+
"READY_FOR_SUBMISSION",
|
|
843
|
+
"SUBMITTED",
|
|
844
|
+
"COMPLETED",
|
|
845
|
+
"CANCELLED"
|
|
846
|
+
]);
|
|
847
|
+
var PurposeOfVisitSchema = z2__default.enum([
|
|
848
|
+
"BUSINESS",
|
|
849
|
+
"VACATION",
|
|
850
|
+
"TOURISM",
|
|
851
|
+
"VISIT_FRIENDS_&_FAMILY",
|
|
852
|
+
"HONEYMOON",
|
|
853
|
+
"TRAVEL"
|
|
854
|
+
]);
|
|
855
|
+
var CouponSchema = z2__default.object({
|
|
856
|
+
_id: z2__default.string(),
|
|
857
|
+
visa_order_id: z2__default.string(),
|
|
858
|
+
org_id: z2__default.string(),
|
|
859
|
+
name: z2__default.string(),
|
|
860
|
+
description: z2__default.string(),
|
|
861
|
+
value: z2__default.number(),
|
|
862
|
+
status: z2__default.string(),
|
|
863
|
+
created_at: z2__default.coerce.date(),
|
|
864
|
+
updated_at: z2__default.coerce.date(),
|
|
865
|
+
__v: z2__default.number()
|
|
866
|
+
});
|
|
867
|
+
var INTERNAL_ORDER_TAGS = /* @__PURE__ */ ((INTERNAL_ORDER_TAGS2) => {
|
|
868
|
+
INTERNAL_ORDER_TAGS2["DOCUMENTS_PENDING"] = "DOCUMENTS_PENDING";
|
|
869
|
+
INTERNAL_ORDER_TAGS2["TA_QC_ORDER"] = "TA_QC_ORDER";
|
|
870
|
+
return INTERNAL_ORDER_TAGS2;
|
|
871
|
+
})(INTERNAL_ORDER_TAGS || {});
|
|
872
|
+
var PROCESSING_BLOCKED_ON_PAYMENT_STATUS = /* @__PURE__ */ ((PROCESSING_BLOCKED_ON_PAYMENT_STATUS2) => {
|
|
873
|
+
PROCESSING_BLOCKED_ON_PAYMENT_STATUS2["BLOCKED"] = "BLOCKED";
|
|
874
|
+
PROCESSING_BLOCKED_ON_PAYMENT_STATUS2["UNBLOCKED"] = "UNBLOCKED";
|
|
875
|
+
PROCESSING_BLOCKED_ON_PAYMENT_STATUS2["FAILED"] = "FAILED";
|
|
876
|
+
return PROCESSING_BLOCKED_ON_PAYMENT_STATUS2;
|
|
877
|
+
})(PROCESSING_BLOCKED_ON_PAYMENT_STATUS || {});
|
|
878
|
+
var TIMELINE_STEP = /* @__PURE__ */ ((TIMELINE_STEP2) => {
|
|
879
|
+
TIMELINE_STEP2["ORDER_CREATION"] = "ORDER_CREATION";
|
|
880
|
+
TIMELINE_STEP2["DOCUMENT_SUBMITTED"] = "DOCUMENT_SUBMITTED";
|
|
881
|
+
TIMELINE_STEP2["VISA_FORM_SUBMITTED"] = "VISA_FORM_SUBMITTED";
|
|
882
|
+
TIMELINE_STEP2["SEND_PHYSICAL_DOCUMENTS"] = "SEND_PHYSICAL_DOCUMENTS";
|
|
883
|
+
TIMELINE_STEP2["VERIFICATION_IN_PROCESS"] = "VERIFICATION_IN_PROCESS";
|
|
884
|
+
TIMELINE_STEP2["PHYSICAL_DOCUMENT_VERIFICATION"] = "PHYSICAL_DOCUMENT_VERIFICATION";
|
|
885
|
+
TIMELINE_STEP2["VERIFICATION"] = "VERIFICATION";
|
|
886
|
+
TIMELINE_STEP2["APPOINTMENT"] = "APPOINTMENT";
|
|
887
|
+
TIMELINE_STEP2["PAYMENT"] = "PAYMENT";
|
|
888
|
+
TIMELINE_STEP2["SUBMISSION_TO_EMBASSY"] = "SUBMISSION_TO_EMBASSY";
|
|
889
|
+
TIMELINE_STEP2["VISA_APPLICATIONS_VERDICT"] = "VISA_APPLICATIONS_VERDICT";
|
|
890
|
+
return TIMELINE_STEP2;
|
|
891
|
+
})(TIMELINE_STEP || {});
|
|
892
|
+
var VisaOrderTimelineStepSchema = z2__default.enum([
|
|
893
|
+
"ORDER_CREATION" /* ORDER_CREATION */,
|
|
894
|
+
"DOCUMENT_SUBMITTED" /* DOCUMENT_SUBMITTED */,
|
|
895
|
+
"VISA_FORM_SUBMITTED" /* VISA_FORM_SUBMITTED */,
|
|
896
|
+
"VERIFICATION_IN_PROCESS" /* VERIFICATION_IN_PROCESS */,
|
|
897
|
+
"PHYSICAL_DOCUMENT_VERIFICATION" /* PHYSICAL_DOCUMENT_VERIFICATION */,
|
|
898
|
+
"PAYMENT" /* PAYMENT */,
|
|
899
|
+
"SUBMISSION_TO_EMBASSY" /* SUBMISSION_TO_EMBASSY */,
|
|
900
|
+
"VISA_APPLICATIONS_VERDICT" /* VISA_APPLICATIONS_VERDICT */,
|
|
901
|
+
"VERIFICATION" /* VERIFICATION */,
|
|
902
|
+
"SEND_PHYSICAL_DOCUMENTS" /* SEND_PHYSICAL_DOCUMENTS */,
|
|
903
|
+
"APPOINTMENT" /* APPOINTMENT */
|
|
904
|
+
]);
|
|
905
|
+
var VisaOrderTimelineMetadataSchema = z2__default.object({
|
|
906
|
+
created_at: z2__default.date(),
|
|
907
|
+
applications: z2__default.object({
|
|
908
|
+
submitted: z2__default.number(),
|
|
909
|
+
pending: z2__default.number()
|
|
910
|
+
}),
|
|
911
|
+
cycle: z2__default.number(),
|
|
912
|
+
waiting_time: z2__default.string(),
|
|
913
|
+
errors: z2__default.object({
|
|
914
|
+
documents: z2__default.number(),
|
|
915
|
+
questions: z2__default.number()
|
|
916
|
+
}),
|
|
917
|
+
invoice_no: z2__default.string(),
|
|
918
|
+
amount: z2__default.object({
|
|
919
|
+
total: z2__default.number(),
|
|
920
|
+
received: z2__default.number(),
|
|
921
|
+
cashback_utilised: z2__default.number()
|
|
922
|
+
}),
|
|
923
|
+
expected_date: z2__default.union([z2__default.date(), z2__default.null()]),
|
|
924
|
+
visa: z2__default.object({
|
|
925
|
+
approved: z2__default.number(),
|
|
926
|
+
rejected: z2__default.number(),
|
|
927
|
+
awaited: z2__default.number(),
|
|
928
|
+
unstarted: z2__default.number(),
|
|
929
|
+
qualityCheckPending: z2__default.number()
|
|
930
|
+
}),
|
|
931
|
+
contact_at: z2__default.string(),
|
|
932
|
+
downloadableVerdicts: z2__default.number(),
|
|
933
|
+
kam: z2__default.object({
|
|
934
|
+
first_name: z2__default.string(),
|
|
935
|
+
last_name: z2__default.string(),
|
|
936
|
+
email: z2__default.string(),
|
|
937
|
+
phone: z2__default.string()
|
|
938
|
+
})
|
|
939
|
+
});
|
|
940
|
+
var VisaOrderTimelineOrderCreationSchema = z2__default.object({
|
|
941
|
+
completed_at: z2__default.union([z2__default.date(), z2__default.null()]),
|
|
942
|
+
skip: z2__default.boolean(),
|
|
943
|
+
step_no: z2__default.number(),
|
|
944
|
+
name: z2__default.string().optional().nullable(),
|
|
945
|
+
status: z2__default.enum(["COMPLETED"]),
|
|
946
|
+
metadata: VisaOrderTimelineMetadataSchema.optional().nullable()
|
|
947
|
+
});
|
|
948
|
+
var VisaOrderTimelineDocumentSubmittedSchema = z2__default.object({
|
|
949
|
+
completed_at: z2__default.union([z2__default.date(), z2__default.null()]),
|
|
950
|
+
skip: z2__default.boolean(),
|
|
951
|
+
step_no: z2__default.number(),
|
|
952
|
+
name: z2__default.string().optional().nullable(),
|
|
953
|
+
status: z2__default.enum(["UNSTARTED", "CLASSIFYING", "COMPLETED"]),
|
|
954
|
+
metadata: VisaOrderTimelineMetadataSchema.optional().nullable()
|
|
955
|
+
});
|
|
956
|
+
var VisaOrderTimelineVisaFormSubmittedSchema = z2__default.object({
|
|
957
|
+
completed_at: z2__default.union([z2__default.date(), z2__default.null()]),
|
|
958
|
+
skip: z2__default.boolean(),
|
|
959
|
+
step_no: z2__default.number(),
|
|
960
|
+
name: z2__default.string().optional().nullable(),
|
|
961
|
+
status: z2__default.enum(["UNSTARTED", "COMPLETED", "IN_PROGRESS"]),
|
|
962
|
+
metadata: VisaOrderTimelineMetadataSchema.optional().nullable()
|
|
963
|
+
});
|
|
964
|
+
var VisaOrderTimelineVerificationInProgressSchema = z2__default.object({
|
|
965
|
+
completed_at: z2__default.union([z2__default.date(), z2__default.null()]),
|
|
966
|
+
skip: z2__default.boolean(),
|
|
967
|
+
step_no: z2__default.number(),
|
|
968
|
+
name: z2__default.string().optional().nullable(),
|
|
969
|
+
status: z2__default.enum(["UNSTARTED", "COMPLETED", "VE_PENDING", "TA_PENDING"]),
|
|
970
|
+
metadata: VisaOrderTimelineMetadataSchema.optional().nullable()
|
|
971
|
+
});
|
|
972
|
+
var VisaOrderTimelinePhysicalDocumentVerificationSchema = z2__default.object({
|
|
973
|
+
completed_at: z2__default.union([z2__default.date(), z2__default.null()]),
|
|
974
|
+
skip: z2__default.boolean(),
|
|
975
|
+
step_no: z2__default.number(),
|
|
976
|
+
name: z2__default.string().optional().nullable(),
|
|
977
|
+
status: z2__default.enum(["UNSTARTED", "COMPLETED", "IN_PROGRESS", "TA_PENDING"]),
|
|
978
|
+
metadata: z2__default.object({
|
|
979
|
+
documents: z2__default.object({
|
|
980
|
+
received: z2__default.number(),
|
|
981
|
+
not_received: z2__default.number(),
|
|
982
|
+
not_applicable: z2__default.number(),
|
|
983
|
+
unstarted: z2__default.number(),
|
|
984
|
+
rejected: z2__default.number()
|
|
985
|
+
}),
|
|
986
|
+
kam: z2__default.object({
|
|
987
|
+
first_name: z2__default.string(),
|
|
988
|
+
last_name: z2__default.string(),
|
|
989
|
+
email: z2__default.string(),
|
|
990
|
+
phone: z2__default.string(),
|
|
991
|
+
middle_name: z2__default.string()
|
|
992
|
+
})
|
|
993
|
+
})
|
|
994
|
+
});
|
|
995
|
+
var DocumentsStatusSchema = z2__default.object({
|
|
996
|
+
completed: z2__default.number(),
|
|
997
|
+
rejected: z2__default.number(),
|
|
998
|
+
in_progress: z2__default.number()
|
|
999
|
+
});
|
|
1000
|
+
var AdditionalDocumentsStatusSchema = z2__default.object({
|
|
1001
|
+
completed: z2__default.number(),
|
|
1002
|
+
rejected: z2__default.number(),
|
|
1003
|
+
answered: z2__default.number(),
|
|
1004
|
+
requested: z2__default.number()
|
|
1005
|
+
});
|
|
1006
|
+
var KamSchema = z2__default.object({
|
|
1007
|
+
first_name: z2__default.string(),
|
|
1008
|
+
last_name: z2__default.string(),
|
|
1009
|
+
email: z2__default.string(),
|
|
1010
|
+
phone: z2__default.string(),
|
|
1011
|
+
middle_name: z2__default.string()
|
|
1012
|
+
});
|
|
1013
|
+
var VisaOrderTimelineVerificationSchema = z2__default.object({
|
|
1014
|
+
name: z2__default.string(),
|
|
1015
|
+
status: z2__default.enum(["UNSTARTED", "COMPLETED", "VE_PENDING", "TA_PENDING"]),
|
|
1016
|
+
metadata: z2__default.object({
|
|
1017
|
+
cycle: z2__default.number(),
|
|
1018
|
+
waiting_time: z2__default.string(),
|
|
1019
|
+
visa_form: DocumentsStatusSchema,
|
|
1020
|
+
online_documents: DocumentsStatusSchema,
|
|
1021
|
+
offline_documents: DocumentsStatusSchema,
|
|
1022
|
+
additional_online_documents: AdditionalDocumentsStatusSchema,
|
|
1023
|
+
additional_offline_documents: AdditionalDocumentsStatusSchema,
|
|
1024
|
+
kam: KamSchema
|
|
1025
|
+
}),
|
|
1026
|
+
completed_at: z2__default.union([z2__default.date(), z2__default.null()]),
|
|
1027
|
+
skip: z2__default.boolean(),
|
|
1028
|
+
step_no: z2__default.number()
|
|
1029
|
+
});
|
|
1030
|
+
var VisaOrderTimelineSendPhysicalDocumentsSchema = z2__default.object({
|
|
1031
|
+
name: z2__default.string(),
|
|
1032
|
+
metadata: z2__default.object({
|
|
1033
|
+
kam: KamSchema,
|
|
1034
|
+
address: z2__default.string()
|
|
1035
|
+
}),
|
|
1036
|
+
status: z2__default.enum(["UNSTARTED", "COMPLETED", "VE_PENDING", "TA_PENDING"]),
|
|
1037
|
+
completed_at: z2__default.union([z2__default.date(), z2__default.null()]),
|
|
1038
|
+
skip: z2__default.boolean(),
|
|
1039
|
+
step_no: z2__default.number()
|
|
1040
|
+
});
|
|
1041
|
+
var TimelinePaymentStatus = /* @__PURE__ */ ((TimelinePaymentStatus2) => {
|
|
1042
|
+
TimelinePaymentStatus2["UNSTARTED"] = "UNSTARTED";
|
|
1043
|
+
TimelinePaymentStatus2["INVOICE_PENDING"] = "INVOICE_PENDING";
|
|
1044
|
+
TimelinePaymentStatus2["INVOICE_GENERATED"] = "INVOICE_GENERATED";
|
|
1045
|
+
TimelinePaymentStatus2["PAYMENT_FROM_WALLET_INITIATED"] = "PAYMENT_FROM_WALLET_INITIATED";
|
|
1046
|
+
TimelinePaymentStatus2["PARTIAL_PAYMENT"] = "PARTIAL_PAYMENT";
|
|
1047
|
+
TimelinePaymentStatus2["COMPLETE_PAYMENT"] = "COMPLETE_PAYMENT";
|
|
1048
|
+
TimelinePaymentStatus2["ESTIMATE_CONVERTED_TO_INVOICE"] = "ESTIMATE_CONVERTED_TO_INVOICE";
|
|
1049
|
+
TimelinePaymentStatus2["ORDER_TO_BE_BLOCKED_FOR_PROCESSING"] = "ORDER_TO_BE_BLOCKED_FOR_PROCESSING";
|
|
1050
|
+
return TimelinePaymentStatus2;
|
|
1051
|
+
})(TimelinePaymentStatus || {});
|
|
1052
|
+
var VisaOrderTimelinePaymentSchema = z2__default.object({
|
|
1053
|
+
completed_at: z2__default.union([z2__default.date(), z2__default.null()]),
|
|
1054
|
+
skip: z2__default.boolean(),
|
|
1055
|
+
step_no: z2__default.number(),
|
|
1056
|
+
name: z2__default.string().optional().nullable(),
|
|
1057
|
+
status: z2__default.nativeEnum(TimelinePaymentStatus),
|
|
1058
|
+
metadata: VisaOrderTimelineMetadataSchema.optional().nullable()
|
|
1059
|
+
});
|
|
1060
|
+
var VisaOrderTimelineSubmissionToEmbassySchema = z2__default.object({
|
|
1061
|
+
completed_at: z2__default.union([z2__default.date(), z2__default.null()]),
|
|
1062
|
+
skip: z2__default.boolean(),
|
|
1063
|
+
step_no: z2__default.number(),
|
|
1064
|
+
name: z2__default.string().optional().nullable(),
|
|
1065
|
+
status: z2__default.enum(["UNSTARTED", "COMPLETED", "IN_PROGRESS"]),
|
|
1066
|
+
metadata: VisaOrderTimelineMetadataSchema.optional().nullable()
|
|
1067
|
+
});
|
|
1068
|
+
var VisaOrderTimelineApplicationsVerdictSchema = z2__default.object({
|
|
1069
|
+
completed_at: z2__default.union([z2__default.date(), z2__default.null()]),
|
|
1070
|
+
skip: z2__default.boolean(),
|
|
1071
|
+
step_no: z2__default.number(),
|
|
1072
|
+
name: z2__default.string().optional().nullable(),
|
|
1073
|
+
status: z2__default.enum(["UNSTARTED", "COMPLETED", "IN_PROGRESS"]),
|
|
1074
|
+
metadata: VisaOrderTimelineMetadataSchema.optional().nullable()
|
|
1075
|
+
});
|
|
1076
|
+
var VisaOrderTimelineAppointmentSchema = z2__default.object({
|
|
1077
|
+
completed_at: z2__default.union([z2__default.date(), z2__default.null()]),
|
|
1078
|
+
skip: z2__default.boolean(),
|
|
1079
|
+
step_no: z2__default.number(),
|
|
1080
|
+
name: z2__default.string().optional().nullable(),
|
|
1081
|
+
status: z2__default.enum(["UNSTARTED", "COMPLETED", "IN_PROGRESS"]),
|
|
1082
|
+
metadata: z2__default.object({
|
|
1083
|
+
appointments: z2__default.object({
|
|
1084
|
+
booked: z2__default.number(),
|
|
1085
|
+
pending: z2__default.number()
|
|
1086
|
+
})
|
|
1087
|
+
})
|
|
1088
|
+
});
|
|
1089
|
+
var VisaOrderTimelineSchema = z2__default.object({
|
|
1090
|
+
["ORDER_CREATION" /* ORDER_CREATION */]: VisaOrderTimelineOrderCreationSchema,
|
|
1091
|
+
["DOCUMENT_SUBMITTED" /* DOCUMENT_SUBMITTED */]: VisaOrderTimelineDocumentSubmittedSchema,
|
|
1092
|
+
["VISA_FORM_SUBMITTED" /* VISA_FORM_SUBMITTED */]: VisaOrderTimelineVisaFormSubmittedSchema,
|
|
1093
|
+
["PHYSICAL_DOCUMENT_VERIFICATION" /* PHYSICAL_DOCUMENT_VERIFICATION */]: VisaOrderTimelinePhysicalDocumentVerificationSchema,
|
|
1094
|
+
["VERIFICATION" /* VERIFICATION */]: VisaOrderTimelineVerificationSchema,
|
|
1095
|
+
["SEND_PHYSICAL_DOCUMENTS" /* SEND_PHYSICAL_DOCUMENTS */]: VisaOrderTimelineSendPhysicalDocumentsSchema,
|
|
1096
|
+
["VERIFICATION_IN_PROCESS" /* VERIFICATION_IN_PROCESS */]: VisaOrderTimelineVerificationInProgressSchema,
|
|
1097
|
+
["PAYMENT" /* PAYMENT */]: VisaOrderTimelinePaymentSchema,
|
|
1098
|
+
["SUBMISSION_TO_EMBASSY" /* SUBMISSION_TO_EMBASSY */]: VisaOrderTimelineSubmissionToEmbassySchema,
|
|
1099
|
+
["VISA_APPLICATIONS_VERDICT" /* VISA_APPLICATIONS_VERDICT */]: VisaOrderTimelineApplicationsVerdictSchema,
|
|
1100
|
+
["APPOINTMENT" /* APPOINTMENT */]: VisaOrderTimelineAppointmentSchema
|
|
1101
|
+
});
|
|
1102
|
+
var CreatedBySchema = z2__default.object({
|
|
1103
|
+
_id: z2__default.string(),
|
|
1104
|
+
organisation_id: z2__default.string(),
|
|
1105
|
+
phone: z2__default.string(),
|
|
1106
|
+
first_name: z2__default.string(),
|
|
1107
|
+
last_name: z2__default.string(),
|
|
1108
|
+
roles: z2__default.array(z2__default.string()),
|
|
1109
|
+
type: z2__default.string(),
|
|
1110
|
+
is_email_verified: z2__default.boolean(),
|
|
1111
|
+
is_active: z2__default.boolean(),
|
|
1112
|
+
is_deleted: z2__default.boolean(),
|
|
1113
|
+
is_smv_user: z2__default.boolean(),
|
|
1114
|
+
created_at: z2__default.coerce.date(),
|
|
1115
|
+
updated_at: z2__default.coerce.date()
|
|
1116
|
+
});
|
|
1117
|
+
var MetadataSchema = z2__default.object({
|
|
1118
|
+
note_for_visa_expert: z2__default.union([z2__default.null(), z2__default.string()]).optional(),
|
|
1119
|
+
visa_details_sheet: z2__default.union([z2__default.null(), z2__default.string()]).optional(),
|
|
1120
|
+
external_ref_id: z2__default.union([z2__default.null(), z2__default.string()]).optional()
|
|
1121
|
+
});
|
|
1122
|
+
var EstimateAddonSchema = z2__default.object({
|
|
1123
|
+
name: z2__default.string(),
|
|
1124
|
+
add_on_id: z2__default.string(),
|
|
1125
|
+
quantity: z2__default.number(),
|
|
1126
|
+
price: z2__default.number(),
|
|
1127
|
+
comment: z2__default.string(),
|
|
1128
|
+
discount: z2__default.number()
|
|
1129
|
+
});
|
|
1130
|
+
var BillingInfoMetadataSchema = z2__default.object({
|
|
1131
|
+
addons_updated: z2__default.boolean(),
|
|
1132
|
+
addons_updated_at: z2__default.coerce.date(),
|
|
1133
|
+
addons_updated_by: z2__default.string()
|
|
1134
|
+
}).optional();
|
|
1135
|
+
var BillingInfoSchema = z2__default.object({
|
|
1136
|
+
invoice: z2__default.union([z2__default.null(), z2__default.string()]).optional(),
|
|
1137
|
+
order_addons: z2__default.array(EstimateAddonSchema),
|
|
1138
|
+
metadata: BillingInfoMetadataSchema
|
|
1139
|
+
});
|
|
1140
|
+
var CountrySchema = z2__default.object({
|
|
1141
|
+
_id: z2__default.string(),
|
|
1142
|
+
name: z2__default.string(),
|
|
1143
|
+
symbol: z2__default.string(),
|
|
1144
|
+
flag_symbol: z2__default.string(),
|
|
1145
|
+
currency: z2__default.string(),
|
|
1146
|
+
currency_symbol: z2__default.string(),
|
|
1147
|
+
processing_time: z2__default.number(),
|
|
1148
|
+
visa_info_available: z2__default.boolean(),
|
|
1149
|
+
visa_automation_enabled: z2__default.boolean(),
|
|
1150
|
+
search_metadata: z2__default.string(),
|
|
1151
|
+
is_deleted: z2__default.boolean(),
|
|
1152
|
+
is_supported: z2__default.boolean(),
|
|
1153
|
+
is_doorstep: z2__default.boolean(),
|
|
1154
|
+
is_evisa: z2__default.boolean(),
|
|
1155
|
+
is_schengen: z2__default.boolean()
|
|
1156
|
+
});
|
|
1157
|
+
var FeesSchema = z2__default.object({
|
|
1158
|
+
amount: z2__default.union([z2__default.number(), z2__default.null()]).optional(),
|
|
1159
|
+
currency: z2__default.union([z2__default.null(), z2__default.string()]).optional()
|
|
1160
|
+
});
|
|
1161
|
+
var ServiceFeesSchema = z2__default.object({
|
|
1162
|
+
currency: z2__default.string(),
|
|
1163
|
+
amount_b2b: z2__default.number()
|
|
1164
|
+
});
|
|
1165
|
+
var VISA_TYPE_INTERNAL_TAGS = /* @__PURE__ */ ((VISA_TYPE_INTERNAL_TAGS2) => {
|
|
1166
|
+
VISA_TYPE_INTERNAL_TAGS2["SMV_QC"] = "SMV_QC";
|
|
1167
|
+
VISA_TYPE_INTERNAL_TAGS2["TA_QC"] = "TA_QC";
|
|
1168
|
+
VISA_TYPE_INTERNAL_TAGS2["VRI_ORDER"] = "VRI_ORDER";
|
|
1169
|
+
return VISA_TYPE_INTERNAL_TAGS2;
|
|
1170
|
+
})(VISA_TYPE_INTERNAL_TAGS || {});
|
|
1171
|
+
var VisaTypeSchema = z2__default.object({
|
|
1172
|
+
_id: z2__default.string(),
|
|
1173
|
+
purpose: z2__default.array(z2__default.string()),
|
|
1174
|
+
country_symbol: z2__default.string(),
|
|
1175
|
+
flag_symbol: z2__default.string(),
|
|
1176
|
+
visa_type: z2__default.string(),
|
|
1177
|
+
visa_fees: FeesSchema,
|
|
1178
|
+
service_fees: ServiceFeesSchema,
|
|
1179
|
+
vfs_fees: FeesSchema,
|
|
1180
|
+
child_visa_fees: FeesSchema,
|
|
1181
|
+
documents_list: z2__default.string(),
|
|
1182
|
+
apply_before: z2__default.number(),
|
|
1183
|
+
duration_permitted: z2__default.number(),
|
|
1184
|
+
entries_permitted: z2__default.number(),
|
|
1185
|
+
validity_period: z2__default.number(),
|
|
1186
|
+
processing_time: z2__default.number(),
|
|
1187
|
+
visa_type_internal_tags: z2__default.enum(["SMV_QC" /* SMV_QC */, "TA_QC" /* TA_QC */]),
|
|
1188
|
+
created_at: z2__default.string(),
|
|
1189
|
+
updated_at: z2__default.string(),
|
|
1190
|
+
is_deleted: z2__default.boolean()
|
|
1191
|
+
});
|
|
1192
|
+
var TravelAgentSchema = z2__default.object({
|
|
1193
|
+
_id: z2__default.string(),
|
|
1194
|
+
organisation_id: z2__default.string(),
|
|
1195
|
+
phone: z2__default.string(),
|
|
1196
|
+
first_name: z2__default.string(),
|
|
1197
|
+
last_name: z2__default.string()
|
|
1198
|
+
});
|
|
1199
|
+
var PointOfContactSchema = z2__default.object({
|
|
1200
|
+
name: z2__default.string(),
|
|
1201
|
+
email: z2__default.string(),
|
|
1202
|
+
mobile_number: z2__default.string()
|
|
1203
|
+
});
|
|
1204
|
+
var DocumentProofSchema = z2__default.object({
|
|
1205
|
+
type: z2__default.string(),
|
|
1206
|
+
s3_path: z2__default.string()
|
|
1207
|
+
});
|
|
1208
|
+
var OrganisationSchema = z2__default.object({
|
|
1209
|
+
_id: z2__default.string(),
|
|
1210
|
+
name: z2__default.string(),
|
|
1211
|
+
point_of_contact: PointOfContactSchema,
|
|
1212
|
+
document_proof: DocumentProofSchema,
|
|
1213
|
+
state: z2__default.string(),
|
|
1214
|
+
type: z2__default.string(),
|
|
1215
|
+
status: z2__default.string(),
|
|
1216
|
+
agency_logo: z2__default.string()
|
|
1217
|
+
});
|
|
1218
|
+
var PaymentAmountSchema = z2__default.object({
|
|
1219
|
+
total: z2__default.number(),
|
|
1220
|
+
tax_total: z2__default.number(),
|
|
1221
|
+
sub_total: z2__default.number(),
|
|
1222
|
+
balance: z2__default.number()
|
|
1223
|
+
}).partial().optional().nullable();
|
|
1224
|
+
var OrderNotesForVisaExpert = z2__default.array(
|
|
1225
|
+
z2__default.object({
|
|
1226
|
+
note: z2__default.string(),
|
|
1227
|
+
created_at: z2__default.string(),
|
|
1228
|
+
created_by: z2__default.string(),
|
|
1229
|
+
_id: z2__default.string()
|
|
1230
|
+
})
|
|
1231
|
+
);
|
|
1232
|
+
var CfbrOrderMetadataSchema = z2__default.object({
|
|
1233
|
+
visa_rejection_insurance_opted: z2__default.boolean(),
|
|
1234
|
+
symbo_policy_id: z2__default.string(),
|
|
1235
|
+
comm_mails: z2__default.array(z2__default.string()),
|
|
1236
|
+
branch_id: z2__default.string(),
|
|
1237
|
+
miles_credit: z2__default.number(),
|
|
1238
|
+
line_item_id: z2__default.string(),
|
|
1239
|
+
account_id: z2__default.string(),
|
|
1240
|
+
gst_rate: z2__default.number()
|
|
1241
|
+
});
|
|
1242
|
+
z2__default.object({
|
|
1243
|
+
_id: z2__default.string(),
|
|
1244
|
+
application_ids: z2__default.array(z2__default.string()),
|
|
1245
|
+
status: VisaOrderStatusSchema,
|
|
1246
|
+
order_id: z2__default.string(),
|
|
1247
|
+
purpose_of_visit: PurposeOfVisitSchema,
|
|
1248
|
+
coupon: CouponSchema.nullable(),
|
|
1249
|
+
travel_start_date: z2__default.string(),
|
|
1250
|
+
travel_end_date: z2__default.string(),
|
|
1251
|
+
no_of_travelers: z2__default.number(),
|
|
1252
|
+
travellers_for_vri: z2__default.number(),
|
|
1253
|
+
travelers_count: z2__default.object({
|
|
1254
|
+
adults: z2__default.number().min(-1),
|
|
1255
|
+
child: z2__default.number().min(-1)
|
|
1256
|
+
}),
|
|
1257
|
+
qc_terms_and_conditions: z2__default.string().nullable().optional(),
|
|
1258
|
+
internal_tags: z2__default.nativeEnum(INTERNAL_ORDER_TAGS),
|
|
1259
|
+
is_processing_blocked_on_payment: z2__default.nativeEnum(PROCESSING_BLOCKED_ON_PAYMENT_STATUS),
|
|
1260
|
+
timeline_status: VisaOrderTimelineStepSchema,
|
|
1261
|
+
timeline: VisaOrderTimelineSchema,
|
|
1262
|
+
created_by: z2__default.union([CreatedBySchema, z2__default.string()]),
|
|
1263
|
+
metadata: z2__default.union([MetadataSchema, z2__default.null()]).optional(),
|
|
1264
|
+
billing_info: BillingInfoSchema,
|
|
1265
|
+
expected_delivery_date: z2__default.string(),
|
|
1266
|
+
created_at: z2__default.string(),
|
|
1267
|
+
updated_at: z2__default.string(),
|
|
1268
|
+
is_demo_order: z2__default.boolean(),
|
|
1269
|
+
visa_rejection_added: z2__default.boolean(),
|
|
1270
|
+
visa_experts: z2__default.array(z2__default.string()),
|
|
1271
|
+
country: CountrySchema,
|
|
1272
|
+
visa_type: VisaTypeSchema,
|
|
1273
|
+
travel_agent: TravelAgentSchema,
|
|
1274
|
+
organisation: OrganisationSchema,
|
|
1275
|
+
doorstep_pickup: z2__default.boolean(),
|
|
1276
|
+
kam: z2__default.object({
|
|
1277
|
+
first_name: z2__default.string(),
|
|
1278
|
+
last_name: z2__default.string(),
|
|
1279
|
+
email: z2__default.string(),
|
|
1280
|
+
phone: z2__default.string(),
|
|
1281
|
+
middle_name: z2__default.string(),
|
|
1282
|
+
_id: z2__default.string()
|
|
1283
|
+
}).nullable(),
|
|
1284
|
+
invoice_amount: PaymentAmountSchema,
|
|
1285
|
+
invoice_details: z2__default.object({
|
|
1286
|
+
invoice_id: z2__default.string().optional(),
|
|
1287
|
+
invoice_number: z2__default.string().optional(),
|
|
1288
|
+
date: z2__default.string().optional(),
|
|
1289
|
+
due_date: z2__default.string().optional(),
|
|
1290
|
+
status: z2__default.string().optional(),
|
|
1291
|
+
invoice_url: z2__default.string().optional(),
|
|
1292
|
+
last_modified_time: z2__default.string().optional(),
|
|
1293
|
+
invoice_source: z2__default.string().optional()
|
|
1294
|
+
}).optional(),
|
|
1295
|
+
estimate_details: z2__default.object({
|
|
1296
|
+
estimate_id: z2__default.string().optional(),
|
|
1297
|
+
estimate_number: z2__default.string().optional(),
|
|
1298
|
+
estimate_url: z2__default.string().optional(),
|
|
1299
|
+
estimate_status: z2__default.string().optional()
|
|
1300
|
+
}).nullable().optional(),
|
|
1301
|
+
estimate_amount: PaymentAmountSchema,
|
|
1302
|
+
notes_from_ta: OrderNotesForVisaExpert,
|
|
1303
|
+
miles_config: z2__default.object({
|
|
1304
|
+
max_deductible_amount: z2__default.number(),
|
|
1305
|
+
only_for_service_fee: z2__default.boolean(),
|
|
1306
|
+
service_fee_percentage: z2__default.number()
|
|
1307
|
+
}),
|
|
1308
|
+
cfbr_metadata: CfbrOrderMetadataSchema.optional()
|
|
1309
|
+
});
|
|
1310
|
+
|
|
1311
|
+
// src/index.ts
|
|
1312
|
+
var initializeEDCFlow = (config) => {
|
|
1313
|
+
initializeApiClient(config);
|
|
1314
|
+
};
|
|
1315
|
+
var EDCFlow = {
|
|
1316
|
+
initialize: initializeEDCFlow,
|
|
1317
|
+
Provider: EDCFlowProvider,
|
|
1318
|
+
useEDCFlow
|
|
1319
|
+
};
|
|
1320
|
+
var index_default = EDCFlow;
|
|
1321
|
+
|
|
1322
|
+
export { APPLICATION_STATUS, APPLICATION_TAGS, AnswerSchema, ApplicationSchema, EDCFlowProvider, INTERNAL_ORDER_TAGS, PROCESSING_BLOCKED_ON_PAYMENT_STATUS, QuestionnaireSchema, TA_QC_EXTRACTION_STATUS, TIMELINE_STEP, TimelinePaymentStatus, TravellerSchema, VISA_TYPE_INTERNAL_TAGS, createAllQuestionsWithAnswers, createApplicantData, index_default as default, filterConditionalQuestions, formatAnswerFromResponse, formatTravellerFromResponse, getSignedUrlFromAsset, getVisibleQuestions, initializeEDCFlow, updateApplicantWithAnswer, useEDCFlow };
|