@movalib/movalib-commons 1.0.59 → 1.0.61

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/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ export { default as MovaDigitalPassport } from './src/MovaDigitalPassport';
1
2
  export { default as Loader } from './src/Loader';
2
3
  export { default as MovaDialog } from './src/MovaDialog';
3
4
  export { default as QRCode } from './src/QRCode';
@@ -10,6 +11,7 @@ export { default as MovaCopyright } from './src/MovaCopyright';
10
11
  export { default as MovaVehicleTireField } from './src/MovaVehicleTireField';
11
12
  export { default as ConfirmationDialog } from './src/ConfirmationDialog';
12
13
  export { default as GenderSelector } from './src/GenderSelector';
14
+ export { default as Logger } from './src/helpers/Logger';
13
15
  export { default as Customer } from './src/models/Customer';
14
16
  export { default as User } from './src/models/User';
15
17
  export { default as Role } from './src/models/Role';
@@ -21,6 +23,7 @@ export { default as Schedule } from './src/models/Schedule';
21
23
  export { default as Event } from './src/models/Event';
22
24
  export { default as VehicleTire } from './src/models/VehicleTire';
23
25
  export type { MovaFormField, MovaLoginForm, MovaUserSignUpForm, MovaInterval, OriginReference } from './src/helpers/Types';
24
- export { validateField } from './src/helpers/Tools';
26
+ export { validateField, formatVehicleTire, formatFrenchVehiclePlate } from './src/helpers/Tools';
25
27
  export { validatePhoneNumber, validateText, validateEmail } from './src/helpers/Validator';
26
- export { RoleType, MovaAppType, DayOfWeek, EventState, EventType, DocumentType, DigitalPassportIndex, DocumentState, Gender } from './src/helpers/Enums';
28
+ export { formatDateByCountryCode, getLongFormattedDateTime, capitalizeFirstLetter } from './src/helpers/DateUtils';
29
+ export { RoleType, MovaAppType, DayOfWeek, EventState, EventType, DocumentType, DigitalPassportIndex, DocumentState, Gender, DateFormatTypes } from './src/helpers/Enums';
package/dist/index.js CHANGED
@@ -4,8 +4,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  return (mod && mod.__esModule) ? mod : { "default": mod };
5
5
  };
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.Gender = exports.DocumentState = exports.DigitalPassportIndex = exports.DocumentType = exports.EventType = exports.EventState = exports.DayOfWeek = exports.MovaAppType = exports.RoleType = exports.validateEmail = exports.validateText = exports.validatePhoneNumber = exports.validateField = exports.VehicleTire = exports.Event = exports.Schedule = exports.Garage = exports.Document = exports.Vehicle = exports.Address = exports.Role = exports.User = exports.Customer = exports.GenderSelector = exports.ConfirmationDialog = exports.MovaVehicleTireField = exports.MovaCopyright = exports.MovaSignUp = exports.MovaLogin = exports.MovaSnackbar = exports.TestButton = exports.VehiclePlateField = exports.QRCode = exports.MovaDialog = exports.Loader = void 0;
7
+ exports.DateFormatTypes = exports.Gender = exports.DocumentState = exports.DigitalPassportIndex = exports.DocumentType = exports.EventType = exports.EventState = exports.DayOfWeek = exports.MovaAppType = exports.RoleType = exports.capitalizeFirstLetter = exports.getLongFormattedDateTime = exports.formatDateByCountryCode = exports.validateEmail = exports.validateText = exports.validatePhoneNumber = exports.formatFrenchVehiclePlate = exports.formatVehicleTire = exports.validateField = exports.VehicleTire = exports.Event = exports.Schedule = exports.Garage = exports.Document = exports.Vehicle = exports.Address = exports.Role = exports.User = exports.Customer = exports.Logger = exports.GenderSelector = exports.ConfirmationDialog = exports.MovaVehicleTireField = exports.MovaCopyright = exports.MovaSignUp = exports.MovaLogin = exports.MovaSnackbar = exports.TestButton = exports.VehiclePlateField = exports.QRCode = exports.MovaDialog = exports.Loader = exports.MovaDigitalPassport = void 0;
8
8
  // Export des composants
9
+ var MovaDigitalPassport_1 = require("./src/MovaDigitalPassport");
10
+ Object.defineProperty(exports, "MovaDigitalPassport", { enumerable: true, get: function () { return __importDefault(MovaDigitalPassport_1).default; } });
9
11
  var Loader_1 = require("./src/Loader");
10
12
  Object.defineProperty(exports, "Loader", { enumerable: true, get: function () { return __importDefault(Loader_1).default; } });
11
13
  var MovaDialog_1 = require("./src/MovaDialog");
