tango-app-api-infra 3.0.17 → 3.0.18-dev

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-infra",
3
- "version": "3.0.17",
3
+ "version": "3.0.18-dev",
4
4
  "description": "infra",
5
5
  "main": "index.js",
6
6
  "type": "module",
@@ -18,11 +18,12 @@
18
18
  "dayjs": "^1.11.10",
19
19
  "dotenv": "^16.4.5",
20
20
  "express": "^4.18.3",
21
+ "express-fileupload": "^1.5.0",
21
22
  "handlebars": "^4.7.8",
22
23
  "mongodb": "^6.4.0",
23
24
  "nodemon": "^3.1.0",
24
- "tango-api-schema": "^2.0.49",
25
- "tango-app-api-middleware": "^1.0.29",
25
+ "tango-api-schema": "^2.0.56",
26
+ "tango-app-api-middleware": "^1.0.41-dev",
26
27
  "winston": "^3.12.0",
27
28
  "winston-daily-rotate-file": "^5.0.0"
28
29
  },
@@ -422,7 +422,7 @@ export async function InstallationIssuesTable( req, res ) {
422
422
  }
423
423
  if ( req.body.export ) {
424
424
  const exportdata = [];
425
- infrastoreList.forEach( ( element ) => {
425
+ storesList.forEach( ( element ) => {
426
426
  exportdata.push( {
427
427
  'CLIENT NAME': element.clientName,
428
428
  'STORE ID': element.storeId,
@@ -3,7 +3,7 @@
3
3
  import { createTangoTicket, findOneTangoTicket, updateOneTangoTicket } from '../services/tangoTicket.service.js';
4
4
  import { createinfraReason, findinfraReason } from '../services/infraReason.service.js';
5
5
  import { updateOneStore } from '../services/store.service.js';
6
- import { logger, fileUpload } from 'tango-app-api-middleware';
6
+ import { logger, fileUpload, signedUrl } from 'tango-app-api-middleware';
7
7
  import dayjs from 'dayjs';
8
8
  export async function createTicket( req, res ) {
9
9
  try {
@@ -96,7 +96,7 @@ export async function secondaryReason( req, res ) {
96
96
 
97
97
  export async function updateTicketIssue( req, res ) {
98
98
  try {
99
- let updateTicket = await updateOneTangoTicket( { ticketId: req.body.ticketId }, { 'ticketActivity': req.body.ticketActivity, 'ticketDetails.issueIdentifiedDate': new Date(), 'ticketDetails.issueIdentifiedBy': req.body.issueIdentifiedBy, 'ticketDetails.issueStatus': 'identified' } );
99
+ let updateTicket = await updateOneTangoTicket( { ticketId: req.body.ticketId }, { 'ticketActivity': req.body.ticketActivity, 'ticketDetails.issueIdentifiedDate': new Date(), 'ticketDetails.issueIdentifiedBy': req.body.issueIdentifiedBy, 'ticketDetails.issueStatus': 'identified', 'status': 'inprogress' } );
100
100
  if ( updateTicket ) {
101
101
  res.sendSuccess( 'Ticket Updated Successfully' );
102
102
  }
@@ -108,8 +108,21 @@ export async function updateTicketIssue( req, res ) {
108
108
 
109
109
  export async function viewTicket( req, res ) {
110
110
  try {
111
- let ticket = await findOneTangoTicket( { ticketId: req.body.ticketId }, { ticketId: 1, status: 1, ticketDetails: 1, basicDetails: 1, ticketActivity: 1 } );
112
- if ( ticket ) {
111
+ let ticket = await findOneTangoTicket( { ticketId: req.body.ticketId }, { ticketId: 1, status: 1, ticketDetails: 1, basicDetails: 1, ticketActivity: 1, createdAt: 1, attachments: 1 } );
112
+ if ( ticket.attachments && ticket.attachments.length > 0 ) {
113
+ for ( let index in ticket.attachments ) {
114
+ if ( ticket.attachments.hasOwnProperty( index ) ) {
115
+ let file = ticket.attachments[index];
116
+ let params = {
117
+ Bucket: 'tango-client-sandbox',
118
+ file_path: file.filePath,
119
+ };
120
+ let attachments = await signedUrl( params );
121
+ ticket.attachments[index].signedUrl = attachments;
122
+ }
123
+ }
124
+ res.sendSuccess( ticket );
125
+ } else {
113
126
  res.sendSuccess( ticket );
114
127
  }
115
128
  } catch ( error ) {
@@ -119,7 +132,7 @@ export async function viewTicket( req, res ) {
119
132
  }
120
133
  export async function AlertTicketReply( req, res ) {
121
134
  try {
122
- req.body.ticketActivity = req.body.ticketActivity.filter( ( data ) => data.action !='statusCheck' );
135
+ req.body.ticketActivity = req.body.ticketActivity.filter( ( data ) => data.action != 'statusCheck' );
123
136
  req.body.ticketActivity.push( {
124
137
  actionType: 'statusCheckReply',
125
138
  actionBy: 'Tango',
@@ -139,15 +152,32 @@ export async function AlertTicketReply( req, res ) {
139
152
  }
140
153
  export async function uploadAttachments( req, res ) {
141
154
  try {
142
- let params ={
143
- Bucket: 'tango-brand-info-uat',
144
- key: req.params.ticketId,
145
- fileName: req.files[0].name,
146
-
147
-
148
- };
149
- let response =await fileUpload( params );
150
- res.sendSuccess( response );
155
+ if ( req.files.img && req.files.img.length > 0 ) {
156
+ let attachments = [];
157
+ for ( let singleImg in req.files.img ) {
158
+ if ( req.files.img.hasOwnProperty( singleImg ) ) {
159
+ let params = {
160
+ Bucket: 'tango-client-sandbox',
161
+ Key: req.params.ticketId + '/',
162
+ ContentType: 'multipart/form-data',
163
+ body: req.files.img[singleImg].data,
164
+ fileName: req.files.img[singleImg].name,
165
+ };
166
+ let upload = await fileUpload( params );
167
+ if ( upload ) {
168
+ let getObject = {
169
+ fileName: req.files.img[singleImg].name,
170
+ filePath: req.params.ticketId + '/' + req.files.img[singleImg].name,
171
+ };
172
+ attachments.push( getObject );
173
+ }
174
+ }
175
+ }
176
+ let updateTicket = await updateOneTangoTicket( { ticketId: req.params.ticketId }, { attachments: attachments } );
177
+ if ( updateTicket ) {
178
+ res.sendSuccess( 'Uploaded successfully' );
179
+ }
180
+ }
151
181
  } catch ( error ) {
152
182
  logger.error( { error: error, function: 'uploadAttachments' } );
153
183
  return res.sendError( error, 500 );
@@ -5,6 +5,7 @@ import { findOneUser } from '../services/user.service.js';
5
5
  import { aggregateStore } from '../services/store.service.js';
6
6
 
7
7
  import mongoose from 'mongoose';
8
+ import dayjs from 'dayjs';
8
9
 
9
10
  export async function userTakeTicket( req, res ) {
10
11
  try {
@@ -38,7 +39,6 @@ export async function userTicketList( req, res ) {
38
39
  ],
39
40
  },
40
41
  } ];
41
-
42
42
  if ( req.body.status != 'closed' ) {
43
43
  query.push( {
44
44
  $match: {
@@ -51,9 +51,7 @@ export async function userTicketList( req, res ) {
51
51
  } else {
52
52
  query.push( {
53
53
  $match: {
54
- $and: [
55
- { createdAt: { $gte: new Date() } },
56
- ],
54
+ issueClosedDate: { $gte: new Date( dayjs().format( 'YYYY-MM-DD' ) ) },
57
55
  },
58
56
  } );
59
57
  }
@@ -155,6 +153,8 @@ export async function activeTicketList( req, res ) {
155
153
  }, {
156
154
  $project: {
157
155
  storeId: '$basicDetails.storeId',
156
+ ticketId: 1,
157
+ storeName: '$basicDetails.storeName',
158
158
  address: { $ifNull: [ '$basicDetails.address', '' ] },
159
159
  status: 1,
160
160
  },
@@ -268,9 +268,9 @@ export async function workHistory( req, res ) {
268
268
  storeName: '$basicDetails.storeName',
269
269
  clientId: '$basicDetails.clientId',
270
270
  clientName: '$basicDetails.clientName',
271
- issueDate: { $dateToString: { format: '%d-%m-%Y', date: '$createdAt' } },
272
- issueClosedDate: { $dateToString: { format: '%d-%m-%Y', date: '$issueClosedDate' } },
273
- issueIdentifiedDate: { $dateToString: { format: '%d-%m-%Y', date: '$ticketDetails.issueIdentifiedDate' } },
271
+ issueDate: { $dateToString: { format: '%Y-%m-%d', date: '$createdAt' } },
272
+ issueClosedDate: { $dateToString: { format: '%Y-%m-%d', date: '$issueClosedDate' } },
273
+ issueIdentifiedDate: { $dateToString: { format: '%Y-%m-%d', date: '$ticketDetails.issueIdentifiedDate' } },
274
274
  ticketId: 1,
275
275
  issueStatus: '$ticketDetails.issueStatus',
276
276
  ticketType: '$ticketDetails.ticketType',
@@ -381,7 +381,6 @@ export async function storeInfraList( req, res ) {
381
381
  $match: {
382
382
  $and: [
383
383
  { clientId: { $in: req.body.clientId } },
384
- { createdAt: { $lte: new Date( req.body.toDate ) } },
385
384
  ],
386
385
  },
387
386
  },
@@ -420,6 +419,27 @@ export async function storeInfraList( req, res ) {
420
419
  },
421
420
  } );
422
421
  }
422
+ if ( req.body.country && req.body.country.length > 0 ) {
423
+ query.push( {
424
+ $match: {
425
+ country: { $in: req.body.country },
426
+ },
427
+ } );
428
+ }
429
+ if ( req.body.state && req.body.state.length > 0 ) {
430
+ query.push( {
431
+ $match: {
432
+ state: { $in: req.body.state },
433
+ },
434
+ } );
435
+ }
436
+ if ( req.body.city && req.body.city.length > 0 ) {
437
+ query.push( {
438
+ $match: {
439
+ city: { $in: req.body.city },
440
+ },
441
+ } );
442
+ }
423
443
  if ( req.body.searchValue && req.body.searchValue !== '' ) {
424
444
  query.push( {
425
445
  $match: {