archetecture security fix
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.parseReservationExtras = parseReservationExtras;
|
||||
exports.normalizeOptionalString = normalizeOptionalString;
|
||||
exports.buildReservationWorkflow = buildReservationWorkflow;
|
||||
exports.serializeReservationForDashboard = serializeReservationForDashboard;
|
||||
const storage_1 = require("../../lib/storage");
|
||||
function parseReservationExtras(extras) {
|
||||
if (!extras || typeof extras !== 'object' || Array.isArray(extras))
|
||||
return {};
|
||||
return { ...extras };
|
||||
}
|
||||
function normalizeOptionalString(value) {
|
||||
const trimmed = typeof value === 'string' ? value.trim() : value;
|
||||
return trimmed || null;
|
||||
}
|
||||
function buildReservationWorkflow(reservation) {
|
||||
const extras = parseReservationExtras(reservation.extras);
|
||||
const closedAt = typeof extras.reservationClosedAt === 'string' ? extras.reservationClosedAt : null;
|
||||
const contractGenerated = Boolean(reservation.contractNumber || reservation.invoiceNumber);
|
||||
const closed = Boolean(closedAt);
|
||||
return {
|
||||
contractGenerated,
|
||||
closed,
|
||||
closedAt,
|
||||
closedBy: typeof extras.reservationClosedBy === 'string' ? extras.reservationClosedBy : null,
|
||||
coreEditable: !closed && !contractGenerated && ['DRAFT', 'CONFIRMED'].includes(reservation.status),
|
||||
returnEditable: !closed && reservation.status === 'COMPLETED',
|
||||
checkInInspectionEditable: !closed && ['CONFIRMED', 'ACTIVE'].includes(reservation.status),
|
||||
checkOutInspectionEditable: !closed && reservation.status === 'COMPLETED',
|
||||
};
|
||||
}
|
||||
function serializeReservationForDashboard(reservation) {
|
||||
const extras = parseReservationExtras(reservation.extras);
|
||||
const customer = reservation.customer
|
||||
? {
|
||||
...reservation.customer,
|
||||
licenseImageUrl: reservation.customer.licenseImageUrl
|
||||
? (0, storage_1.getProtectedCustomerLicenseImageUrl)(reservation.customer.id)
|
||||
: null,
|
||||
}
|
||||
: reservation.customer;
|
||||
return {
|
||||
...reservation,
|
||||
...(customer !== undefined ? { customer } : {}),
|
||||
paymentMode: typeof extras.paymentMode === 'string' ? extras.paymentMode : null,
|
||||
workflow: buildReservationWorkflow(reservation),
|
||||
};
|
||||
}
|
||||
//# sourceMappingURL=reservation.presenter.js.map
|
||||
Reference in New Issue
Block a user