@bytebrand/export-cars 1.21.73 → 1.21.75
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 +46 -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 +60 -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
|
|
|
@@ -50,9 +50,22 @@ export class SantanderTransformer {
|
|
|
50
50
|
const transformedCarData = {};
|
|
51
51
|
const rules = await this.mappingService.getRules();
|
|
52
52
|
|
|
53
|
-
|
|
53
|
+
const isNew =
|
|
54
|
+
(!carData.mainData.firstRegistration || this.monthDiffLess(carData, 8)) &&
|
|
55
|
+
(!carData.mainData.mileage || carData.mainData.mileage < 1000);
|
|
56
|
+
|
|
57
|
+
if (isNew) {
|
|
58
|
+
console.log('carData', carData._id);
|
|
59
|
+
}
|
|
54
60
|
|
|
55
61
|
for (const rule of rules) {
|
|
62
|
+
const importFieldNumber = Number(rule.importField.match(/\d+/)[0]);
|
|
63
|
+
|
|
64
|
+
if (!isNew && this.checkFieldsOnlyForNew(importFieldNumber)) {
|
|
65
|
+
console.log(`NEW - ${rule.importField} - ${importFieldNumber}`);
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
|
|
56
69
|
if (rule.custom === 'yes') {
|
|
57
70
|
const transformedField = await this.customTransformers(rule, carData, images);
|
|
58
71
|
if (transformedField) {
|
|
@@ -64,10 +77,12 @@ export class SantanderTransformer {
|
|
|
64
77
|
set(transformedCarData, `${rule.importField}`, await this.customTransformers(rule, carData, images));
|
|
65
78
|
} else {
|
|
66
79
|
if (!isNil(fieldValue) || ["['8']"].includes(rule.importField)) {
|
|
67
|
-
|
|
80
|
+
if (!this.checkFieldsOnlyForNew(importFieldNumber)) {
|
|
81
|
+
const transformedField = await this.transformField(fieldValue, rule);
|
|
68
82
|
|
|
69
|
-
|
|
70
|
-
|
|
83
|
+
if (!isNil(transformedField)) {
|
|
84
|
+
set(transformedCarData, `${rule.importField}`, transformedField);
|
|
85
|
+
}
|
|
71
86
|
}
|
|
72
87
|
}
|
|
73
88
|
}
|
|
@@ -81,10 +96,19 @@ export class SantanderTransformer {
|
|
|
81
96
|
if (this.configService.config.campaign === 'eauto' && carData.offer.ftpFolder === 'auto_de_eautos') {
|
|
82
97
|
set(transformedCarData, 12, get(carData, 'offer.internalNumber', null));
|
|
83
98
|
}
|
|
84
|
-
|
|
99
|
+
|
|
85
100
|
return transformedCarData;
|
|
86
101
|
}
|
|
87
102
|
|
|
103
|
+
private async checkFieldsOnlyForNew(importFieldNumber: number) {
|
|
104
|
+
const fieldsOnlyForNewCar = new Set<number>([
|
|
105
|
+
336, 337, 338, 339, 313, 320, 405, 468, 469, 470, 471, 472, 473, 474, 475,
|
|
106
|
+
513, 514, 515, 516, 517, 520, 521, 522, 523, 524, 525, 526, 527
|
|
107
|
+
]);
|
|
108
|
+
|
|
109
|
+
return fieldsOnlyForNewCar.has(importFieldNumber);
|
|
110
|
+
}
|
|
111
|
+
|
|
88
112
|
private async transformField(fieldValue: any, rule: MappingRules): Promise<string | void> {
|
|
89
113
|
const transformProcedureName = `${rule.autodeFieldType}To${upperFirst(rule.importFieldType)}`;
|
|
90
114
|
|
|
@@ -144,6 +168,36 @@ export class SantanderTransformer {
|
|
|
144
168
|
}
|
|
145
169
|
}
|
|
146
170
|
|
|
171
|
+
private monthDiffLess(car: DataSchemes.Car, month: number) {
|
|
172
|
+
const fieldDate = new Date(this.convertToSeconds(car.mainData.firstRegistration)).getTime();
|
|
173
|
+
const conditionDate = new Date().getTime();
|
|
174
|
+
if (!isNumber(fieldDate)) {
|
|
175
|
+
return false;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
const monthsDifference = (fieldDate - conditionDate) / (1000 * 60 * 60 * 24 * 30);
|
|
179
|
+
|
|
180
|
+
return Math.round(Math.abs(monthsDifference)) <= month;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
private convertToSeconds(fieldValue: string | number | Date | null): any {
|
|
184
|
+
if (fieldValue === null) {
|
|
185
|
+
return null;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
let timestamp = 0;
|
|
189
|
+
|
|
190
|
+
if (typeof fieldValue === 'number') {
|
|
191
|
+
if (fieldValue > 1e12) {
|
|
192
|
+
timestamp = fieldValue;
|
|
193
|
+
} else {
|
|
194
|
+
timestamp = fieldValue * 1000;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
return Math.floor(timestamp);
|
|
199
|
+
}
|
|
200
|
+
|
|
147
201
|
private async offerStringToString(): Promise<string> {
|
|
148
202
|
const dealerId = get(this.currentCar, 'metaData.ownerId');
|
|
149
203
|
const descriptionSchema = await this.userService.getDefaultSummaryByDealerId(dealerId);
|