@bytebrand/export-cars 0.0.2 → 1.0.6

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.
Files changed (335) hide show
  1. package/.editorconfig +8 -0
  2. package/.eslintignore +1 -0
  3. package/.eslintrc.js +24 -0
  4. package/.prettierrc.js +7 -0
  5. package/README.md +67 -0
  6. package/dist/app.module.d.ts +2 -0
  7. package/dist/app.module.js +47 -0
  8. package/dist/app.module.js.map +1 -0
  9. package/dist/config/as24.config.d.ts +5 -0
  10. package/dist/config/as24.config.js +13 -0
  11. package/dist/config/as24.config.js.map +1 -0
  12. package/dist/config/auto24.config.d.ts +6 -0
  13. package/dist/config/auto24.config.js +31 -0
  14. package/dist/config/auto24.config.js.map +1 -0
  15. package/dist/config/autoboerse.config.d.ts +5 -0
  16. package/dist/config/autoboerse.config.js +15 -0
  17. package/dist/config/autoboerse.config.js.map +1 -0
  18. package/dist/config/autouncle.config.d.ts +5 -0
  19. package/dist/config/autouncle.config.js +14 -0
  20. package/dist/config/autouncle.config.js.map +1 -0
  21. package/dist/config/by-owner.config.d.ts +5 -0
  22. package/dist/config/by-owner.config.js +14 -0
  23. package/dist/config/by-owner.config.js.map +1 -0
  24. package/dist/config/config.d.ts +57 -0
  25. package/dist/config/config.js +78 -0
  26. package/dist/config/config.js.map +1 -0
  27. package/dist/config/eauto.config.d.ts +5 -0
  28. package/dist/config/eauto.config.js +15 -0
  29. package/dist/config/eauto.config.js.map +1 -0
  30. package/dist/config/fb.config.d.ts +5 -0
  31. package/dist/config/fb.config.js +14 -0
  32. package/dist/config/fb.config.js.map +1 -0
  33. package/dist/config/google.config.d.ts +5 -0
  34. package/dist/config/google.config.js +13 -0
  35. package/dist/config/google.config.js.map +1 -0
  36. package/dist/config/marktde.config.d.ts +5 -0
  37. package/dist/config/marktde.config.js +14 -0
  38. package/dist/config/marktde.config.js.map +1 -0
  39. package/dist/config/meinstadt.config.d.ts +5 -0
  40. package/dist/config/meinstadt.config.js +14 -0
  41. package/dist/config/meinstadt.config.js.map +1 -0
  42. package/dist/config/ooyyo.config.d.ts +5 -0
  43. package/dist/config/ooyyo.config.js +14 -0
  44. package/dist/config/ooyyo.config.js.map +1 -0
  45. package/dist/config/yescar.config.d.ts +5 -0
  46. package/dist/config/yescar.config.js +14 -0
  47. package/dist/config/yescar.config.js.map +1 -0
  48. package/dist/constants/autouncle.contants.d.ts +4 -0
  49. package/dist/constants/autouncle.contants.js +8 -0
  50. package/dist/constants/autouncle.contants.js.map +1 -0
  51. package/dist/constants/fb.constants.d.ts +7 -0
  52. package/dist/constants/fb.constants.js +11 -0
  53. package/dist/constants/fb.constants.js.map +1 -0
  54. package/dist/constants/rule-input.contants.d.ts +3 -0
  55. package/dist/constants/rule-input.contants.js +7 -0
  56. package/dist/constants/rule-input.contants.js.map +1 -0
  57. package/dist/enums/environment.enum.d.ts +5 -0
  58. package/dist/enums/environment.enum.js +10 -0
  59. package/dist/enums/environment.enum.js.map +1 -0
  60. package/dist/enums/export-type.enum.d.ts +14 -0
  61. package/dist/enums/export-type.enum.js +19 -0
  62. package/dist/enums/export-type.enum.js.map +1 -0
  63. package/dist/export.command.d.ts +11 -0
  64. package/dist/export.command.js +49 -0
  65. package/dist/export.command.js.map +1 -0
  66. package/dist/export.schema.d.ts +65 -0
  67. package/dist/export.schema.js +70 -0
  68. package/dist/export.schema.js.map +1 -0
  69. package/dist/exporters/as24.exporter.d.ts +13 -0
  70. package/dist/exporters/as24.exporter.js +68 -0
  71. package/dist/exporters/as24.exporter.js.map +1 -0
  72. package/dist/exporters/auto24.exporter.d.ts +13 -0
  73. package/dist/exporters/auto24.exporter.js +81 -0
  74. package/dist/exporters/auto24.exporter.js.map +1 -0
  75. package/dist/exporters/autouncle.exporter.d.ts +15 -0
  76. package/dist/exporters/autouncle.exporter.js +79 -0
  77. package/dist/exporters/autouncle.exporter.js.map +1 -0
  78. package/dist/exporters/by-owner.exporter.d.ts +11 -0
  79. package/dist/exporters/by-owner.exporter.js +58 -0
  80. package/dist/exporters/by-owner.exporter.js.map +1 -0
  81. package/dist/exporters/fb.exporter.d.ts +15 -0
  82. package/dist/exporters/fb.exporter.js +67 -0
  83. package/dist/exporters/fb.exporter.js.map +1 -0
  84. package/dist/exporters/google.exporter.d.ts +15 -0
  85. package/dist/exporters/google.exporter.js +67 -0
  86. package/dist/exporters/google.exporter.js.map +1 -0
  87. package/dist/exporters/meinstadt.exporter.d.ts +15 -0
  88. package/dist/exporters/meinstadt.exporter.js +84 -0
  89. package/dist/exporters/meinstadt.exporter.js.map +1 -0
  90. package/dist/exporters/mobile.exporter.d.ts +18 -0
  91. package/dist/exporters/mobile.exporter.js +111 -0
  92. package/dist/exporters/mobile.exporter.js.map +1 -0
  93. package/dist/exporters/ooyyo.exporter.d.ts +13 -0
  94. package/dist/exporters/ooyyo.exporter.js +65 -0
  95. package/dist/exporters/ooyyo.exporter.js.map +1 -0
  96. package/dist/formats/auto24-xml.builder.d.ts +7 -0
  97. package/dist/formats/auto24-xml.builder.js +47 -0
  98. package/dist/formats/auto24-xml.builder.js.map +1 -0
  99. package/dist/formats/autouncle-json.builder.d.ts +7 -0
  100. package/dist/formats/autouncle-json.builder.js +21 -0
  101. package/dist/formats/autouncle-json.builder.js.map +1 -0
  102. package/dist/formats/fb-xml.builder.d.ts +11 -0
  103. package/dist/formats/fb-xml.builder.js +63 -0
  104. package/dist/formats/fb-xml.builder.js.map +1 -0
  105. package/dist/formats/google-xml.builder.d.ts +8 -0
  106. package/dist/formats/google-xml.builder.js +32 -0
  107. package/dist/formats/google-xml.builder.js.map +1 -0
  108. package/dist/formats/meinstadt-json.builder.d.ts +7 -0
  109. package/dist/formats/meinstadt-json.builder.js +22 -0
  110. package/dist/formats/meinstadt-json.builder.js.map +1 -0
  111. package/dist/formats/ooyyo-xml.builder.d.ts +7 -0
  112. package/dist/formats/ooyyo-xml.builder.js +47 -0
  113. package/dist/formats/ooyyo-xml.builder.js.map +1 -0
  114. package/dist/input.questions.d.ts +3 -0
  115. package/dist/input.questions.js +32 -0
  116. package/dist/input.questions.js.map +1 -0
  117. package/dist/interfaces/description.interface.d.ts +22 -0
  118. package/dist/interfaces/description.interface.js +3 -0
  119. package/dist/interfaces/description.interface.js.map +1 -0
  120. package/dist/interfaces/export-item.interface.d.ts +147 -0
  121. package/dist/interfaces/export-item.interface.js +3 -0
  122. package/dist/interfaces/export-item.interface.js.map +1 -0
  123. package/dist/interfaces/exporter.interface.d.ts +3 -0
  124. package/dist/interfaces/exporter.interface.js +3 -0
  125. package/dist/interfaces/exporter.interface.js.map +1 -0
  126. package/dist/interfaces/input.interface.d.ts +5 -0
  127. package/dist/interfaces/input.interface.js +3 -0
  128. package/dist/interfaces/input.interface.js.map +1 -0
  129. package/dist/interfaces/mapping-rules.interface.d.ts +10 -0
  130. package/dist/interfaces/mapping-rules.interface.js +3 -0
  131. package/dist/interfaces/mapping-rules.interface.js.map +1 -0
  132. package/dist/interfaces/params.interface.d.ts +18 -0
  133. package/dist/interfaces/params.interface.js +3 -0
  134. package/dist/interfaces/params.interface.js.map +1 -0
  135. package/dist/interfaces/rule-parser.interface.d.ts +3 -0
  136. package/dist/interfaces/rule-parser.interface.js +3 -0
  137. package/dist/interfaces/rule-parser.interface.js.map +1 -0
  138. package/dist/main.d.ts +1 -0
  139. package/dist/main.js +10 -0
  140. package/dist/main.js.map +1 -0
  141. package/dist/rules/abstract.rule.d.ts +13 -0
  142. package/dist/rules/abstract.rule.js +32 -0
  143. package/dist/rules/abstract.rule.js.map +1 -0
  144. package/dist/rules/date.rule.d.ts +7 -0
  145. package/dist/rules/date.rule.js +20 -0
  146. package/dist/rules/date.rule.js.map +1 -0
  147. package/dist/rules/number.rule.d.ts +7 -0
  148. package/dist/rules/number.rule.js +16 -0
  149. package/dist/rules/number.rule.js.map +1 -0
  150. package/dist/rules/string.rule.d.ts +5 -0
  151. package/dist/rules/string.rule.js +11 -0
  152. package/dist/rules/string.rule.js.map +1 -0
  153. package/dist/services/car.service.d.ts +24 -0
  154. package/dist/services/car.service.js +74 -0
  155. package/dist/services/car.service.js.map +1 -0
  156. package/dist/services/config.service.d.ts +6 -0
  157. package/dist/services/config.service.js +24 -0
  158. package/dist/services/config.service.js.map +1 -0
  159. package/dist/services/loader.service.d.ts +9 -0
  160. package/dist/services/loader.service.js +45 -0
  161. package/dist/services/loader.service.js.map +1 -0
  162. package/dist/services/mapping.service.d.ts +11 -0
  163. package/dist/services/mapping.service.js +73 -0
  164. package/dist/services/mapping.service.js.map +1 -0
  165. package/dist/services/marketing-images.service.d.ts +16 -0
  166. package/dist/services/marketing-images.service.js +58 -0
  167. package/dist/services/marketing-images.service.js.map +1 -0
  168. package/dist/services/request.service.d.ts +12 -0
  169. package/dist/services/request.service.js +48 -0
  170. package/dist/services/request.service.js.map +1 -0
  171. package/dist/services/rules.service.d.ts +15 -0
  172. package/dist/services/rules.service.js +68 -0
  173. package/dist/services/rules.service.js.map +1 -0
  174. package/dist/services/user.service.d.ts +11 -0
  175. package/dist/services/user.service.js +64 -0
  176. package/dist/services/user.service.js.map +1 -0
  177. package/dist/transformers/as24.transformer.d.ts +28 -0
  178. package/dist/transformers/as24.transformer.js +217 -0
  179. package/dist/transformers/as24.transformer.js.map +1 -0
  180. package/dist/transformers/auto24.transfomer.d.ts +16 -0
  181. package/dist/transformers/auto24.transfomer.js +155 -0
  182. package/dist/transformers/auto24.transfomer.js.map +1 -0
  183. package/dist/transformers/autouncle.transformer.d.ts +32 -0
  184. package/dist/transformers/autouncle.transformer.js +234 -0
  185. package/dist/transformers/autouncle.transformer.js.map +1 -0
  186. package/dist/transformers/by-owner.transformer.d.ts +12 -0
  187. package/dist/transformers/by-owner.transformer.js +274 -0
  188. package/dist/transformers/by-owner.transformer.js.map +1 -0
  189. package/dist/transformers/fb-description.transformer.d.ts +19 -0
  190. package/dist/transformers/fb-description.transformer.js +297 -0
  191. package/dist/transformers/fb-description.transformer.js.map +1 -0
  192. package/dist/transformers/fb-equipment.transformer.d.ts +8 -0
  193. package/dist/transformers/fb-equipment.transformer.js +149 -0
  194. package/dist/transformers/fb-equipment.transformer.js.map +1 -0
  195. package/dist/transformers/fb.transformer.d.ts +41 -0
  196. package/dist/transformers/fb.transformer.js +553 -0
  197. package/dist/transformers/fb.transformer.js.map +1 -0
  198. package/dist/transformers/google.transformer.d.ts +26 -0
  199. package/dist/transformers/google.transformer.js +164 -0
  200. package/dist/transformers/google.transformer.js.map +1 -0
  201. package/dist/transformers/meinstadt.transformer.d.ts +14 -0
  202. package/dist/transformers/meinstadt.transformer.js +95 -0
  203. package/dist/transformers/meinstadt.transformer.js.map +1 -0
  204. package/dist/transformers/mobile.transformer.d.ts +47 -0
  205. package/dist/transformers/mobile.transformer.js +471 -0
  206. package/dist/transformers/mobile.transformer.js.map +1 -0
  207. package/dist/transformers/ooyyo.transformer.d.ts +17 -0
  208. package/dist/transformers/ooyyo.transformer.js +127 -0
  209. package/dist/transformers/ooyyo.transformer.js.map +1 -0
  210. package/dist/tsconfig.build.tsbuildinfo +1 -0
  211. package/dist/utils/converter.utils.d.ts +1 -0
  212. package/dist/utils/converter.utils.js +15 -0
  213. package/dist/utils/converter.utils.js.map +1 -0
  214. package/dist/utils/date-time.utils.d.ts +1 -0
  215. package/dist/utils/date-time.utils.js +21 -0
  216. package/dist/utils/date-time.utils.js.map +1 -0
  217. package/dist/utils/parser.utils.d.ts +2 -0
  218. package/dist/utils/parser.utils.js +9 -0
  219. package/dist/utils/parser.utils.js.map +1 -0
  220. package/dist/utils/validator.utils.d.ts +2 -0
  221. package/dist/utils/validator.utils.js +12 -0
  222. package/dist/utils/validator.utils.js.map +1 -0
  223. package/nest-cli.json +5 -0
  224. package/package.json +55 -31
  225. package/src/app.module.ts +34 -0
  226. package/src/config/as24.config.ts +10 -0
  227. package/src/config/auto24.config.ts +29 -0
  228. package/src/config/autoboerse.config.ts +12 -0
  229. package/src/config/autouncle.config.ts +11 -0
  230. package/src/config/by-owner.config.ts +11 -0
  231. package/src/config/config.ts +87 -0
  232. package/src/config/eauto.config.ts +12 -0
  233. package/src/config/fb.config.ts +11 -0
  234. package/src/config/google.config.ts +10 -0
  235. package/src/config/marktde.config.ts +11 -0
  236. package/src/config/meinstadt.config.ts +11 -0
  237. package/src/config/ooyyo.config.ts +11 -0
  238. package/src/config/yescar.config.ts +11 -0
  239. package/src/constants/autouncle.contants.ts +4 -0
  240. package/src/constants/fb.constants.ts +7 -0
  241. package/src/constants/rule-input.contants.ts +3 -0
  242. package/src/enums/environment.enum.ts +5 -0
  243. package/src/enums/export-type.enum.ts +14 -0
  244. package/src/export.command.ts +35 -0
  245. package/src/export.schema.ts +67 -0
  246. package/src/exporters/as24.exporter.ts +70 -0
  247. package/src/exporters/auto24.exporter.ts +68 -0
  248. package/src/exporters/autouncle.exporter.ts +62 -0
  249. package/src/exporters/by-owner.exporter.ts +45 -0
  250. package/src/exporters/fb.exporter.ts +49 -0
  251. package/src/exporters/google.exporter.ts +48 -0
  252. package/src/exporters/meinstadt.exporter.ts +70 -0
  253. package/src/exporters/mobile.exporter.ts +113 -0
  254. package/src/exporters/ooyyo.exporter.ts +50 -0
  255. package/src/formats/auto24-xml.builder.ts +48 -0
  256. package/src/formats/autouncle-json.builder.ts +20 -0
  257. package/src/formats/fb-xml.builder.ts +71 -0
  258. package/src/formats/google-xml.builder.ts +35 -0
  259. package/src/formats/meinstadt-json.builder.ts +19 -0
  260. package/src/formats/ooyyo-xml.builder.ts +48 -0
  261. package/src/input.questions.ts +12 -0
  262. package/src/interfaces/description.interface.ts +24 -0
  263. package/src/interfaces/export-item.interface.ts +147 -0
  264. package/src/interfaces/exporter.interface.ts +3 -0
  265. package/src/interfaces/input.interface.ts +6 -0
  266. package/src/interfaces/mapping-rules.interface.ts +11 -0
  267. package/src/interfaces/params.interface.ts +19 -0
  268. package/src/interfaces/rule-parser.interface.ts +3 -0
  269. package/src/main.ts +9 -0
  270. package/src/rules/abstract.rule.ts +37 -0
  271. package/src/rules/date.rule.ts +18 -0
  272. package/src/rules/number.rule.ts +15 -0
  273. package/src/rules/string.rule.ts +8 -0
  274. package/src/services/car.service.ts +57 -0
  275. package/src/services/config.service.ts +15 -0
  276. package/src/services/loader.service.ts +30 -0
  277. package/src/services/mapping.service.ts +80 -0
  278. package/src/services/marketing-images.service.ts +67 -0
  279. package/src/services/request.service.ts +44 -0
  280. package/src/services/rules.service.ts +61 -0
  281. package/src/services/user.service.ts +52 -0
  282. package/src/transformers/as24.transformer.ts +225 -0
  283. package/src/transformers/auto24.transfomer.ts +155 -0
  284. package/src/transformers/autouncle.transformer.ts +264 -0
  285. package/src/transformers/by-owner.transformer.ts +364 -0
  286. package/src/transformers/fb-description.transformer.ts +316 -0
  287. package/src/transformers/fb-equipment.transformer.ts +161 -0
  288. package/src/transformers/fb.transformer.ts +640 -0
  289. package/src/transformers/google.transformer.ts +166 -0
  290. package/src/transformers/meinstadt.transformer.ts +80 -0
  291. package/src/transformers/mobile.transformer.ts +495 -0
  292. package/src/transformers/ooyyo.transformer.ts +123 -0
  293. package/src/utils/converter.utils.ts +11 -0
  294. package/src/utils/date-time.utils.ts +20 -0
  295. package/src/utils/parser.utils.ts +6 -0
  296. package/src/utils/validator.utils.ts +7 -0
  297. package/tsconfig.build.json +4 -0
  298. package/tsconfig.json +28 -34
  299. package/.prettierrc +0 -14
  300. package/dist/config/ConfigBuilder.d.ts +0 -5
  301. package/dist/config/ConfigBuilder.js +0 -90
  302. package/dist/config/ConfigBuilder.js.map +0 -1
  303. package/dist/config/index.d.ts +0 -1
  304. package/dist/config/index.js +0 -7
  305. package/dist/config/index.js.map +0 -1
  306. package/dist/index.d.ts +0 -1
  307. package/dist/index.js +0 -64
  308. package/dist/index.js.map +0 -1
  309. package/dist/interfaces/index.d.ts +0 -0
  310. package/dist/interfaces/index.js +0 -1
  311. package/dist/interfaces/index.js.map +0 -1
  312. package/dist/modules/acrhiver/TarArchiver.d.ts +0 -6
  313. package/dist/modules/acrhiver/TarArchiver.js +0 -52
  314. package/dist/modules/acrhiver/TarArchiver.js.map +0 -1
  315. package/dist/modules/acrhiver/index.d.ts +0 -2
  316. package/dist/modules/acrhiver/index.js +0 -7
  317. package/dist/modules/acrhiver/index.js.map +0 -1
  318. package/dist/modules/car-exporter/index.d.ts +0 -2
  319. package/dist/modules/car-exporter/index.js +0 -10
  320. package/dist/modules/car-exporter/index.js.map +0 -1
  321. package/dist/modules/car-loader/index.d.ts +0 -2
  322. package/dist/modules/car-loader/index.js +0 -12
  323. package/dist/modules/car-loader/index.js.map +0 -1
  324. package/index.js +0 -2
  325. package/readme.md +0 -7
  326. package/src/config/ConfigBuilder.ts +0 -91
  327. package/src/config/index.ts +0 -1
  328. package/src/index.ts +0 -62
  329. package/src/interfaces/index.ts +0 -0
  330. package/src/modules/acrhiver/TarArchiver.ts +0 -32
  331. package/src/modules/acrhiver/index.ts +0 -6
  332. package/src/modules/car-exporter/index.ts +0 -11
  333. package/src/modules/car-loader/index.ts +0 -10
  334. package/tslint.json +0 -51
  335. package/types/basic-ftp.d.ts +0 -72
