@movalib/movalib-commons 1.66.0 → 1.68.1

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.
@@ -0,0 +1,6 @@
1
+ <component name="InspectionProjectProfileManager">
2
+ <profile version="1.0">
3
+ <option name="myName" value="Project Default" />
4
+ <inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" />
5
+ </profile>
6
+ </component>
@@ -0,0 +1,12 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="MaterialThemeProjectNewConfig">
4
+ <option name="metadata">
5
+ <MTProjectMetadataState>
6
+ <option name="migrated" value="true" />
7
+ <option name="pristineConfig" value="false" />
8
+ <option name="userId" value="41d9be1a:19b3189ae65:-7ffe" />
9
+ </MTProjectMetadataState>
10
+ </option>
11
+ </component>
12
+ </project>
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ProjectModuleManager">
4
+ <modules>
5
+ <module fileurl="file://$PROJECT_DIR$/.idea/movalib-commons.iml" filepath="$PROJECT_DIR$/.idea/movalib-commons.iml" />
6
+ </modules>
7
+ </component>
8
+ </project>
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <module type="WEB_MODULE" version="4">
3
+ <component name="NewModuleRootManager">
4
+ <content url="file://$MODULE_DIR$" />
5
+ <orderEntry type="inheritedJdk" />
6
+ <orderEntry type="sourceFolder" forTests="false" />
7
+ </component>
8
+ </module>
package/.idea/vcs.xml ADDED
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="VcsDirectoryMappings">
4
+ <mapping directory="" vcs="Git" />
5
+ </component>
6
+ </project>
package/dist/index.d.ts CHANGED
@@ -49,6 +49,7 @@ export { default as User } from "./src/models/User";
49
49
  export { default as Vehicle } from "./src/models/Vehicle";
50
50
  export { default as VehicleGarage } from "./src/models/VehicleGarage";
51
51
  export { default as VehicleTire } from "./src/models/VehicleTire";
52
+ export { default as LoanVehicleLightAgreement } from "./src/models/LoanVehicleAgreement";
52
53
  export type { APIRequest, APIResponse } from "./src/helpers/ApiHelper";
53
54
  export type { AddressFieldName, MovaFormField, MovaInterval, MovaLoginForm, MovaUserSignUpForm, MovaVehicleForm, } from "./src/helpers/Types";
54
55
  export type { DayInterval, DaySchedule } from "./src/ScheduleFields";