@@ -31,6 +33,8 @@ Object.defineProperty(exports, "ConfirmationDialog", { enumerable: true, get: fu
31
33
  var GenderSelector_1 = require("./src/GenderSelector");
32
34
  Object.defineProperty(exports, "GenderSelector", { enumerable: true, get: function () { return __importDefault(GenderSelector_1).default; } });
33
35
  // Export des classes
36
+ var Logger_1 = require("./src/helpers/Logger");
37
+ Object.defineProperty(exports, "Logger", { enumerable: true, get: function () { return __importDefault(Logger_1).default; } });
34
38
  var Customer_1 = require("./src/models/Customer");
35
39
  Object.defineProperty(exports, "Customer", { enumerable: true, get: function () { return __importDefault(Customer_1).default; } });
36
40
  var User_1 = require("./src/models/User");
@@ -54,10 +58,16 @@ Object.defineProperty(exports, "VehicleTire", { enumerable: true, get: function
54
58
  // Export des méthodes utilitaires
55
59
  var Tools_1 = require("./src/helpers/Tools");
56
60
  Object.defineProperty(exports, "validateField", { enumerable: true, get: function () { return Tools_1.validateField; } });
61
+ Object.defineProperty(exports, "formatVehicleTire", { enumerable: true, get: function () { return Tools_1.formatVehicleTire; } });
62
+ Object.defineProperty(exports, "formatFrenchVehiclePlate", { enumerable: true, get: function () { return Tools_1.formatFrenchVehiclePlate; } });
57
63
  var Validator_1 = require("./src/helpers/Validator");
58
64
  Object.defineProperty(exports, "validatePhoneNumber", { enumerable: true, get: function () { return Validator_1.validatePhoneNumber; } });
59
65
  Object.defineProperty(exports, "validateText", { enumerable: true, get: function () { return Validator_1.validateText; } });
60
66
  Object.defineProperty(exports, "validateEmail", { enumerable: true, get: function () { return Validator_1.validateEmail; } });
67
+ var DateUtils_1 = require("./src/helpers/DateUtils");
68
+ Object.defineProperty(exports, "formatDateByCountryCode", { enumerable: true, get: function () { return DateUtils_1.formatDateByCountryCode; } });
69
+ Object.defineProperty(exports, "getLongFormattedDateTime", { enumerable: true, get: function () { return DateUtils_1.getLongFormattedDateTime; } });
70
+ Object.defineProperty(exports, "capitalizeFirstLetter", { enumerable: true, get: function () { return DateUtils_1.capitalizeFirstLetter; } });
61
71
  // Export des enums
62
72
  var Enums_1 = require("./src/helpers/Enums");
63
73
  Object.defineProperty(exports, "RoleType", { enumerable: true, get: function () { return Enums_1.RoleType; } });
@@ -69,3 +79,4 @@ Object.defineProperty(exports, "DocumentType", { enumerable: true, get: function
69
79
  Object.defineProperty(exports, "DigitalPassportIndex", { enumerable: true, get: function () { return Enums_1.DigitalPassportIndex; } });
70
80
  Object.defineProperty(exports, "DocumentState", { enumerable: true, get: function () { return Enums_1.DocumentState; } });
71
81
  Object.defineProperty(exports, "Gender", { enumerable: true, get: function () { return Enums_1.Gender; } });
82
+ Object.defineProperty(exports, "DateFormatTypes", { enumerable: true, get: function () { return Enums_1.DateFormatTypes; } });
@@ -0,0 +1,7 @@
1
+ import { DigitalPassportIndex } from './helpers/Enums';
2
+ import type { FC } from 'react';
3
+ interface MovaDigitalPassportProps {
4
+ digitalPassportIndex: DigitalPassportIndex;
5
+ }
6
+ declare const MovaDigitalPassport: FC<MovaDigitalPassportProps>;
7
+ export default MovaDigitalPassport;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ var jsx_runtime_1 = require("react/jsx-runtime");
7
+ var Enums_1 = require("./helpers/Enums");
8
+ var speedometer_green_png_1 = __importDefault(require("./assets/images/speedometer_green.png"));
9
+ var speedometer_orange_png_1 = __importDefault(require("./assets/images/speedometer_orange.png"));
10
+ var speedometer_red_png_1 = __importDefault(require("./assets/images/speedometer_red.png"));
11
+ var MovaDigitalPassport = function (_a) {
12
+ var digitalPassportIndex = _a.digitalPassportIndex;
13
+ var getDigitalPassportImage = function () {
14
+ switch (digitalPassportIndex) {
15
+ case Enums_1.DigitalPassportIndex.A:
16
+ return speedometer_green_png_1.default;
17
+ case Enums_1.DigitalPassportIndex.B:
18
+ return speedometer_orange_png_1.default;
19
+ case Enums_1.DigitalPassportIndex.C:
20
+ return speedometer_red_png_1.default;
21
+ }
22
+ };
23
+ var handleOnClick = function (e) {
24
+ e.preventDefault();
25
+ // On affiche la popup explicative sur la passport digital
26
+ };
27
+ return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: digitalPassportIndex &&
28
+ (0, jsx_runtime_1.jsx)("img", { src: getDigitalPassportImage(), style: {
29
+ position: 'relative',
30
+ width: '25%',
31
+ top: '-25px',
32
+ right: '-15px',
33
+ zIndex: 200
34
+ }, alt: 'Passport Digital', onClick: function (e) { return handleOnClick(e); } }) }));
35
+ };
36
+ exports.default = MovaDigitalPassport;
@@ -0,0 +1,24 @@
1
+ import { type FC } from 'react';
2
+ import { MovaFormField } from './helpers/Types';
3
+ import Vehicle from './models/Vehicle';
4
+ interface VehicleFullCardProps {
5
+ vehicle: Vehicle;
6
+ onError: (message: string) => void;
7
+ onUploadDocument: (data: FormData) => void;
8
+ onDeleteDocument: (documentId: string) => void;
9
+ editMode: boolean;
10
+ focused?: boolean;
11
+ onUpdate?: (query: any) => void;
12
+ onDelete?: () => void;
13
+ }
14
+ export type MovaVehicleForm = {
15
+ currentMileage: MovaFormField;
16
+ averageMileagePerYear: MovaFormField;
17
+ tireSize: MovaFormField;
18
+ tireWidth: MovaFormField;
19
+ tireHeight: MovaFormField;
20
+ tireDiameter: MovaFormField;
21
+ tireSpeedIndex: MovaFormField;
22
+ };
23
+ declare const VehicleFullCard: FC<VehicleFullCardProps>;
24
+ export default VehicleFullCard;
@@ -0,0 +1,228 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ var jsx_runtime_1 = require("react/jsx-runtime");
18
+ var material_1 = require("@mui/material");
19
+ var react_1 = require("react");
20
+ var car_figure_png_1 = __importDefault(require("../assets/images/car_figure.png"));
21
+ var MovaVehicleTireField_1 = __importDefault(require("./MovaVehicleTireField"));
22
+ var ConfirmationDialog_1 = __importDefault(require("./ConfirmationDialog"));
23
+ var Enums_1 = require("./helpers/Enums");
24
+ var Tools_1 = require("./helpers/Tools");
25
+ var MovaDigitalPassport_1 = __importDefault(require("./MovaDigitalPassport"));
26
+ var Loader_1 = __importDefault(require("./Loader"));
27
+ var DateUtils_1 = require("./helpers/DateUtils");
28
+ var CloseRounded_1 = __importDefault(require("@mui/icons-material/CloseRounded"));
29
+ var EditRounded_1 = __importDefault(require("@mui/icons-material/EditRounded"));
30
+ var CloseRounded_2 = __importDefault(require("@mui/icons-material/CloseRounded"));
31
+ var Logger_1 = __importDefault(require("./helpers/Logger"));
32
+ var initialUserFormState = {
33
+ currentMileage: { value: null, isValid: true },
34
+ averageMileagePerYear: { value: null, isValid: true },
35
+ tireSize: { value: null, isValid: true },
36
+ tireWidth: { value: '', isValid: true },
37
+ tireHeight: { value: '', isValid: true },
38
+ tireDiameter: { value: '', isValid: true },
39
+ tireSpeedIndex: { value: '', isValid: true }
40
+ };
41
+ var VehicleFullCard = function (_a) {
42
+ var vehicle = _a.vehicle, onError = _a.onError, onUploadDocument = _a.onUploadDocument, onDeleteDocument = _a.onDeleteDocument, _b = _a.editMode, editMode = _b === void 0 ? false : _b, _c = _a.focused, focused = _c === void 0 ? false : _c, onUpdate = _a.onUpdate, onDelete = _a.onDelete;
43
+ var theme = (0, material_1.useTheme)();
44
+ var _d = (0, react_1.useState)(false), loading = _d[0], setLoading = _d[1];
45
+ var _e = (0, react_1.useState)(editMode), localEditMode = _e[0], setLocalEditMode = _e[1];
46
+ var _f = (0, react_1.useState)(false), openConfirmDocumentDelete = _f[0], setOpenConfirmDocumentDelete = _f[1];
47
+ var _g = (0, react_1.useState)(false), openConfirmVehicleDelete = _g[0], setOpenConfirmVehicleDelete = _g[1];
48
+ var _h = (0, react_1.useState)(''), documentToDelete = _h[0], setDocumentToDelete = _h[1];
49
+ // Formulaire utilisé pour les modifications d'informations sur le véhicule
50
+ var _j = (0, react_1.useState)(initialUserFormState), form = _j[0], setForm = _j[1];
51
+ var _k = (0, react_1.useState)([]), vehicleDocuments = _k[0], setVehicleDocuments = _k[1];
52
+ // Références aux éventuels documents uploadés depuis la fiche
53
+ var invoiceInputRef = (0, react_1.useRef)(null);
54
+ var tirePictureInputRef = (0, react_1.useRef)(null);
55
+ (0, react_1.useEffect)(function () {
56
+ initForm();
57
+ }, [vehicle]);
58
+ var initForm = function () {
59
+ if (vehicle) {
60
+ setForm(function (prevForm) {
61
+ var _a;
62
+ return (__assign(__assign({}, prevForm), (_a = {}, _a['currentMileage'] = __assign(__assign({}, prevForm['currentMileage']), { value: vehicle.currentMileage }), _a)));
63
+ });
64
+ setForm(function (prevForm) {
65
+ var _a;
66
+ return (__assign(__assign({}, prevForm), (_a = {}, _a['averageMileagePerYear'] = __assign(__assign({}, prevForm['averageMileagePerYear']), { value: vehicle.averageMileagePerYear }), _a)));
67
+ });
68
+ setForm(function (prevForm) {
69
+ var _a;
70
+ return (__assign(__assign({}, prevForm), (_a = {}, _a['tireWidth'] = __assign(__assign({}, prevForm['tireWidth']), { value: vehicle.tireWidth }), _a)));
71
+ });
72
+ setForm(function (prevForm) {
73
+ var _a;
74
+ return (__assign(__assign({}, prevForm), (_a = {}, _a['tireHeight'] = __assign(__assign({}, prevForm['tireHeight']), { value: vehicle.tireHeight }), _a)));
75
+ });
76
+ setForm(function (prevForm) {
77
+ var _a;
78
+ return (__assign(__assign({}, prevForm), (_a = {}, _a['tireDiameter'] = __assign(__assign({}, prevForm['tireDiameter']), { value: vehicle.tireDiameter }), _a)));
79
+ });
80
+ setForm(function (prevForm) {
81
+ var _a;
82
+ return (__assign(__assign({}, prevForm), (_a = {}, _a['tireSpeedIndex'] = __assign(__assign({}, prevForm['tireSpeedIndex']), { value: vehicle.tireSpeedIndex }), _a)));
83
+ });
84
+ if (isVehicleTireSizeDefined(vehicle)) {
85
+ setForm(function (prevForm) {
86
+ var _a;
87
+ return (__assign(__assign({}, prevForm), (_a = {}, _a['tireSize'] = __assign(__assign({}, prevForm['tireSize']), { value: vehicle.tireSize }), _a)));
88
+ });
89
+ }
90
+ Logger_1.default.info(form);
91
+ }
92
+ };
93
+ var isVehicleTireSizeDefined = function (vehicle) {
94
+ return vehicle.tireSize && vehicle.tireSize.diameter && vehicle.tireSize.height && vehicle.tireSize.speedIndex && vehicle.tireSize.width;
95
+ };
96
+ var validateForm = function () {
97
+ var newForm = __assign({}, form);
98
+ // Validator pour les champs obligatoires
99
+ newForm.currentMileage = (0, Tools_1.validateField)(form.currentMileage, function (value) { return !!value; }, 'Champ obligatoire');
100
+ newForm.averageMileagePerYear = (0, Tools_1.validateField)(form.averageMileagePerYear, function (value) { return !!value; }, 'Champ obligatoire');
101
+ // La validation de la saisie des pneumatiques se fait dans le composant "MovaVehicleTireField", traitée dans le callback "handleOnChangeVehicleTire"
102
+ setForm(newForm);
103
+ return newForm.currentMileage.isValid && newForm.averageMileagePerYear.isValid && newForm.tireSize.isValid;
104
+ };
105
+ var handleInputChange = function (e) {
106
+ handleChange(e.target.name, e.target.value);
107
+ };
108
+ var handleSelectChange = function (e) {
109
+ handleChange(e.target.name, e.target.value);
110
+ };
111
+ var handleChange = function (fieldName, fieldValue) {
112
+ var _a;
113
+ var newField = (_a = {}, _a[fieldName] = { value: fieldValue, isValid: true }, _a);
114
+ setForm(__assign(__assign({}, form), newField));
115
+ };
116
+ var uploadVehicleDocument = function (document, documentType) {
117
+ if (vehicle && document && documentType) {
118
+ // Utilisation d'un formData pour permettre le trasnfert de fichier vers l'API
119
+ var formData = new FormData();
120
+ formData.append("documentType", documentType);
121
+ // Ajouter la facture à FormData
122
+ formData.append('file', document);
123
+ // Appel du callback correspondant
124
+ if (onUploadDocument)
125
+ onUploadDocument(formData);
126
+ }
127
+ };
128
+ /**
129
+ *
130
+ * @param event L'upload des documents se fait directement lors du téléchargement
131
+ * @param docType
132
+ */
133
+ var handleFileChange = function (event, docType) {
134
+ event.preventDefault();
135
+ if (event && event.target.files && event.target.files.length > 0 && docType) {
136
+ uploadVehicleDocument(event.target.files[0], docType);
137
+ }
138
+ };
139
+ var handleOnClickEdit = function () {
140
+ // On passe la fiche véhicule en mode édition
141
+ setLocalEditMode(true);
142
+ };
143
+ var handleOnChangeVehicleTire = function (vehicleTire, isValid) {
144
+ setForm(function (prevForm) {
145
+ var _a;
146
+ return (__assign(__assign({}, prevForm), (_a = {}, _a['tireSize'] = __assign(__assign({}, prevForm['tireSize']), { value: vehicleTire, isValid: isValid }), _a)));
147
+ });
148
+ };
149
+ var handleOnClickDeleteVehicle = function (e) {
150
+ e.preventDefault();
151
+ setOpenConfirmVehicleDelete(true);
152
+ };
153
+ var handleDeleteDocument = function (e, documentId) {
154
+ e.preventDefault();
155
+ setDocumentToDelete(documentId);
156
+ setOpenConfirmDocumentDelete(true);
157
+ };
158
+ var handleOnClickValidate = function () {
159
+ if (validateForm()) {
160
+ setLoading(true);
161
+ Logger_1.default.info(form.tireSize.value);
162
+ var query = {
163
+ currentMileage: form.currentMileage.value,
164
+ averageMileagePerYear: form.averageMileagePerYear.value,
165
+ tireWidth: form.tireSize.isValid && form.tireSize.value ? form.tireSize.value.width : undefined,
166
+ tireHeight: form.tireSize.isValid && form.tireSize.value ? form.tireSize.value.height : undefined,
167
+ tireDiameter: form.tireSize.isValid && form.tireSize.value ? form.tireSize.value.diameter : undefined,
168
+ tireSpeedIndex: form.tireSize.isValid && form.tireSize.value ? form.tireSize.value.speedIndex : undefined
169
+ };
170
+ Logger_1.default.info(query);
171
+ // Appel du callback correspondant
172
+ if (onUpdate)
173
+ onUpdate(query);
174
+ }
175
+ };
176
+ var handleOnClickCancel = function () {
177
+ initForm();
178
+ setLocalEditMode(false);
179
+ };
180
+ var handleCloseConfirmDocumentDelete = function () {
181
+ setOpenConfirmDocumentDelete(false);
182
+ setDocumentToDelete('');
183
+ };
184
+ var handleCloseConfirmVehicleDelete = function () {
185
+ setOpenConfirmVehicleDelete(false);
186
+ };
187
+ /**
188
+ *
189
+ */
190
+ var handleConfirmDocumentDelete = function () {
191
+ setOpenConfirmDocumentDelete(false);
192
+ if (vehicle && documentToDelete) {
193
+ // Appel du callback correspondant
194
+ if (onDeleteDocument)
195
+ onDeleteDocument(documentToDelete);
196
+ }
197
+ };
198
+ var handleConfirmVehicleDelete = function () {
199
+ setOpenConfirmVehicleDelete(false);
200
+ if (vehicle && onDelete) {
201
+ // Appel du callback correspondant
202
+ onDelete();
203
+ }
204
+ };
205
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [vehicle &&
206
+ (0, jsx_runtime_1.jsxs)(material_1.Card, __assign({ variant: 'outlined', sx: { maxWidth: 345,
207
+ backgroundColor: focused ? theme.palette.primary.light : 'white',
208
+ overflow: 'visible', mt: 4, pb: 1 } }, { children: [(0, jsx_runtime_1.jsx)("img", { src: car_figure_png_1.default, style: {
209
+ position: 'relative',
210
+ width: '40%',
211
+ top: '-25px',
212
+ left: '-15px',
213
+ zIndex: 200
214
+ }, alt: 'Icone Voiture' }), (0, jsx_runtime_1.jsx)(MovaDigitalPassport_1.default, { digitalPassportIndex: vehicle.digitalPassportIndex }), (0, jsx_runtime_1.jsxs)(material_1.CardContent, __assign({ sx: { pt: 0, pb: 0 } }, { children: [(0, jsx_runtime_1.jsxs)(material_1.Typography, __assign({ variant: "h6", component: "div", align: "center", sx: { mb: 1 }, color: (0, material_1.darken)(theme.palette.primary.main, 0.2) }, { children: [vehicle.brand && "".concat(vehicle.brand, " "), vehicle.model && "".concat(vehicle.model, " "), vehicle.version && "".concat(vehicle.version)] })), (0, jsx_runtime_1.jsxs)(material_1.Grid, __assign({ container: true, justifyContent: "space-between" }, { children: [(0, jsx_runtime_1.jsx)(material_1.Grid, __assign({ item: true, xs: 12 }, { children: (0, jsx_runtime_1.jsx)(material_1.Typography, __assign({ variant: "body1", color: "text.primary" }, { children: (0, jsx_runtime_1.jsx)("b", { children: (0, Tools_1.formatFrenchVehiclePlate)(vehicle.plate) }) })) })), !localEditMode && (0, jsx_runtime_1.jsxs)(material_1.Grid, __assign({ container: true, textAlign: 'justify', sx: { pt: 2 } }, { children: [(0, jsx_runtime_1.jsx)(material_1.Grid, __assign({ item: true, xs: 8 }, { children: (0, jsx_runtime_1.jsx)(material_1.Typography, __assign({ variant: "body1", color: "text.secondary" }, { children: "Km actuel :" })) })), (0, jsx_runtime_1.jsx)(material_1.Grid, __assign({ item: true, xs: 4, sx: { textAlign: 'right' } }, { children: (0, jsx_runtime_1.jsx)(material_1.Typography, __assign({ variant: "body1", color: "text.secondary" }, { children: (0, jsx_runtime_1.jsxs)("b", { children: [vehicle.currentMileage, " km"] }) })) }))] })), 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: {
215
+ width: '100%',
216
+ mt: 2,
217
+ '& input': { textTransform: 'uppercase' } // CSS pour forcer les majuscules dans l'input
218
+ }, helperText: Boolean(form.currentMileage.error && form.currentMileage.value > 0)
219
+ ? form.currentMileage.error : "Sur ton tableau de bord 😉" }) })), !localEditMode && (0, jsx_runtime_1.jsxs)(material_1.Grid, __assign({ container: true, textAlign: 'justify', sx: { pt: 2 } }, { children: [(0, jsx_runtime_1.jsx)(material_1.Grid, __assign({ item: true, xs: 8 }, { children: (0, jsx_runtime_1.jsx)(material_1.Typography, __assign({ variant: "body1", color: "text.secondary" }, { children: "Km moyen annuel :" })) })), (0, jsx_runtime_1.jsx)(material_1.Grid, __assign({ item: true, xs: 4, sx: { textAlign: 'right' } }, { children: (0, jsx_runtime_1.jsx)(material_1.Typography, __assign({ variant: "body1", color: "text.secondary" }, { children: (0, jsx_runtime_1.jsxs)("b", { children: [vehicle.averageMileagePerYear, " km"] }) })) }))] })), localEditMode && (0, jsx_runtime_1.jsx)(material_1.Grid, __assign({ item: true, xs: 12 }, { children: (0, jsx_runtime_1.jsxs)(material_1.FormControl, __assign({ fullWidth: true, margin: "normal", error: Boolean(form.averageMileagePerYear.error) }, { children: [(0, jsx_runtime_1.jsx)(material_1.InputLabel, __assign({ id: "averageMileagePerYear-label" }, { children: "Kilom\u00E9trage moyen annuel" })), (0, jsx_runtime_1.jsxs)(material_1.Select, __assign({ labelId: "averageMileagePerYear-label", id: "averageMileagePerYear", name: "averageMileagePerYear", value: form.averageMileagePerYear.value ?
220
+ String(form.averageMileagePerYear.value) : '', onChange: function (e) { return handleSelectChange(e); }, label: "Kilom\u00E9trage moyen annuel" }, { children: [(0, jsx_runtime_1.jsx)(material_1.MenuItem, __assign({ value: 5000 }, { children: "5 000" })), (0, jsx_runtime_1.jsx)(material_1.MenuItem, __assign({ value: 10000 }, { children: "10 000" })), (0, jsx_runtime_1.jsx)(material_1.MenuItem, __assign({ value: 15000 }, { children: "15 000" })), (0, jsx_runtime_1.jsx)(material_1.MenuItem, __assign({ value: 20000 }, { children: "20 000" })), (0, jsx_runtime_1.jsx)(material_1.MenuItem, __assign({ value: 25000 }, { children: "25 000" })), (0, jsx_runtime_1.jsx)(material_1.MenuItem, __assign({ value: 30000 }, { children: "30 000" })), (0, jsx_runtime_1.jsx)(material_1.MenuItem, __assign({ value: 50000 }, { children: "50 000" })), (0, jsx_runtime_1.jsx)(material_1.MenuItem, __assign({ value: 75000 }, { children: "75 000" })), (0, jsx_runtime_1.jsx)(material_1.MenuItem, __assign({ value: 100000 }, { children: "100 000" })), (0, jsx_runtime_1.jsx)(material_1.MenuItem, __assign({ value: 999999 }, { children: "+100 000" }))] })), (0, jsx_runtime_1.jsx)(material_1.FormHelperText, { children: form.averageMileagePerYear.error })] })) })), !localEditMode && (0, jsx_runtime_1.jsxs)(material_1.Grid, __assign({ container: true, textAlign: 'justify', sx: { pt: 2 } }, { children: [(0, jsx_runtime_1.jsx)(material_1.Grid, __assign({ item: true, xs: 6 }, { children: (0, jsx_runtime_1.jsx)(material_1.Typography, __assign({ variant: "body1", color: "text.secondary" }, { children: "Pneumatiques :" })) })), (0, jsx_runtime_1.jsx)(material_1.Grid, __assign({ item: true, xs: 6, sx: { textAlign: 'right' } }, { children: (0, jsx_runtime_1.jsx)(material_1.Typography, __assign({ variant: "body1", color: "text.secondary" }, { children: isVehicleTireSizeDefined(vehicle) ? (0, jsx_runtime_1.jsx)("b", { children: (0, Tools_1.formatVehicleTire)(vehicle.tireSize) }) : '-' })) }))] })), localEditMode && (0, jsx_runtime_1.jsx)(material_1.Grid, __assign({ item: true, xs: 12, sx: { mt: 1 } }, { children: (0, jsx_runtime_1.jsx)(MovaVehicleTireField_1.default, { vehicleTire: form.tireSize.value, onChangeVehicleTire: handleOnChangeVehicleTire }) }))] })), !localEditMode && (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(material_1.Grid, __assign({ item: true, xs: 12 }, { children: (0, jsx_runtime_1.jsx)(material_1.Typography, __assign({ variant: "h6", component: "div", align: "center", sx: { mt: 3, mb: 1 }, color: (0, material_1.darken)(theme.palette.primary.main, 0.2) }, { children: "CARNET DU V\u00C9HICULE" })) })), vehicleDocuments && (vehicleDocuments === null || vehicleDocuments === void 0 ? void 0 : vehicleDocuments.filter(function (doc) { return doc.type === Enums_1.DocumentType.VEHICLE_MAINTENANCE_INVOICE; }).map(function (invoice, index) { return ((0, jsx_runtime_1.jsxs)(material_1.Grid, __assign({ container: true, sx: { justifyContent: 'center', alignItems: 'center' } }, { children: [(0, jsx_runtime_1.jsx)(material_1.Grid, __assign({ item: true, xs: 11, sm: 6, md: 4, sx: { textAlign: 'left' } }, { children: (0, jsx_runtime_1.jsxs)(material_1.Link, __assign({ color: (0, material_1.darken)('#F29ABA', 0.2), href: invoice.fileSignedUrl, target: "_blank", rel: "noopener" }, { children: ["Facture du ", (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, DateUtils_1.formatDateByCountryCode)(invoice.creationDate, 'fr', Enums_1.DateFormatTypes.SHORT_FORMAT_DATE) })] })) }), (index + 1) * 50), (0, jsx_runtime_1.jsx)(material_1.Grid, __assign({ item: true, xs: 1, sm: 1, md: 1, sx: { textAlign: 'right' } }, { children: (0, jsx_runtime_1.jsx)(material_1.IconButton, __assign({ onClick: function (e) { return handleDeleteDocument(e, invoice.id); } }, { children: (0, jsx_runtime_1.jsx)(CloseRounded_2.default, {}) })) }), (index + 1) * 100)] }), index + 1)); })), vehicleDocuments && (vehicleDocuments === null || vehicleDocuments === void 0 ? void 0 : vehicleDocuments.filter(function (doc) { return doc.type === Enums_1.DocumentType.VEHICLE_TIRE_PHOTO; }).map(function (tirePhoto, index) { return ((0, jsx_runtime_1.jsxs)(material_1.Grid, __assign({ container: true, sx: { justifyContent: 'center', alignItems: 'center' } }, { children: [(0, jsx_runtime_1.jsx)(material_1.Grid, __assign({ item: true, xs: 11, sm: 6, md: 4, sx: { textAlign: 'left' } }, { children: (0, jsx_runtime_1.jsxs)(material_1.Link, __assign({ color: (0, material_1.darken)('#F29ABA', 0.2), href: tirePhoto.fileSignedUrl, target: "_blank", rel: "noopener" }, { children: ["Photo pneu du ", (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, DateUtils_1.formatDateByCountryCode)(tirePhoto.creationDate, 'fr', Enums_1.DateFormatTypes.SHORT_FORMAT_DATE) })] })) }), (index + 1) * 50), (0, jsx_runtime_1.jsx)(material_1.Grid, __assign({ item: true, xs: 1, sm: 1, md: 1, sx: { textAlign: 'right' } }, { children: (0, jsx_runtime_1.jsx)(material_1.IconButton, __assign({ onClick: function (e) { return handleDeleteDocument(e, tirePhoto.id); } }, { children: (0, jsx_runtime_1.jsx)(CloseRounded_2.default, {}) })) }), (index + 1) * 100)] }), index + 1)); })), (0, jsx_runtime_1.jsxs)(material_1.Grid, __assign({ container: true }, { children: [(0, jsx_runtime_1.jsx)(material_1.Grid, __assign({ item: true, xs: 6, sm: 6, md: 4, sx: { mt: 2 } }, { children: (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("input", { accept: "image/*, application/pdf", type: "file", style: { display: 'none' }, ref: invoiceInputRef, id: "raised-button-invoice", onChange: function (e) { return handleFileChange(e, Enums_1.DocumentType.VEHICLE_MAINTENANCE_INVOICE); } }), (0, jsx_runtime_1.jsx)("label", __assign({ htmlFor: "raised-button-invoice" }, { children: (0, jsx_runtime_1.jsx)(material_1.Button, __assign({ size: 'large', component: "span", variant: "outlined", sx: { alignItems: 'normal', width: '90%', mt: 2, mb: 1, height: '70px', p: 1,
221
+ color: (0, material_1.darken)(theme.palette.primary.main, 0.2) } }, { children: "Ajouter Facture" })) }))] }) })), (0, jsx_runtime_1.jsx)(material_1.Grid, __assign({ item: true, xs: 6, sm: 6, md: 4, sx: { mt: 2 } }, { children: (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("input", { accept: "image/*", type: "file", style: { display: 'none' }, ref: tirePictureInputRef, id: "raised-button-tire", onChange: function (e) { return handleFileChange(e, Enums_1.DocumentType.VEHICLE_TIRE_PHOTO); } }), (0, jsx_runtime_1.jsx)("label", __assign({ htmlFor: "raised-button-tire" }, { children: (0, jsx_runtime_1.jsx)(material_1.Button, __assign({ component: "span", size: 'large', variant: "outlined", sx: { alignItems: 'normal', width: '90%', mt: 2, mb: 1, height: '70px', p: 1,
222
+ color: (0, material_1.darken)(theme.palette.primary.main, 0.2) } }, { children: "Ajouter Photo Pneu" })) }))] }) }))] }))] })] })), (0, jsx_runtime_1.jsx)(Loader_1.default, { loading: loading }), (0, jsx_runtime_1.jsxs)(material_1.CardActions, __assign({ sx: { mt: 3, justifyContent: localEditMode ? 'center' : 'end' } }, { children: [!localEditMode &&
223
+ (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsxs)(material_1.Button, __assign({ onClick: handleOnClickEdit, color: "inherit", sx: { width: '45%' }, variant: 'text' }, { children: [(0, jsx_runtime_1.jsx)(EditRounded_1.default, { sx: { mr: 1 } }), "MODIFIER"] })) }), localEditMode &&
224
+ (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)(material_1.Button, __assign({ onClick: handleOnClickCancel, sx: { width: '45%', color: theme.palette.text.secondary }, variant: 'text' }, { children: [(0, jsx_runtime_1.jsx)(CloseRounded_1.default, { sx: { mr: 1 } }), "ANNULER"] })), (0, jsx_runtime_1.jsxs)(material_1.Button, __assign({ onClick: handleOnClickValidate, sx: { width: '45%', color: (0, material_1.darken)(theme.palette.primary.main, 0.2) }, variant: 'text' }, { children: [(0, jsx_runtime_1.jsx)(EditRounded_1.default, { sx: { mr: 1 } }), "VALIDER"] }))] })] }))] })), localEditMode && onDelete &&
225
+ (0, jsx_runtime_1.jsx)(material_1.Button, __assign({ onClick: function (e) { return handleOnClickDeleteVehicle(e); }, sx: { width: '90', mt: 4, color: theme.palette.error.light,
226
+ borderColor: theme.palette.error.light }, variant: 'outlined' }, { children: "Supprimer le v\u00E9hicule" })), (0, jsx_runtime_1.jsx)(ConfirmationDialog_1.default, { open: openConfirmDocumentDelete, onClose: handleCloseConfirmDocumentDelete, onConfirm: handleConfirmDocumentDelete, message: "\u00CAtes-vous s\u00FBr de vouloir supprimer ce document ?" }), (0, jsx_runtime_1.jsx)(ConfirmationDialog_1.default, { open: openConfirmVehicleDelete, onClose: handleCloseConfirmVehicleDelete, onConfirm: handleConfirmVehicleDelete, message: "\u00CAtes-vous s\u00FBr de vouloir supprimer ce v\u00E9hicule ?" })] }));
227
+ };
228
+ exports.default = VehicleFullCard;
@@ -0,0 +1,4 @@
1
+ import { DateFormatTypes } from './Enums';
2
+ export declare const formatDateByCountryCode: (date: Date | undefined, countryCode: string, formatType: DateFormatTypes) => string;
3
+ export declare function getLongFormattedDateTime(date: Date | undefined, timeZone: string, locale: Locale): string;
4
+ export declare function capitalizeFirstLetter(str: string): string;
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.capitalizeFirstLetter = exports.getLongFormattedDateTime = exports.formatDateByCountryCode = void 0;
4
+ var date_fns_tz_1 = require("date-fns-tz");
5
+ var locale_1 = require("date-fns/locale");
6
+ var Enums_1 = require("./Enums");
7
+ var formatDateByCountryCode = function (date, countryCode, formatType) {
8
+ if (date) {
9
+ // Tableau de correspondance entre les codes de pays et les fuseaux horaires
10
+ var countryTimeZones = {
11
+ 'FR': 'Europe/Paris',
12
+ // Ajoutez d'autres correspondances de codes de pays et de fuseaux horaires ici
13
+ };
14
+ var timeZone = countryTimeZones[countryCode.toUpperCase()];
15
+ if (!timeZone) {
16
+ throw new Error('Code de pays non pris en charge');
17
+ }
18
+ // Convertir la date UTC en date du fuseau horaire local
19
+ var zonedDate = (0, date_fns_tz_1.utcToZonedTime)(date, timeZone);
20
+ // Formater la date
21
+ switch (formatType) {
22
+ case Enums_1.DateFormatTypes.SHORT_FORMAT_DATE:
23
+ case Enums_1.DateFormatTypes.LONG_FORMAT_DATETIME:
24
+ return (0, date_fns_tz_1.format)(zonedDate, formatType, { timeZone: timeZone, locale: locale_1.fr });
25
+ case Enums_1.DateFormatTypes.LONG_FORMAT_DATETIME_LITERAL:
26
+ return getLongFormattedDateTime(zonedDate, timeZone, locale_1.fr);
27
+ }
28
+ return (0, date_fns_tz_1.format)(zonedDate, formatType, { timeZone: timeZone, locale: locale_1.fr });
29
+ }
30
+ return '';
31
+ };
32
+ exports.formatDateByCountryCode = formatDateByCountryCode;
33
+ function getLongFormattedDateTime(date, timeZone, locale) {
34
+ if (date) {
35
+ var day = capitalizeFirstLetter((0, date_fns_tz_1.format)(date, 'eeee', { timeZone: timeZone, locale: locale }));
36
+ var month = capitalizeFirstLetter((0, date_fns_tz_1.format)(date, 'MMMM', { timeZone: timeZone, locale: locale }));
37
+ var hours = (0, date_fns_tz_1.format)(date, 'HH', { timeZone: timeZone, locale: locale });
38
+ var minutes = (0, date_fns_tz_1.format)(date, 'mm', { timeZone: timeZone, locale: locale });
39
+ var dayOfMonth = (0, date_fns_tz_1.format)(date, 'dd', { timeZone: timeZone, locale: locale });
40
+ return "".concat(day, " ").concat(dayOfMonth, " ").concat(month, " \u00E0 ").concat(hours, ":").concat(minutes);
41
+ }
42
+ return '';
43
+ }
44
+ exports.getLongFormattedDateTime = getLongFormattedDateTime;
45
+ function capitalizeFirstLetter(str) {
46
+ if (str.length === 0) {
47
+ return str;
48
+ }
49
+ var firstChar = str.charAt(0).toUpperCase();
50
+ var restOfString = str.slice(1);
51
+ return firstChar + restOfString;
52
+ }
53
+ exports.capitalizeFirstLetter = capitalizeFirstLetter;
@@ -1,3 +1,8 @@
1
+ export declare enum DateFormatTypes {
2
+ SHORT_FORMAT_DATE = "dd/MM/yyyy",
3
+ LONG_FORMAT_DATETIME = "dd/MM/yyyy HH:mm:ss",
4
+ LONG_FORMAT_DATETIME_LITERAL = "EEEE dd MMMM yyyy '\u00E0' HH:mm"
5
+ }
1
6
  export declare enum Gender {
2
7
  MALE = 0,
3
8
  FEMALE = 1,
@@ -1,6 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RoleType = exports.MovaAppType = exports.DocumentType = exports.DocumentState = exports.DayOfWeek = exports.EventType = exports.EventState = exports.DigitalPassportIndex = exports.Gender = void 0;
3
+ exports.RoleType = exports.MovaAppType = exports.DocumentType = exports.DocumentState = exports.DayOfWeek = exports.EventType = exports.EventState = exports.DigitalPassportIndex = exports.Gender = exports.DateFormatTypes = void 0;
4
+ var DateFormatTypes;
5
+ (function (DateFormatTypes) {
6
+ DateFormatTypes["SHORT_FORMAT_DATE"] = "dd/MM/yyyy";
7
+ DateFormatTypes["LONG_FORMAT_DATETIME"] = "dd/MM/yyyy HH:mm:ss";
8
+ DateFormatTypes["LONG_FORMAT_DATETIME_LITERAL"] = "EEEE dd MMMM yyyy '\u00E0' HH:mm";
9
+ })(DateFormatTypes = exports.DateFormatTypes || (exports.DateFormatTypes = {}));
4
10
  var Gender;
5
11
  (function (Gender) {
6
12
  Gender[Gender["MALE"] = 0] = "MALE";
@@ -0,0 +1,8 @@
1
+ declare class Logger {
2
+ static isEnabled(): boolean;
3
+ static enableLogging(): void;
4
+ static disableLogging(): void;
5
+ static info(...args: any[]): void;
6
+ static error(...args: any[]): void;
7
+ }
8
+ export default Logger;
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
3
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
4
+ if (ar || !(i in from)) {
5
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
6
+ ar[i] = from[i];
7
+ }
8
+ }
9
+ return to.concat(ar || Array.prototype.slice.call(from));
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ var Logger = /** @class */ (function () {
13
+ function Logger() {
14
+ }
15
+ Logger.isEnabled = function () {
16
+ return localStorage.getItem('modeDebug') === 'true';
17
+ };
18
+ Logger.enableLogging = function () {
19
+ localStorage.setItem('modeDebug', 'true');
20
+ };
21
+ Logger.disableLogging = function () {
22
+ localStorage.removeItem('modeDebug');
23
+ };
24
+ Logger.info = function () {
25
+ var args = [];
26
+ for (var _i = 0; _i < arguments.length; _i++) {
27
+ args[_i] = arguments[_i];
28
+ }
29
+ if (Logger.isEnabled()) {
30
+ console.info.apply(console, __spreadArray(['INFO:'], args, false));
31
+ }
32
+ };
33
+ Logger.error = function () {
34
+ var args = [];
35
+ for (var _i = 0; _i < arguments.length; _i++) {
36
+ args[_i] = arguments[_i];
37
+ }
38
+ if (Logger.isEnabled()) {
39
+ console.error.apply(console, __spreadArray(['ERROR:'], args, false));
40
+ }
41
+ };
42
+ return Logger;
43
+ }());
44
+ exports.default = Logger;
@@ -1,5 +1,6 @@
1
1
  import VehicleTire from "../models/VehicleTire";
2
2
  import { MovaFormField } from "./Types";
3
+ export declare const formatFrenchVehiclePlate: (input: string | undefined) => string;
3
4
  export declare function formatVehicleTire(vehicleTire: VehicleTire): string;
4
5
  export declare function formatVehicleTireStr(input: string): string;
5
6
  /**
@@ -1,6 +1,22 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.validateField = exports.formatVehicleTireStr = exports.formatVehicleTire = void 0;
3
+ exports.validateField = exports.formatVehicleTireStr = exports.formatVehicleTire = exports.formatFrenchVehiclePlate = void 0;
4
+ var formatFrenchVehiclePlate = function (input) {
5
+ if (input) {
6
+ // Supprimer tous les caractères non alphanumériques
7
+ var cleanedInput = input.replace(/[^A-Z0-9]/gi, '').toUpperCase();
8
+ // Ajouter des tirets aux positions appropriées
9
+ if (cleanedInput.length >= 2) {
10
+ cleanedInput = "".concat(cleanedInput.slice(0, 2), "-").concat(cleanedInput.slice(2));
11
+ }
12
+ if (cleanedInput.length >= 6) {
13
+ cleanedInput = "".concat(cleanedInput.slice(0, 6), "-").concat(cleanedInput.slice(6, 8));
14
+ }
15
+ return cleanedInput;
16
+ }
17
+ return "";
18
+ };
19
+ exports.formatFrenchVehiclePlate = formatFrenchVehiclePlate;
4
20
  function formatVehicleTire(vehicleTire) {
5
21
  if (vehicleTire) {
6
22
  var concatened = "".concat(vehicleTire.width).concat(vehicleTire.height).concat(vehicleTire.diameter).concat(vehicleTire.speedIndex);
@@ -11,8 +11,8 @@ export default class Event {
11
11
  title: string;
12
12
  garageName: string;
13
13
  garageId: number;
14
- startDate?: Date;
15
- endDate?: Date;
14
+ start?: Date;
15
+ end?: Date;
16
16
  state: EventState;
17
17
  prestations?: Prestation[];
18
18
  /**
@@ -36,7 +36,7 @@ export default class Event {
36
36
  * MVP : pour l'instant les références sont transmises sous cette forme classique
37
37
  */
38
38
  originReferences?: OriginReference[];
39
- constructor({ id, notes, ownerId, type, title, garageName, garageId, state, startDate, endDate, prestations, guestsId, vehicleId, quoteId, originReferences }: {
39
+ constructor({ id, notes, ownerId, type, title, garageName, garageId, state, start, end, prestations, guestsId, vehicleId, quoteId, originReferences }: {
40
40
  id: string;
41
41
  notes?: string;
42
42
  ownerId: number;
@@ -45,8 +45,8 @@ export default class Event {
45
45
  garageName: string;
46
46
  garageId: number;
47
47
  state: EventState;
48
- startDate?: Date;
49
- endDate?: Date;
48
+ start?: Date;
49
+ end?: Date;
50
50
  prestations?: Prestation[];
51
51
  guestsId?: string[];
52
52
  vehicleId?: number;
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  var Event = /** @class */ (function () {
4
4
  function Event(_a) {
5
- var id = _a.id, notes = _a.notes, ownerId = _a.ownerId, type = _a.type, title = _a.title, garageName = _a.garageName, garageId = _a.garageId, state = _a.state, startDate = _a.startDate, endDate = _a.endDate, prestations = _a.prestations, guestsId = _a.guestsId, vehicleId = _a.vehicleId, quoteId = _a.quoteId, originReferences = _a.originReferences;
5
+ var id = _a.id, notes = _a.notes, ownerId = _a.ownerId, type = _a.type, title = _a.title, garageName = _a.garageName, garageId = _a.garageId, state = _a.state, start = _a.start, end = _a.end, prestations = _a.prestations, guestsId = _a.guestsId, vehicleId = _a.vehicleId, quoteId = _a.quoteId, originReferences = _a.originReferences;
6
6
  this.id = id;
7
7
  this.notes = notes;
8
8
  this.ownerId = ownerId;
@@ -11,8 +11,8 @@ var Event = /** @class */ (function () {
11
11
  this.garageName = garageName;
12
12
  this.garageId = garageId;
13
13
  this.state = state;
14
- this.startDate = startDate ? new Date(startDate) : undefined;
15
- this.endDate = endDate ? new Date(endDate) : undefined;
14
+ this.start = start ? new Date(start) : undefined;
15
+ this.end = end ? new Date(end) : undefined;
16
16
  this.prestations = prestations;
17
17
  this.guestsId = guestsId;
18
18
  this.vehicleId = vehicleId;
@@ -23,8 +23,11 @@ var Event = /** @class */ (function () {
23
23
  var _a;
24
24
  var list = '';
25
25
  if (event.originReferences && event.originReferences.length !== 0) {
26
- (_a = event.originReferences) === null || _a === void 0 ? void 0 : _a.forEach(function (reference) {
27
- list = "".concat(reference.key, " : ").concat(reference.value);
26
+ (_a = event.originReferences) === null || _a === void 0 ? void 0 : _a.forEach(function (reference, index) {
27
+ if (index > 0) {
28
+ list += " / ";
29
+ }
30
+ list += "".concat(reference.key, " : ").concat(reference.value);
28
31
  });
29
32
  }
30
33
  return list;