@@ -0,0 +1,316 @@
1
+ import { get, isNil } from 'lodash';
2
+ import { DataSchemes } from '@bytebrand/car-schema';
3
+ import { TranslatorExtended } from '@bytebrand/schema-tools';
4
+ import { FbEquipment } from './fb-equipment.transformer';
5
+ import {
6
+ Description,
7
+ DescriptionInfo,
8
+ DescriptionSubValue,
9
+ DescriptionValue,
10
+ DescriptionValueInfo,
11
+ } from '../interfaces/description.interface';
12
+
13
+ export class FbDescription {
14
+ private constructor(
15
+ private car: DataSchemes.Car,
16
+ private translator: TranslatorExtended,
17
+ private equipment: FbEquipment,
18
+ ) {}
19
+
20
+ static create(car: DataSchemes.Car, translator: TranslatorExtended, equipment: FbEquipment) {
21
+ return new FbDescription(car, translator, equipment);
22
+ }
23
+
24
+ public getDescriptionArray(): Description[] {
25
+ const engineTransmission = this.getEngineAndTransmissionBlock();
26
+ const dimensions = this.getDimensionsBlock();
27
+ const colorMaterial = this.getColorAndMaterialBlock();
28
+ const equipment = this.getEquipmentBlock();
29
+
30
+ return [engineTransmission, dimensions, colorMaterial, equipment];
31
+ }
32
+
33
+ private getEngineAndTransmissionBlock(): Description {
34
+ const blockInfo: DescriptionInfo = {
35
+ title: 'accordion.tableEngine',
36
+ values: [
37
+ {
38
+ title: 'title.fuel',
39
+ value: {
40
+ key: get(this.car, 'consumption.fuel'),
41
+ },
42
+ },
43
+ {
44
+ title: 'title.cylinders',
45
+ value: {
46
+ key: get(this.car, 'engineData.cylinders') as string,
47
+ },
48
+ },
49
+ {
50
+ title: 'accordion.captionCapacity',
51
+ value: {
52
+ key: 'title.cubicCapacity',
53
+ data: { cubicCapacity: get(this.car, 'engineData.cubicCapacity') },
54
+ },
55
+ },
56
+ {
57
+ title: 'accordion.captionPower',
58
+ value: {
59
+ key: 'value.powerAlternateView',
60
+ data: {
61
+ powerKW: get(this.car, 'engineData.powerKW'),
62
+ powerPS: get(this.car, 'engineData.powerPS'),
63
+ },
64
+ },
65
+ },
66
+ {
67
+ title: 'title.torque',
68
+ value: {
69
+ key: 'value.torque',
70
+ data: {
71
+ torque: get(this.car, 'engineData.torque'),
72
+ },
73
+ },
74
+ },
75
+ {
76
+ title: 'title.acceleration',
77
+ value: {
78
+ key: 'value.acceleration',
79
+ data: {
80
+ seconds: get(this.car, 'engineData.acceleration100'),
81
+ },
82
+ },
83
+ },
84
+ {
85
+ title: 'title.topSpeed',
86
+ value: {
87
+ key: 'value.topSpeed',
88
+ data: {
89
+ mileage: get(this.car, 'engineData.highSpeed'),
90
+ },
91
+ },
92
+ },
93
+ {
94
+ title: 'title.transmission',
95
+ value: {
96
+ key: get(this.car, 'driveSuspension.gearbox'),
97
+ },
98
+ },
99
+ {
100
+ title: 'title.driveType',
101
+ value: {
102
+ key: get(this.car, 'driveSuspension.driveType'),
103
+ },
104
+ },
105
+ {
106
+ title: 'title.fuelCapacity',
107
+ value: {
108
+ key: 'value.capacity',
109
+ data: {
110
+ capacity: get(this.car, 'sizeVolumeWeight.fuelCapacity'),
111
+ },
112
+ },
113
+ },
114
+ {
115
+ title: 'hsn',
116
+ value: {
117
+ key: get(this.car, 'metaData.hsn'),
118
+ },
119
+ },
120
+ {
121
+ title: 'tsn',
122
+ value: {
123
+ key: get(this.car, 'metaData.tsn'),
124
+ },
125
+ },
126
+ ],
127
+ };
128
+
129
+ return this.buildBlock(blockInfo);
130
+ }
131
+
132
+ private getDimensionsBlock(): Description {
133
+ const blockInfo: DescriptionInfo = {
134
+ title: 'accordion.tableDimensions',
135
+ values: [
136
+ {
137
+ title: 'title.category',
138
+ value: {
139
+ key: get(this.car, 'mainData.category'),
140
+ },
141
+ },
142
+ {
143
+ title: 'title.length',
144
+ value: {
145
+ key: 'value.size',
146
+ data: {
147
+ size: get(this.car, 'sizeVolumeWeight.length'),
148
+ },
149
+ },
150
+ },
151
+ {
152
+ title: 'title.width',
153
+ value: {
154
+ key: 'value.size',
155
+ data: {
156
+ size: get(this.car, 'sizeVolumeWeight.width'),
157
+ },
158
+ },
159
+ },
160
+ {
161
+ title: 'title.height',
162
+ value: {
163
+ key: 'value.size',
164
+ data: {
165
+ size: get(this.car, 'sizeVolumeWeight.height'),
166
+ },
167
+ },
168
+ },
169
+ {
170
+ title: 'title.base',
171
+ value: {
172
+ key: get(this.car, 'driveSuspension.wheelBase') as string,
173
+ },
174
+ },
175
+ {
176
+ title: 'title.loadingVolume',
177
+ value: {
178
+ key: 'value.size',
179
+ data: {
180
+ size: get(this.car, 'sizeVolumeWeight.capacityLoad'),
181
+ },
182
+ },
183
+ },
184
+ {
185
+ title: 'title.bootCapacity',
186
+ value: {
187
+ key: 'value.capacity',
188
+ data: { capacity: get(this.car, 'sizeVolumeWeight.cargoCapacity') },
189
+ },
190
+ },
191
+ {
192
+ title: 'title.doors',
193
+ value: {
194
+ key: get(this.car, 'mainData.doors') as string,
195
+ },
196
+ },
197
+ {
198
+ title: 'title.seats',
199
+ value: {
200
+ key: get(this.car, 'mainData.seats') as string,
201
+ },
202
+ },
203
+ {
204
+ title: 'title.tare',
205
+ value: {
206
+ key: 'value.weight',
207
+ data: {
208
+ weight: get(this.car, 'sizeVolumeWeight.emptyWeight'),
209
+ },
210
+ },
211
+ },
212
+ {
213
+ title: 'title.maximumWeight',
214
+ value: {
215
+ key: 'value.weight',
216
+ data: {
217
+ weight: get(this.car, 'sizeVolumeWeight.maxWeight'),
218
+ },
219
+ },
220
+ },
221
+ {
222
+ title: 'title.trailerWeightBraked',
223
+ value: {
224
+ key: 'value.weight',
225
+ data: {
226
+ weight: get(this.car, 'sizeVolumeWeight.trailerWeightBraked'),
227
+ },
228
+ },
229
+ },
230
+ {
231
+ title: 'title.trailerWeightUnbraked',
232
+ value: {
233
+ key: 'value.weight',
234
+ data: {
235
+ weight: get(this.car, 'sizeVolumeWeight.trailerWeightUnbraked'),
236
+ },
237
+ },
238
+ },
239
+ ],
240
+ };
241
+
242
+ return this.buildBlock(blockInfo);
243
+ }
244
+
245
+ private getColorAndMaterialBlock(): Description {
246
+ const blockInfo: DescriptionInfo = {
247
+ title: 'accordion.tableMaterial',
248
+ values: [
249
+ {
250
+ title: 'title.manufacturerColorName',
251
+ value: {
252
+ key: get(this.car, 'exterior.manufacturerColorName'),
253
+ },
254
+ },
255
+ {
256
+ title: 'title.colour',
257
+ value: {
258
+ key: get(this.car, 'exterior.exteriorColor'),
259
+ },
260
+ },
261
+ {
262
+ title: 'title.appointmentsColor',
263
+ value: {
264
+ key: get(this.car, 'interior.interiorColor'),
265
+ },
266
+ },
267
+ {
268
+ title: 'title.interiorType',
269
+ value: {
270
+ key: get(this.car, 'interior.interiorType'),
271
+ },
272
+ },
273
+ ],
274
+ };
275
+
276
+ return this.buildBlock(blockInfo);
277
+ }
278
+
279
+ private getEquipmentBlock(): Description {
280
+ const blockInfo: DescriptionInfo = {
281
+ title: 'accordion.tableEqipment',
282
+ values: this.equipment.collect(this.car),
283
+ };
284
+
285
+ return this.buildBlock(blockInfo);
286
+ }
287
+
288
+ private buildBlock(blockInfo: DescriptionInfo): Description {
289
+ return {
290
+ title: this.translator.translateVal(blockInfo.title),
291
+ values: this.buildValues(blockInfo.values),
292
+ };
293
+ }
294
+
295
+ private buildValues(values: DescriptionValueInfo[]): DescriptionValue[] {
296
+ return values
297
+ .filter(({ value }: DescriptionValueInfo) => {
298
+ const valArr = Array.isArray(value) ? value : [value];
299
+ return valArr.some(
300
+ ({ key, data }) => !Object.values(data || {}).some(value => isNil(value) || value === '') || !key,
301
+ );
302
+ })
303
+ .map(({ title, value }: DescriptionValueInfo): DescriptionValue => {
304
+ const valArr = Array.isArray(value) ? value : [value];
305
+ const translated: string[] = valArr.map(this.translateValue.bind(this));
306
+ return {
307
+ title: this.translator.translateVal(title),
308
+ value: translated,
309
+ };
310
+ });
311
+ }
312
+
313
+ private translateValue({ key, data }: DescriptionSubValue): string {
314
+ return this.translator.translateValAndReplaceValue(key, data || {});
315
+ }
316
+ }
@@ -0,0 +1,161 @@
1
+ import { DataSchemes } from '@bytebrand/car-schema';
2
+ import { get } from 'lodash';
3
+ import { DescriptionValueInfo } from '../interfaces/description.interface';
4
+
5
+ export class FbEquipment {
6
+ public collect(car: DataSchemes.Car): DescriptionValueInfo[] {
7
+ const doors = get(car, 'doors', {});
8
+ const wheel = get(car, 'wheel', {});
9
+ const extras = get(car, 'extras', {});
10
+ const window = get(car, 'window', {});
11
+ const mirrors = get(car, 'mirrors', {});
12
+ const multimedia = get(car, 'multimedia', {});
13
+ const climatisation = get(car, 'climatisation', {});
14
+ const airbag = get(car, 'airbags.airbag', []);
15
+
16
+ const auxiliaryHeating = get(car, 'heatingCooling.auxiliaryHeating', []);
17
+ const heatingCoolingClimatisation = get(car, 'heatingCooling.climatisation', null);
18
+
19
+ const lightSensor = get(car, 'lights.lightSensor', false);
20
+ const lights = get(car, 'lights', {});
21
+ delete (lights as any).lightSensor;
22
+
23
+ const seats = get(car, 'seats', {});
24
+ const backSeats = get(car, 'seats.backSeats', []);
25
+ const coDriverSeats = get(car, 'seats.coDriverSeats', []);
26
+ const driverSeats = get(car, 'seats.driverSeats', []);
27
+ const electricHeated = get(car, 'seats.electricHeated', null);
28
+ const electricHeatedRearSeats = get(car, 'seats.electricHeatedRearSeats', null);
29
+ delete (seats as any).backSeats;
30
+ delete (seats as any).coDriverSeats;
31
+ delete (seats as any).driverSeats;
32
+
33
+ const x4AllWeatherTires = get(car, 'wheels.x4AllWeatherTires', null);
34
+ const x4SummerTires = get(car, 'wheels.x4SummerTires', null);
35
+ const x4WinterTires = get(car, 'wheels.x4WinterTires', null);
36
+
37
+ const assistants = get(car, 'assistants', {});
38
+ const parkingAssistants = get(car, 'assistants.parkingAssistants', null);
39
+ const powerAssistedSteering = get(car, 'assistants.powerAssistedSteering', null);
40
+ delete (assistants as any).parkingAssistants;
41
+ delete (assistants as any).powerAssistedSteering;
42
+
43
+ const sportChassis = get(car, 'driveSuspension.sportChassis', null);
44
+ const adaptiveChassis = get(car, 'driveSuspension.adaptiveChassis', null);
45
+ const airSuspension = get(car, 'driveSuspension.airSuspension', null);
46
+ const roughRoadSuspension = get(car, 'driveSuspension.roughRoadSuspension', null);
47
+ const selfLockingDifferential = get(car, 'driveSuspension.selfLockingDifferential', null);
48
+ const airSuspensionAdaptive = get(car, 'driveSuspension.airSuspensionAdaptive', null);
49
+ const driveType = get(car, 'driveSuspension.driveType', null);
50
+
51
+ const heatingDriverSeats = driverSeats.indexOf('selector_driverSeats_electricHeated') !== -1;
52
+ const heatingCoDriverSeats = coDriverSeats.indexOf('selector_coDriverSeats_electricHeated') !== -1;
53
+ const heatingBackSeats = backSeats.indexOf('selector_backSeats_electricHeated') !== -1;
54
+
55
+ return [
56
+ {
57
+ title: 'accordion.captionAssistanceSystems',
58
+ value: [...this.objectToValues(assistants, 'assistants'), ...this.objectToValues({ lightSensor }, 'lights')],
59
+ },
60
+ {
61
+ title: 'accordion.captionAirbags',
62
+ value: this.arrayToValues(airbag),
63
+ },
64
+ {
65
+ title: 'accordion.captionParkingAid',
66
+ value: this.arrayToValues(parkingAssistants),
67
+ },
68
+ {
69
+ title: 'accordion.captionAirConditioning',
70
+ value: this.objectToValues({
71
+ [heatingCoolingClimatisation]: heatingCoolingClimatisation,
72
+ ...climatisation,
73
+ }),
74
+ },
75
+ {
76
+ title: 'accordion.captionHeater',
77
+ value: this.objectToValues({
78
+ heatingCooling_auxiliaryHeating: auxiliaryHeating,
79
+ seats_driverSeats: heatingDriverSeats,
80
+ seats_coDriverSeats: heatingCoDriverSeats,
81
+ seats_backSeats: heatingBackSeats,
82
+ seats_electricHeated: electricHeated,
83
+ seats_electricHeatedRearSeats: electricHeatedRearSeats,
84
+ }),
85
+ },
86
+ {
87
+ title: 'accordion.captionMultimedia',
88
+ value: this.objectToValues(multimedia, 'multimedia'),
89
+ },
90
+ {
91
+ title: 'accordion.captionSeats',
92
+ value: [
93
+ ...this.arrayToValues(backSeats),
94
+ ...this.arrayToValues(coDriverSeats),
95
+ ...this.arrayToValues(driverSeats),
96
+ ...this.objectToValues(seats, 'seats'),
97
+ ],
98
+ },
99
+ {
100
+ title: 'accordion.captionSteeringWheel',
101
+ value: [
102
+ ...this.objectToValues(wheel, 'wheel'),
103
+ ...this.objectToValues({ powerAssistedSteering }, 'assistants'),
104
+ ],
105
+ },
106
+ {
107
+ title: 'accordion.captionLight',
108
+ value: this.objectToValues(lights, 'lights'),
109
+ },
110
+ {
111
+ title: 'accordion.captionDoors',
112
+ value: this.objectToValues(doors, 'doors'),
113
+ },
114
+ {
115
+ title: 'accordion.captionSlices',
116
+ value: this.objectToValues(window, 'window'),
117
+ },
118
+ {
119
+ title: 'accordion.captionMirror',
120
+ value: this.objectToValues(mirrors, 'mirrors'),
121
+ },
122
+ {
123
+ title: 'accordion.captionWheelsLandingGear',
124
+ value: [
125
+ ...this.objectToValues(
126
+ {
127
+ sportChassis,
128
+ adaptiveChassis,
129
+ airSuspension,
130
+ roughRoadSuspension,
131
+ selfLockingDifferential,
132
+ airSuspensionAdaptive,
133
+ },
134
+ 'driveSuspension',
135
+ ),
136
+ ...this.objectToValues({ x4AllWeatherTires, x4SummerTires, x4WinterTires }, 'bikes'),
137
+ ...this.objectToValues({ [driveType]: driveType }),
138
+ ],
139
+ },
140
+ {
141
+ title: 'accordion.captionExtras',
142
+ value: this.objectToValues(extras, 'extras'),
143
+ },
144
+ ].filter(({ value }) => value.length > 0);
145
+ }
146
+
147
+ private objectToValues(obj: {}, keyPrefix?: string): { key: string }[] {
148
+ return Object.entries(obj)
149
+ .map(([key, value]: [string, any]): [string, any] => [`${keyPrefix ? keyPrefix + '_' : ''}${key}`, value])
150
+ .filter(([, value]: [string, any]) => !!value)
151
+ .map(([translation]) => this.toValue(translation));
152
+ }
153
+
154
+ private arrayToValues(ara: string[]): { key: string }[] {
155
+ return ara.map(this.toValue);
156
+ }
157
+
158
+ private toValue(translation: string): { key: string } {
159
+ return { key: translation };
160
+ }
161
+ }