import { api } from '@/lib/api';

export interface SiteConfig {
  siteName: string;
  siteDescription: string;
  logoUrl: string;
  primaryColor: string;
  contactEmail: string;
  seoTitle: string;
  seoDescription: string;
  seoKeywords: string;
  maintenanceMode: string;
  allowRegistration: string;
}

export interface CmsBlock {
  id: string;
  key: string;
  content: string;
  locale: string;
}

export async function fetchSiteConfig(locale: string): Promise<SiteConfig> {
  try {
    const res = await api.get('/admin/settings/public', { params: { locale } });
    const data = res.data || {};
    return {
      siteName: data.siteName || 'SHOP MMO',
      siteDescription: data.siteDescription || 'Marketplace sản phẩm số',
      logoUrl: data.logoUrl || '',
      primaryColor: data.primaryColor || '#ef4444',
      contactEmail: data.contactEmail || 'support@shopmmo.com',
      seoTitle: data.seoTitle || 'SHOP MMO - Marketplace sản phẩm số',
      seoDescription: data.seoDescription || 'Marketplace giao dịch số an toàn',
      seoKeywords: data.seoKeywords || 'marketplace, sản phẩm số, escrow',
      maintenanceMode: data.maintenanceMode || 'false',
      allowRegistration: data.allowRegistration || 'true',
    };
  } catch {
    return {
      siteName: 'SHOP MMO',
      siteDescription: 'Marketplace sản phẩm số',
      logoUrl: '',
      primaryColor: '#ef4444',
      contactEmail: 'support@shopmmo.com',
      seoTitle: 'SHOP MMO - Marketplace sản phẩm số',
      seoDescription: 'Marketplace giao dịch số an toàn',
      seoKeywords: 'marketplace, sản phẩm số, escrow',
      maintenanceMode: 'false',
      allowRegistration: 'true',
    };
  }
}

export async function fetchCmsBlocks(locale: string): Promise<CmsBlock[]> {
  try {
    const res = await api.get('/admin/cms/public', { params: { locale } });
    return Array.isArray(res.data) ? res.data : [];
  } catch {
    return [];
  }
}

export function getCmsValue(blocks: CmsBlock[], key: string, fallback: string): string {
  const block = blocks.find((item) => item.key === key);
  return block?.content || fallback;
}
