hesabixArc/docs/MARKETING_CALENDAR_INTEGRATION.md

109 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# یکپارچه‌سازی تقویم در بخش بازاریابی
## تغییرات انجام شده
### ✅ اضافه شدن CalendarController به MarketingPage
- CalendarController به constructor اضافه شد
- MarketingPage حالا تقویم انتخابی کاربر را می‌شناسد
### ✅ تنظیم DatePicker بر اساس تقویم انتخابی
DatePicker ها حالا بر اساس تقویم انتخابی کاربر تنظیم می‌شوند:
#### تقویم شمسی:
```dart
locale: const Locale('fa', 'IR')
```
#### تقویم میلادی:
```dart
locale: const Locale('en', 'US')
```
### 🔧 تغییرات کد:
#### 1. **Import CalendarController**
```dart
import '../../core/calendar_controller.dart';
```
#### 2. **Constructor به‌روزرسانی شده**
```dart
class MarketingPage extends StatefulWidget {
final CalendarController calendarController;
const MarketingPage({super.key, required this.calendarController});
}
```
#### 3. **DatePicker از تاریخ**
```dart
Future<void> _pickFromDate() async {
final picked = await showDatePicker(
context: context,
initialDate: _fromDate ?? now,
firstDate: first,
lastDate: last,
helpText: t.dateFrom,
locale: widget.calendarController.isJalali
? const Locale('fa', 'IR')
: const Locale('en', 'US'),
);
}
```
#### 4. **DatePicker تا تاریخ**
```dart
Future<void> _pickToDate() async {
final picked = await showDatePicker(
context: context,
initialDate: _toDate ?? now,
firstDate: first,
lastDate: last,
helpText: t.dateTo,
locale: widget.calendarController.isJalali
? const Locale('fa', 'IR')
: const Locale('en', 'US'),
);
}
```
#### 5. **به‌روزرسانی main.dart**
```dart
GoRoute(
path: '/user/profile/marketing',
name: 'profile_marketing',
builder: (context, state) => MarketingPage(calendarController: _calendarController!),
),
```
### 🎯 ویژگی‌های جدید:
#### 1. **تطبیق با تقویم انتخابی**
- DatePicker ها بر اساس تقویم انتخابی کاربر نمایش داده می‌شوند
- تقویم شمسی: Locale فارسی
- تقویم میلادی: Locale انگلیسی
#### 2. **یکپارچگی با سیستم تقویم**
- MarketingPage از CalendarController استفاده می‌کند
- تغییر تقویم در سایر صفحات بر روی DatePicker ها تأثیر می‌گذارد
#### 3. **تجربه کاربری بهتر**
- کاربران می‌توانند تاریخ‌ها را با تقویم مورد نظر خود انتخاب کنند
- فیلتر تاریخ بر اساس تقویم انتخابی کار می‌کند
### ✨ نتیجه:
حالا در بخش بازاریابی:
- **فیلتر تاریخ از**: بر اساس تقویم انتخابی
- **فیلتر تاریخ تا**: بر اساس تقویم انتخابی
- **تطبیق خودکار**: با تغییر تقویم در سایر صفحات
### 🔄 نحوه کار:
1. کاربر تقویم مورد نظر را انتخاب می‌کند
2. در بخش بازاریابی، DatePicker ها بر اساس تقویم انتخابی نمایش داده می‌شوند
3. فیلتر تاریخ بر اساس تقویم انتخابی کار می‌کند
## تست
- ✅ Flutter analyze بدون خطای critical
- ✅ CalendarController یکپارچه شده
- ✅ DatePicker ها تطبیق یافته
- ✅ عملکرد صحیح