tango-app-api-trax 3.9.7 → 3.9.9
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 +3 -2
- package/src/controllers/internalTrax.controller.js +5 -2
- package/src/controllers/mobileTrax.controller.js +4 -1
- package/src/controllers/teaxFlag.controller.js +4 -0
- package/src/controllers/trax.controller.js +2 -2
- package/src/hbs/flag.hbs +248 -248
- package/src/hbs/login-otp.hbs +943 -943
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tango-app-api-trax",
|
|
3
|
-
"version": "3.9.
|
|
3
|
+
"version": "3.9.9",
|
|
4
4
|
"description": "Trax",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -29,7 +29,8 @@
|
|
|
29
29
|
"nodemon": "^3.1.4",
|
|
30
30
|
"path": "^0.12.7",
|
|
31
31
|
"puppeteer": "^24.39.1",
|
|
32
|
-
"
|
|
32
|
+
"swagger-ui-express": "^5.0.1",
|
|
33
|
+
"tango-api-schema": "^2.6.0",
|
|
33
34
|
"tango-app-api-middleware": "^3.5.2",
|
|
34
35
|
"url": "^0.11.4",
|
|
35
36
|
"winston": "^3.13.1",
|
|
@@ -2156,13 +2156,16 @@ export async function liveAiPushNotificationAlert( req, res ) {
|
|
|
2156
2156
|
for ( let user of findAichecklist?.aiConfig?.alertConfig?.alertSendTo?.mobile ) {
|
|
2157
2157
|
let findOneUser = await userService.findOne( { email: user.value }, { fcmToken: 1 } );
|
|
2158
2158
|
if ( findOneUser&&findOneUser.fcmToken&&findOneUser.fcmToken!='' ) {
|
|
2159
|
+
let image = {};
|
|
2160
|
+
if ( req?.body?.image ) {
|
|
2161
|
+
image = { image: req?.body?.image };
|
|
2162
|
+
}
|
|
2159
2163
|
try {
|
|
2160
|
-
await sendPushNotification( req.body.title, req.body.description, findOneUser.fcmToken );
|
|
2164
|
+
await sendPushNotification( req.body.title, req.body.description, findOneUser.fcmToken, image );
|
|
2161
2165
|
} catch ( e ) {
|
|
2162
2166
|
logger.error( {
|
|
2163
2167
|
message: 'push notification',
|
|
2164
2168
|
error: e,
|
|
2165
|
-
details: data,
|
|
2166
2169
|
} );
|
|
2167
2170
|
}
|
|
2168
2171
|
} ;
|
|
@@ -1084,12 +1084,15 @@ export async function sopMobilechecklistMultiSectionFormatterv1( req, res, next
|
|
|
1084
1084
|
try {
|
|
1085
1085
|
let requestData = req.body;
|
|
1086
1086
|
requestData.questionAnswers = typeof requestData.questionAnswers == 'string' ? JSON.parse( requestData.questionAnswers ) : requestData.questionAnswers;
|
|
1087
|
-
let getChecklistQA = await processedchecklist.findOne( { _id: new ObjectId( requestData.processedcheckListId ) }, { questionAnswers: 1 } );
|
|
1087
|
+
let getChecklistQA = await processedchecklist.findOne( { _id: new ObjectId( requestData.processedcheckListId ) }, { questionAnswers: 1, redoEdit: 1 } );
|
|
1088
1088
|
let reqAnswers = requestData.questionAnswers;
|
|
1089
1089
|
logger.error( { functionName: 'updatedPayload', message: reqAnswers } );
|
|
1090
1090
|
let CLQAnswers = getChecklistQA.questionAnswers;
|
|
1091
1091
|
|
|
1092
1092
|
if ( requestData.submittype == 'submit' ) {
|
|
1093
|
+
if ( getChecklistQA?.redoEdit ) {
|
|
1094
|
+
requestData.submittype = 'draft';
|
|
1095
|
+
}
|
|
1093
1096
|
reqAnswers.forEach( ( reqA ) => {
|
|
1094
1097
|
if ( ![ 'multiplechoicemultiple', 'multipleImage', 'image/video' ].includes( reqA?.answerType ) && ( reqA.answerType == 'dropDown' && !reqA.allowMultiple ) ) {
|
|
1095
1098
|
if ( ( !reqA.linkType && ( reqA.answer == null || reqA.answer == '' ) ) || ( reqA.linkType && reqA.linkquestionenabled && ( reqA.answer == null || reqA.answer == '' ) ) ) {
|
|
@@ -2509,6 +2509,8 @@ export const flagChecklistTableV1 = async ( req, res ) => {
|
|
|
2509
2509
|
'Store Spoc Email': element?.storeSpocEmail,
|
|
2510
2510
|
'Detections': element?.detections,
|
|
2511
2511
|
'Detection Status': element?.detectionStatus,
|
|
2512
|
+
...( element?.detectionType !== undefined && { 'Detection Type': element.detectionType } ),
|
|
2513
|
+
|
|
2512
2514
|
} );
|
|
2513
2515
|
} );
|
|
2514
2516
|
return await download( exportdata, res );
|
|
@@ -2560,6 +2562,7 @@ export const flagChecklistTableV1 = async ( req, res ) => {
|
|
|
2560
2562
|
'Open Time': element?.openTime,
|
|
2561
2563
|
'Close Time': element?.closeTime,
|
|
2562
2564
|
'Detection Status': element?.detectionStatus,
|
|
2565
|
+
...( element?.detectionType !== undefined && { 'Detection Type': element.detectionType } ),
|
|
2563
2566
|
...( element?.downtime !== undefined && { 'Downtime': element.downtime } ),
|
|
2564
2567
|
} );
|
|
2565
2568
|
} );
|
|
@@ -2572,6 +2575,7 @@ export const flagChecklistTableV1 = async ( req, res ) => {
|
|
|
2572
2575
|
// 'Store Spoc Email': element?.SpocEmail,
|
|
2573
2576
|
'Detections': element?.detections,
|
|
2574
2577
|
'Detection Status': element?.detectionStatus,
|
|
2578
|
+
...( element?.detectionType !== undefined && { 'Detection Type': element.detectionType } ),
|
|
2575
2579
|
...( element?.downtime !== undefined && { 'Downtime': element.downtime } ),
|
|
2576
2580
|
} );
|
|
2577
2581
|
} );
|
|
@@ -4131,7 +4131,7 @@ async function updateOpenSearch( user, data ) {
|
|
|
4131
4131
|
export const aiChecklist = async ( req, res ) => {
|
|
4132
4132
|
try {
|
|
4133
4133
|
let storeDetails = await storeService.count( { clientId: req.query.clientId, status: 'active' } );
|
|
4134
|
-
let aiList = [ 'mobileusagedetection', 'storeopenandclose', 'uniformdetection', 'staffleftinthemiddle', 'customerunattended', 'eyetest', 'remoteoptometrist', 'storehygienemonitoring', 'cleaning', 'scrum', 'suspiciousactivity', 'suspiciousfootfall', 'drinking', 'bagdetection', 'inventorycount', 'carsattended', 'numberplateinfo', 'vehicle_check_in', 'outsidebusinesshoursqueuetracking', 'halfshutter', 'tvcompliance', 'cameratampering', 'queuealert', 'staffgrouping', 'boxalert', 'employeeCount' ];
|
|
4134
|
+
let aiList = [ 'mobileusagedetection', 'storeopenandclose', 'uniformdetection', 'staffleftinthemiddle', 'customerunattended', 'eyetest', 'remoteoptometrist', 'storehygienemonitoring', 'cleaning', 'scrum', 'suspiciousactivity', 'suspiciousfootfall', 'drinking', 'bagdetection', 'inventorycount', 'carsattended', 'numberplateinfo', 'vehicle_check_in', 'outsidebusinesshoursqueuetracking', 'halfshutter', 'tvcompliance', 'cameratampering', 'queuealert', 'staffgrouping', 'boxalert', 'employeeCount', 'unattendeddetection' ];
|
|
4135
4135
|
let checklistDetails = [];
|
|
4136
4136
|
let publishList = [];
|
|
4137
4137
|
let unpublishList = [];
|
|
@@ -4144,7 +4144,7 @@ export const aiChecklist = async ( req, res ) => {
|
|
|
4144
4144
|
checklistDetails = [ ...publishList, ...unpublishList ];
|
|
4145
4145
|
|
|
4146
4146
|
checklistDetails.forEach( ( item ) => {
|
|
4147
|
-
if ( ![ 'mobileusagedetection', 'storeopenandclose', 'cleaning', 'scrum', 'uniformdetection', 'staffleftinthemiddle', 'customerunattended', 'outsidebusinesshoursqueuetracking', 'halfshutter', 'tvcompliance', 'cameratampering', 'queuealert', 'staffgrouping', 'boxalert', 'employeeCount' ].includes( item.checkListType ) ) {
|
|
4147
|
+
if ( ![ 'mobileusagedetection', 'storeopenandclose', 'cleaning', 'scrum', 'uniformdetection', 'staffleftinthemiddle', 'customerunattended', 'outsidebusinesshoursqueuetracking', 'halfshutter', 'tvcompliance', 'cameratampering', 'queuealert', 'staffgrouping', 'boxalert', 'employeeCount', 'unattendeddetection' ].includes( item.checkListType ) ) {
|
|
4148
4148
|
item.storeCount = storeDetails;
|
|
4149
4149
|
}
|
|
4150
4150
|
} );
|
package/src/hbs/flag.hbs
CHANGED
|
@@ -1,249 +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:3px;">
|
|
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:3px;">
|
|
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:3px;">
|
|
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:3px;">
|
|
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
|
-
|
|
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:3px;">
|
|
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:3px;">
|
|
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:3px;">
|
|
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:3px;">
|
|
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
249
|
</html>
|