import { useState, useEffect } from 'react'; import { Link } from 'react-router-dom'; import { Settings as SettingsIcon, Save, Truck, ShieldAlert, Percent, AlertCircle, CreditCard, Share2, MessageSquare } from 'lucide-react'; import { toast } from 'react-hot-toast'; import api from '../services/api'; import Spinner from '../components/ui/Spinner'; export default function Settings() { const [settings, setSettings] = useState({ SHIPPING_FEE: '', MIN_ORDER_AMOUNT: '', B2B_DISCOUNT_PERCENT: '', MAINTENANCE_MODE: 'false', CATALOG_ONLY_MODE: 'false', CATALOG_SHOW_PRICES: 'true', CATALOG_ALLOW_CART: 'false', CATALOG_ALLOW_CHECKOUT: 'false', CATALOG_PREORDER_BTN: 'false', CHARITY_ROUND_STEP: '10000', PAY_GATEWAY_CARD_ENABLE: 'true', PAY_GATEWAY_WALLET_ENABLE: 'true', PAY_GATEWAY_ONLINE_ENABLE: 'true', PAY_GATEWAY_COD_ENABLE: 'false', ZIBAL_MERCHANT: 'zibal', ZIBAL_SANDBOX: 'true', FRONTEND_URL: 'https://canina.ir', CONTACT_PHONE: '۰۲۱-۸۸۸۸ ۴۴۴۴', CONTACT_EMAIL: 'info@canina-iran.com', SOCIAL_WHATSAPP: '09120000000', SOCIAL_INSTAGRAM: 'https://instagram.com/canina_iran', SOCIAL_TELEGRAM: 'https://t.me/canina_iran', CONTACT_ADDRESS: 'تهران، جردن، خیابان سعیدی، ساختمان کانینا، طبقه ۵، واحد ۱۹', BRAND_LOGO_URL: '/logo.png', ENAMAD_CODE: '', THEME_PRIMARY_COLOR: '#7c3aed', BRAND_TYPOGRAPHY: 'vazirmatn', }); const [isLoading, setIsLoading] = useState(true); const [isSaving, setIsSaving] = useState(false); useEffect(() => { let isSubscribed = true; api.get('/admin/settings').then(response => { if (!isSubscribed) return; if (response.data?.success) { setSettings({ SHIPPING_FEE: response.data.data.SHIPPING_FEE || '0', MIN_ORDER_AMOUNT: response.data.data.MIN_ORDER_AMOUNT || '0', B2B_DISCOUNT_PERCENT: response.data.data.B2B_DISCOUNT_PERCENT || '0', MAINTENANCE_MODE: response.data.data.MAINTENANCE_MODE || 'false', CATALOG_ONLY_MODE: response.data.data.CATALOG_ONLY_MODE || 'false', CATALOG_SHOW_PRICES: response.data.data.CATALOG_SHOW_PRICES || 'true', CATALOG_ALLOW_CART: response.data.data.CATALOG_ALLOW_CART || 'false', CATALOG_ALLOW_CHECKOUT: response.data.data.CATALOG_ALLOW_CHECKOUT || 'false', CATALOG_PREORDER_BTN: response.data.data.CATALOG_PREORDER_BTN || 'false', CHARITY_ROUND_STEP: response.data.data.CHARITY_ROUND_STEP || '10000', PAY_GATEWAY_CARD_ENABLE: response.data.data.PAY_GATEWAY_CARD_ENABLE || 'true', PAY_GATEWAY_WALLET_ENABLE: response.data.data.PAY_GATEWAY_WALLET_ENABLE || 'true', PAY_GATEWAY_ONLINE_ENABLE: response.data.data.PAY_GATEWAY_ONLINE_ENABLE || 'true', PAY_GATEWAY_COD_ENABLE: response.data.data.PAY_GATEWAY_COD_ENABLE || 'false', ZIBAL_MERCHANT: response.data.data.ZIBAL_MERCHANT || 'zibal', ZIBAL_SANDBOX: response.data.data.ZIBAL_SANDBOX || 'true', FRONTEND_URL: response.data.data.FRONTEND_URL || 'https://canina.ir', CONTACT_PHONE: response.data.data.CONTACT_PHONE || '۰۲۱-۸۸۸۸ ۴۴۴۴', CONTACT_EMAIL: response.data.data.CONTACT_EMAIL || 'info@canina-iran.com', SOCIAL_WHATSAPP: response.data.data.SOCIAL_WHATSAPP || '09120000000', SOCIAL_INSTAGRAM: response.data.data.SOCIAL_INSTAGRAM || 'https://instagram.com/canina_iran', SOCIAL_TELEGRAM: response.data.data.SOCIAL_TELEGRAM || 'https://t.me/canina_iran', CONTACT_ADDRESS: response.data.data.CONTACT_ADDRESS || 'تهران، جردن، خیابان سعیدی، ساختمان کانینا، طبقه ۵، واحد ۱۹', BRAND_LOGO_URL: response.data.data.BRAND_LOGO_URL || '/logo.png', ENAMAD_CODE: response.data.data.ENAMAD_CODE || '', THEME_PRIMARY_COLOR: response.data.data.THEME_PRIMARY_COLOR || '#7c3aed', BRAND_TYPOGRAPHY: response.data.data.BRAND_TYPOGRAPHY || 'vazirmatn', }); } }).catch(err => { console.error('Failed to fetch settings', err); }).finally(() => { if (isSubscribed) setIsLoading(false); }); return () => { isSubscribed = false; }; }, []); const handleSave = async (e: React.FormEvent) => { e.preventDefault(); try { setIsSaving(true); await api.put('/admin/settings', settings); toast.success('تنظیمات با موفقیت بروزرسانی شد.'); } catch (err) { console.error('Failed to update settings', err); toast.error('خطا در بروزرسانی تنظیمات'); } finally { setIsSaving(false); } }; return (

تنظیمات فروشگاه

مدیریت پارامترهای اصلی و سیستمی کانینا

تنظیمات درگاه پیامک (MeliPayamak)
{isLoading ? (
) : (
{/* Financial Settings */}

تنظیمات مالی و ارسال

setSettings({ ...settings, SHIPPING_FEE: e.target.value })} className="w-full border border-gray-200 rounded-xl p-3 outline-none focus:ring-2 focus:ring-purple-500 font-bold" dir="ltr" />
setSettings({ ...settings, MIN_ORDER_AMOUNT: e.target.value })} className="w-full border border-gray-200 rounded-xl p-3 outline-none focus:ring-2 focus:ring-purple-500 font-bold" dir="ltr" />

سفارشات زیر این مبلغ امکان ثبت نخواهند داشت (۰ = بدون محدودیت).

setSettings({ ...settings, CHARITY_ROUND_STEP: e.target.value })} className="w-full border border-gray-200 rounded-xl p-3 outline-none focus:ring-2 focus:ring-purple-500 font-bold" dir="ltr" placeholder="10000" />

مبلغ فاکتور به اولین ضریب این عدد (مثلاً ۱۰,۰۰۰ یا ۵۰,۰۰۰ تومان) رند می‌شود.

{/* B2B Settings */}

همکاران B2B

setSettings({ ...settings, B2B_DISCOUNT_PERCENT: e.target.value })} className="w-full border border-gray-200 rounded-xl p-3 outline-none focus:ring-2 focus:ring-purple-500 font-bold" dir="ltr" max="100" min="0" />

