tango-app-api-trax 3.7.54 → 3.7.55
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/package.json +1 -1
- package/src/controllers/mobileTrax.controller.js +37 -8
- package/src/hbs/flag.hbs +249 -0
package/package.json
CHANGED
|
@@ -1089,7 +1089,7 @@ export async function sopMobilechecklistMultiSectionFormatterv1( req, res, next
|
|
|
1089
1089
|
|
|
1090
1090
|
if ( requestData.submittype == 'submit' ) {
|
|
1091
1091
|
reqAnswers.forEach( ( reqA ) => {
|
|
1092
|
-
if ( ![ 'multiplechoicemultiple', 'multipleImage' ].includes( reqA?.answerType ) && ( reqA.answerType == 'dropDown' && !reqA.allowMultiple ) ) {
|
|
1092
|
+
if ( ![ 'multiplechoicemultiple', 'multipleImage', 'image/video' ].includes( reqA?.answerType ) && ( reqA.answerType == 'dropDown' && !reqA.allowMultiple ) ) {
|
|
1093
1093
|
if ( ( !reqA.linkType && ( reqA.answer == null || reqA.answer == '' ) ) || ( reqA.linkType && reqA.linkquestionenabled && ( reqA.answer == null || reqA.answer == '' ) ) ) {
|
|
1094
1094
|
return res.sendError( 'Please Fill All Fields', 400 );
|
|
1095
1095
|
}
|
|
@@ -1343,7 +1343,7 @@ export async function sopMobilechecklistMultiSectionFormatterv1( req, res, next
|
|
|
1343
1343
|
structure.redoComment = qaAnswers[j]?.redoComment;
|
|
1344
1344
|
};
|
|
1345
1345
|
newArray.push( structure );
|
|
1346
|
-
} else if ( qaAnswers[j].answerType
|
|
1346
|
+
} else if ( [ 'image/video', 'multipleImage' ].includes( qaAnswers[j].answerType ) ) {
|
|
1347
1347
|
let separatedArray = typeof requestSection[i].Multianswer == 'string' ? JSON.parse( requestSection[i].Multianswer ) : requestSection[i].Multianswer;
|
|
1348
1348
|
let mcmi = [];
|
|
1349
1349
|
// for (let k = 0; k < qaans.length; k++) {
|
|
@@ -1373,6 +1373,9 @@ export async function sopMobilechecklistMultiSectionFormatterv1( req, res, next
|
|
|
1373
1373
|
newAnswer.runAI = qaAnswers[j].answers[0]?.runAI || false;
|
|
1374
1374
|
newAnswer.runAIFeatures = qaAnswers[j].answers[0]?.runAIFeatures || [];
|
|
1375
1375
|
newAnswer.runAIDescription = qaAnswers[j].answers[0]?.runAIDescription || '';
|
|
1376
|
+
if ( qaAnswers[j].answerType == 'image/video' ) {
|
|
1377
|
+
newAnswer.answerType = separatedArray[s].answerType;
|
|
1378
|
+
}
|
|
1376
1379
|
mcmi.push( newAnswer );
|
|
1377
1380
|
}
|
|
1378
1381
|
}
|
|
@@ -2009,6 +2012,32 @@ export async function submitChecklist( req, res ) {
|
|
|
2009
2012
|
};
|
|
2010
2013
|
console.log( 'inserttraxlogs =>', inserttraxlogs );
|
|
2011
2014
|
insertOpenSearchData( openSearch.traxActivityLog, inserttraxlogs );
|
|
2015
|
+
let checklistDetails = await checklistService.findOne( { _id: getchecklist[0].sourceCheckList_id }, { notifyFlags: 1, approver: 1 } );
|
|
2016
|
+
if ( checklistDetails?.notifyFlags?.notifyType?.length ) {
|
|
2017
|
+
let emailList = checklistDetails?.notifyFlags?.notifyType.includes( 'approver' ) ? checklistDetails.approver.flatMap( ( ele ) => ele?.value ): [];
|
|
2018
|
+
emailList = [ ...emailList, ...checklistDetails?.notifyFlags?.notifyType?.users.flatMap( ( ele ) => ele?.value ) ];
|
|
2019
|
+
let data = {
|
|
2020
|
+
storeName: getchecklist[0].storeName,
|
|
2021
|
+
flagCount: updateData.questionFlag,
|
|
2022
|
+
checklistName: getchecklist[0].checkListName,
|
|
2023
|
+
submittedBy: getchecklist[0].userName,
|
|
2024
|
+
time: updateData.submitMobileTime,
|
|
2025
|
+
domain: JSON.parse( process.env.URL ).domain,
|
|
2026
|
+
};
|
|
2027
|
+
const templateHtml = fs.readFileSync( path.resolve( path.dirname( '' ) ) + '/src/hbs/trialExtentionEmail.hbs', 'utf8' );
|
|
2028
|
+
const template = Handlebars.compile( templateHtml );
|
|
2029
|
+
const html = template( { data: data } );
|
|
2030
|
+
emailList.forEach( ( email ) => {
|
|
2031
|
+
let params = {
|
|
2032
|
+
toEmail: email,
|
|
2033
|
+
mailSubject: 'TangoEye | Checklist Flag',
|
|
2034
|
+
htmlBody: html,
|
|
2035
|
+
attachment: '',
|
|
2036
|
+
sourceEmail: JSON.parse( process.env.SES ).adminEmail,
|
|
2037
|
+
};
|
|
2038
|
+
sendEmailWithSES( params.toEmail, params.mailSubject, params.htmlBody, params.attachment, params.sourceEmail );
|
|
2039
|
+
} );
|
|
2040
|
+
}
|
|
2012
2041
|
}
|
|
2013
2042
|
|
|
2014
2043
|
return res.sendSuccess( 'Checklist Updated Successfully' );
|
|
@@ -3353,11 +3382,11 @@ export async function questionList( req, res ) {
|
|
|
3353
3382
|
Multianswer[ansIndex].validationAnswer = userAns.validationAnswer;
|
|
3354
3383
|
}
|
|
3355
3384
|
}
|
|
3356
|
-
if (
|
|
3385
|
+
if ( [ 'image/video', 'multipleImage' ].includes( question.answerType ) ) {
|
|
3357
3386
|
if ( userAns && userAns.answer && userAns.answer !='' ) {
|
|
3358
3387
|
// let manswer = await signedUrl( { file_path: decodeURIComponent( userAns.answer ), Bucket: bucket.sop } );
|
|
3359
3388
|
let manswer = `${cdnurl.TraxAnswerCDN}${userAns.answer}`;
|
|
3360
|
-
Multianswer.push( { 'answer': manswer, 'no': userAnsIndex, 'validationAnswer': '' } );
|
|
3389
|
+
Multianswer.push( { 'answer': manswer, 'no': userAnsIndex, 'validationAnswer': '', ...( question.answerType == 'image/video' && { answerType: userAns?.answerType } ) } );
|
|
3361
3390
|
} else {
|
|
3362
3391
|
|
|
3363
3392
|
}
|
|
@@ -3376,11 +3405,11 @@ export async function questionList( req, res ) {
|
|
|
3376
3405
|
question.Multianswer = Multianswer;
|
|
3377
3406
|
}
|
|
3378
3407
|
}
|
|
3379
|
-
if (
|
|
3408
|
+
if ( [ 'image/video', 'multipleImage' ].includes( question.answerType ) ) {
|
|
3380
3409
|
if ( Multianswer.length ) {
|
|
3381
3410
|
question.Multianswer = Multianswer;
|
|
3382
3411
|
} else {
|
|
3383
|
-
Multianswer.push( { 'answer': null, 'no': 0, 'validationAnswer': null } );
|
|
3412
|
+
Multianswer.push( { 'answer': null, 'no': 0, 'validationAnswer': null, ...( question.answerType == 'image/video' && { answerType: null } ) } );
|
|
3384
3413
|
question.Multianswer = Multianswer;
|
|
3385
3414
|
}
|
|
3386
3415
|
}
|
|
@@ -4365,7 +4394,7 @@ export async function questionListV1( req, res ) {
|
|
|
4365
4394
|
Multianswer[ansIndex].validationAnswer = userAns.validationAnswer;
|
|
4366
4395
|
}
|
|
4367
4396
|
}
|
|
4368
|
-
if ( question.answerType == 'multipleImage' ) {
|
|
4397
|
+
if ( question.answerType == 'multipleImage' || question.answerType == 'image/video' ) {
|
|
4369
4398
|
if ( userAns && userAns.answer && userAns.answer !='' ) {
|
|
4370
4399
|
let manswer = `${cdnurl.TraxAnswerCDN}${userAns.answer}`;
|
|
4371
4400
|
Multianswer.push( { 'answer': manswer, 'no': userAnsIndex, 'validationAnswer': '' } );
|
|
@@ -4387,7 +4416,7 @@ export async function questionListV1( req, res ) {
|
|
|
4387
4416
|
question.Multianswer = Multianswer;
|
|
4388
4417
|
}
|
|
4389
4418
|
}
|
|
4390
|
-
if ( question.answerType == 'multipleImage' ) {
|
|
4419
|
+
if ( question.answerType == 'multipleImage' || question.answerType == 'image/video' ) {
|
|
4391
4420
|
if ( Multianswer.length ) {
|
|
4392
4421
|
question.Multianswer = Multianswer;
|
|
4393
4422
|
} else {
|
package/src/hbs/flag.hbs
ADDED
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html>
|
|
3
|
+
|
|
4
|
+
<head>
|
|
5
|
+
|
|
6
|
+
<meta charset="utf-8">
|
|
7
|
+
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
|
8
|
+
<title>Trial Intiate Email</title>
|
|
9
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
10
|
+
<style type="text/css">
|
|
11
|
+
@media screen {
|
|
12
|
+
@font-face {
|
|
13
|
+
font-family: 'Inter';
|
|
14
|
+
font-style: normal;
|
|
15
|
+
font-weight: 400;
|
|
16
|
+
font-display: swap;
|
|
17
|
+
src: local("Inter"), local("Inter-Regular"), url(https://fonts.gstatic.com/s/inter/v12/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuLyfAZJhiI2B.woff2) format('woff2');
|
|
18
|
+
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
body {
|
|
23
|
+
font-family: "Inter", sans-serif !important;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
body,
|
|
27
|
+
table,
|
|
28
|
+
td,
|
|
29
|
+
a {
|
|
30
|
+
-ms-text-size-adjust: 100%;
|
|
31
|
+
-webkit-text-size-adjust: 100%;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
table,
|
|
35
|
+
td {
|
|
36
|
+
mso-table-rspace: 0pt;
|
|
37
|
+
mso-table-lspace: 0pt;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
img {
|
|
41
|
+
-ms-interpolation-mode: bicubic;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
a[x-apple-data-detectors] {
|
|
45
|
+
font-family: "inherit" !important;
|
|
46
|
+
font-size: inherit !important;
|
|
47
|
+
font-weight: inherit !important;
|
|
48
|
+
line-height: inherit !important;
|
|
49
|
+
color: inherit !important;
|
|
50
|
+
text-decoration: none !important;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
div[style*="margin: 16px 0;"
|
|
55
|
+
|
|
56
|
+
] {
|
|
57
|
+
margin: 0 !important;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
body {
|
|
61
|
+
width: 100% !important;
|
|
62
|
+
height: 100% !important;
|
|
63
|
+
padding: 0 !important;
|
|
64
|
+
margin: 0 !important;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
table {
|
|
69
|
+
border-collapse: collapse !important;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
a {
|
|
73
|
+
color: #1a82e2;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
img {
|
|
77
|
+
height: auto;
|
|
78
|
+
line-height: 100%;
|
|
79
|
+
text-decoration: none;
|
|
80
|
+
border: 0;
|
|
81
|
+
outline: none;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.flagText {
|
|
85
|
+
/* font-family: 'Inter'; */
|
|
86
|
+
/* color: #667085 !important; */
|
|
87
|
+
font-size: 16px;
|
|
88
|
+
font-weight: 600;
|
|
89
|
+
line-height: 24px;
|
|
90
|
+
text-align: left;
|
|
91
|
+
|
|
92
|
+
}
|
|
93
|
+
</style>
|
|
94
|
+
|
|
95
|
+
</head>
|
|
96
|
+
|
|
97
|
+
<body style="background-color: #dbe5ea;">
|
|
98
|
+
|
|
99
|
+
<div class="preheader"
|
|
100
|
+
style="display: none; max-width: 0; max-height: 0; overflow: hidden; font-size: 1px; line-height: 1px; color: #fff; opacity: 0;">
|
|
101
|
+
Email Summary (Hidden)
|
|
102
|
+
</div>
|
|
103
|
+
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="padding-left:10px;padding-right:10px">
|
|
104
|
+
<tr>
|
|
105
|
+
<td bgcolor="#dbe5ea" style="padding:32px 10px 0 10px">
|
|
106
|
+
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="max-width: 680px;" align="center">
|
|
107
|
+
<tr>
|
|
108
|
+
<td class="o_bg-white o_px-md o_py-md o_sans o_text"
|
|
109
|
+
style="margin-top: 0px;margin-bottom: 0px;font-size: 16px;line-height: 24px;background-color: #ffffff;padding-left: 18px;padding-right: 24px;padding-top: 24px;padding-bottom: 24px;">
|
|
110
|
+
<p style="margin-top: 0px;margin-bottom: 0px;"><a class="o_text-white"
|
|
111
|
+
href="https://tangoeye.ai/"
|
|
112
|
+
style="text-decoration: none;outline: none;color: #ffffff;"><img
|
|
113
|
+
src="https://devtangoretail-api.tangoeye.ai/logo.png" width="200" height="100"
|
|
114
|
+
alt="SimpleApp"
|
|
115
|
+
style="-ms-interpolation-mode: bicubic;vertical-align: middle;border: 0;line-height: 100%;height: auto;outline: none;text-decoration: none;"></a>
|
|
116
|
+
</p>
|
|
117
|
+
</td>
|
|
118
|
+
</tr>
|
|
119
|
+
<tr>
|
|
120
|
+
<td align="left" bgcolor="#ffffff"
|
|
121
|
+
style="padding-left: 30px;padding-right: 24px; font-size: 14px; line-height: 24px;">
|
|
122
|
+
<p class="o_heading o_mb-xxs"
|
|
123
|
+
style="width: 624px;height: 0px;border: 1px solid #CBD5E1;flex: none;order: 1;flex-grow: 0;">
|
|
124
|
+
</p>
|
|
125
|
+
</td>
|
|
126
|
+
</tr>
|
|
127
|
+
<tr>
|
|
128
|
+
<td class="o_bg-white o_px-md o_py-xl o_xs-py-md"
|
|
129
|
+
style="background-color: #ffffff;padding-left: 30px;padding-right: 24px;padding-bottom: 10px;">
|
|
130
|
+
<div class="o_col-6s o_sans o_text-md o_text-light o_center"
|
|
131
|
+
style="margin-top: 0px;margin-bottom: 0px;font-size: 16px;line-height: 28px;color: #82899a;">
|
|
132
|
+
<span class="o_heading o_text-dark o_mb-xxs"
|
|
133
|
+
style="font-weight: 400;margin-top: 0px;margin-bottom: 4px;color: #121A26;line-height: 140%;">
|
|
134
|
+
Hi,<br />
|
|
135
|
+
Flag has been detected based on the response submitted in a recently completed
|
|
136
|
+
checklist for Store {{data.storeName}}. Review
|
|
137
|
+
the flagged item and take the necessary action from the dashboard.
|
|
138
|
+
</span>
|
|
139
|
+
</div>
|
|
140
|
+
</td>
|
|
141
|
+
</tr>
|
|
142
|
+
<tr>
|
|
143
|
+
<td class="o_bg-white o_px-md o_py-xl o_xs-py-md"
|
|
144
|
+
style="background-color: #ffffff;padding-left: 30px;padding-right: 24px;padding-bottom: 10px;">
|
|
145
|
+
<div class="o_col-6s o_sans o_text-md o_text-light o_center"
|
|
146
|
+
style="margin-top: 0px;margin-bottom: 0px;font-size: 16px;line-height: 28px;color: #82899a;">
|
|
147
|
+
<span class="o_heading o_text-dark o_mb-xxs"
|
|
148
|
+
style="font-weight: 400;margin-top: 0px;margin-bottom: 4px;color: #121A26;line-height: 140%;">
|
|
149
|
+
Details of the checklist are as follows:
|
|
150
|
+
</span>
|
|
151
|
+
</div>
|
|
152
|
+
</td>
|
|
153
|
+
</tr>
|
|
154
|
+
</table>
|
|
155
|
+
</td>
|
|
156
|
+
</tr>
|
|
157
|
+
<tr>
|
|
158
|
+
<td align="center" bgcolor="#dbe5ea" style="padding:0 10px 0 10px">
|
|
159
|
+
<table align="center" bgcolor="#ffffff" border="0" cellpadding="0" cellspacing="0" width="100%"
|
|
160
|
+
style="max-width: 680px;">
|
|
161
|
+
<tr bgcolor="#ffffff" style="border:none;margin-top:0px;">
|
|
162
|
+
<td class="flagText" style="padding-left:30px; line-height: 24px;color:#000000">Store Name :
|
|
163
|
+
</td>
|
|
164
|
+
<td></td>
|
|
165
|
+
<td></td>
|
|
166
|
+
<td class="flagText">{{data.storeName}}</td>
|
|
167
|
+
</tr>
|
|
168
|
+
<tr bgcolor="#ffffff" style="border:none;margin-top:0px;">
|
|
169
|
+
<td class="flagText" style="padding-left:30px; line-height: 24px;">Checklist Name :</td>
|
|
170
|
+
<td></td>
|
|
171
|
+
<td></td>
|
|
172
|
+
<td class="flagText">{{data.checklistName}}%</td>
|
|
173
|
+
</tr>
|
|
174
|
+
|
|
175
|
+
<tr bgcolor="#ffffff" style="border:none;margin-top:0px;">
|
|
176
|
+
<td class="flagText" style="padding-left:30px; line-height: 24px;">No of Flags :</td>
|
|
177
|
+
<td></td>
|
|
178
|
+
<td></td>
|
|
179
|
+
<td class="flagText">{{data.flagCount}}</td>
|
|
180
|
+
</tr>
|
|
181
|
+
<tr bgcolor="#ffffff" style="border:none;margin-top:0px;">
|
|
182
|
+
<td class="flagText" style="padding-left:30px; line-height: 24px;">Submitted By :</td>
|
|
183
|
+
<td></td>
|
|
184
|
+
<td></td>
|
|
185
|
+
<td class="flagText">{{data.submittedBy}}</td>
|
|
186
|
+
</tr>
|
|
187
|
+
<tr bgcolor="#ffffff" style="border:none;margin-top:0px;">
|
|
188
|
+
<td class="flagText" style="padding-left:30px; line-height: 24px;">Date & Time :</td>
|
|
189
|
+
<td></td>
|
|
190
|
+
<td></td>
|
|
191
|
+
<td class="flagText">{{data.time}}</td>
|
|
192
|
+
</tr>
|
|
193
|
+
</table>
|
|
194
|
+
</td>
|
|
195
|
+
</tr>
|
|
196
|
+
<tr>
|
|
197
|
+
<td align="center" bgcolor="#dbe5ea" style="padding:0 10px 0 10px">
|
|
198
|
+
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="max-width: 680px;">
|
|
199
|
+
<tr>
|
|
200
|
+
<td bgcolor="#ffffff" style="padding: 20px;padding-top:15px;padding-left:30px;">
|
|
201
|
+
<table border="0" cellpadding="0" cellspacing="0">
|
|
202
|
+
<tr>
|
|
203
|
+
<td align="center" bgcolor="#00A3FF" style="border-radius: 6px;height:50px;">
|
|
204
|
+
<a href="{{data.domain}}" target="_blank"
|
|
205
|
+
style="display: inline-block; padding: 16px 36px; font-size: 16px; color: #ffffff; text-decoration: none; border-radius: 6px;">View
|
|
206
|
+
Flags
|
|
207
|
+
</a>
|
|
208
|
+
</td>
|
|
209
|
+
</tr>
|
|
210
|
+
</table>
|
|
211
|
+
</td>
|
|
212
|
+
</tr>
|
|
213
|
+
</table>
|
|
214
|
+
</td>
|
|
215
|
+
</tr>
|
|
216
|
+
<tr>
|
|
217
|
+
<td align="center" bgcolor="#dbe5ea" style="padding:0 10px 32px 10px;">
|
|
218
|
+
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="max-width: 680px;">
|
|
219
|
+
<tr>
|
|
220
|
+
<td class="o_bg-white o_px-md o_py-xl o_xs-py-md"
|
|
221
|
+
style="background-color: #ffffff;padding-left: 30px;padding-right: 24px;padding-top:5px">
|
|
222
|
+
<div class="o_col-6s o_sans o_text-md o_text-light o_center"
|
|
223
|
+
style="margin-top: 0px;margin-bottom: 0px;font-size: 12px;color: #202B3C;font-style: normal;font-weight: 400;font-size: 12px;line-height: 150%;">
|
|
224
|
+
<p>
|
|
225
|
+
If you have any questions or need assistance, please reach out to us at
|
|
226
|
+
support@tangotech.co.in.
|
|
227
|
+
</p>
|
|
228
|
+
</div>
|
|
229
|
+
</td>
|
|
230
|
+
</tr>
|
|
231
|
+
<tr>
|
|
232
|
+
<td class="o_bg-white o_px-md o_py-xl o_xs-py-md"
|
|
233
|
+
style="background-color: #ffffff;padding-left: 30px;padding-right: 24px;padding-bottom:15px">
|
|
234
|
+
<div class="o_col-6s o_sans o_text-md o_text-light o_center"
|
|
235
|
+
style="margin-top: 0px;margin-bottom: 0px;font-size: 12px;color: #202B3C;font-style: normal;font-weight: 400;font-size: 12px;line-height: 150%;">
|
|
236
|
+
<p>
|
|
237
|
+
© Tango Eye. All rights reserved.</p>
|
|
238
|
+
</div>
|
|
239
|
+
</td>
|
|
240
|
+
</tr>
|
|
241
|
+
</table>
|
|
242
|
+
</td>
|
|
243
|
+
</tr>
|
|
244
|
+
|
|
245
|
+
</table>
|
|
246
|
+
|
|
247
|
+
</body>
|
|
248
|
+
|
|
249
|
+
</html>
|