optimized condition checks
This commit is contained in:
@@ -7,6 +7,49 @@ const { IMAGE_LIMITS } = require("../config/imageLimits");
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
// Get condition checks for multiple rentals in a single request (batch)
|
||||
router.get("/batch", authenticateToken, async (req, res) => {
|
||||
try {
|
||||
const { rentalIds } = req.query;
|
||||
|
||||
if (!rentalIds) {
|
||||
return res.json({
|
||||
success: true,
|
||||
conditionChecks: [],
|
||||
});
|
||||
}
|
||||
|
||||
const ids = rentalIds.split(",").filter((id) => id.trim());
|
||||
|
||||
if (ids.length === 0) {
|
||||
return res.json({
|
||||
success: true,
|
||||
conditionChecks: [],
|
||||
});
|
||||
}
|
||||
|
||||
const conditionChecks =
|
||||
await ConditionCheckService.getConditionChecksForRentals(ids);
|
||||
|
||||
res.json({
|
||||
success: true,
|
||||
conditionChecks,
|
||||
});
|
||||
} catch (error) {
|
||||
const reqLogger = logger.withRequestId(req.id);
|
||||
reqLogger.error("Error fetching batch condition checks", {
|
||||
error: error.message,
|
||||
stack: error.stack,
|
||||
rentalIds: req.query.rentalIds,
|
||||
});
|
||||
|
||||
res.status(500).json({
|
||||
success: false,
|
||||
error: "Failed to fetch condition checks",
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// Submit a condition check
|
||||
router.post("/:rentalId", authenticateToken, async (req, res) => {
|
||||
try {
|
||||
@@ -20,9 +63,13 @@ router.post("/:rentalId", authenticateToken, async (req, res) => {
|
||||
: [];
|
||||
|
||||
// Validate S3 keys format and folder
|
||||
const keyValidation = validateS3Keys(imageFilenamesArray, "condition-checks", {
|
||||
maxKeys: IMAGE_LIMITS.conditionChecks,
|
||||
});
|
||||
const keyValidation = validateS3Keys(
|
||||
imageFilenamesArray,
|
||||
"condition-checks",
|
||||
{
|
||||
maxKeys: IMAGE_LIMITS.conditionChecks,
|
||||
}
|
||||
);
|
||||
if (!keyValidation.valid) {
|
||||
return res.status(400).json({
|
||||
success: false,
|
||||
@@ -69,69 +116,16 @@ router.post("/:rentalId", authenticateToken, async (req, res) => {
|
||||
}
|
||||
});
|
||||
|
||||
// Get condition checks for a rental
|
||||
router.get("/:rentalId", authenticateToken, async (req, res) => {
|
||||
try {
|
||||
const { rentalId } = req.params;
|
||||
|
||||
const conditionChecks = await ConditionCheckService.getConditionChecks(
|
||||
rentalId
|
||||
);
|
||||
|
||||
res.json({
|
||||
success: true,
|
||||
conditionChecks,
|
||||
});
|
||||
} catch (error) {
|
||||
const reqLogger = logger.withRequestId(req.id);
|
||||
reqLogger.error("Error fetching condition checks", {
|
||||
error: error.message,
|
||||
stack: error.stack,
|
||||
rentalId: req.params.rentalId,
|
||||
});
|
||||
|
||||
res.status(500).json({
|
||||
success: false,
|
||||
error: "Failed to fetch condition checks",
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// Get condition check timeline for a rental
|
||||
router.get("/:rentalId/timeline", authenticateToken, async (req, res) => {
|
||||
try {
|
||||
const { rentalId } = req.params;
|
||||
|
||||
const timeline = await ConditionCheckService.getConditionCheckTimeline(
|
||||
rentalId
|
||||
);
|
||||
|
||||
res.json({
|
||||
success: true,
|
||||
timeline,
|
||||
});
|
||||
} catch (error) {
|
||||
const reqLogger = logger.withRequestId(req.id);
|
||||
reqLogger.error("Error fetching condition check timeline", {
|
||||
error: error.message,
|
||||
stack: error.stack,
|
||||
rentalId: req.params.rentalId,
|
||||
});
|
||||
|
||||
res.status(500).json({
|
||||
success: false,
|
||||
error: error.message,
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// Get available condition checks for current user
|
||||
router.get("/", authenticateToken, async (req, res) => {
|
||||
try {
|
||||
const userId = req.user.id;
|
||||
const { rentalIds } = req.query;
|
||||
const ids = rentalIds ? rentalIds.split(",").filter((id) => id.trim()) : [];
|
||||
|
||||
const availableChecks = await ConditionCheckService.getAvailableChecks(
|
||||
userId
|
||||
userId,
|
||||
ids
|
||||
);
|
||||
|
||||
res.json({
|
||||
|
||||
Reference in New Issue
Block a user