import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:sefer_driver/controller/profile/captain_profile_controller.dart';
import 'package:sefer_driver/views/auth/captin/criminal_documents_page.dart';
import 'package:sefer_driver/views/widgets/my_scafold.dart';
import 'package:sefer_driver/views/widgets/mycircular.dart';
import 'package:sefer_driver/views/widgets/mydialoug.dart';
import 'behavior_page.dart';
import 'captains_cars.dart';

// الصفحة الرئيسية الجديدة
class ProfileCaptain extends StatelessWidget {
  const ProfileCaptain({super.key});

  @override
  Widget build(BuildContext context) {
    // Get.put() يجب أن يكون في مكان يتم استدعاؤه مرة واحدة فقط،
    // لكن سنبقيه هنا حسب الكود الأصلي
    final controller = Get.put(CaptainProfileController());

    return MyScafolld(
      title: 'My Profile'.tr,
      isleading: true,
      body: [
        GetBuilder<CaptainProfileController>(
          builder: (controller) {
            if (controller.isLoading) {
              return const Center(child: MyCircularProgressIndicator());
            }
            if (controller.captainProfileData.isEmpty) {
              return Center(child: Text('Failed to load profile data.'.tr));
            }
            return SingleChildScrollView(
              padding:
                  const EdgeInsets.symmetric(horizontal: 16.0, vertical: 20.0),
              child: Column(
                children: [
                  // 1. رأس الصفحة: صورة واسم وتقييم
                  ProfileHeader(
                    name:
                        '${controller.captainProfileData['first_name'] ?? ''} ${controller.captainProfileData['last_name'] ?? ''}',
                    rating:
                        controller.captainProfileData['ratingDriver'] != null
                            ? double.tryParse(controller
                                    .captainProfileData['ratingDriver']
                                    .toString()) ??
                                0.0
                            : 0.0,
                    ratingCount: int.tryParse(controller
                            .captainProfileData['ratingCount']
                            .toString()) ??
                        0,
                  ),
                  const SizedBox(height: 24),

                  // 2. قسم الإجراءات السريعة
                  ActionsGrid(),
                  const SizedBox(height: 24),

                  // 3. بطاقة المعلومات الشخصية
                  PersonalInfoCard(
                      data: controller.captainProfileData
                          .cast<String, dynamic>()),
                  const SizedBox(height: 16),

                  // 4. بطاقة معلومات المركبة (قابلة للتوسيع)
                  VehicleInfoCard(
                      data: controller.captainProfileData
                          .cast<String, dynamic>()),
                ],
              ),
            );
          },
        ),
      ],
    );
  }
}

// --- الويدجتس الجديدة المنفصلة لتحسين التصميم ---

/// 1. ويدجت رأس الصفحة
class ProfileHeader extends StatelessWidget {
  final String name;
  final double rating;
  final int ratingCount;

  const ProfileHeader({
    super.key,
    required this.name,
    required this.rating,
    required this.ratingCount,
  });

  @override
  Widget build(BuildContext context) {
    return Column(
      children: [
        CircleAvatar(
          radius: 50,
          backgroundColor: Get.theme.primaryColor.withOpacity(0.1),
          child: Icon(Icons.person, size: 60, color: Get.theme.primaryColor),
        ),
        const SizedBox(height: 12),
        Text(
          name,
          style: Get.textTheme.headlineSmall
              ?.copyWith(fontWeight: FontWeight.bold),
        ),
        const SizedBox(height: 8),
        Row(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Icon(Icons.star, color: Colors.amber, size: 20),
            const SizedBox(width: 4),
            Text(
              '${rating.toStringAsFixed(1)} (${'reviews'.tr} $ratingCount)',
              style: Get.textTheme.titleMedium
                  ?.copyWith(color: Colors.grey.shade600),
            ),
          ],
        ),
      ],
    );
  }
}

/// 2. ويدجت شبكة الأزرار
class ActionsGrid extends StatelessWidget {
  const ActionsGrid({super.key});

  @override
  Widget build(BuildContext context) {
    return GridView.count(
      crossAxisCount: 2,
      shrinkWrap: true,
      physics: const NeverScrollableScrollPhysics(),
      crossAxisSpacing: 16,
      mainAxisSpacing: 16,
      childAspectRatio: 2.5, // للتحكم في ارتفاع الأزرار
      children: [
        _ActionTile(
          title: 'My Cars'.tr,
          icon: Icons.directions_car_filled,
          onTap: () => Get.to(() => CaptainsCars()),
        ),
        _ActionTile(
          title: 'Criminal Record'.tr,
          icon: Icons.description,
          onTap: () => Get.to(() => CriminalDocumemtPage()),
        ),
        _ActionTile(
          title: 'Bank Account'.tr,
          icon: Icons.account_balance,
          onTap: () {
            MyDialog().getDialog('Coming Soon'.tr,
                'This service will be available soon.'.tr, () => Get.back());
          },
        ),
        _ActionTile(
          title: 'Behavior Page'.tr,
          icon: Icons.checklist_rtl,
          onTap: () => Get.to(() => BehaviorPage()),
        ),
      ],
    );
  }
}