این درصد به صورت خودکار روی قیمت تمام محصولات برای کاربران تایید شده B2B اعمال می‌شود.

{/* Payment Gateways Settings */}

مدیریت روش‌های پرداخت

کارت به کارت (واریز مستقیم)

واریز به شماره کارت/شبا رسمی کانینا

اعتبار حساب (کیف پول)

پرداخت لحظه‌ای از موجودی کیف پول کاربر

درگاه آنلاین شتاب (زیبال)

پرداخت الکترونیک کلیه کارت‌های عضو شتاب از طریق زیبال

پرداخت در محل (COD)

پرداخت با کارتخوان هنگام تحویل (در صورت غیرفعال بودن: به زودی)

{/* Zibal Specific Configuration */}
پیکربندی پایانه پرداخت اینترنتی زیبال (Zibal IPG) {settings.ZIBAL_MERCHANT === 'zibal' && ( حالت تستی (Sandbox: zibal) )}
setSettings({ ...settings, ZIBAL_MERCHANT: e.target.value })} placeholder="zibal" className="w-full border border-gray-200 rounded-xl p-2.5 outline-none focus:ring-2 focus:ring-purple-500 text-xs font-mono font-bold bg-white" dir="ltr" />

برای حالت تستی و آزمایش درگاه از مقدار zibal استفاده کنید.

setSettings({ ...settings, FRONTEND_URL: e.target.value })} placeholder="https://canina.ir" className="w-full border border-gray-200 rounded-xl p-2.5 outline-none focus:ring-2 focus:ring-purple-500 text-xs font-mono font-bold bg-white" dir="ltr" />

آدرس دامنه‌ای که کاربر پس از پرداخت از زیبال به آن بازگردانده می‌شود.

{/* Social Media & Contact Info Settings */}

راه‌های ارتباطی و شبکه‌های اجتماعی

setSettings({ ...settings, CONTACT_PHONE: e.target.value })} className="w-full border border-gray-200 rounded-xl p-2.5 outline-none focus:ring-2 focus:ring-purple-500 text-xs font-bold" dir="ltr" />
setSettings({ ...settings, CONTACT_EMAIL: e.target.value })} className="w-full border border-gray-200 rounded-xl p-2.5 outline-none focus:ring-2 focus:ring-purple-500 text-xs font-bold" dir="ltr" />
setSettings({ ...settings, SOCIAL_WHATSAPP: e.target.value })} className="w-full border border-gray-200 rounded-xl p-2.5 outline-none focus:ring-2 focus:ring-purple-500 text-xs font-bold" dir="ltr" />
setSettings({ ...settings, SOCIAL_INSTAGRAM: e.target.value })} className="w-full border border-gray-200 rounded-xl p-2.5 outline-none focus:ring-2 focus:ring-purple-500 text-xs font-bold" dir="ltr" />
setSettings({ ...settings, SOCIAL_TELEGRAM: e.target.value })} className="w-full border border-gray-200 rounded-xl p-2.5 outline-none focus:ring-2 focus:ring-purple-500 text-xs font-bold" dir="ltr" />
setSettings({ ...settings, CONTACT_ADDRESS: e.target.value })} className="w-full border border-gray-200 rounded-xl p-2.5 outline-none focus:ring-2 focus:ring-purple-500 text-xs font-bold" dir="rtl" />
{/* Brand Identity & Theme Settings */}

مدیریت هویت برند، نمادها و ظاهر سایت

setSettings({ ...settings, BRAND_LOGO_URL: e.target.value })} className="w-full border border-gray-200 rounded-xl p-2.5 outline-none focus:ring-2 focus:ring-purple-500 text-xs font-mono" dir="ltr" />