tango-app-api-audit 3.4.0-alpha.10 → 3.4.0-alpha.12

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tango-app-api-audit",
3
- "version": "3.4.0-alpha.10",
3
+ "version": "3.4.0-alpha.12",
4
4
  "description": "audit & audit metrics apis",
5
5
  "main": "index.js",
6
6
  "type": "module",
@@ -38,3 +38,4 @@
38
38
  "eslint-plugin-promise": "^6.2.0"
39
39
  }
40
40
  }
41
+
@@ -58,6 +58,8 @@ import {
58
58
  aggregateAuditStoreData,
59
59
  findOneStoreData,
60
60
  } from '../service/auditStoreData.service.js';
61
+ import { aggregateStoreEmpDetection } from '../service/storeEmpDetection.service.js';
62
+ import { aggregateBinaryAudit } from '../service/binaryAudit.service.js';
61
63
 
62
64
  /* < -- *** Configuration *** --> */
63
65
 
@@ -2989,15 +2991,87 @@ export async function overViewCard( req, res ) {
2989
2991
  },
2990
2992
  },
2991
2993
  ];
2994
+
2995
+ const binaryQuery =[
2996
+ {
2997
+ $match: {
2998
+ $and: filters,
2999
+ },
3000
+
3001
+ },
3002
+ {
3003
+ $project: {
3004
+ auditFileCount: {
3005
+ $cond: [
3006
+ { $eq: [ '$auditType', 'Audit' ] }, 1, 0,
3007
+ ],
3008
+ },
3009
+ ReAuditFileCount: {
3010
+ $cond: [
3011
+ { $eq: [ '$auditType', 'ReAudit' ] }, 1, 0,
3012
+ ],
3013
+ },
3014
+ inprogressCount: {
3015
+ $cond: [
3016
+ { $ne: [ '$auditStatus', 'completed' ] }, 1, 0,
3017
+ ],
3018
+ },
3019
+ completedCount: {
3020
+ $cond: [
3021
+ { $eq: [ '$auditStatus', 'completed' ] }, 1, 0,
3022
+ ],
3023
+ },
3024
+ },
3025
+ },
3026
+ {
3027
+ $group: {
3028
+ _id: { fileDate: '$fileDate', clientId: '$clientId' },
3029
+ totalCount: { $sum: 1 },
3030
+ auditFileCount: { $sum: '$auditFileCount' },
3031
+ ReAuditFileCount: { $sum: '$ReAuditFileCount' },
3032
+ inprogressCount: { $sum: '$inprogressCount' },
3033
+ completedCount: { $sum: '$completedCount' },
3034
+
3035
+ },
3036
+ },
3037
+ {
3038
+ $project: {
3039
+ _id: 0,
3040
+ totalCount: 1,
3041
+ auditFileCount: 1,
3042
+ ReAuditFileCount: 1,
3043
+ inprogressCount: 1,
3044
+ completedCount: 1,
3045
+ notAssigned: { $subtract: [ '$totalCount', { $add: [ '$inprogressCount', '$completedCount' ] } ] },
3046
+ },
3047
+ },
3048
+ ];
2992
3049
  const result = await aggregateStoreAudit( query );
2993
- logger.info( { result: result } );
2994
- return res.sendSuccess( { result: result.length> 0? result[0]: temp } );
3050
+ const empDetection = await aggregateStoreEmpDetection( query );
3051
+ const binaryAudit = await aggregateBinaryAudit( binaryQuery );
3052
+
3053
+ // Combine all arrays into one
3054
+ const combinedArray = [ ...result, ...empDetection, ...binaryAudit ];
3055
+
3056
+ // Function to merge objects by summing their values
3057
+ const mergedResult = mergeAndSum( combinedArray );
3058
+
3059
+ return res.sendSuccess( { result: Object.keys( mergedResult ).length > 0?mergedResult: temp } );
2995
3060
  } catch ( error ) {
2996
3061
  const err = error.message || 'Internal Server Error';
2997
3062
  logger.error( { error: error, message: req.body, function: 'overViewCard' } );
2998
3063
  return res.sendError( err, 500 );
2999
3064
  }
3000
3065
  }
