diff --git a/docs/backlog.md b/docs/backlog.md index 0a075e4..bf6fede 100644 --- a/docs/backlog.md +++ b/docs/backlog.md @@ -56,8 +56,8 @@ - [x] **TASK-2.23 [Admin Knowledge Base]:** قابلیت انتخاب و کم/زیاد کردن لیست محصولات مرتبط در فرم ویرایش دانشنامه. ### 🔔 پوش نوتیفیکیشن و سیستم CRM (Push Notifications & CRM) -- [ ] **TASK-2.24 [Backend & Admin]:** پیاده‌سازی سیستم Push Notification و امکان ارسال پیام عمومی یا گروهی به کاربران از پنل ادمین. -- [ ] **TASK-2.25 [Backend CRM & SMS]:** پیاده‌سازی ماژول CRM هوشمند برای تحلیل رفتار کاربر (ارسال SMS ترغیب به خرید، بازگشت به سبد خرید رها شده و کمپین‌های تبلیغاتی). +- [x] **TASK-2.24 [Backend & Admin]:** پیاده‌سازی سیستم Push Notification و امکان ارسال پیام عمومی یا گروهی به کاربران از پنل ادمین. +- [x] **TASK-2.25 [Backend CRM & SMS]:** پیاده‌سازی ماژول CRM هوشمند برای تحلیل رفتار کاربر (ارسال SMS ترغیب به خرید، بازگشت به سبد خرید رها شده و کمپین‌های تبلیغاتی). --- @@ -67,25 +67,25 @@ --- ## 📍 بخش ۴: پایش هوشمند مصرف مکمل‌ها (Smart Supplement Tracker Logic) -- [ ] **TASK-4.1 [Backend & Frontend Logic]:** بررسی، اصلاح و شفاف‌سازی الگوریتم پایش هوشمند مصرف مکمل‌ها (محاسبه زمان اتمام دوره بر اساس وزن حیوان، دوز مصرفی و ارسال هشدار SMS یادآوری تمدید خرید). +- [x] **TASK-4.1 [Backend & Frontend Logic]:** بررسی، اصلاح و شفاف‌سازی الگوریتم پایش هوشمند مصرف مکمل‌ها (محاسبه زمان اتمام دوره بر اساس وزن حیوان، دوز مصرفی و ارسال هشدار SMS یادآوری تمدید خرید). --- ## 📍 بخش ۵: داشبورد کاربر و کیف پول (User Dashboard & Wallet Security) - [x] **TASK-5.1 [Frontend Protection]:** جلوگیری از دسترسی کاربران غیرلاگین به صفحه داشبورد و هدایت خودکار به صفحه ورود. -- [ ] **TASK-5.2 [Frontend Wallet UX]:** رفع مشکل نمایش پیام موفقیت کاذب هنگام شارژ کیف پول بدون لاگین و بهینه‌سازی سرعت فرآیند شارژ. -- [ ] **TASK-5.3 [Frontend & Backend Wallet]:** اصلاح استایل و Layout شارژ کیف پول برای اعداد بزرگ + فعال‌سازی منطق دکمه درخواست برداشت وجه (ثبت درخواست + ارسال SMS به کاربر و مدیر + مدیریت در پنل ادمین). -- [ ] **TASK-5.4 [Frontend UX]:** بررسی و رفع نمایش نشان "حساب تایید شده" برای کاربران غیر لاگین. +- [x] **TASK-5.2 [Frontend Wallet UX]:** رفع مشکل نمایش پیام موفقیت کاذب هنگام شارژ کیف پول بدون لاگین و بهینه‌سازی سرعت فرآیند شارژ. +- [x] **TASK-5.3 [Frontend & Backend Wallet]:** اصلاح استایل و Layout شارژ کیف پول برای اعداد بزرگ + فعال‌سازی منطق دکمه درخواست برداشت وجه (ثبت درخواست + ارسال SMS به کاربر و مدیر + مدیریت در پنل ادمین). +- [x] **TASK-5.4 [Frontend UX]:** بررسی و رفع نمایش نشان "حساب تایید شده" برای کاربران غیر لاگین. --- ## 📍 بخش ۶: مدیریت داینامیک آمار خیرخواهانه (Charity Counter Management) -- [ ] **TASK-6.1 [DB, Backend & Admin]:** اضافه کردن قابلیت مدیریت داینامیک آمار کمک‌های خیرخواهانه (تعداد وعده‌های غذایی تامین شده، تعداد درمان‌ها و...) در پنل ادمین و نمایش دیتای واقعی در سایت. +- [x] **TASK-6.1 [DB, Backend & Admin]:** اضافه کردن قابلیت مدیریت داینامیک آمار کمک‌های خیرخواهانه (تعداد وعده‌های غذایی تامین شده، تعداد درمان‌ها و...) در پنل ادمین و نمایش دیتای واقعی در سایت. --- ## 📍 بخش ۷: بازطراحی صفحه ورود/ثبت‌نام (Login/Register Redesign) -- [ ] **TASK-7.1 [Frontend Site UI]:** بازطراحی چشم‌نواز و رفع ایرادات UX/UI صفحه ورود و ثبت‌نام کاربر. +- [x] **TASK-7.1 [Frontend Site UI]:** بازطراحی چشم‌نواز و رفع ایرادات UX/UI صفحه ورود و ثبت‌نام کاربر. --- diff --git a/frontend/application/components/TopUpModal.tsx b/frontend/application/components/TopUpModal.tsx index de56c4c..1cbb1f6 100644 --- a/frontend/application/components/TopUpModal.tsx +++ b/frontend/application/components/TopUpModal.tsx @@ -4,6 +4,7 @@ import { motion, AnimatePresence } from "motion/react"; import { X, CreditCard, Sparkles, CheckCircle2, TrendingUp, DollarSign } from "lucide-react"; import { toPersian, cn } from "../lib/utils"; import { toast } from "sonner"; +import { useUserStore } from "../lib/store/userStore"; interface TopUpModalProps { isOpen: boolean; @@ -37,6 +38,10 @@ export default function TopUpModal({ isOpen, onClose, onConfirm }: TopUpModalPro const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); + if (!useUserStore.getState().isLoggedIn) { + toast.error("جهت افزایش موجودی کیف پول لطفاً ابتدا وارد حساب کاربری خود شوید."); + return; + } const finalAmount = parseInt(amount); if (isNaN(finalAmount) || finalAmount < 10000) { toast.error("حداقل مبلغ شارژ ۱۰,۰۰۰ تومان است"); diff --git a/frontend/application/components/UserDashboard.tsx b/frontend/application/components/UserDashboard.tsx index 65a0726..3e7a7ed 100644 --- a/frontend/application/components/UserDashboard.tsx +++ b/frontend/application/components/UserDashboard.tsx @@ -25,6 +25,10 @@ export default function UserDashboard() { } }, [isLoggedIn, router]); + if (!isLoggedIn) { + return null; + } + const { orders } = useCartStore(); const [activeTab, setActiveTab] = React.useState<"profile" | "orders" | "wallet" | "addresses" | "tickets">("profile"); const [isLoadingOrders, setIsLoadingOrders] = useState(false); @@ -523,18 +527,28 @@ export default function UserDashboard() {
-
- -
- قابلیت برداشت وجه به‌زودی فعال خواهد شد. -
-
+