tango-app-api-client 3.3.3-beta.6 → 3.3.3-beta.8
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-client",
|
|
3
|
-
"version": "3.3.3-beta.
|
|
3
|
+
"version": "3.3.3-beta.8",
|
|
4
4
|
"description": "client",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"nodemon": "^3.0.3",
|
|
28
28
|
"npm": "^10.9.1",
|
|
29
29
|
"swagger-ui-express": "^5.0.0",
|
|
30
|
-
"tango-api-schema": "^2.2.
|
|
30
|
+
"tango-api-schema": "^2.2.42",
|
|
31
31
|
"tango-app-api-middleware": "3.1.43-alpha.10",
|
|
32
32
|
"winston": "^3.11.0",
|
|
33
33
|
"winston-daily-rotate-file": "^5.0.0"
|
|
@@ -396,7 +396,7 @@ export async function changeStatus( req, res, next ) {
|
|
|
396
396
|
|
|
397
397
|
export async function getClients( req, res ) {
|
|
398
398
|
try {
|
|
399
|
-
const field = { clientName: 1, clientId: 1, traxDateRange: '$featureConfigs.traxDateRange' };
|
|
399
|
+
const field = { clientName: 1, clientId: 1, traxDateRange: '$featureConfigs.traxDateRange', trafficDateRange: '$featureConfigs.trafficDateRange' };
|
|
400
400
|
let result = [];
|
|
401
401
|
if ( req?.user?.role === 'superadmin' ) {
|
|
402
402
|
result = await findClient( {}, field );
|
|
@@ -2015,7 +2015,7 @@ export async function getActivityLogs( req, res ) {
|
|
|
2015
2015
|
const query = {
|
|
2016
2016
|
'_source': [
|
|
2017
2017
|
'userId', 'userName', 'email', 'date', 'logType', 'logSubType',
|
|
2018
|
-
'changes', 'eventType',
|
|
2018
|
+
'changes', 'eventType', 'previous', 'current',
|
|
2019
2019
|
],
|
|
2020
2020
|
'query': {
|
|
2021
2021
|
'bool': {
|
|
@@ -2072,9 +2072,36 @@ export async function getActivityLogs( req, res ) {
|
|
|
2072
2072
|
|
|
2073
2073
|
const hits = logs?.body?.hits?.hits;
|
|
2074
2074
|
const totalDocuments = logs?.body?.hits?.total?.value;
|
|
2075
|
+
let temp = [];
|
|
2075
2076
|
if ( totalDocuments ) {
|
|
2076
|
-
|
|
2077
|
-
|
|
2077
|
+
hits.map( ( hit, i ) => {
|
|
2078
|
+
temp.push( hit?._source );
|
|
2079
|
+
if ( ( ( hit?._source?.eventType ).match( /update/ ) || ( hit?._source?.eventType ).match( /edit/ ) )&& hit?._source?.previous ) {
|
|
2080
|
+
const previous = removeIndexedKeysAndFlatten( hit?._source?.previous );
|
|
2081
|
+
const current=removeIndexedKeysAndFlatten( hit?._source?.current );
|
|
2082
|
+
delete previous?._id;
|
|
2083
|
+
delete current?._id;
|
|
2084
|
+
delete previous?.updatedAt;
|
|
2085
|
+
delete current?.updatedAt;
|
|
2086
|
+
delete current?.createdAt;
|
|
2087
|
+
|
|
2088
|
+
logger.info( { previous2: hit?._source?.previous, previous: previous, current: hit?._source?.current, current: current } );
|
|
2089
|
+
const diff = Object.entries( current )
|
|
2090
|
+
.reduce( ( acc, [ key, value ] ) => {
|
|
2091
|
+
if ( value !== previous[key] & typeof previous[key] === 'string' ) {
|
|
2092
|
+
acc[key] = { previous: previous[key], current: value };
|
|
2093
|
+
}
|
|
2094
|
+
|
|
2095
|
+
return acc;
|
|
2096
|
+
}, {} );
|
|
2097
|
+
logger.info( { diff: diff } );
|
|
2098
|
+
temp[i].updatedValue = diff;
|
|
2099
|
+
} else {
|
|
2100
|
+
temp.push( hit?._source );
|
|
2101
|
+
}
|
|
2102
|
+
},
|
|
2103
|
+
);
|
|
2104
|
+
res.sendSuccess( { data: temp, count: totalDocuments } );
|
|
2078
2105
|
} else {
|
|
2079
2106
|
res.sendError( 'No data found', 204 );
|
|
2080
2107
|
}
|
|
@@ -2083,6 +2110,24 @@ export async function getActivityLogs( req, res ) {
|
|
|
2083
2110
|
return res.sendError( 'Internal Server Error', 500 );
|
|
2084
2111
|
}
|
|
2085
2112
|
}
|
|
2113
|
+
function removeIndexedKeysAndFlatten( obj ) {
|
|
2114
|
+
const result = {};
|
|
2115
|
+
|
|
2116
|
+
for ( const [ key, value ] of Object.entries( obj ) ) {
|
|
2117
|
+
// Skip numeric keys and preserve arrays intact
|
|
2118
|
+
if ( /^\d+$/.test( key ) ) continue;
|
|
2119
|
+
|
|
2120
|
+
if ( Array.isArray( value ) ) {
|
|
2121
|
+
result[key] = value;
|
|
2122
|
+
} else if ( typeof value === 'object' && value !== null ) {
|
|
2123
|
+
Object.assign( result, removeIndexedKeysAndFlatten( value ) );
|
|
2124
|
+
} else {
|
|
2125
|
+
result[key] = value;
|
|
2126
|
+
}
|
|
2127
|
+
}
|
|
2128
|
+
|
|
2129
|
+
return result;
|
|
2130
|
+
}
|
|
2086
2131
|
|
|
2087
2132
|
|
|
2088
2133
|
async function postApi( url, data ) {
|