hesabixArc/docs/MARKETING_CALENDAR_INTEGRATION.md

109 lines
3.4 KiB
Markdown
Raw Permalink Normal View History

2025-09-18 10:44:23 +03:30
# یکپارچه‌سازی تقویم در بخش بازاریابی
## تغییرات انجام شده
### ✅ اضافه شدن 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 ها تطبیق یافته
- ✅ عملکرد صحیح