# إعداد تسجيل الدخول (Login Setup)

تم ربط عملية تسجيل الدخول مع السيرفر بنجاح.

## الملفات المُنشأة

### 1. Data Layer
- `data/dto/login_dto.dart` - DTO لإرسال بيانات تسجيل الدخول
- `data/dto/login_response_dto.dart` - DTO لاستقبال استجابة تسجيل الدخول
- `data/datasources/auth_remote_data_source.dart` - مصدر البيانات البعيدة لتسجيل الدخول

### 2. Domain Layer
- `domain/models/login_request.dart` - نموذج طلب تسجيل الدخول
- `domain/models/login_response_model.dart` - نموذج استجابة تسجيل الدخول
- `domain/repositories/auth_repository.dart` - واجهة Repository
- `domain/usecases/login_usecase.dart` - Use Case لتسجيل الدخول

### 3. Data Implementation
- `data/repositories/auth_repository_impl.dart` - تطبيق Repository

### 4. Core Updates
- `core/network/api_client.dart` - تم تحديثه لإضافة token تلقائياً في الطلبات
- `core/di/injection_container.dart` - تم تسجيل جميع التبعيات

### 5. UI Updates
- `widgets/auth_form.dart` - تم تحديثه لاستخدام LoginUseCase

## كيفية الاستخدام

### في الكود:
```dart
// الحصول على LoginUseCase من dependency injection
final loginUseCase = sl<LoginUseCase>();

// إنشاء طلب تسجيل الدخول
final request = LoginRequest(
  phoneNumber: '7856121557',
  password: 'qaqaqa',
);

// استدعاء UseCase
final result = await loginUseCase(request);

// التعامل مع النتيجة
result.fold(
  (failure) {
    // معالجة الخطأ
    print('خطأ: ${failure.message}');
  },
  (response) {
    // معالجة النجاح
    if (response.isSuccess) {
      print('تم تسجيل الدخول بنجاح');
      print('Token: ${response.data?.token}');
      print('اسم المستخدم: ${response.data?.fullName}');
    }
  },
);
```

## API Endpoint

- **URL**: `https://hrm.go.iq/api/Auth/login`
- **Method**: POST
- **Headers**: 
  - `Content-Type: application/json`
  - `accept: text/plain`

### Request Body:
```json
{
  "phoneNumber": "7856121557",
  "password": "qaqaqa"
}
```

### Response:
```json
{
  "statusCode": 200,
  "isSuccess": true,
  "message": "Login Successful",
  "data": {
    "token": "...",
    "id": "...",
    "username": "...",
    "fullName": "...",
    "role": "...",
    "email": "...",
    "phoneNumber": "...",
    "permissions": [...]
  }
}
```

## المميزات

1. ✅ حفظ Token تلقائياً في SharedPreferences
2. ✅ إضافة Token تلقائياً في جميع الطلبات عبر ApiClient interceptor
3. ✅ معالجة الأخطاء بشكل شامل (Network, Server, Validation)
4. ✅ رسائل خطأ بالعربية
5. ✅ Loading state في واجهة المستخدم
6. ✅ التحقق من صحة المدخلات

## الخطوات التالية

1. قم بتشغيل `flutter pub get` لتثبيت الحزم
2. اختبر تسجيل الدخول باستخدام البيانات الصحيحة
3. يمكنك إضافة المزيد من الميزات مثل:
   - حفظ بيانات المستخدم الكاملة
   - تذكر المستخدم (Remember Me)
   - تسجيل الخروج (Logout)
   - تحديث Token تلقائياً عند انتهاء الصلاحية
