Untitled
unknown
plain_text
a year ago
4.4 kB
22
Indexable
Service Car :
sync getCarBySlugAndId(carId: string, req: Request, res: Response) {
try {
const car = await this.carRepository.findById({
id: carId,
projection: '_id slug brand plateNumber',
});
if (!car) {
return ResponseHandler.notFound({
req,
res,
error: 'No car found',
file: 'car.service.ts',
functionName: 'getCarBySlugAndId',
args: { carId },
});
}
const responseData = {
data: car,
message: 'Car details retrieved successfully.',
};
return ResponseHandler.success({ res, responseBody: responseData });
} catch (error) {
return ResponseHandler.internalServerError({
req,
res,
error: 'An internal error occurred',
file: 'car.service.ts',
functionName: 'getCarBySlugAndId',
args: { carId },
});
}
}
async getAllCarsBySlugAndId(req: Request, res: Response) {
try {
const cars = await this.carRepository.findAll({
filter: {},
projection: '_id slug',
});
if (!cars.length) {
return ResponseHandler.notFound({
req,
res,
error: 'No cars found',
file: 'car.service.ts',
functionName: 'getAllCarsBySlugAndId',
args: {},
});
}
const uniqueCars = new Set();
const uniqueCarData = [];
for (const car of cars) {
if (!uniqueCars.has(car.slug)) {
uniqueCars.add(car.slug);
uniqueCarData.push({
id: car._id,
slug: car.slug,
});
}
}
const responseData = {
data: uniqueCarData,
message: 'All car details retrieved successfully.',
};
return ResponseHandler.success({ res, responseBody: responseData });
} catch (error) {
return ResponseHandler.internalServerError({
req,
res,
error: 'An internal error occurred',
file: 'car.service.ts',
functionName: 'getAllCarsBySlugAndId',
args: {},
});
}
}
async verifyListOfCars(carIds: string[], req: Request, res: Response) {
try {
if (!carIds || !Array.isArray(carIds) || carIds.length === 0) {
return ResponseHandler.error({
req,
res,
error: 'Car IDs are required and should be an array',
file: 'car.service.ts',
functionName: 'verifyListOfCars',
args: { carIds },
});
}
const carPromises = carIds.map((carId) => {
return this.carRepository.findById({
id: carId,
projection: { slug: 1 },
});
});
const cars = await Promise.all(carPromises);
const existingCars = cars.filter((car) => car !== null);
const existingCarDetails = existingCars
.map((car) => {
if (car) {
return {
id: car._id.toString(),
slug: car.slug,
};
}
return null;
})
.filter((car) => car !== null);
const missingCarIds = carIds.filter((carId) => !existingCars.some((car) => car && car._id.toString() === carId));
if (missingCarIds.length > 0 && existingCarDetails.length > 0) {
const missingCarIdsString = missingCarIds.join(', ');
return ResponseHandler.partialContent({
res,
responseBody: {
message: `Some car IDs do not exist: ${missingCarIdsString}`,
data: { existing: existingCarDetails, missing: missingCarIds },
},
});
} else if (missingCarIds.length > 0) {
return ResponseHandler.unauthorized({
req,
res,
error: 'All car IDs do not exist',
file: 'car.service.ts',
functionName: 'verifyListOfCars',
args: { carIds, missingCarIds },
});
}
return ResponseHandler.success({
res,
responseBody: {
message: 'All car IDs exist',
data: existingCarDetails,
},
});
} catch (error) {
return ResponseHandler.internalServerError({
req,
res,
error: 'Error verifying list of car IDs',
file: 'car.service.ts',
functionName: 'verifyListOfCars',
args: { carIds },
});
}
}
Editor is loading...
Leave a Comment