'use server' import sql from '@/lib/db'; export async function getSettings() { try { const settings = await sql`SELECT * FROM settings WHERE id = 1 LIMIT 1`; return settings[0] || null; } catch (error) { console.error('Error fetching settings:', error); return null; } } export async function getFeaturedServices() { try { const services = await sql`SELECT * FROM services WHERE is_featured = true ORDER BY display_order ASC LIMIT 4`; return services; } catch (error) { console.error('Error fetching services:', error); return []; } } export async function getFeaturedProjects() { try { const projects = await sql`SELECT * FROM projects WHERE is_featured = true ORDER BY created_at DESC LIMIT 6`; return projects; } catch (error) { console.error('Error fetching projects:', error); return []; } } export async function submitLead(formData: { firstName: string; lastName: string; email: string; projectType: string; message: string; }) { try { const fullName = `${formData.firstName} ${formData.lastName}`; await sql` INSERT INTO leads (full_name, email, service_type, message, status) VALUES (${fullName}, ${formData.email}, ${formData.projectType}, ${formData.message}, 'new') `; return { success: true }; } catch (error) { console.error('Error submitting lead:', error); return { error: 'Failed to submit' }; } } export async function getPartners() { try { return await sql` SELECT p.*, ( SELECT slug FROM projects WHERE LOWER(TRIM(p.name)) LIKE '%' || LOWER(TRIM(title)) || '%' OR LOWER(TRIM(title)) LIKE '%' || LOWER(TRIM(p.name)) || '%' LIMIT 1 ) as project_slug FROM partners p ORDER BY p.display_order ASC `; } catch (error) { console.error('Error fetching partners:', error); return []; } } export async function getProjectBySlug(slug: string) { try { const projects = await sql`SELECT * FROM projects WHERE slug = ${slug} LIMIT 1`; if (projects.length === 0) return null; const project = projects[0]; // Fetch next project for the bottom section const nextProjects = await sql` SELECT * FROM projects WHERE created_at < ${project.created_at} ORDER BY created_at DESC LIMIT 1 `; // If no older project, fetch the newest one let nextProject: any = nextProjects[0] || null; if (!nextProject) { const newest = await sql`SELECT * FROM projects ORDER BY created_at DESC LIMIT 1`; nextProject = newest[0] !== project ? newest[0] : null; } return { project, nextProject }; } catch (error) { console.error('Error fetching project:', error); return null; } } export async function getServiceBySlug(slug: string) { try { const services = await sql`SELECT * FROM services WHERE slug = ${slug} LIMIT 1`; return services[0] || null; } catch (error) { console.error('Error fetching service:', error); return null; } } export async function getLocationBySlug(slug: string) { try { const locations = await sql`SELECT * FROM locations WHERE slug = ${slug} LIMIT 1`; return locations[0] || null; } catch (error) { console.error('Error fetching location:', error); return null; } } export async function getProjectsByService(serviceName: string) { try { // Search projects where the serviceName is in the title or categories // serviceName is expected to be something like "Drone Çekimi" return await sql` SELECT * FROM projects WHERE title ILIKE ${'%' + serviceName + '%'} OR categories::text ILIKE ${'%' + serviceName + '%'} ORDER BY created_at DESC LIMIT 4 `; } catch (error) { console.error('Error fetching projects by service:', error); return []; } } export async function getLocations() { try { return await sql`SELECT * FROM locations ORDER BY name ASC`; } catch (error) { console.error('Error fetching locations:', error); return []; } } export async function getServices() { try { return await sql`SELECT * FROM services ORDER BY display_order ASC`; } catch (error) { console.error('Error fetching services:', error); return []; } }