tango-app-api-task 3.2.1-beta-13 → 3.2.1-beta-15

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-task",
3
- "version": "3.2.1-beta-13",
3
+ "version": "3.2.1-beta-15",
4
4
  "description": "Task",
5
5
  "main": "index.js",
6
6
  "type": "module",
@@ -8,6 +8,7 @@ import * as storeService from '../service/store.service.js';
8
8
  import * as traxApprover from '../service/approver.service.js';
9
9
  import * as processedChecklist from '../service/processedChecklist.service.js';
10
10
  import * as checklistassignconfigModel from '../service/checklistAssign.service.js';
11
+ import * as clusterModel from '../service/cluster.service.js';
11
12
  // import * as domainService from '../service/domain.service.js';
12
13
  import mongoose from 'mongoose';
13
14
  const ObjectId = mongoose.Types.ObjectId;
@@ -19,7 +20,7 @@ dayjs.extend( customParseFormat );
19
20
  import * as taskProcessedConfigService from '../service/processedTaskConfig.service.js';
20
21
  import * as taskProcessedService from '../service/processedTaskList.service.js';
21
22
  import * as ApproverModel from '../service/approver.service.js';
22
- import { createTeamsModel, findOneTeams, updateOneTeamModel } from '../service/teams.service.js';
23
+ import { createTeamsModel, findOneTeams, updateOneTeamModel, findteams } from '../service/teams.service.js';
23
24
  import { sendPushNotification } from 'tango-app-api-middleware';
