Untitled
unknown
plain_text
a year ago
5.9 kB
7
Indexable
async getAllRequests(res: Response, req: Request): Promise<Response> { try { // const { error } = filterValidationSchema.validate(req.query); // if (error) { // return ResponseHandler.error({ // req, // res, // error: error.details[0].message, // file: 'RequestService.ts', // functionName: 'getAllRequests', // args: {}, // }); // } const filter: any = {}; if (req.query?.isB2B) { const isB2B = req.query.isB2B === 'true'; filter.isB2B = isB2B; } if (req.query?.isUrgent) { const isUrgent = req.query.isUrgent === 'true'; filter.isUrgent = isUrgent; } if (req.query?.isDelegation) { const isDelegation = req.query.isDelegation === 'true'; filter.isDelegation = isDelegation; } if (req.query?.vatIncluded) { const vatIncluded = req.query.vatIncluded === 'true'; filter.vatIncluded = vatIncluded; } if (req.query?.status) { const status = Array.isArray(req.query.status) ? req.query.status : [req.query.status]; const normalizedStatus = status.map((status) => (typeof status === 'string' ? status.toLowerCase() : '')); filter.status = { $in: normalizedStatus.map((status) => new RegExp(status, 'i')) }; } if (req.query?.type) { const serviceType = String(req.query.type); filter['services.type'] = serviceType; } if (req.query?.method) { const paymentMethod = String(req.query.method); filter['payment.method'] = paymentMethod; } if (req.query?.paymentStatus) { const paymentStatus = String(req.query.paymentStatus); filter['payment.status'] = paymentStatus; } if (req.query?.paymentType) { const paymentType = String(req.query.paymentType); filter['payment.type'] = paymentType; } if (req.query?.smallLuggageCount) { const smallLuggageCount = parseInt(req.query.smallLuggageCount as string, 10); filter['services.details.smallLuggageCount'] = smallLuggageCount; } if (req.query?.bigLuggageCount) { const bigLuggageCount = parseInt(req.query.bigLuggageCount as string, 10); filter['services.details.bigLuggageCount'] = bigLuggageCount; } if (req.query?.kidsCount) { const kidsCount = parseInt(req.query.kidsCount as string, 10); filter['services.details.kidsCount'] = kidsCount; } if (req.query?.babiesCount) { const babiesCount = parseInt(req.query.babiesCount as string, 10); filter['services.details.babiesCount'] = babiesCount; } if (req.query?.requestedDuration) { const requestedDuration = parseInt(req.query.requestedDuration as string, 10); filter['services.details.requestedDuration'] = requestedDuration; } if (req.query?.kmIncluded) { const kmIncluded = parseInt(req.query.kmIncluded as string, 10); filter['services.details.kmIncluded'] = kmIncluded; } if (req.query?.pickupWithMeetAndGreetPickUp) { const pickupWithMeetAndGreetPickUp = req.query.pickupWithMeetAndGreetPickUp === 'true'; filter['services.details.pickup.withMeetAndGreet'] = pickupWithMeetAndGreetPickUp; } if (req.query?.pickupWithMeetAndGreetDropoff) { const pickupWithMeetAndGreetDropoff = req.query.pickupWithMeetAndGreetDropoff === 'true'; filter['services.details.dropoff.withMeetAndGreet'] = pickupWithMeetAndGreetDropoff; } if (req.query?.statusOffre) { const status = Array.isArray(req.query.statusOffre) ? req.query.statusOffre : [req.query.statusOffre]; filter['services.offers.status'] = { $in: status }; } const requests = await this.requestRepository.findAll({ filter }); //console.log('🚀 ~ RequestService ~ getAllRequests ~ requests:', requests); if (requests.length === 0) { let message = 'No requests match the provided criteria.'; const filterKeys = Object.keys(filter); if (filterKeys.length > 0) { message += ' Please verify the following filters and try again: ' + filterKeys.join(', ') + '.'; } return ResponseHandler.success({ res, responseBody: { message: message, data: [], //filters: filterKeys, }, }); } const items_per_page_raw = req.query['items_per_page']; let items_per_page = parseInt(items_per_page_raw as string, 10); let page = parseInt(req.query.page as string, 10); if (isNaN(items_per_page) || items_per_page <= 0) { items_per_page = 1; } if (isNaN(page) || page <= 0) { page = 1; } const startIndex = (page - 1) * items_per_page; const endIndex = startIndex + items_per_page; const paginatedResults = requests.slice(startIndex, endIndex); const count = requests.length; const totalPages = Math.ceil(count / items_per_page); return ResponseHandler.success({ res, responseBody: { count, totalPages, paginatedResults, message: 'Filter applied successfully. Requests filtered based on the provided criteria.', // data: requests, }, }); } catch (error: any) { return ResponseHandler.internalServerError({ req, res, error: 'Error fetching requests', file: 'RequestService.ts', functionName: 'getAllRequests', args: {}, }); } }
Editor is loading...
Leave a Comment