package/dist/index.js CHANGED
@@ -5,8 +5,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  };
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.Supplier = exports.Subscription = exports.Schedule = exports.Role = exports.Product = exports.Prestation = exports.Operation = exports.LoanVehicle = exports.Garage = exports.Event = exports.Employee = exports.Document = exports.Customer = exports.CategoryPrestation = exports.Address = exports.Absence = exports.Logger = exports.TestButton = exports.ScheduleFields = exports.QRCode = exports.MovaVehicleTireField = exports.MovaSnackbar = exports.MovaSignUp = exports.MovaLogin = exports.MovaDigitalPassport = exports.MovaDialog = exports.MovaCopyright = exports.Loader = exports.IbanInput = exports.GenderSelector = exports.GaragePLV = exports.DialogForgotPassword = exports.ConfirmationDialog = exports.regexPlate = exports.oldRegexPlate = exports.VehiclePlateField = exports.VehicleFullCard = exports.ActivateAccount = exports.QrCodePLVContainer = exports.PrintSize = exports.PLVComponent = exports.MovaTableBack = exports.MovaTable = exports.LinkedDocumentDialog = exports.AddressFields = exports.AccountValidation = exports.VehicleService = exports.UserService = exports.GarageService = exports.AuthenticationService = void 0;
8
- exports.SubscriptionPaymentInterval = exports.SlotAlgorithm = exports.SecondaryPartsApplicationType = exports.RoleType = exports.RegistrationState = exports.ProductType = exports.PrestationType = exports.PrestationState = exports.PartsApplicationType = exports.OrderState = exports.OrderPreference = exports.MovaAppType = exports.Gender = exports.EventType = exports.EventState = exports.DocumentType = exports.DocumentState = exports.DigitalPassportIndex = exports.DayOfWeek = exports.DateFormatTypes = exports.CustomerType = exports.CountryCode = exports.APIMethod = exports.validateText = exports.validatePhoneNumber = exports.validateEmail = exports.validateField = exports.isSafariOniOS = exports.isEmpty = exports.getFormattedSchedule = exports.getFormattedIntervals = exports.getDayOfWeekLabel = exports.getApplicationsShortLabels = exports.getApplicationShortLabel = exports.formatVehicleTire = exports.formatVehiclePlate = exports.formatPhoneNumber = exports.flexLeftRow = exports.findScheduleByDayOfWeek = exports.capitalizeFirstLetter = exports.getLongFormattedDateTime = exports.formatDateByTimezone = exports.readCookie = exports.deleteCookie = exports.request = exports.API_BASE_URL = exports.VehicleTire = exports.VehicleGarage = exports.Vehicle = exports.User = void 0;
9
- exports.StyledToggleButtonGroup = exports.StyledToggleButton = exports.getQrCodeBase64 = exports.openDialogPrint = exports.VehiclePlateType = exports.SubscriptionType = exports.SubscriptionState = void 0;
8
+ exports.SlotAlgorithm = exports.SecondaryPartsApplicationType = exports.RoleType = exports.RegistrationState = exports.ProductType = exports.PrestationType = exports.PrestationState = exports.PartsApplicationType = exports.OrderState = exports.OrderPreference = exports.MovaAppType = exports.Gender = exports.EventType = exports.EventState = exports.DocumentType = exports.DocumentState = exports.DigitalPassportIndex = exports.DayOfWeek = exports.DateFormatTypes = exports.CustomerType = exports.CountryCode = exports.APIMethod = exports.validateText = exports.validatePhoneNumber = exports.validateEmail = exports.validateField = exports.isSafariOniOS = exports.isEmpty = exports.getFormattedSchedule = exports.getFormattedIntervals = exports.getDayOfWeekLabel = exports.getApplicationsShortLabels = exports.getApplicationShortLabel = exports.formatVehicleTire = exports.formatVehiclePlate = exports.formatPhoneNumber = exports.flexLeftRow = exports.findScheduleByDayOfWeek = exports.capitalizeFirstLetter = exports.getLongFormattedDateTime = exports.formatDateByTimezone = exports.readCookie = exports.deleteCookie = exports.request = exports.API_BASE_URL = exports.LoanVehicleLightAgreement = exports.VehicleTire = exports.VehicleGarage = exports.Vehicle = exports.User = void 0;
9
+ exports.StyledToggleButtonGroup = exports.StyledToggleButton = exports.getQrCodeBase64 = exports.openDialogPrint = exports.VehiclePlateType = exports.SubscriptionType = exports.SubscriptionState = exports.SubscriptionPaymentInterval = void 0;
10
10
  // Export des services
11
11
  var AuthenticationService_1 = require("./src/services/AuthenticationService");
12
12
  Object.defineProperty(exports, "AuthenticationService", { enumerable: true, get: function () { return __importDefault(AuthenticationService_1).default; } });
@@ -115,6 +115,8 @@ var VehicleGarage_1 = require("./src/models/VehicleGarage");
115
115
  Object.defineProperty(exports, "VehicleGarage", { enumerable: true, get: function () { return __importDefault(VehicleGarage_1).default; } });
116
116
  var VehicleTire_1 = require("./src/models/VehicleTire");
117
117
  Object.defineProperty(exports, "VehicleTire", { enumerable: true, get: function () { return __importDefault(VehicleTire_1).default; } });
118
+ var LoanVehicleAgreement_1 = require("./src/models/LoanVehicleAgreement");
119
+ Object.defineProperty(exports, "LoanVehicleLightAgreement", { enumerable: true, get: function () { return __importDefault(LoanVehicleAgreement_1).default; } });
118
120
  // Export des méthodes utilitaires
119
121
  var ApiHelper_1 = require("./src/helpers/ApiHelper");