3066
+ export const mergeAndSum = ( arr ) => {
3067
+ return arr.reduce( ( acc, obj ) => {
3068
+ for ( const [ key, value ] of Object.entries( obj ) ) {
3069
+ // Add the value to the existing key or initialize it if it doesn't exist
3070
+ acc[key] = ( acc[key] || 0 ) + value;
3071
+ }
3072
+ return acc;
3073
+ }, {} );
3074
+ };
3001
3075
 
3002
3076
  export async function summarySplit( req, res ) {
3003
3077
  try {
@@ -1,41 +1,33 @@
1
1
  import joi from 'joi';
2
2
 
3
-
4
3
  /* < -- *** Configurations *** --> */
5
4
 
6
5
  // client
7
- export const clientSchema = joi.object(
8
- {
9
- limit: joi.number().optional(),
10
- offset: joi.number().optional(),
11
- },
12
- );
6
+ export const clientSchema = joi.object( {
7
+ limit: joi.number().optional(),
8
+ offset: joi.number().optional(),
9
+ } );
13
10
 
14
11
  export const clientValid = {
15
12
  query: clientSchema,
16
13
  };
17
14
 
18
15
  // store
19
- export const auditStoreSchema = joi.object(
20
- {
21
- clientId: joi.array().required(),
22
- limit: joi.number().optional(),
23
- offset: joi.number().optional(),
24
- },
25
- );
16
+ export const auditStoreSchema = joi.object( {
17
+ clientId: joi.array().required(),
18
+ limit: joi.number().optional(),
19
+ offset: joi.number().optional(),
20
+ } );
26
21
 
27
22
  export const auditStoreValid = {
28
23
  body: auditStoreSchema,
29
24
  };
30
25
 
31
26
  // user
32
- export const userSchema = joi.object(
33
- {
34
-
35
- limit: joi.number().optional(),
36
- offset: joi.number().optional(),
37
- },
38
- );
27
+ export const userSchema = joi.object( {
28
+ limit: joi.number().optional(),
29
+ offset: joi.number().optional(),
30
+ } );
39
31
 
40
32
  export const userValid = {
41
33
  query: userSchema,
@@ -43,96 +35,85 @@ export const userValid = {
43
35
 
44
36
  /* < -- *** Audit Mapping *** --> */
45
37
 
46
-
47
- export const getFileSchema = joi.object(
48
- {
49
- queueName: joi.string().required(),
50
- nextId: joi.string().optional().allow( '' ),
51
- limit: joi.number().optional(),
52
- moduleType: joi.string().required(),
53
- },
54
- );
38
+ export const getFileSchema = joi.object( {
39
+ queueName: joi.string().required(),
40
+ nextId: joi.string().optional().allow( '' ),
41
+ limit: joi.number().optional(),
42
+ moduleType: joi.string().required(),
43
+ } );
55
44
 
56
45
  export const getFileValid = {
57
46
  query: getFileSchema,
58
47
  };
59
48
 
60
- export const saveDraftSchema = joi.object(
61
- {
62
- userCommands: joi.string().optional().allow( '' ),
63
- storeId: joi.string().required(),
64
- auditId: joi.string().required(),
65
- moduleType: joi.string().required(),
66
- zoneName: joi.string().required(),
67
- auditType: joi.string().required(),
68
- fileDate: joi.string().required(),
69
- queueName: joi.string().required(),
70
- totalCount: joi.number().required(),
71
- junkCount: joi.number().optional(),
72
- junk: joi.array().optional(),
73
- employeeCount: joi.number().optional(),
74
- employee: joi.array().optional(),
75
- customerCount: joi.number().optional(),
76
- customer: joi.array().optional(),
77
- retagCount: joi.number().optional(),
78
- retagImage: joi.array().optional(),
79
- },
80
- );
49
+ export const saveDraftSchema = joi.object( {
50
+ userCommands: joi.string().optional().allow( '' ),
51
+ storeId: joi.string().required(),
52
+ auditId: joi.string().required(),
53
+ moduleType: joi.string().required(),
54
+ zoneName: joi.string().required(),
55
+ auditType: joi.string().required(),
56
+ fileDate: joi.string().required(),
57
+ queueName: joi.string().required(),
58
+ totalCount: joi.number().required(),
59
+ junkCount: joi.number().optional(),
60
+ junk: joi.array().optional(),
61
+ employeeCount: joi.number().optional(),
62
+ employee: joi.array().optional(),
63
+ customerCount: joi.number().optional(),
64
+ customer: joi.array().optional(),
65
+ retagCount: joi.number().optional(),
66
+ retagImage: joi.array().optional(),
67
+ } );
81
68
 
82
69
  export const saveDraftValid = {
83
70
  body: saveDraftSchema,
84
71
  };
85
72
 
86
- export const getDraftedDataSchema = joi.object(
87
- {
88
- storeId: joi.string().required(),
89
- fileDate: joi.string().required(),
90
- userId: joi.string().optional(),
91
- moduleType: joi.string().required(),
92
- zoneName: joi.string().required(),
93
- },
94
- );
73
+ export const getDraftedDataSchema = joi.object( {
74
+ storeId: joi.string().required(),
75
+ fileDate: joi.string().required(),
76
+ userId: joi.string().optional(),
77
+ moduleType: joi.string().required(),
78
+ zoneName: joi.string().required(),
79
+ } );
95
80
 
96
81
  export const getDraftedDataValid = {
97
82
  query: getDraftedDataSchema,
98
83
  };
99
84
 
100
- export const saveSchema = joi.object(
101
- {
102
- auditId: joi.string().required(),
103
- storeId: joi.string().required(),
104
- fileDate: joi.string().required(),
105
- auditType: joi.string().required(),
106
- moduleType: joi.string().required(),
107
- zoneName: joi.string().required(),
108
- beforeCount: joi.number().required(),
109
- junkCount: joi.number().required(),
110
- junk: joi.array().required(),
111
- employeeCount: joi.number().required(),
112
- employee: joi.array().required(),
113
- customerCount: joi.number().required(),
114
- customer: joi.array().required(),
115
- moduleType: joi.string().required(),
116
- zoneName: joi.string().required(),
117
- },
118
- );
85
+ export const saveSchema = joi.object( {
86
+ auditId: joi.string().required(),
87
+ storeId: joi.string().required(),
88
+ fileDate: joi.string().required(),
89
+ auditType: joi.string().required(),
90
+ moduleType: joi.string().required(),
91
+ zoneName: joi.string().required(),
92
+ beforeCount: joi.number().required(),
93
+ junkCount: joi.number().required(),
94
+ junk: joi.array().required(),
95
+ employeeCount: joi.number().required(),
96
+ employee: joi.array().required(),
97
+ customerCount: joi.number().required(),
98
+ customer: joi.array().required(),
99
+ moduleType: joi.string().required(),
100
+ zoneName: joi.string().required(),
101
+ } );
119
102
 
120
103
  export const saveValid = {
121
104
  body: saveSchema,
122
105
  };
123
106
 
124
- export const workSpaceSchema = joi.object(
125
- {
126
- searchValue: joi.string().optional().allow( '' ),
127
- moduleType: joi.string().required(),
128
- clientId: joi.array().optional(),
129
- offset: joi.number().optional(),
130
- limit: joi.number().optional(),
131
- isExport: joi.boolean().optional(),
132
- sortColumnName: joi.string().optional(),
133
- sortBy: joi.number().optional(),
134
- },
135
- );
107
+ export const workSpaceSchema = joi.object( {
108
+ searchValue: joi.string().optional().allow( '' ),
109
+ moduleType: joi.string().required(),
110
+ clientId: joi.array().optional(),
111
+ offset: joi.number().optional(),
112
+ limit: joi.number().optional(),
113
+ isExport: joi.boolean().optional(),
114
+ sortColumnName: joi.string().optional(),
115
+ sortBy: joi.number().optional(),
116
+ } );
136
117
 
137
118
  export const workSpaceValid = {
138
119
  body: workSpaceSchema,
@@ -140,204 +121,179 @@ export const workSpaceValid = {
140
121
 
141
122
  /* < -- *** Audit Metrics *** --> */
142
123
 
143
- export const userAuditHistorySchema = joi.object(
144
- {
145
- userId: joi.string().optional(),
146
- fromDate: joi.string().required(),
147
- toDate: joi.string().required(),
148
- dateType: joi.string().required(),
149
- clientId: joi.array().optional(),
150
- filterByStoreId: joi.array().required(),
151
- moduleType: joi.string().required(),
152
- filterByAuditType: joi.array().optional(),
153
- filterByStatus: joi.array().optional(),
154
- searchValue: joi.string().optional().allow( '' ),
155
- limit: joi.number().optional(),
156
- offset: joi.number().optional(),
157
- sortColumnName: joi.string().optional(),
158
- sortBy: joi.number().optional(),
159
- isExport: joi.boolean().optional(),
160
-
161
- },
162
- );
124
+ export const userAuditHistorySchema = joi.object( {
125
+ userId: joi.string().optional(),
126
+ fromDate: joi.string().required(),
127
+ toDate: joi.string().required(),
128
+ dateType: joi.string().required(),
129
+ clientId: joi.array().optional(),
130
+ filterByStoreId: joi.array().required(),
131
+ moduleType: joi.string().required(),
132
+ filterByAuditType: joi.array().optional(),
133
+ filterByStatus: joi.array().optional(),
134
+ searchValue: joi.string().optional().allow( '' ),
135
+ limit: joi.number().optional(),
136
+ offset: joi.number().optional(),
137
+ sortColumnName: joi.string().optional(),
138
+ sortBy: joi.number().optional(),
139
+ isExport: joi.boolean().optional(),
140
+ } );
163
141
 
164
142
  export const userAuditHistoryValid = {
165
143
  body: userAuditHistorySchema,
166
144
  };
167
145
 
168
- export const clientMetricsSchema = joi.object(
169
- {
170
- fromDate: joi.string().required(),
171
- toDate: joi.string().required(),
172
- searchValue: joi.string().optional().allow( '' ),
173
- moduleType: joi.string().required(),
174
- filterByClient: joi.array().required(),
175
- filterByStatus: joi.array().optional(),
176
- sortColumnName: joi.string().optional(),
177
- sortBy: joi.number().optional(),
178
- limit: joi.number().optional(),
179
- offset: joi.number().optional(),
180
- isExport: joi.boolean().optional(),
181
- },
182
- );
146
+ export const clientMetricsSchema = joi.object( {
147
+ fromDate: joi.string().required(),
148
+ toDate: joi.string().required(),
149
+ searchValue: joi.string().optional().allow( '' ),
150
+ moduleType: joi.string().required(),
151
+ filterByClient: joi.array().required(),
152
+ filterByStatus: joi.array().optional(),
153
+ sortColumnName: joi.string().optional(),
154
+ sortBy: joi.number().optional(),
155
+ limit: joi.number().optional(),
156
+ offset: joi.number().optional(),
157
+ isExport: joi.boolean().optional(),
158
+ } );
183
159
 
184
160
  export const clientMetricsValid = {
185
161
  body: clientMetricsSchema,
186
162
  };
187
163
 
188
-
189
- export const storeMetricsSchema = joi.object(
190
- {
191
- fromDate: joi.string().required(),
192
- toDate: joi.string().required(),
193
- searchValue: joi.string().optional().allow( '' ),
194
- filterByClientId: joi.array().required(),
195
- filterByStoreId: joi.array().optional(),
196
- filterByStatus: joi.array().optional(),
197
- filterByAuditType: joi.array().optional(),
198
- moduleType: joi.string().required(),
199
- sortColumnName: joi.string().optional(),
200
- sortBy: joi.number().optional(),
201
- limit: joi.number().optional(),
202
- offset: joi.number().optional(),
203
- isExport: joi.boolean().optional(),
204
- },
205
- );
164
+ export const storeMetricsSchema = joi.object( {
165
+ fromDate: joi.string().required(),
166
+ toDate: joi.string().required(),
167
+ searchValue: joi.string().optional().allow( '' ),
168
+ filterByClientId: joi.array().required(),
169
+ filterByStoreId: joi.array().optional(),
170
+ filterByStatus: joi.array().optional(),
171
+ filterByAuditType: joi.array().optional(),
172
+ moduleType: joi.string().required(),
173
+ sortColumnName: joi.string().optional(),
174
+ sortBy: joi.number().optional(),
175
+ limit: joi.number().optional(),
176
+ offset: joi.number().optional(),
177
+ isExport: joi.boolean().optional(),
178
+ } );
206
179
 
207
180
  export const storeMetricsValid = {
208
181
  body: storeMetricsSchema,
209
182
  };
210
183
 
211
- export const userMetricsSchema = joi.object(
212
- {
213
- fromDate: joi.string().required(),
214
- toDate: joi.string().required(),
215
- dateType: joi.string().required(),
216
- searchValue: joi.string().optional().allow( '' ),
217
- filterByUser: joi.array().optional(),
218
- moduleType: joi.string().required(),
219
- filterByStatus: joi.array().optional(),
220
- sortColumnName: joi.string().optional(),
221
- sortBy: joi.number().optional(),
222
- limit: joi.number().optional(),
223
- offset: joi.number().optional(),
224
- isExport: joi.boolean().optional(),
225
- },
226
- );
184
+ export const userMetricsSchema = joi.object( {
185
+ fromDate: joi.string().required(),
186
+ toDate: joi.string().required(),
187
+ dateType: joi.string().required(),
188
+ searchValue: joi.string().optional().allow( '' ),
189
+ filterByUser: joi.array().optional(),
190
+ moduleType: joi.string().required(),
191
+ filterByStatus: joi.array().optional(),
192
+ sortColumnName: joi.string().optional(),
193
+ sortBy: joi.number().optional(),
194
+ limit: joi.number().optional(),
195
+ offset: joi.number().optional(),
196
+ isExport: joi.boolean().optional(),
197
+ } );
227
198
 
228
199
  export const userMetricsValid = {
229
200
  body: userMetricsSchema,
230
201
  };
231
202
 
232
- export const pendingSummaryTableSchema = joi.object(
233
- {
234
- fromDate: joi.string().required(),
235
- toDate: joi.string().required(),
236
- clientId: joi.array().optional(),
237
- limit: joi.number().optional(),
238
- offset: joi.number().optional(),
239
- searchValue: joi.string().optional().allow( '' ),
240
- filterByStatus: joi.array().required(),
241
- moduleType: joi.string().required(),
242
- filterByAuditType: joi.array().optional(),
243
- sortColumnName: joi.string().optional(),
244
- sortBy: joi.number().optional(),
245
- isExport: joi.boolean().optional(),
246
- },
247
- );
203
+ export const pendingSummaryTableSchema = joi.object( {
204
+ fromDate: joi.string().required(),
205
+ toDate: joi.string().required(),
206
+ clientId: joi.array().optional(),
207
+ limit: joi.number().optional(),
208
+ offset: joi.number().optional(),
209
+ searchValue: joi.string().optional().allow( '' ),
210
+ filterByStatus: joi.array().required(),
211
+ moduleType: joi.string().required(),
212
+ filterByAuditType: joi.array().optional(),
213
+ sortColumnName: joi.string().optional(),
214
+ sortBy: joi.number().optional(),
215
+ isExport: joi.boolean().optional(),
216
+ } );
248
217
 
249
218
  export const pendingSummaryTableValid = {
250
219
  body: pendingSummaryTableSchema,
251
220
  };
252
221
 
253
- export const overviewTableSchema = joi.object(
254
- {
255
- fromDate: joi.string().required(),
256
- toDate: joi.string().required(),
257
- clientId: joi.array().optional(),
258
- limit: joi.number().optional(),
259
- offset: joi.number().optional(),
260
- searchValue: joi.string().optional().allow( '' ),
261
- filterByStatus: joi.array().optional(),
262
- moduleType: joi.string().required(),
263
- filterByAuditType: joi.array().optional(),
264
- sortColumnName: joi.string().optional(),
265
- sortBy: joi.number().optional(),
266
- isExport: joi.boolean().optional(),
267
- },
268
- );
269
-
270
- export const overviewTableValid= {
222
+ export const overviewTableSchema = joi.object( {
223
+ fromDate: joi.string().required(),
224
+ toDate: joi.string().required(),
225
+ clientId: joi.array().optional(),
226
+ limit: joi.number().optional(),
227
+ offset: joi.number().optional(),
228
+ searchValue: joi.string().optional().allow( '' ),
229
+ filterByStatus: joi.array().optional(),
230
+ moduleType: joi.string().required(),
231
+ filterByAuditType: joi.array().optional(),
232
+ sortColumnName: joi.string().optional(),
233
+ sortBy: joi.number().optional(),
234
+ isExport: joi.boolean().optional(),
235
+ } );
236
+
237
+ export const overviewTableValid = {
271
238
  body: overviewTableSchema,
272
239
  };
273
240
 
274
- export const overAllAuditSummarySchema = joi.object(
275
- {
276
- fromDate: joi.string().required(),
277
- toDate: joi.string().required(),
278
- clientId: joi.array().optional(),
279
- moduleType: joi.string().required(),
280
- },
281
- );
241
+ export const overAllAuditSummarySchema = joi.object( {
242
+ fromDate: joi.string().required(),
243
+ toDate: joi.string().required(),
244
+ clientId: joi.array().optional(),
245
+ moduleType: joi.string().required(),
246
+ } );
282
247
 
283
248
  export const overAllAuditSummaryValid = {
284
249
  body: overAllAuditSummarySchema,
285
250
  };
286
251
 
287
- export const reTriggerValidSchema = joi.object(
288
- {
289
- fileDate: joi.string().required(),
290
- storeId: joi.string().required(),
291
- zoneName: joi.string().required(),
292
- moduleType: joi.string().required(),
293
- auditType: joi.string().required(),
294
- triggerType: joi.string().optional(),
295
- totalCount: joi.number().required(),
296
- userId: joi.string().optional(),
297
- comments: joi.string().optional().allow( '' ),
298
- },
299
- );
252
+ export const reTriggerValidSchema = joi.object( {
253
+ fileDate: joi.string().required(),
254
+ storeId: joi.string().required(),
255
+ zoneName: joi.string().required(),
256
+ moduleType: joi.string().required(),
257
+ auditType: joi.string().required(),
258
+ triggerType: joi.string().optional(),
259
+ totalCount: joi.number().required(),
260
+ userId: joi.string().optional(),
261
+ comments: joi.string().optional().allow( '' ),
262
+ } );
300
263
 
301
264
  export const reTriggerValid = {
302
265
  body: reTriggerValidSchema,
303
266
  };
304
267
 
305
- export const overViewCardSchema = joi.object(
306
- {
307
- fromDate: joi.string().required(),
308
- toDate: joi.string().required(),
309
- clientId: joi.array().optional(),
310
- },
311
- );
268
+ export const overViewCardSchema = joi.object( {
269
+ fromDate: joi.string().required(),
270
+ toDate: joi.string().required(),
271
+ clientId: joi.array().optional(),
272
+ } );
312
273
 
313
274
  export const overViewCardValid = {
314
275
  body: overViewCardSchema,
315
276
  };
316
277
 
317
- export const summarySplitSchema = joi.object(
318
- {
319
- fromDate: joi.string().required(),
320
- toDate: joi.string().required(),
321
- clientId: joi.array().optional(),
322
- moduleType: joi.string().required(),
323
- },
324
- );
278
+ export const summarySplitSchema = joi.object( {
279
+ fromDate: joi.string().required(),
280
+ toDate: joi.string().required(),
281
+ clientId: joi.array().optional(),
282
+ moduleType: joi.string().required(),
283
+ } );
325
284
 
326
285
  export const summarySplitValid = {
327
286
  body: summarySplitSchema,
328
287
  };
329
288
 
330
-
331
- export const auditImageValidSchema = joi.object(
332
- {
333
- fileDate: joi.string().required(),
334
- storeId: joi.string().required(),
335
- imageType: joi.string().required(),
336
- export: joi.boolean().required(),
337
- moduleType: joi.string().required(),
338
- zoneName: joi.string().required(),
339
- },
340
- );
289
+ export const auditImageValidSchema = joi.object( {
290
+ fileDate: joi.string().required(),
291
+ storeId: joi.string().required(),
292
+ imageType: joi.string().required(),
293
+ export: joi.boolean().required(),
294
+ moduleType: joi.string().required(),
295
+ zoneName: joi.string().required(),
296
+ } );
341
297
 
342
298
  export const auditImageValid = {
343
299
  query: auditImageValidSchema,
@@ -1,4 +1,5 @@
1
- import { findOneBinaryAudit } from '../service/binaryAudit.service.js';
1
+ import { logger } from 'tango-app-api-middleware';
2
+ import { findOneBinaryAudit, updateOneBinaryAuditModel } from '../service/binaryAudit.service.js';
2
3
  import { findOneUserEmpDetection } from '../service/userEmpDetection.service.js';
3
4
 
4
5
  export async function validateUserEmpDetection( req, res, next ) {