145 lines
5.8 KiB
JavaScript
145 lines
5.8 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.findMany = findMany;
|
|
exports.findById = findById;
|
|
exports.findFirst = findFirst;
|
|
exports.create = create;
|
|
exports.updateById = updateById;
|
|
exports.softDelete = softDelete;
|
|
exports.setPublished = setPublished;
|
|
exports.findReservationConflicts = findReservationConflicts;
|
|
exports.findCalendarBlockConflicts = findCalendarBlockConflicts;
|
|
exports.findCalendarEvents = findCalendarEvents;
|
|
exports.createCalendarBlock = createCalendarBlock;
|
|
exports.deleteCalendarBlock = deleteCalendarBlock;
|
|
exports.findMaintenanceLogs = findMaintenanceLogs;
|
|
exports.createMaintenanceLog = createMaintenanceLog;
|
|
exports.findPricingConfiguration = findPricingConfiguration;
|
|
exports.createPricingConfiguration = createPricingConfiguration;
|
|
exports.updatePricingConfiguration = updatePricingConfiguration;
|
|
exports.findPricingRule = findPricingRule;
|
|
exports.createPricingRule = createPricingRule;
|
|
exports.updatePricingRule = updatePricingRule;
|
|
exports.deletePricingRule = deletePricingRule;
|
|
exports.createPriceHistory = createPriceHistory;
|
|
const prisma_1 = require("../../lib/prisma");
|
|
async function findMany(where, skip, take) {
|
|
return Promise.all([
|
|
prisma_1.prisma.vehicle.findMany({ where, skip, take, orderBy: { createdAt: 'desc' } }),
|
|
prisma_1.prisma.vehicle.count({ where }),
|
|
]);
|
|
}
|
|
async function findById(id, companyId) {
|
|
return prisma_1.prisma.vehicle.findFirst({ where: { id, companyId } });
|
|
}
|
|
async function findFirst(id, companyId) {
|
|
return prisma_1.prisma.vehicle.findFirst({ where: { id, companyId } });
|
|
}
|
|
async function create(data) {
|
|
return prisma_1.prisma.vehicle.create({ data });
|
|
}
|
|
async function updateById(id, data) {
|
|
return prisma_1.prisma.vehicle.update({ where: { id }, data });
|
|
}
|
|
async function softDelete(id, companyId) {
|
|
return prisma_1.prisma.vehicle.updateMany({ where: { id, companyId }, data: { status: 'OUT_OF_SERVICE', isPublished: false } });
|
|
}
|
|
async function setPublished(id, companyId, isPublished) {
|
|
return prisma_1.prisma.vehicle.updateMany({ where: { id, companyId }, data: { isPublished } });
|
|
}
|
|
async function findReservationConflicts(vehicleId, companyId, start, end) {
|
|
return prisma_1.prisma.reservation.findMany({
|
|
where: {
|
|
vehicleId,
|
|
companyId,
|
|
status: { in: ['CONFIRMED', 'ACTIVE'] },
|
|
startDate: { lt: end },
|
|
endDate: { gt: start },
|
|
},
|
|
select: { id: true, startDate: true, endDate: true, status: true },
|
|
});
|
|
}
|
|
async function findCalendarBlockConflicts(vehicleId, start, end) {
|
|
return prisma_1.prisma.vehicleCalendarBlock.findMany({
|
|
where: { vehicleId, startDate: { lt: end }, endDate: { gt: start } },
|
|
select: { id: true, startDate: true, endDate: true, type: true, reason: true },
|
|
});
|
|
}
|
|
async function findCalendarEvents(vehicleId, companyId, rangeStart, rangeEnd) {
|
|
return Promise.all([
|
|
prisma_1.prisma.reservation.findMany({
|
|
where: {
|
|
vehicleId,
|
|
companyId,
|
|
status: { in: ['DRAFT', 'CONFIRMED', 'ACTIVE'] },
|
|
startDate: { lt: rangeEnd },
|
|
endDate: { gt: rangeStart },
|
|
},
|
|
select: {
|
|
id: true, startDate: true, endDate: true, status: true,
|
|
customer: { select: { firstName: true, lastName: true } },
|
|
},
|
|
orderBy: { startDate: 'asc' },
|
|
}),
|
|
prisma_1.prisma.vehicleCalendarBlock.findMany({
|
|
where: { vehicleId, startDate: { lt: rangeEnd }, endDate: { gt: rangeStart } },
|
|
orderBy: { startDate: 'asc' },
|
|
}),
|
|
]);
|
|
}
|
|
async function createCalendarBlock(data) {
|
|
return prisma_1.prisma.vehicleCalendarBlock.create({ data });
|
|
}
|
|
async function deleteCalendarBlock(id, vehicleId) {
|
|
return prisma_1.prisma.vehicleCalendarBlock.deleteMany({ where: { id, vehicleId } });
|
|
}
|
|
async function findMaintenanceLogs(vehicleId) {
|
|
return prisma_1.prisma.maintenanceLog.findMany({ where: { vehicleId }, orderBy: { performedAt: 'desc' } });
|
|
}
|
|
async function createMaintenanceLog(data) {
|
|
return prisma_1.prisma.maintenanceLog.create({ data });
|
|
}
|
|
async function findPricingConfiguration(vehicleId) {
|
|
return prisma_1.prisma.vehiclePricingConfiguration.findUnique({
|
|
where: { vehicleId },
|
|
include: {
|
|
rules: { orderBy: [{ sortOrder: 'asc' }, { startDate: 'asc' }, { createdAt: 'asc' }] },
|
|
history: { orderBy: { createdAt: 'desc' }, take: 20 },
|
|
},
|
|
});
|
|
}
|
|
async function createPricingConfiguration(data) {
|
|
return prisma_1.prisma.vehiclePricingConfiguration.create({
|
|
data,
|
|
include: {
|
|
rules: { orderBy: [{ sortOrder: 'asc' }, { startDate: 'asc' }, { createdAt: 'asc' }] },
|
|
history: { orderBy: { createdAt: 'desc' }, take: 20 },
|
|
},
|
|
});
|
|
}
|
|
async function updatePricingConfiguration(id, data) {
|
|
return prisma_1.prisma.vehiclePricingConfiguration.update({
|
|
where: { id },
|
|
data,
|
|
include: {
|
|
rules: { orderBy: [{ sortOrder: 'asc' }, { startDate: 'asc' }, { createdAt: 'asc' }] },
|
|
history: { orderBy: { createdAt: 'desc' }, take: 20 },
|
|
},
|
|
});
|
|
}
|
|
async function findPricingRule(id, configurationId) {
|
|
return prisma_1.prisma.vehiclePricingRule.findFirst({ where: { id, configurationId } });
|
|
}
|
|
async function createPricingRule(data) {
|
|
return prisma_1.prisma.vehiclePricingRule.create({ data });
|
|
}
|
|
async function updatePricingRule(id, data) {
|
|
return prisma_1.prisma.vehiclePricingRule.update({ where: { id }, data });
|
|
}
|
|
async function deletePricingRule(id, configurationId) {
|
|
return prisma_1.prisma.vehiclePricingRule.deleteMany({ where: { id, configurationId } });
|
|
}
|
|
async function createPriceHistory(data) {
|
|
return prisma_1.prisma.vehiclePriceHistory.create({ data });
|
|
}
|
|
//# sourceMappingURL=vehicle.repo.js.map
|