"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