"use server"; import { pool } from "@/lib/db"; import { getAdminUser } from "@/lib/admin-permissions"; import { getActiveBrandId } from "@/lib/brand-scope"; import type { NotificationRecipient, WholesaleSettings } from "./types"; import { getSession } from "@/lib/auth"; export async function getWholesaleSettings(brandId?: string): Promise { await getSession(); const adminUser = await getAdminUser(); if (!adminUser) return null; const bid = await getActiveBrandId(adminUser, brandId); if (!bid && adminUser.role !== "platform_admin") { return null; } try { const { rows } = await pool.query( "SELECT * FROM get_wholesale_settings($1)", [bid] ); return rows[0] ?? null; } catch { return null; } } export async function getWholesaleSettingsPublic(brandId: string): Promise<{ invoice_business_address: string | null } | null> { await getSession(); try { const { rows } = await pool.query<{ invoice_business_address: string | null }>( "SELECT invoice_business_address FROM get_wholesale_settings($1)", [brandId] ); return rows[0] ?? null; } catch { return null; } } export async function saveWholesaleSettings(params: { brandId: string; requireApproval?: boolean; minOrderAmount?: number; onlinePaymentEnabled?: boolean; wholesaleEnabled?: boolean; squareSyncEnabled?: boolean; pickupLocation?: string; fobLocation?: string; fromEmail?: string; invoiceBusinessName?: string; invoiceBusinessAddress?: string; invoiceBusinessPhone?: string; invoiceBusinessEmail?: string; invoiceBusinessWebsite?: string; notificationEmail?: string; notificationRecipients?: NotificationRecipient[]; }): Promise<{ success: boolean; error?: string }> { await getSession(); const adminUser = await getAdminUser(); if (!adminUser) return { success: false, error: "Not authenticated" }; if (!adminUser.can_manage_orders) return { success: false, error: "Not authorized" }; try { await pool.query( "SELECT upsert_wholesale_settings($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16)", [ params.brandId, params.requireApproval ?? null, params.minOrderAmount ?? null, params.onlinePaymentEnabled ?? null, params.wholesaleEnabled ?? null, params.pickupLocation ?? null, params.fobLocation ?? null, params.fromEmail ?? null, params.invoiceBusinessName ?? null, params.invoiceBusinessAddress ?? null, params.invoiceBusinessPhone ?? null, params.invoiceBusinessEmail ?? null, params.invoiceBusinessWebsite ?? null, params.notificationEmail ?? null, params.notificationRecipients ? JSON.stringify(params.notificationRecipients) : null, params.squareSyncEnabled ?? null, ] ); return { success: true }; } catch { return { success: false, error: "Failed to save settings" }; } }