import { prisma } from '@/lib/db'; import { GHL } from './index'; import { decrypt } from '@/lib/settings/encryption'; import { settingsService } from '@/lib/settings/settings-service'; /** * Get GHL client for a specific user. * First checks user's own credentials, then falls back to global system settings. */ export async function getGHLClientForUser(userId: string): Promise { // First, try to get user-specific GHL credentials const user = await prisma.user.findUnique({ where: { id: userId }, select: { ghlLocationId: true, ghlAccessToken: true }, }); if (user?.ghlLocationId && user?.ghlAccessToken) { return new GHL({ accessToken: decrypt(user.ghlAccessToken), locationId: user.ghlLocationId, }); } // Fall back to global system settings (for single-tenant or testing) return getGHLClientFromSettings(); } /** * Get GHL client using global system settings. * Useful for admin operations or single-tenant deployments. */ export async function getGHLClientFromSettings(): Promise { const accessToken = await settingsService.get('ghlAccessToken'); const locationId = await settingsService.get('ghlLocationId'); if (!accessToken || !locationId) { return null; } return new GHL({ accessToken, locationId, }); }