/// ويدجت داخلية لزر في الشبكة
class _ActionTile extends StatelessWidget {
  final String title;
  final IconData icon;
  final VoidCallback onTap;

  const _ActionTile(
      {required this.title, required this.icon, required this.onTap});

  @override
  Widget build(BuildContext context) {
    return Material(
      color: Colors.grey.shade100,
      borderRadius: BorderRadius.circular(12),
      child: InkWell(
        onTap: onTap,
        borderRadius: BorderRadius.circular(12),
        child: Padding(
          padding: const EdgeInsets.all(8.0),
          child: Row(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              Icon(icon, color: Get.theme.primaryColor, size: 20),
              const SizedBox(width: 8),
              Flexible(
                  child: Text(
                title,
                style: Get.textTheme.labelLarge,
                textAlign: TextAlign.center,
              )),
            ],
          ),
        ),
      ),
    );
  }
}

/// 3. بطاقة المعلومات الشخصية
class PersonalInfoCard extends StatelessWidget {
  final Map<String, dynamic> data;
  PersonalInfoCard({super.key, required this.data});
  final controller = Get.find<CaptainProfileController>();
  @override
  Widget build(BuildContext context) {
    return Card(
      elevation: 2,
      shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)),
      child: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            Text('Personal Information'.tr, style: Get.textTheme.titleLarge),
            const Divider(height: 24),
            _InfoRow(
                icon: Icons.phone,
                label: 'Phone Number'.tr,
                value: data['phone'] ?? ''),
            if (data['email'] != null &&
                data['email'].toString().contains('intaleqapp')) ...[
              TextFormField(
                controller: controller.emailController,
                keyboardType:
                    TextInputType.emailAddress, // ✅ لوحة مفاتيح خاصة بالإيميل
                decoration: InputDecoration(
                  border: OutlineInputBorder(),
                  labelText: 'Email'.tr,
                  hintText: 'Enter your email'.tr,
                  prefixIcon: Icon(Icons.email),
                ),
                autofillHints: [
                  AutofillHints.email
                ], // اختياري لتحسين تجربة المستخدم
              ),
              const SizedBox(height: 10),
              ElevatedButton(
                onPressed: () async {
                  await controller.updateEmail();
                },
                child: Text('Update'.tr),
              ),
            ] else
              _InfoRow(
                icon: Icons.email,
                label: 'Email'.tr,
                value: data['email'] ?? '',
              ),
            _InfoRow(
                icon: Icons.cake,
                label: 'Age'.tr,
                value: data['age']?.toString() ?? 'N/A'),
            _InfoRow(
                icon: Icons.wc,
                label: 'Gender'.tr,
                value: data['gender'] ?? 'N/A'),
          ],
        ),
      ),
    );
  }
}

/// 4. بطاقة معلومات المركبة
class VehicleInfoCard extends StatelessWidget {
  final Map<String, dynamic> data;
  const VehicleInfoCard({super.key, required this.data});

  @override
  Widget build(BuildContext context) {
    return Card(
      elevation: 2,
      shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)),
      child: ExpansionTile(
        title: Text('Vehicle Details'.tr, style: Get.textTheme.titleLarge),
        leading: Icon(Icons.directions_car, color: Get.theme.primaryColor),
        childrenPadding:
            const EdgeInsets.symmetric(horizontal: 16.0, vertical: 8.0),
        children: [
          _InfoRow(
              icon: Icons.branding_watermark,
              label: 'Make'.tr,
              value: data['make'] ?? ''),
          _InfoRow(
              icon: Icons.category,
              label: 'Model'.tr,
              value: data['model'] ?? ''),
          _InfoRow(
              icon: Icons.palette,
              label: 'Color'.tr,
              value: data['color'] ?? ''),
          _InfoRow(
              icon: Icons.pin,
              label: 'Plate Number'.tr,
              value: data['car_plate'] ?? ''),
          _InfoRow(
              icon: Icons.confirmation_number,
              label: 'VIN'.tr,
              value: data['vin'] ?? ''),
          _InfoRow(
              icon: Icons.event,
              label: 'Expiration Date'.tr,
              value: data['expiration_date'] ?? ''),
        ],
      ),
    );
  }
}

/// ويدجت لعرض سطر معلومة (أيقونة + عنوان + قيمة) لتجنب التكرار
class _InfoRow extends StatelessWidget {
  final IconData icon;
  final String label;
  final String value;

  const _InfoRow(
      {required this.icon, required this.label, required this.value});

  @override
  Widget build(BuildContext context) {
    return Padding(
      padding: const EdgeInsets.symmetric(vertical: 8.0),
      child: Row(
        children: [
          Icon(icon, color: Colors.grey.shade500, size: 20),
          const SizedBox(width: 16),
          Text(label, style: Get.textTheme.bodyLarge),
          const Spacer(),
          Flexible(
            child: Text(
              value,
              style: Get.textTheme.bodyLarge?.copyWith(
                  color: Colors.grey.shade700, fontWeight: FontWeight.w500),
              textAlign: TextAlign.end,
            ),
          ),
        ],
      ),
    );
  }
}