120
122
  Object.defineProperty(exports, "API_BASE_URL", { enumerable: true, get: function () { return ApiHelper_1.API_BASE_URL; } });
@@ -68,6 +68,7 @@ var MovaVehicleTireField_1 = __importDefault(require("../../MovaVehicleTireField
68
68
  var LinkedDocumentDialog_1 = require("../LinkedDocumentDialog");
69
69
  var initialUserFormState = {
70
70
  currentMileage: { value: null, isValid: true },
71
+ vehicleModel: { value: "", isValid: true },
71
72
  averageMileagePerYear: { value: null, isValid: true },
72
73
  tireSize: { value: null, isValid: true },
73
74
  tireWidth: { value: "", isValid: true },
@@ -110,13 +111,15 @@ var VehicleFullCard = function (_a) {
110
111
  var initForm = function () {
111
112
  if (!vehicle)
112
113
  return;
113
- console.log("vehicle", vehicle);
114
114
  setForm(function (prevForm) {
115
115
  var updatedForm = __assign(__assign({}, prevForm), { currentMileage: __assign(__assign({}, prevForm.currentMileage), { value: vehicle.currentMileage }), averageMileagePerYear: __assign(__assign({}, prevForm.averageMileagePerYear), { value: vehicle.averageMileagePerYear }), tireWidth: __assign(__assign({}, prevForm.tireWidth), { value: vehicle.tireWidth }), tireHeight: __assign(__assign({}, prevForm.tireHeight), { value: vehicle.tireHeight }), tireDiameter: __assign(__assign({}, prevForm.tireDiameter), { value: vehicle.tireDiameter }), tireSpeedIndex: __assign(__assign({}, prevForm.tireSpeedIndex), { value: vehicle.tireSpeedIndex }), secondaryTireWidth: __assign(__assign({}, prevForm.secondaryTireWidth), { value: vehicle.secondaryTireWidth }), secondaryTireHeight: __assign(__assign({}, prevForm.secondaryTireHeight), { value: vehicle.secondaryTireHeight }), secondaryTireDiameter: __assign(__assign({}, prevForm.secondaryTireDiameter), { value: vehicle.secondaryTireDiameter }), secondaryTireSpeedIndex: __assign(__assign({}, prevForm.secondaryTireSpeedIndex), { value: vehicle.secondaryTireSpeedIndex }), lastInspectionDate: __assign(__assign({}, prevForm.lastInspectionDate), { value: vehicle.lastInspectionDate
116
116
  ? new Date(vehicle.lastInspectionDate)
117
117
  : null }), lastMaintenanceDate: __assign(__assign({}, prevForm.lastMaintenanceDate), { value: vehicle.lastMaintenanceDate
118
118
  ? new Date(vehicle.lastMaintenanceDate)
119
119
  : null }), tireBrand: __assign(__assign({}, prevForm.tireBrand), { value: vehicle.tireBrand }), tireProfile: __assign(__assign({}, prevForm.tireProfile), { value: vehicle.tireProfile }) });
120
+ if (vehicle.foreignPlate) {
121
+ updatedForm.vehicleModel = __assign(__assign({}, prevForm.vehicleModel), { value: vehicle.model });
122
+ }
120
123
  if (isVehicleTireSizeDefined(vehicle)) {
121
124
  updatedForm.tireSize = __assign(__assign({}, prevForm.tireSize), { value: vehicle.tireSize });
122
125
  }
@@ -321,7 +324,11 @@ var VehicleFullCard = function (_a) {
321
324
  case 0: return [4 /*yield*/, navigator.clipboard.writeText(vehicle.vin)];
322
325
  case 1: return [2 /*return*/, _a.sent()];
323
326
  }
324
- }); }); }, size: "small", "aria-label": "Copier le VIN" }, { children: (0, jsx_runtime_1.jsx)(icons_material_1.ContentCopy, { fontSize: "small" }) }))] })) }))] }))), localEditMode && ((0, jsx_runtime_1.jsx)(material_1.Grid, __assign({ item: true, xs: 12 }, { children: (0, jsx_runtime_1.jsx)(material_1.TextField, { label: "Kilom\u00E9trage actuel", name: "currentMileage", variant: "outlined", type: "number", required: true, value: form.currentMileage.value, onChange: function (e) { return handleInputChange(e); }, error: Boolean(form.currentMileage.error), sx: {
327
+ }); }); }, size: "small", "aria-label": "Copier le VIN" }, { children: (0, jsx_runtime_1.jsx)(icons_material_1.ContentCopy, { fontSize: "small" }) }))] })) }))] }))), localEditMode && form.vehicleModel && vehicle.foreignPlate && ((0, jsx_runtime_1.jsx)(material_1.Grid, __assign({ item: true, xs: 12 }, { children: (0, jsx_runtime_1.jsx)(material_1.TextField, { label: "Mod\u00E8le de la voiture ", name: "vehicleModel", variant: "outlined", type: "text", required: true, value: form.vehicleModel.value, onChange: function (e) { return handleInputChange(e); }, error: Boolean(form.vehicleModel.error), sx: {
328
+ width: "100%",
329
+ mt: 2,
330
+ "& input": { textTransform: "uppercase" }, // CSS pour forcer les majuscules dans l'input
331
+ } }) }))), localEditMode && ((0, jsx_runtime_1.jsx)(material_1.Grid, __assign({ item: true, xs: 12 }, { children: (0, jsx_runtime_1.jsx)(material_1.TextField, { label: "Kilom\u00E9trage actuel", name: "currentMileage", variant: "outlined", type: "number", required: true, value: form.currentMileage.value, onChange: function (e) { return handleInputChange(e); }, error: Boolean(form.currentMileage.error), sx: {
325
332
  width: "100%",
326
333
  mt: 2,
327
334
  "& input": { textTransform: "uppercase" }, // CSS pour forcer les majuscules dans l'input
@@ -23,6 +23,7 @@ export type MovaVehicleForm = {
23
23
  secondaryTireHeight: MovaFormField;
24
24
  secondaryTireDiameter: MovaFormField;
25
25
  secondaryTireSpeedIndex: MovaFormField;
26
+ vehicleModel?: MovaFormField;
26
27
  };
27
28
  /**
28
29
  * Type utilisé pour définir un interval sur une objet Schedule
@@ -0,0 +1,9 @@
1
+ export default class LoanVehicleLightAgreement {
2
+ id: string;
3
+ garageCustomerLastname: string;
4
+ garageCustomerFirstname: string;
5
+ vehicleLoanStart: Date;
6
+ vehicleLoanEnd: Date;
7
+ creationDate: Date;
8
+ constructor(id: string, garageCustomerLastname: string, garageCustomerFirstname: string, vehicleLoanStart: Date, vehicleLoanEnd: Date, creationDate: Date);
9
+ }
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var LoanVehicleLightAgreement = /** @class */ (function () {
4
+ function LoanVehicleLightAgreement(id, garageCustomerLastname, garageCustomerFirstname, vehicleLoanStart, vehicleLoanEnd, creationDate) {
5
+ this.id = id;
6
+ this.garageCustomerLastname = garageCustomerLastname;
7
+ this.garageCustomerFirstname = garageCustomerFirstname;
8
+ this.vehicleLoanStart = new Date(vehicleLoanStart);
9
+ this.vehicleLoanEnd = new Date(vehicleLoanEnd);
10
+ this.creationDate = new Date(creationDate);
11
+ }
12
+ return LoanVehicleLightAgreement;
13
+ }());
14
+ exports.default = LoanVehicleLightAgreement;
@@ -5,5 +5,7 @@ export default class VehicleGarage {
5
5
  color: string;
6
6
  type: string;
7
7
  vehicle: Vehicle;
8
- constructor(id: number, index: number, color: string, type: string, vehicle: Vehicle);
8
+ active: boolean;
9
+ archived: boolean;
10
+ constructor(id: number, index: number, color: string, type: string, vehicle: Vehicle, active: boolean, archived: boolean);
9
11
  }
@@ -1,12 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  var VehicleGarage = /** @class */ (function () {
4
- function VehicleGarage(id, index, color, type, vehicle) {
4
+ function VehicleGarage(id, index, color, type, vehicle, active, archived) {
5
5
  this.id = id;
6
6
  this.index = index;
7
7
  this.color = color;
8
8
  this.type = type;
9
9
  this.vehicle = vehicle;
10
+ this.active = active;
11
+ this.archived = archived;
10
12
  }
11
13
  return VehicleGarage;
12
14
  }());
@@ -77,7 +77,7 @@ export default class GarageService {
77
77
  }): Promise<APIResponse<string>>;
78
78
  static getAllGarageVehicles(garageId: string): Promise<APIResponse<any>>;
79
79
  static getOneGarageVehicle(garageId: string, vehicleId: number): Promise<APIResponse<any>>;
80
- static assignGarageVehicleEvent(garageId: string, eventId: string, vehicleId: number): Promise<APIResponse<string>>;
80
+ static assignGarageVehicleEvent(garageId: string, eventId: string, vehicleId: number, req: any): Promise<APIResponse<string>>;
81
81
  static editGarageVehicleDateEvent(garageId: string, eventId: string, req: any): Promise<APIResponse<string>>;
82
82
  static deassignGarageVehicleEvent(garageId: string, eventId: string): Promise<APIResponse<string>>;
83
83
  static getGaragesCsm(): Promise<APIResponse<Garage[]>>;
@@ -454,9 +454,10 @@ var GarageService = /** @class */ (function () {
454
454
  appType: Enums_1.MovaAppType.GARAGE,
455
455
  });
456
456
  };
457
- GarageService.assignGarageVehicleEvent = function (garageId, eventId, vehicleId) {
457
+ GarageService.assignGarageVehicleEvent = function (garageId, eventId, vehicleId, req) {
458
458
  return (0, ApiHelper_1.request)({
459
459
  url: "".concat(ApiHelper_1.API_BASE_URL, "/garage/").concat(garageId, "/event/").concat(eventId, "/vehicles/").concat(vehicleId),
460
+ body: JSON.stringify(req),
460
461
  method: Enums_1.APIMethod.PATCH,
461
462
  appType: Enums_1.MovaAppType.GARAGE,
462
463
  });
package/index.ts CHANGED
@@ -63,6 +63,7 @@ export { default as User } from "./src/models/User";
63
63
  export { default as Vehicle } from "./src/models/Vehicle";
64
64
  export { default as VehicleGarage } from "./src/models/VehicleGarage";
65
65
  export { default as VehicleTire } from "./src/models/VehicleTire";
66
+ export { default as LoanVehicleLightAgreement } from "./src/models/LoanVehicleAgreement";
66
67
  // Export des types
67
68
  export type { APIRequest, APIResponse } from "./src/helpers/ApiHelper";
68
69
  export type {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@movalib/movalib-commons",
3
- "version": "1.66.0",
3
+ "version": "1.68.1",
4
4
  "description": "Bibliothèque d'objets communs à l'ensemble des projets React de Movalib",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -63,6 +63,7 @@ interface VehicleFullCardProps {
63
63
 
64
64
  const initialUserFormState = {
65
65
  currentMileage: { value: null, isValid: true },
66
+ vehicleModel: { value: "", isValid: true },
66
67
  averageMileagePerYear: { value: null, isValid: true },
67
68
  tireSize: { value: null, isValid: true },
68
69
  tireWidth: { value: "", isValid: true },
@@ -134,7 +135,6 @@ const VehicleFullCard: FC<VehicleFullCardProps> = ({
134
135
 
135
136
  const initForm = () => {
136
137
  if (!vehicle) return;
137
- console.log("vehicle", vehicle);
138
138
  setForm((prevForm) => {
139
139
  const updatedForm = {
140
140
  ...prevForm,
@@ -184,6 +184,12 @@ const VehicleFullCard: FC<VehicleFullCardProps> = ({
184
184
  tireBrand: { ...prevForm.tireBrand, value: vehicle.tireBrand },
185
185
  tireProfile: { ...prevForm.tireProfile, value: vehicle.tireProfile },
186
186
  };
187
+ if (vehicle.foreignPlate) {
188
+ updatedForm.vehicleModel = {
189
+ ...prevForm.vehicleModel,
190
+ value: vehicle.model,
191
+ };
192
+ }
187
193
 
188
194
  if (isVehicleTireSizeDefined(vehicle)) {
189
195
  updatedForm.tireSize = {
@@ -581,6 +587,25 @@ const VehicleFullCard: FC<VehicleFullCardProps> = ({
581
587
  </Grid>
582
588
  </Grid>
583
589
  )}
590
+ {localEditMode && form.vehicleModel && vehicle.foreignPlate && (
591
+ <Grid item xs={12}>
592
+ <TextField
593
+ label="Modèle de la voiture "
594
+ name="vehicleModel"
595
+ variant="outlined"
596
+ type="text"
597
+ required
598
+ value={form.vehicleModel.value}
599
+ onChange={(e) => handleInputChange(e)}
600
+ error={Boolean(form.vehicleModel.error)}
601
+ sx={{
602
+ width: "100%",
603
+ mt: 2,
604
+ "& input": { textTransform: "uppercase" }, // CSS pour forcer les majuscules dans l'input
605
+ }}
606
+ />
607
+ </Grid>
608
+ )}
584
609
 
585
610
  {localEditMode && (
586
611
  <Grid item xs={12}>
@@ -29,6 +29,7 @@ export type MovaVehicleForm = {
29
29
  secondaryTireHeight: MovaFormField;
30
30
  secondaryTireDiameter: MovaFormField;
31
31
  secondaryTireSpeedIndex: MovaFormField;
32
+ vehicleModel?: MovaFormField;
32
33
  };
33
34
 
34
35
  /**
@@ -0,0 +1,25 @@
1
+ export default class LoanVehicleLightAgreement {
2
+ id: string; //UUID
3
+ garageCustomerLastname: string;
4
+ garageCustomerFirstname: string;
5
+
6
+ vehicleLoanStart: Date;
7
+ vehicleLoanEnd: Date;
8
+ creationDate: Date;
9
+
10
+ constructor(
11
+ id: string,
12
+ garageCustomerLastname: string,
13
+ garageCustomerFirstname: string,
14
+ vehicleLoanStart: Date,
15
+ vehicleLoanEnd: Date,
16
+ creationDate: Date
17
+ ) {
18
+ this.id = id;
19
+ this.garageCustomerLastname = garageCustomerLastname;
20
+ this.garageCustomerFirstname = garageCustomerFirstname;
21
+ this.vehicleLoanStart = new Date(vehicleLoanStart);
22
+ this.vehicleLoanEnd = new Date(vehicleLoanEnd);
23
+ this.creationDate = new Date(creationDate);
24
+ }
25
+ }
@@ -8,13 +8,17 @@ export default class VehicleGarage {
8
8
  index: number;
9
9
  color: string;
10
10
  type: string;
11
- vehicle: Vehicle
11
+ vehicle: Vehicle;
12
+ active: boolean;
13
+ archived: boolean;
12
14
 
13
- constructor( id: number,index: number, color: string, type: string, vehicle: Vehicle) {
15
+ constructor( id: number,index: number, color: string, type: string, vehicle: Vehicle, active: boolean, archived: boolean) {
14
16
  this.id = id;
15
17
  this.index = index;
16
18
  this.color = color;
17
19
  this.type = type;
18
20
  this.vehicle = vehicle;
21
+ this.active = active;
22
+ this.archived = archived;
19
23
  }
20
24
  }
@@ -677,10 +677,12 @@ export default class GarageService {
677
677
  static assignGarageVehicleEvent(
678
678
  garageId: string,
679
679
  eventId: string,
680
- vehicleId: number
680
+ vehicleId: number,
681
+ req: any
681
682
  ): Promise<APIResponse<string>> {
682
683
  return request({
683
684
  url: `${API_BASE_URL}/garage/${garageId}/event/${eventId}/vehicles/${vehicleId}`,
685
+ body: JSON.stringify(req),
684
686
  method: APIMethod.PATCH,
685
687
  appType: MovaAppType.GARAGE,
686
688
  });