Untitled
unknown
plain_text
a year ago
4.4 kB
6
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