"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.searchLocalJobOffers = void 0; const client_1 = require("@prisma/client"); const prisma = new client_1.PrismaClient(); const searchLocalJobOffers = async (req, res) => { try { const page = parseInt(req.query.page) || 1; const limit = parseInt(req.query.limit) || 10; const skip = (page - 1) * limit; const take = limit; const sortBy = req.query.sortBy || 'publicationDate'; const sortOrder = req.query.sortOrder || 'desc'; const keyword = req.query.keyword; const location = req.query.location; const contractType = req.query.contractType; console.log('Keyword:', keyword); console.log('Location:', location); const where = {}; if (keyword) { where.OR = [ { title: { contains: keyword, mode: 'insensitive' } }, { description: { contains: keyword, mode: 'insensitive' } }, ]; } if (location) { where.AND = [ ...(where.AND || []), { OR: [ { locationLabel: { contains: location, mode: 'insensitive' } }, { postalCode: { contains: location, mode: 'insensitive' } }, { cityName: { contains: location, mode: 'insensitive' } }, { departmentCode: { contains: location, mode: 'insensitive' } }, ], }, ]; } if (contractType) { where.AND = [ ...(where.AND || []), { contractType: contractType }, ]; } const orderBy = {}; if (sortBy) { orderBy[sortBy] = sortOrder === 'asc' ? 'asc' : 'desc'; } else { orderBy.publicationDate = 'desc'; // Tri par défaut } const jobs = await prisma.jobOffer.findMany({ skip, take, where, orderBy, }); const total = await prisma.jobOffer.count({ where }); res.status(200).json({ jobs, total, page, limit, }); } catch (error) { console.error('Error searching job offers:', error); res.status(500).json({ error: 'Failed to search job offers' }); } }; exports.searchLocalJobOffers = searchLocalJobOffers;