24
25
  async function LamdaServiceCall( url, data ) {
25
26
  try {
@@ -2089,8 +2090,6 @@ export const duplicateChecklist = async ( req, res ) => {
2089
2090
  export async function teamMigrations( req, res ) {
2090
2091
  try {
2091
2092
  let input = [];
2092
-
2093
-
2094
2093
  for ( let user of input ) {
2095
2094
  let userexits = await userService.findOne( { email: user.userEmail } );
2096
2095
  if ( userexits ) {
@@ -2156,7 +2155,55 @@ export async function teamMigrations( req, res ) {
2156
2155
  return res.sendError( error, 500 );
2157
2156
  }
2158
2157
  }
2159
-
2158
+ export async function clusterMigrations( req, res ) {
2159
+ try {
2160
+ let input = [
2161
+ ];
2162
+ for ( let user of input ) {
2163
+ let userexits = await userService.findOne( { email: user.AOMsmailID } );
2164
+ if ( userexits ) {
2165
+ let findStore = await storeService.findOne( { storeName: user.FacilityCode } );
2166
+ if ( findStore ) {
2167
+ let clusterExists = await clusterModel.findOneCluster( { clusterName: user.AomName } );
2168
+ if ( clusterExists ) {
2169
+ let data = {
2170
+ storeId: findStore.storeId,
2171
+ store: findStore._id,
2172
+ };
2173
+ let updatecluster = await clusterModel.updateCluster( { clusterName: user.AomName }, { $push: { stores: data } } );
2174
+ console.log( updatecluster );
2175
+ } else {
2176
+ let payload = {
2177
+ 'clusterName': user.AomName,
2178
+ 'clientId': '11',
2179
+ 'description': user.AomName,
2180
+ 'stores': [
2181
+ {
2182
+ storeId: findStore.storeId,
2183
+ store: findStore._id,
2184
+ },
2185
+ ],
2186
+ 'status': 'active',
2187
+ 'Teamlead': [
2188
+ {
2189
+ email: userexits.email,
2190
+ userId: userexits._id,
2191
+ },
2192
+ ],
2193
+ 'users': [],
2194
+ };
2195
+ let createcluster = await clusterModel.createclusterModel( payload );
2196
+ console.log( createcluster );
2197
+ }
2198
+ }
2199
+ }
2200
+ }
2201
+ res.sendSuccess( 'completed' );
2202
+ } catch ( error ) {
2203
+ logger.error( 'duplicateTask =>', error );
2204
+ return res.sendError( error, 500 );
2205
+ }
2206
+ }
2160
2207
  export async function createAiChecklist( req, res ) {
2161
2208
  try {
2162
2209
  let inputBody = req.body;
@@ -2309,17 +2356,230 @@ export async function createAiChecklist( req, res ) {
2309
2356
  return res.sendError( e, 500 );
2310
2357
  }
2311
2358
  }
2359
+ export async function createAiTaskNew( req, res ) {
2360
+ try {
2361
+ let inputBody = req.body;
2362
+ console.log( inputBody );
2363
+ inputBody.clientId = 11;
2364
+ inputBody.taskDescription = '';
2365
+ let userId;
2366
+ let storeDetails = await storeService.findOne( { storeName: inputBody.storeName, clientId: inputBody.clientId, status: 'active' }, { storeId: 1, storeName: 1, storeProfile: 1 } );
2367
+ if ( !storeDetails ) {
2368
+ return res.sendError( 'Store Not Found', 500 );
2369
+ }
2370
+ console.log( storeDetails );
2371
+ let url = JSON.parse( process.env.LAMBDAURL );
2372
+ let checklistId = url.dailystoreChecklistId;
2373
+ let finduser = await checklistassignconfigModel.findOne( { checkListId: new mongoose.Types.ObjectId( checklistId ), store_id: storeDetails.storeId } );
2374
+ console.log( finduser );
2375
+ if ( !finduser ) {
2376
+ return res.sendError( 'No user Found For this store', 500 );
2377
+ }
2378
+ userId = finduser.userId;
2379
+ inputBody.userName = finduser.userName;
2380
+ inputBody.userEmail = finduser.userEmail;
2381
+
2382
+
2383
+ let teamList = await findteams( { users: { $elemMatch: { email: finduser.userEmail } } } );
2384
+ console.log( teamList );
2385
+ inputBody.approver = '';
2386
+ for ( let team of teamList ) {
2387
+ for ( let user of team.Teamlead ) {
2388
+ inputBody.approver = user.email + ',' + inputBody.approver;
2389
+ }
2390
+ }
2391
+ inputBody.approver = inputBody.approver.replace( /,$/, '' );
2392
+ console.log( inputBody?.approver );
2393
+ // return;
2394
+
2395
+
2396
+ // let title = `New Task Alert ${inputBody.taskName}-${storeDetails.storeName}-${dayjs().format( 'YYYY-MM-DD' )}`;
2397
+ let time = inputBody?.scheduleEndTime || '11:59 PM';
2398
+ let date = inputBody?.scheduleDate || dayjs().format( 'YYYY-MM-DD' );
2399
+ // let description = `A new task has been assigned to ${storeDetails.storeName}. Please complete it before the due date of ${date}.`;
2400
+ // if ( userDetails&&userDetails.fcmToken ) {
2401
+ // const fcmToken = userDetails.fcmToken;
2402
+ // await sendPushNotification( title, description, fcmToken );
2403
+ // }
2404
+ const inputDateTime = dayjs.utc( `${date} ${time}`, 'YYYY-MM-DD hh:mm A' );
2405
+ const currentTime = dayjs.utc();
2406
+ if ( inputDateTime.isBefore( currentTime ) ) {
2407
+ return res.sendError( 'The input date-time is before the current time.', 500 );
2408
+ }
2409
+
2410
+ let approverList = inputBody?.approver.split( ',' );
2411
+ console.log( approverList );
2412
+
2413
+ let userAdmin = await userService.find( { clientId: inputBody.clientId, email: { $in: approverList }, userType: 'client', isActive: true }, { name: '$userName', email: 1 } );
2414
+ console.log( userAdmin );
2415
+ if ( userAdmin && userAdmin.length === 0 ) {
2416
+ userAdmin = await userService.find( { clientId: inputBody.clientId, email: 'rohit.chawla@lenskart.com', userType: 'client', isActive: true }, { name: '$userName', email: 1 } );
2417
+ }
2418
+
2419
+ let creator = await userService.find( { clientId: inputBody.clientId, email: 'rohit.chawla@lenskart.com', userType: 'client', isActive: true } );
2420
+ if ( creator && creator.length === 0 ) {
2421
+ return res.sendError( 'Invalid Creator Details', 500 );
2422
+ }
2423
+ if ( req.files && req.files.referenceImage && req.files.referenceImage.length > 3 ) {
2424
+ return res.sendError( 'Maximum 3 referenceImage only allowed', 500 );
2425
+ }
2426
+
2427
+ let data = {
2428
+ checkListName: `${inputBody.taskName}-${storeDetails.storeName}-${dayjs().format( 'YYYY-MM-DD' )}`,
2429
+ checkListDescription: inputBody.taskDescription,
2430
+ createdBy: creator[0]._id,
2431
+ createdByName: creator[0].userName,
2432
+ publish: true,
2433
+ questionCount: 1,
2434
+ storeCount: 1,
2435
+ scheduleDate: date,
2436
+ scheduleEndTime: time,
2437
+ scheduleEndTimeISO: dayjs.utc( `${date} ${time}`, 'YYYY-MM-DD hh:mm A' ).format(),
2438
+ priorityType: 'high',
2439
+ client_id: inputBody.clientId,
2440
+ checkListType: 'task',
2441
+ publishDate: new Date(),
2442
+ locationCount: 1,
2443
+ ...( inputBody?.checkListId ) ? { referenceCheckListId: inputBody?.checkListId } : {},
2444
+ };
2445
+
2446
+
2447
+ data['approver'] = userAdmin;
2448
+ console.log( data );
2449
+
2450
+ let answer = await findAnswer( inputBody?.answerType );
2451
+ if ( answer.length == 0 ) {
2452
+ return res.sendError( 'please enter Valid AnswerType', 500 );
2453
+ }
2454
+ if ( inputBody?.answerType === 'multiplechoicesingle' || inputBody?.answerType === 'multiplechoicemultiple' ) {
2455
+ console.log( inputBody?.options );
2456
+ if ( inputBody?.options && inputBody?.options.length > 0 ) {
2457
+ let optionsResult = [];
2458
+ let optionList = inputBody?.options.split( ',' );
2459
+ for ( let option of optionList ) {
2460
+ let optiondata = {
2461
+ 'answer': '',
2462
+ 'sopFlag': false,
2463
+ 'validation': false,
2464
+ 'validationType': '',
2465
+ 'referenceImage': [],
2466
+ 'runAI': false,
2467
+ 'allowUploadfromGallery': false,
2468
+ 'descriptivetype': '',
2469
+ 'showLinked': false,
2470
+ 'linkedQuestion': 0,
2471
+ 'nestedQuestion': [],
2472
+ };
2473
+ optiondata.answer = option;
2474
+ optionsResult.push( optiondata );
2475
+ }
2476
+ answer = optionsResult;
2477
+ } else {
2478
+ return res.sendError( 'please enter Valid Options', 500 );
2479
+ }
2480
+ }
2481
+
2482
+
2483
+ let response = await taskService.create( data );
2484
+ if ( response?.approver.length ) {
2485
+ let inputData = [];
2486
+ response?.approver.forEach( ( ele ) => {
2487
+ console.log( data );
2488
+ inputData.push( {
2489
+ userEmail: ele.email,
2490
+ checkListId: response._id,
2491
+ type: 'task',
2492
+ client_id: inputBody.clientId,
2493
+ checkListName: data?.checkListName || '',
2494
+ } );
2495
+ } );
2496
+ console.log( inputData );
2497
+ await traxApprover.insertMany( inputData );
2498
+ }
2499
+
2500
+ if ( response?._id ) {
2501
+ let question = [
2502
+ {
2503
+ 'qno': 1,
2504
+ 'qname': inputBody.question,
2505
+ 'answerType': inputBody?.answerType || 'yes/no',
2506
+ 'runAI': false,
2507
+ 'runAIDescription': '',
2508
+ 'allowUploadfromGallery': false,
2509
+ 'linkType': false,
2510
+ 'questionReferenceImage': [],
2511
+ 'answers': answer,
2512
+ 'descriptivetype': 'text',
2513
+ },
2514
+ ];
2515
+
2516
+
2517
+ if ( req.files && req.files.referenceImage && req.files.referenceImage.length ) {
2518
+ let images = [];
2519
+ console.log( req.files.referenceImage.length );
2520
+
2521
+
2522
+ for ( let image of req.files.referenceImage ) {
2523
+ let uplaodedImage = await uploadmultiImage( image );
2524
+ let imgUrl = decodeURIComponent( uplaodedImage.imgUrl.split( '?' )[0] );
2525
+ let url = imgUrl.split( '/' );
2526
+ if ( url.includes( 'https:' ) || url.includes( 'http:' ) ) {
2527
+ url.splice( 0, 3 );
2528
+ }
2529
+ images.push( url.join( '/' ) );
2530
+ }
2531
+ question[0].questionReferenceImage = images;
2532
+ }
2533
+ if ( inputBody?.answerType === 'image' || inputBody?.answerType === 'descriptiveImage' || inputBody?.answerType === 'multipleImage' ) {
2534
+ answer[0].referenceImage = question[0].questionReferenceImage;
2535
+ }
2536
+
2537
+
2538
+ question = {
2539
+ checkListId: response?._id,
2540
+ question: question,
2541
+ section: 'Section 1',
2542
+ checkList: data.checkListName,
2543
+ client_id: inputBody.clientId,
2544
+ };
2545
+ await taskQuestionService.create( question );
2546
+
2547
+ let userDetails = {
2548
+ userName: inputBody.userName,
2549
+ userEmail: inputBody.userEmail,
2550
+ store_id: storeDetails.storeId,
2551
+ storeName: storeDetails.storeName,
2552
+ city: storeDetails?.storeProfile?.city,
2553
+ checkFlag: true,
2554
+ checkListId: response?._id,
2555
+ checkListName: data.checkListName,
2556
+ client_id: inputBody.clientId,
2557
+ userId: userId,
2558
+ };
2559
+ console.log( userDetails );
2560
+ await taskAssignService.create( userDetails );
2561
+ await insertSingleProcessData( response?._id );
2562
+ return res.sendSuccess( 'Task created successfully' );
2563
+ }
2564
+ } catch ( e ) {
2565
+ logger.error( { function: 'createAiTaskNew', error: e } );
2566
+ return res.sendError( e, 500 );
2567
+ }
2568
+ }
2312
2569
  export async function createAiTask( req, res ) {
2313
2570
  try {
2314
2571
  let inputBody = req.body;
2315
- inputBody.clientId= 11;
2572
+ inputBody.clientId = 11;
2316
2573
  inputBody.taskDescription = '';
2317
2574
  let userId;
2318
- let storeDetails = await storeService.findOne( { storeName: inputBody.storeName, status: 'active' }, { storeId: 1, storeName: 1, storeProfile: 1 } );
2575
+ let storeDetails = await storeService.findOne( { storeName: inputBody.storeName, clientId: inputBody.clientId, status: 'active' }, { storeId: 1, storeName: 1, storeProfile: 1 } );
2319
2576
  if ( !storeDetails ) {
2320
2577
  return res.sendError( 'Store Not Found', 500 );
2321
2578
  }
2322
- let finduser= await checklistassignconfigModel.findOne( { checkListId: new mongoose.Types.ObjectId( '66b06fe789807eafd9e9c0f9' ), store_id: storeDetails.storeId } );
2579
+ console.log( storeDetails );
2580
+ let url = JSON.parse( process.env.LAMBDAURL );
2581
+ let checklistId = url.dailystoreChecklistId;
2582
+ let finduser = await checklistassignconfigModel.findOne( { checkListId: new mongoose.Types.ObjectId( checklistId ), store_id: storeDetails.storeId } );
2323
2583
  console.log( finduser );
2324
2584
  if ( !finduser ) {
2325
2585
  return res.sendError( 'No user Found For this store', 500 );
@@ -2328,6 +2588,7 @@ export async function createAiTask( req, res ) {
2328
2588
  inputBody.userName = finduser.userName;
2329
2589
  inputBody.userEmail = finduser.userEmail;
2330
2590
 
2591
+
2331
2592
  // let title = `New Task Alert ${inputBody.taskName}-${storeDetails.storeName}-${dayjs().format( 'YYYY-MM-DD' )}`;
2332
2593
  let time = inputBody?.scheduleEndTime || '11:59 PM';
2333
2594
  let date = inputBody?.scheduleDate || dayjs().format( 'YYYY-MM-DD' );
@@ -2347,15 +2608,15 @@ export async function createAiTask( req, res ) {
2347
2608
 
2348
2609
  let userAdmin = await userService.find( { clientId: inputBody.clientId, email: { $in: approverList }, userType: 'client', isActive: true }, { name: '$userName', email: 1 } );
2349
2610
  console.log( userAdmin );
2350
- if ( userAdmin&&userAdmin.length===0 ) {
2611
+ if ( userAdmin && userAdmin.length === 0 ) {
2351
2612
  return res.sendError( 'Invalid Approver Details', 500 );
2352
2613
  }
2353
2614
 
2354
2615
  let creator = await userService.find( { clientId: inputBody.clientId, email: { $in: inputBody.creator }, userType: 'client', isActive: true } );
2355
- if ( creator&&creator.length===0 ) {
2616
+ if ( creator && creator.length === 0 ) {
2356
2617
  return res.sendError( 'Invalid Creator Details', 500 );
2357
2618
  }
2358
- if ( req.files&&req.files.referenceImage&& req.files.referenceImage.length>3 ) {
2619
+ if ( req.files && req.files.referenceImage && req.files.referenceImage.length > 3 ) {
2359
2620
  return res.sendError( 'Maximum 3 referenceImage only allowed', 500 );
2360
2621
  }
2361
2622
 
@@ -2383,12 +2644,12 @@ export async function createAiTask( req, res ) {
2383
2644
  console.log( data );
2384
2645
 
2385
2646
  let answer = await findAnswer( inputBody?.answerType );
2386
- if ( answer.length==0 ) {
2647
+ if ( answer.length == 0 ) {
2387
2648
  return res.sendError( 'please enter Valid AnswerType', 500 );
2388
2649
  }
2389
- if ( inputBody?.answerType === 'multiplechoicesingle'||inputBody?.answerType === 'multiplechoicemultiple' ) {
2650
+ if ( inputBody?.answerType === 'multiplechoicesingle' || inputBody?.answerType === 'multiplechoicemultiple' ) {
2390
2651
  console.log( inputBody?.options );
2391
- if ( inputBody?.options&& inputBody?.options.length>0 ) {
2652
+ if ( inputBody?.options && inputBody?.options.length > 0 ) {
2392
2653
  let optionsResult = [];
2393
2654
  let optionList = inputBody?.options.split( ',' );
2394
2655
  for ( let option of optionList ) {
@@ -2408,7 +2669,7 @@ export async function createAiTask( req, res ) {
2408
2669
  optiondata.answer = option;
2409
2670
  optionsResult.push( optiondata );
2410
2671
  }
2411
- answer =optionsResult;
2672
+ answer = optionsResult;
2412
2673
  } else {
2413
2674
  return res.sendError( 'please enter Valid Options', 500 );
2414
2675
  }
@@ -2449,13 +2710,13 @@ export async function createAiTask( req, res ) {
2449
2710
  ];
2450
2711
 
2451
2712
 
2452
- if ( req.files&& req.files.referenceImage&&req.files.referenceImage.length ) {
2713
+ if ( req.files && req.files.referenceImage && req.files.referenceImage.length ) {
2453
2714
  let images = [];
2454
2715
  console.log( req.files.referenceImage.length );
2455
2716
 
2456
2717
 
2457
2718
  for ( let image of req.files.referenceImage ) {
2458
- let uplaodedImage =await uploadmultiImage( image );
2719
+ let uplaodedImage = await uploadmultiImage( image );
2459
2720
  let imgUrl = decodeURIComponent( uplaodedImage.imgUrl.split( '?' )[0] );
2460
2721
  let url = imgUrl.split( '/' );
2461
2722
  if ( url.includes( 'https:' ) || url.includes( 'http:' ) ) {
@@ -2465,7 +2726,7 @@ export async function createAiTask( req, res ) {
2465
2726
  }
2466
2727
  question[0].questionReferenceImage = images;
2467
2728
  }
2468
- if ( inputBody?.answerType === 'image'||inputBody?.answerType === 'descriptiveImage'||inputBody?.answerType === 'multipleImage' ) {
2729
+ if ( inputBody?.answerType === 'image' || inputBody?.answerType === 'descriptiveImage' || inputBody?.answerType === 'multipleImage' ) {
2469
2730
  answer[0].referenceImage = question[0].questionReferenceImage;
2470
2731
  }
2471
2732
 
@@ -2497,12 +2758,11 @@ export async function createAiTask( req, res ) {
2497
2758
  return res.sendSuccess( 'Task created successfully' );
2498
2759
  }
2499
2760
  } catch ( e ) {
2500
- logger.error( { function: createAiChecklist, error: e } );
2761
+ logger.error( { function: 'createAiChecklist', error: e } );
2501
2762
  return res.sendError( e, 500 );
2502
2763
  }
2503
2764
  }
2504
2765
 
2505
-
2506
2766
  async function findAnswer( type ) {
2507
2767
  let answer = [];
2508
2768
 
@@ -7,13 +7,25 @@ export const aitaskvalidationSchema = Joi.object().keys( {
7
7
  question: Joi.string().required(),
8
8
  answerType: Joi.string().required(),
9
9
  approver: Joi.string().required(),
10
+ creator: Joi.string().required(),
10
11
  options: Joi.string().optional(),
11
12
  scheduleDate: Joi.string().optional(),
12
13
  scheduleEndTime: Joi.string().optional(),
13
- creator: Joi.string().optional(),
14
-
14
+ } );
15
+ export const aitaskvalidationSchemanew = Joi.object().keys( {
16
+ storeName: Joi.string().required(),
17
+ taskName: Joi.string().required(),
18
+ question: Joi.string().required(),
19
+ answerType: Joi.string().required(),
20
+ options: Joi.string().optional(),
21
+ scheduleDate: Joi.string().optional(),
22
+ scheduleEndTime: Joi.string().optional(),
23
+ referenceImage: Joi.string().optional(),
15
24
  } );
16
25
 
17
26
  export const aitaskvalidation = {
18
27
  body: aitaskvalidationSchema,
19
28
  };
29
+ export const aitaskvalidationNew = {
30
+ body: aitaskvalidationSchemanew,
31
+ };
@@ -2,7 +2,7 @@
2
2
  import * as taskController from '../controllers/task.controller.js';
3
3
  import { isAllowedSessionHandler, validate, accessVerification, isAllowedClient, isAllowedInternalAPIHandler } from 'tango-app-api-middleware';
4
4
  import express from 'express';
5
- import { aitaskvalidation } from '../dtos/task.dto.js';
5
+ import { aitaskvalidation, aitaskvalidationNew } from '../dtos/task.dto.js';
6
6
  export const taskRouter = express.Router();
7
7
 
8
8
  taskRouter
@@ -26,8 +26,10 @@ taskRouter
26
26
  .put( '/publish', isAllowedSessionHandler, isAllowedClient, accessVerification( { userType: [ 'tango', 'client' ], access: [ { featureName: 'TangoTrax', name: 'Task', permissions: [ 'isEdit' ] } ] } ), taskController.updatePublish )
27
27
  .get( '/duplicateTask/:checklistId', isAllowedSessionHandler, isAllowedClient, accessVerification( { userType: [ 'tango', 'client' ], access: [ { featureName: 'TangoTrax', name: 'Task', permissions: [ 'isEdit' ] } ] } ), taskController.duplicateChecklist )
28
28
  .get( '/teamMigrations', taskController.teamMigrations )
29
+ .get( '/clusterMigrations', taskController.clusterMigrations )
29
30
  .post( '/createaiChecklist', isAllowedInternalAPIHandler, taskController.createAiChecklist )
30
31
  .post( '/createaiTask', isAllowedInternalAPIHandler, validate( aitaskvalidation ), taskController.createAiTask )
32
+ .post( '/createAiTaskNew', isAllowedInternalAPIHandler, validate( aitaskvalidationNew ), taskController.createAiTaskNew )
31
33
  .get( '/getcoustemer', taskController.customertrial );
32
34
 
33
35
 
@@ -0,0 +1,31 @@
1
+ import clusterModel from 'tango-api-schema/schema/cluster.model.js';
2
+
3
+ export async function updateOneCluster( query, record ) {
4
+ return await clusterModel.updateOne( query, { $set: record } );
5
+ };
6
+
7
+ export async function updateCluster( query, record ) {
8
+ return await clusterModel.updateMany( query, record );
9
+ };
10
+
11
+ export async function aggregateCluster( query ) {
12
+ return await clusterModel.aggregate( query );
13
+ };
14
+
15
+ export async function findOneCluster( query ={}, field={} ) {
16
+ return await clusterModel.findOne( query, field );
17
+ };
18
+ export async function deleteCluster( query ={} ) {
19
+ return await clusterModel.deleteOne( query );
20
+ };
21
+
22
+ export async function createclusterModel( data ) {
23
+ return await clusterModel.create( data );
24
+ };
25
+
26
+ export async function findcluster( query, project ) {
27
+ return await clusterModel.find( query, project );
28
+ };
29
+ export function countDocumentsClusters( query ) {
30
+ return clusterModel.countDocuments( query );
31
+ }
@@ -19,6 +19,8 @@ export async function findOneTeams( query ={}, field={} ) {
19
19
  return await teamsModel.findOne( query, field );
20
20
  };
21
21
  export async function findteams( query ={}, field={} ) {
22
+ console.log( query );
23
+
22
24
  return await teamsModel.find( query, field );
23
25
  };
24
26