@bytebrand/export-cars 1.21.72 → 1.21.74
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/dist/transformers/santander.transformer.d.ts +3 -0
- package/dist/transformers/santander.transformer.js +47 -5
- package/dist/transformers/santander.transformer.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/transformers/santander.transformer.ts +62 -6
package/package.json
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { get, isEmpty, isNil, set, toString, upperFirst } from 'lodash';
|
|
1
|
+
import { get, isEmpty, isNil, isNumber, set, toString, upperFirst } from 'lodash';
|
|
2
2
|
|
|
3
3
|
import { Injectable } from '@nestjs/common';
|
|
4
4
|
|
|
@@ -49,8 +49,22 @@ export class SantanderTransformer {
|
|
|
49
49
|
this.currentCar = carData;
|
|
50
50
|
const transformedCarData = {};
|
|
51
51
|
const rules = await this.mappingService.getRules();
|
|
52
|
-
|
|
52
|
+
|
|
53
|
+
const isNew =
|
|
54
|
+
(!carData.mainData.firstRegistration || this.monthDiffLess(carData, 8)) &&
|
|
55
|
+
(!carData.mainData.mileage || carData.mainData.mileage < 1000);
|
|
56
|
+
if (isNew) {
|
|
57
|
+
console.log('carData', carData._id);
|
|
58
|
+
console.log('rules', JSON.stringify(rules));
|
|
59
|
+
}
|
|
60
|
+
|
|
53
61
|
for (const rule of rules) {
|
|
62
|
+
const importFieldNumber = Number(rule.importField.match(/\d+/)[0]);
|
|
63
|
+
|
|
64
|
+
if (!isNew && this.checkFieldsOnlyForNew(importFieldNumber)) {
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
|
|
54
68
|
if (rule.custom === 'yes') {
|
|
55
69
|
const transformedField = await this.customTransformers(rule, carData, images);
|
|
56
70
|
if (transformedField) {
|
|
@@ -62,10 +76,12 @@ export class SantanderTransformer {
|
|
|
62
76
|
set(transformedCarData, `${rule.importField}`, await this.customTransformers(rule, carData, images));
|
|
63
77
|
} else {
|
|
64
78
|
if (!isNil(fieldValue) || ["['8']"].includes(rule.importField)) {
|
|
65
|
-
|
|
79
|
+
if (!this.checkFieldsOnlyForNew(importFieldNumber)) {
|
|
80
|
+
const transformedField = await this.transformField(fieldValue, rule);
|
|
66
81
|
|
|
67
|
-
|
|
68
|
-
|
|
82
|
+
if (!isNil(transformedField)) {
|
|
83
|
+
set(transformedCarData, `${rule.importField}`, transformedField);
|
|
84
|
+
}
|
|
69
85
|
}
|
|
70
86
|
}
|
|
71
87
|
}
|
|
@@ -83,6 +99,15 @@ export class SantanderTransformer {
|
|
|
83
99
|
return transformedCarData;
|
|
84
100
|
}
|
|
85
101
|
|
|
102
|
+
private async checkFieldsOnlyForNew(importFieldNumber: number) {
|
|
103
|
+
const fieldsOnlyForNewCar = new Set<number>([
|
|
104
|
+
336, 337, 338, 339, 313, 320, 405, 468, 469, 470, 471, 472, 473, 474, 475,
|
|
105
|
+
513, 514, 515, 516, 517, 520, 521, 522, 523, 524, 525, 526, 527
|
|
106
|
+
]);
|
|
107
|
+
|
|
108
|
+
return fieldsOnlyForNewCar.has(importFieldNumber);
|
|
109
|
+
}
|
|
110
|
+
|
|
86
111
|
private async transformField(fieldValue: any, rule: MappingRules): Promise<string | void> {
|
|
87
112
|
const transformProcedureName = `${rule.autodeFieldType}To${upperFirst(rule.importFieldType)}`;
|
|
88
113
|
|
|
@@ -136,11 +161,42 @@ export class SantanderTransformer {
|
|
|
136
161
|
return this.selectorToCategoryOrClass_selector(fieldValue);
|
|
137
162
|
}
|
|
138
163
|
default:
|
|
139
|
-
LoggerService.log(
|
|
164
|
+
LoggerService.log(
|
|
165
|
+
`missing transform: ${transformProcedureName} - ${fieldValue} - [${rule.importField}] - ${rule.autodeField}`);
|
|
140
166
|
break;
|
|
141
167
|
}
|
|
142
168
|
}
|
|
143
169
|
|
|
170
|
+
private monthDiffLess(car: DataSchemes.Car, month: number) {
|
|
171
|
+
const fieldDate = new Date(this.convertToSeconds(car.mainData.firstRegistration)).getTime();
|
|
172
|
+
const conditionDate = new Date().getTime();
|
|
173
|
+
if (!isNumber(fieldDate)) {
|
|
174
|
+
return false;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
const monthsDifference = (fieldDate - conditionDate) / (1000 * 60 * 60 * 24 * 30);
|
|
178
|
+
|
|
179
|
+
return Math.round(Math.abs(monthsDifference)) <= month;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
private convertToSeconds(fieldValue: string | number | Date | null): any {
|
|
183
|
+
if (fieldValue === null) {
|
|
184
|
+
return null;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
let timestamp = 0;
|
|
188
|
+
|
|
189
|
+
if (typeof fieldValue === 'number') {
|
|
190
|
+
if (fieldValue > 1e12) {
|
|
191
|
+
timestamp = fieldValue;
|
|
192
|
+
} else {
|
|
193
|
+
timestamp = fieldValue * 1000;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
return Math.floor(timestamp);
|
|
198
|
+
}
|
|
199
|
+
|
|
144
200
|
private async offerStringToString(): Promise<string> {
|
|
145
201
|
const dealerId = get(this.currentCar, 'metaData.ownerId');
|
|
146
202
|
const descriptionSchema = await this.userService.getDefaultSummaryByDealerId(dealerId);
|