// import 'package:flutter/material.dart';
// import 'package:get/get.dart';
// import 'package:sigap/src/features/auth/presentasion/controllers/signup/step/officer-information/officer_info_controller.dart';
// import 'package:sigap/src/features/daily-ops/controllers/patrol_unit_controller.dart';
// import 'package:sigap/src/shared/widgets/text/custom_text_field.dart';
// import 'package:sigap/src/utils/constants/colors.dart';
// import 'package:sigap/src/utils/constants/sizes.dart';
// import 'package:sigap/src/utils/helpers/helper_functions.dart';
// import 'package:sigap/src/utils/popups/loaders.dart';

// class PatrolUnitSelectionScreen extends StatelessWidget {
//   PatrolUnitSelectionScreen({super.key});

//   // Use the dedicated patrol unit controller
//   final officerController = Get.find<OfficerInfoController>();
//   final controller = Get.find<PatrolUnitController>();

//   @override
//   Widget build(BuildContext context) {
//     final isDark = THelperFunctions.isDarkMode(context);
//     return Scaffold(
//       appBar: AppBar(
//         title: const Text('Configure Patrol Unit'),
//         leading: IconButton(
//           icon: Icon(
//             Icons.arrow_back,
//             color: isDark ? TColors.accent : TColors.primary,
//           ),
//           onPressed: () => Get.back(),
//         ),
//         centerTitle: true,
//       ),
//       body: Padding(
//         padding: const EdgeInsets.all(TSizes.defaultSpace),
//         child: Column(
//           crossAxisAlignment: CrossAxisAlignment.start,
//           children: [
//             // Unit info display
//             Container(
//               padding: const EdgeInsets.all(12),
//               decoration: BoxDecoration(
//                 color:
//                     isDark
//                         ? TColors.accent.withOpacity(0.1)
//                         : TColors.primary.withOpacity(0.1),
//                 borderRadius: BorderRadius.circular(8),
//               ),
//               child: Row(
//                 children: [
//                   Icon(
//                     Icons.business,
//                     color: isDark ? TColors.accent : TColors.primary,
//                   ),
//                   const SizedBox(width: 12),
//                   Expanded(
//                     child: Column(
//                       crossAxisAlignment: CrossAxisAlignment.start,
//                       children: [
//                         Text(
//                           'Selected Unit',
//                           style: Theme.of(
//                             context,
//                           ).textTheme.labelSmall?.copyWith(
//                             color:
//                                 isDark
//                                     ? TColors.accent.withOpacity(0.5)
//                                     : TColors.primary.withOpacity(0.5),
//                           ),
//                         ),
//                         Obx(
//                           () => Text(
//                             controller.selectedUnitName.value,
//                             style: const TextStyle(fontWeight: FontWeight.bold),
//                           ),
//                         ),
//                       ],
//                     ),
//                   ),
//                 ],
//               ),
//             ),

//             const SizedBox(height: TSizes.spaceBtwSections),

//             // Patrol Type Selection
//             const Text(
//               'Patrol Type:',
//               style: TextStyle(fontWeight: FontWeight.bold, fontSize: 16),
//             ),
//             const SizedBox(height: TSizes.spaceBtwInputFields / 2),
//             _buildPatrolTypeBasicSelection(),

//             const SizedBox(height: TSizes.spaceBtwSections),

//             // Selection Mode Tabs
//             const Text(
//               'Select option:',
//               style: TextStyle(fontWeight: FontWeight.bold, fontSize: 16),
//             ),
//             const SizedBox(height: TSizes.spaceBtwInputFields / 2),
//             _buildSelectionModeTabs(),

//             const SizedBox(height: TSizes.spaceBtwInputFields),

//             // Patrol Unit Selection/Creation based on mode
//             Expanded(
//               child: GetBuilder<PatrolUnitController>(
//                 id: 'patrol_selection',
//                 builder: (controller) {
//                   switch (controller.patrolSelectionMode.value) {
//                     case PatrolSelectionMode.individual:
//                     case PatrolSelectionMode.group:
//                       return _buildExistingPatrolUnitSelection();
//                     case PatrolSelectionMode.createNew:
//                       return _buildCreatePatrolUnitForm();
//                   }
//                 },
//               ),
//             ),

//             // Confirm button
//             Padding(
//               padding: const EdgeInsets.symmetric(
//                 vertical: TSizes.defaultSpace,
//               ),
//               child: SizedBox(
//                 width: double.infinity,
//                 child: ElevatedButton(
//                   onPressed: _handleConfirmButton,
//                   style: ElevatedButton.styleFrom(
//                     backgroundColor: TColors.primary,
//                     foregroundColor: Colors.white,
//                     padding: const EdgeInsets.symmetric(vertical: 16),
//                   ),
//                   child: const Text('Confirm Selection'),
//                 ),
//               ),
//             ),
//           ],
//         ),
//       ),
//     );
//   }

//   // Handle the confirm button press based on mode
//   void _handleConfirmButton() {
//     if (controller.patrolSelectionMode.value == PatrolSelectionMode.createNew) {
//       controller.createNewPatrolUnit().then((success) {
//         if (success) {
//           Get.back();
//         }
//       });
//     } else if (controller.patrolUnitIdController.text.isNotEmpty) {
//       // Selection mode - just go back if a patrol unit is selected
//       Get.back();
//     } else {
//       TLoaders.errorSnackBar(
//         title: 'Patrol Unit Required',
//         message: 'Please select a patrol unit',
//       );
//     }
//   }

//   // Build patrol type selection (basic car/motorcycle selection)
//   Widget _buildPatrolTypeBasicSelection() {
//     return GetBuilder<PatrolUnitController>(
//       id: 'patrol_type_selector',
//       builder: (controller) {
//         final isDark = THelperFunctions.isDarkMode(Get.context!);
//         final isCarSelected =
//             controller.selectedPatrolType.value == PatrolUnitTypeExtended.car;
//         final isMotorcycleSelected =
//             controller.selectedPatrolType.value ==
//             PatrolUnitTypeExtended.motorcycle;

//         return Row(
//           children: [
//             Expanded(
//               child: InkWell(
//                 onTap:
//                     () => controller.setPatrolUnitType(
//                       PatrolUnitTypeExtended.car,
//                     ),
//                 child: Container(
//                   padding: const EdgeInsets.symmetric(vertical: 12),
//                   decoration: BoxDecoration(
//                     color:
//                         isCarSelected
//                             ? isDark
//                                 ? TColors.accent.withOpacity(0.1)
//                                 : TColors.primary.withOpacity(0.1)
//                             : isDark
//                             ? TColors.accent.withOpacity(0.05)
//                             : TColors.lightContainer.withOpacity(0.05),
//                     borderRadius: BorderRadius.circular(8),
//                     border: Border.all(
//                       color:
//                           isCarSelected
//                               ? isDark
//                                   ? TColors.accent
//                                   : TColors.primary
//                               : isDark
//                               ? TColors.accent.withOpacity(0.3)
//                               : TColors.primary.withOpacity(0.3),
//                     ),
//                   ),
//                   child: Column(
//                     children: [
//                       Icon(
//                         Icons.directions_car,
//                         color:
//                             isCarSelected
//                                 ? isDark
//                                     ? TColors.accent
//                                     : TColors.primary
//                                 : isDark
//                                 ? TColors.accent.withOpacity(0.3)
//                                 : TColors.primary.withOpacity(0.3),
//                         size: 32,
//                       ),
//                       const SizedBox(height: TSizes.sm),
//                       const Text('Car'),
//                     ],
//                   ),
//                 ),
//               ),
//             ),
//             const SizedBox(width: TSizes.spaceBtwInputFields),
//             Expanded(
//               child: InkWell(
//                 onTap:
//                     () => controller.setPatrolUnitType(
//                       PatrolUnitTypeExtended.motorcycle,
//                     ),
//                 child: Container(
//                   padding: const EdgeInsets.symmetric(vertical: 12),
//                   decoration: BoxDecoration(
//                     color:
//                         isMotorcycleSelected
//                             ? isDark
//                                 ? TColors.accent.withOpacity(0.1)
//                                 : TColors.primary.withOpacity(0.1)
//                             : isDark
//                             ? TColors.accent.withOpacity(0.05)
//                             : TColors.lightContainer.withOpacity(0.05),
//                     borderRadius: BorderRadius.circular(8),
//                     border: Border.all(
//                       color:
//                           isMotorcycleSelected
//                               ? isDark
//                                   ? TColors.accent
//                                   : TColors.primary
//                               : isDark
//                               ? TColors.accent.withOpacity(0.3)
//                               : TColors.primary.withOpacity(0.3),
//                     ),
//                   ),
//                   child: Column(
//                     children: [
//                       Icon(
//                         Icons.motorcycle,
//                         color:
//                             isMotorcycleSelected
//                                 ? isDark
//                                     ? TColors.accent
//                                     : TColors.primary
//                                 : isDark
//                                 ? TColors.accent.withOpacity(0.3)
//                                 : TColors.primary.withOpacity(0.3),
//                         size: 32,
//                       ),
//                       const SizedBox(height: TSizes.sm),
//                       const Text('Motorcycle'),
//                     ],
//                   ),
//                 ),
//               ),
//             ),
//           ],
//         );
//       },
//     );
//   }

//   // Build selection mode tabs (individual/group/create new)
//   Widget _buildSelectionModeTabs() {
//     return GetBuilder<PatrolUnitController>(
//       id: 'patrol_mode_tabs',
//       builder: (controller) {
//         return Row(
//           children: [
//             _buildModeTab(
//               controller,
//               PatrolSelectionMode.individual,
//               'Individual',
//               Icons.person,
//             ),
//             const SizedBox(width: TSizes.spaceBtwInputFields),
//             _buildModeTab(
//               controller,
//               PatrolSelectionMode.group,
//               'Group',
//               Icons.group,
//             ),
//             const SizedBox(width: TSizes.spaceBtwInputFields),
//             _buildModeTab(
//               controller,
//               PatrolSelectionMode.createNew,
//               'Create New',
//               Icons.add_circle,
//             ),
//           ],
//         );
//       },
//     );
//   }

//   // Build existing patrol unit selection list
//   Widget _buildExistingPatrolUnitSelection() {
//     final isDark = THelperFunctions.isDarkMode(Get.context!);

//     return Column(
//       crossAxisAlignment: CrossAxisAlignment.start,
//       children: [
//         // Category label based on selection mode
//         Text(
//           controller.patrolSelectionMode.value == PatrolSelectionMode.individual
//               ? 'Select Individual Patrol Unit:'
//               : 'Select Group Patrol Unit:',
//           style: const TextStyle(fontWeight: FontWeight.bold, fontSize: 16),
//         ),
        
//         const SizedBox(height: TSizes.spaceBtwInputFields / 2),
        
//         GetX<OfficerInfoController>(
//           builder: (controller) {
//             if (controller.isLoadingPatrolUnits.value) {
//               return const Expanded(
//                 child: Center(child: CircularProgressIndicator()),
//               );
//             }

//             if (controller.unitIdController.text.isEmpty) {
//               return const Expanded(
//                 child: Center(child: Text('Please select a unit first')),
//               );
//             }

//             final filteredUnits = controller.getFilteredPatrolUnits();

//             if (filteredUnits.isEmpty) {
//               // Show different messages based on the filter mode
//               String message = '';
//               if (controller.patrolSelectionMode.value ==
//                   PatrolSelectionMode.individual) {
//                 message = 'No individual patrol units available for this type';
//               } else if (controller.patrolSelectionMode.value ==
//                   PatrolSelectionMode.group) {
//                 message = 'No group patrol units available for this type';
//               } else {
//                 message = 'No patrol units available for this type';
//               }

//               return Expanded(
//                 child: Column(
//                   mainAxisAlignment: MainAxisAlignment.center,
//                   children: [
//                     Text(message),
//                     const SizedBox(height: 12),
//                     TextButton.icon(
//                       onPressed:
//                           () => controller.setPatrolSelectionMode(
//                             PatrolSelectionMode.createNew,
//                           ),
//                       icon: Icon(
//                         Icons.add,
//                         color: isDark ? TColors.accent : TColors.primary,
//                       ),
//                       label: Text(
//                         'Create a new patrol unit instead?',
//                         style: TextStyle(
//                           fontWeight: FontWeight.bold,
//                           color: isDark ? TColors.accent : TColors.primary,
//                         ),
//                       ),
//                     ),
//                   ],
//                 ),
//               );
//             }

//             return Expanded(
//               child: ListView.builder(
//                 itemCount: filteredUnits.length,
//                 itemBuilder: (context, index) {
//                   final patrolUnit = filteredUnits[index];
//                   final isUnitSelected =
//                       patrolUnit.id == controller.patrolUnitIdController.text;
//                   final isCarType = patrolUnit.type.toLowerCase() == 'car';

//                   return Card(
//                     elevation: isUnitSelected ? 2 : 0,
//                     color:
//                         isUnitSelected
//                             ? TColors.primary.withOpacity(0.1)
//                             : null,
//                     margin: const EdgeInsets.symmetric(vertical: 4),
//                     child: ListTile(
//                       title: Text(
//                         patrolUnit.name,
//                         style: TextStyle(
//                           fontWeight:
//                               isUnitSelected
//                                   ? FontWeight.bold
//                                   : FontWeight.normal,
//                         ),
//                       ),
//                       subtitle: Column(
//                         crossAxisAlignment: CrossAxisAlignment.start,
//                         children: [
//                           Text('Members: ${patrolUnit.memberCount ?? 0}'),
//                           if (patrolUnit.category?.isNotEmpty == true)
//                             Text(
//                               'Type: ${patrolUnit.category![0].toUpperCase()}${patrolUnit.category!.substring(1)}',
//                               style: const TextStyle(fontSize: 12),
//                             ),
//                         ],
//                       ),
//                       isThreeLine: true,
//                       leading: Icon(
//                         isCarType ? Icons.directions_car : Icons.motorcycle,
//                         color: isUnitSelected ? TColors.primary : null,
//                       ),
//                       trailing:
//                           isUnitSelected
//                               ? const Icon(
//                                 Icons.check_circle,
//                                 color: TColors.primary,
//                               )
//                               : null,
//                       selected: isUnitSelected,
//                       onTap: () => controller.joinPatrolUnit(patrolUnit),
//                     ),
//                   );
//                 },
//               ),
//             );
//           },
//         ),
//       ],
//     );
//   }

//   // Build create new patrol unit form
//   Widget _buildCreatePatrolUnitForm() {
//     final isDark = THelperFunctions.isDarkMode(Get.context!);

//     return SingleChildScrollView(
//       child: Column(
//         crossAxisAlignment: CrossAxisAlignment.start,
//         children: [
//           const Text(
//             'Create New Patrol Unit:',
//             style: TextStyle(fontWeight: FontWeight.bold, fontSize: 16),
//           ),
//           const SizedBox(height: TSizes.spaceBtwInputFields),

//           // Patrol Name Field
//           CustomTextField(
//             label: 'Patrol Unit Name',
//             controller: controller.patrolNameController,
//             validator:
//                 (v) => TValidators.validateUserInput('Patrol Unit Name', v, 30),
//             errorText: controller.patrolNameError.value,
//             textInputAction: TextInputAction.next,
//             hintText: 'e.g., ALPHA-JBR01-C1',
//             prefixIcon: const Icon(Icons.label_outline),
//             onChanged: (value) {
//               controller.patrolNameController.text = value;
//               controller.patrolNameError.value = '';
//             },
//           ),
          
//           // Error text display
//           Obx(
//             () =>
//                 controller.patrolNameError.value.isNotEmpty
//                     ? Padding(
//                       padding: const EdgeInsets.only(top: 8.0, bottom: 4.0),
//                       child: Text(
//                         controller.patrolNameError.value,
//                         style: TextStyle(color: Colors.red[700], fontSize: 12),
//                       ),
//                     )
//                     : const SizedBox.shrink(),
//           ),

//           // Helper text for name format
//           Padding(
//             padding: const EdgeInsets.only(left: 8.0, bottom: 16.0),
//             child: Text(
//               'Format: {CALLSIGN}-{UNIT_CODE}-{TYPE_CODE}{SEQ}',
//               style: TextStyle(
//                 fontSize: 12,
//                 color: isDark ? Colors.grey[400] : Colors.grey[600],
//                 fontStyle: FontStyle.italic,
//               ),
//             ),
//           ),

//           // Patrol Type Selection with expanded options
//           _buildPatrolTypeSelector(controller),

//           const SizedBox(height: TSizes.spaceBtwInputFields),

//           // Patrol Status Selection
//           _buildPatrolStatusSelector(controller),

//           const SizedBox(height: TSizes.spaceBtwInputFields),

//           // Member Count Field with category selection
//           _buildMemberCountField(controller),

//           // Patrol Radius Field with dynamic recommendations based on type
//           _buildPatrolRadiusField(controller),

//           const SizedBox(height: TSizes.spaceBtwSections),

//           // Show summary of the patrol unit being created
//           _buildPatrolUnitSummary(controller),
//         ],
//       ),
//     );
//   }

//   // Build patrol type selector with expanded options
//   Widget _buildPatrolTypeSelector(OfficerInfoController controller) {
//     final isDark = THelperFunctions.isDarkMode(Get.context!);

//     return Column(
//       crossAxisAlignment: CrossAxisAlignment.start,
//       children: [
//         Text(
//           'Patrol Type:',
//           style: TextStyle(
//             fontWeight: FontWeight.w500,
//             fontSize: 14,
//             color: isDark ? Colors.white : Colors.black87,
//           ),
//         ),
//         const SizedBox(height: 8),

//         // Wrap with GetBuilder instead of Obx for complex widget updates
//         GetBuilder<OfficerInfoController>(
//           id: 'patrol_type_selector',
//           builder: (controller) {
//             return Wrap(
//               spacing: 8,
//               children:
//                   PatrolUnitTypeExtended.values.map((type) {
//                     final isSelected =
//                         controller.patrolTypeController.text.toLowerCase() ==
//                         type.name.toLowerCase();

//                     return ChoiceChip(
//                       label: Text(
//                         type.name[0].toUpperCase() + type.name.substring(1),
//                       ),
//                       selected: isSelected,
//                       onSelected: (selected) {
//                         if (selected) {
//                           controller.patrolTypeController.text = type.name;
//                           controller.patrolTypeError.value = '';

//                           // Update the recommended radius based on type
//                           switch (type) {
//                             case PatrolUnitTypeExtended.car:
//                               controller.patrolRadiusController.text = '6500';
//                               break;
//                             case PatrolUnitTypeExtended.motorcycle:
//                               controller.patrolRadiusController.text = '4000';
//                               break;
//                             case PatrolUnitTypeExtended.foot:
//                               controller.patrolRadiusController.text = '1000';
//                               break;
//                             case PatrolUnitTypeExtended.drone:
//                               controller.patrolRadiusController.text = '3000';
//                               break;
//                             case PatrolUnitTypeExtended.mixed:
//                               controller.patrolRadiusController.text = '4000';
//                               break;
//                           }
//                           controller.update([
//                             'patrol_type_selector',
//                             'patrol_radius_field',
//                             'patrol_summary',
//                           ]);
//                         }
//                       },
//                       backgroundColor:
//                           isDark ? Colors.grey[800] : Colors.grey[200],
//                       selectedColor:
//                           isDark
//                               ? TColors.accent.withOpacity(0.3)
//                               : TColors.primary.withOpacity(0.2),
//                       labelStyle: TextStyle(
//                         color:
//                             isSelected
//                                 ? (isDark ? TColors.accent : TColors.primary)
//                                 : (isDark ? Colors.white70 : Colors.black87),
//                         fontWeight:
//                             isSelected ? FontWeight.bold : FontWeight.normal,
//                       ),
//                       shape: StadiumBorder(
//                         side: BorderSide(
//                           color:
//                               isSelected
//                                   ? (isDark ? TColors.accent : TColors.primary)
//                                   : Colors.transparent,
//                           width: 1.5,
//                         ),
//                       ),
//                       avatar:
//                           isSelected
//                               ? Icon(
//                                 _getIconForPatrolType(type),
//                                 size: 16,
//                                 color:
//                                     isDark ? TColors.accent : TColors.primary,
//                               )
//                               : null,
//                       padding: const EdgeInsets.symmetric(
//                         horizontal: 12,
//                         vertical: 8,
//                       ),
//                     );
//                   }).toList(),
//             );
//           },
//         ),

//         // Display error text
//         Obx(
//           () =>
//               controller.patrolTypeError.value.isNotEmpty
//                   ? Padding(
//                     padding: const EdgeInsets.only(top: 8.0, bottom: 4.0),
//                     child: Text(
//                       controller.patrolTypeError.value,
//                       style: TextStyle(color: Colors.red[700], fontSize: 12),
//                     ),
//                   )
//                   : const SizedBox.shrink(),
//         ),
//       ],
//     );
//   }

//   // Helper to get icon for patrol type
//   IconData _getIconForPatrolType(PatrolUnitTypeExtended type) {
//     switch (type) {
//       case PatrolUnitTypeExtended.car:
//         return Icons.directions_car;
//       case PatrolUnitTypeExtended.motorcycle:
//         return Icons.motorcycle;
//       case PatrolUnitTypeExtended.foot:
//         return Icons.directions_walk;
//       case PatrolUnitTypeExtended.drone:
//         return Icons.flight;
//       case PatrolUnitTypeExtended.mixed:
//         return Icons.group;
//     }
//   }

//   // Build patrol status selector
//   Widget _buildPatrolStatusSelector(OfficerInfoController controller) {
//     final isDark = THelperFunctions.isDarkMode(Get.context!);

//     return Column(
//       crossAxisAlignment: CrossAxisAlignment.start,
//       children: [
//         Text(
//           'Patrol Status:',
//           style: TextStyle(
//             fontWeight: FontWeight.w500,
//             fontSize: 14,
//             color: isDark ? Colors.white : Colors.black87,
//           ),
//         ),
//         const SizedBox(height: 8),

//         // Use GetBuilder instead of Obx for complex widget
//         GetBuilder<OfficerInfoController>(
//           id: 'patrol_status_selector',
//           builder: (controller) {
//             return Wrap(
//               spacing: 8,
//               children:
//                   PatrolUnitStatus.values.map((status) {
//                     // Convert enum to display text (e.g., onDuty -> On Duty)
//                     final displayName =
//                         status.name == 'onDuty'
//                             ? 'On Duty'
//                             : status.name == 'offDuty'
//                             ? 'Off Duty'
//                             : status.name[0].toUpperCase() +
//                                 status.name.substring(1);

//                     final isSelected =
//                         controller.patrolStatusController.text.toLowerCase() ==
//                         status.name.toLowerCase();

//                     return ChoiceChip(
//                       label: Text(displayName),
//                       selected: isSelected,
//                       onSelected: (selected) {
//                         if (selected) {
//                           controller.patrolStatusController.text = status.name;
//                           controller.patrolStatusError.value = '';
//                           controller.update([
//                             'patrol_status_selector',
//                             'patrol_summary',
//                           ]);
//                         }
//                       },
//                       backgroundColor:
//                           isDark ? Colors.grey[800] : Colors.grey[200],
//                       selectedColor:
//                           isDark
//                               ? TColors.accent.withOpacity(0.3)
//                               : TColors.primary.withOpacity(0.2),
//                       labelStyle: TextStyle(
//                         color:
//                             isSelected
//                                 ? (isDark ? TColors.accent : TColors.primary)
//                                 : (isDark ? Colors.white70 : Colors.black87),
//                         fontWeight:
//                             isSelected ? FontWeight.bold : FontWeight.normal,
//                       ),
//                       shape: StadiumBorder(
//                         side: BorderSide(
//                           color:
//                               isSelected
//                                   ? (isDark ? TColors.accent : TColors.primary)
//                                   : Colors.transparent,
//                           width: 1.5,
//                         ),
//                       ),
//                       padding: const EdgeInsets.symmetric(
//                         horizontal: 12,
//                         vertical: 8,
//                       ),
//                     );
//                   }).toList(),
//             );
//           },
//         ),

//         // Display error for patrol status
//         Obx(
//           () =>
//               controller.patrolStatusError.value.isNotEmpty
//                   ? Padding(
//                     padding: const EdgeInsets.only(top: 8.0, bottom: 4.0),
//                     child: Text(
//                       controller.patrolStatusError.value,
//                       style: TextStyle(color: Colors.red[700], fontSize: 12),
//                     ),
//                   )
//                   : const SizedBox.shrink(),
//         ),
//       ],
//     );
//   }

//   // Build member count field with automatic category
//   Widget _buildMemberCountField(OfficerInfoController controller) {
//     return Column(
//       crossAxisAlignment: CrossAxisAlignment.start,
//       children: [
//         CustomTextField(
//           label: 'Member Count',
//           controller: controller.memberCountController,
//           keyboardType: TextInputType.number,
//           textInputAction: TextInputAction.next,
//           hintText: 'e.g., 2',
//           prefixIcon: const Icon(Icons.group_outlined),
//           errorText: controller.memberCountError.value,
//           onChanged: (value) {
//             controller.memberCountController.text = value;
//             controller.memberCountError.value = '';

//             // Update category based on member count
//             try {
//               int count = int.parse(value);
//               controller.categoryController.text =
//                   count > 1 ? 'group' : 'individual';
//               controller.update(['member_count_category', 'patrol_summary']);
//             } catch (e) {
//               controller.categoryController.text = '';
//               controller.update(['member_count_category', 'patrol_summary']);
//             }
//           },
//           validator: (v) {
//             if (v == null || v.isEmpty) return 'Member count is required';
//             try {
//               int count = int.parse(v);
//               if (count <= 0) return 'Must have at least 1 member';
//               return null;
//             } catch (e) {
//               return 'Please enter a valid number';
//             }
//           },
//         ),

//         // Display error message
//         Obx(
//           () =>
//               controller.memberCountError.value.isNotEmpty
//                   ? Padding(
//                     padding: const EdgeInsets.only(top: 8.0, bottom: 4.0),
//                     child: Text(
//                       controller.memberCountError.value,
//                       style: TextStyle(color: Colors.red[700], fontSize: 12),
//                     ),
//                   )
//                   : const SizedBox.shrink(),
//         ),

//         // Show category based on member count
//         GetBuilder<OfficerInfoController>(
//           id: 'member_count_category',
//           builder: (controller) {
//             final category = controller.categoryController.text;
//             if (category.isEmpty) return const SizedBox.shrink();

//             return Padding(
//               padding: const EdgeInsets.only(left: 8.0, top: 4.0, bottom: 8.0),
//               child: Row(
//                 children: [
//                   Text(
//                     'Category: ',
//                     style: TextStyle(fontSize: 12, color: Colors.grey[600]),
//                   ),
//                   Text(
//                     category[0].toUpperCase() + category.substring(1),
//                     style: TextStyle(
//                       fontWeight: FontWeight.bold,
//                       fontSize: 12,
//                       color:
//                           category == 'group' ? TColors.primary : Colors.teal,
//                     ),
//                   ),
//                   const SizedBox(width: 4),
//                   Icon(
//                     category == 'group' ? Icons.groups : Icons.person,
//                     size: 14,
//                     color: category == 'group' ? TColors.primary : Colors.teal,
//                   ),
//                 ],
//               ),
//             );
//           },
//         ),
//       ],
//     );
//   }

//   // Build patrol radius field with dynamic recommendations
//   Widget _buildPatrolRadiusField(OfficerInfoController controller) {
//     final isDark = THelperFunctions.isDarkMode(Get.context!);

//     return Column(
//       crossAxisAlignment: CrossAxisAlignment.start,
//       children: [
//         CustomTextField(
//           label: 'Patrol Radius (in meters)',
//           controller: controller.patrolRadiusController,
//           validator: (v) {
//             if (v == null || v.isEmpty) {
//               return 'Radius is required';
//             }
//             try {
//               final radius = double.parse(v);
//               if (radius <= 0) {
//                 return 'Radius must be greater than 0';
//               }

//               // Validate against recommended ranges
//               final patrolType =
//                   controller.patrolTypeController.text.toLowerCase();
//               String? rangeError = _validateRadiusRange(patrolType, radius);
//               if (rangeError != null) return rangeError;

//               return null;
//             } catch (e) {
//               return 'Please enter a valid number';
//             }
//           },
//           errorText: controller.patrolRadiusError.value,
//           textInputAction: TextInputAction.done,
//           keyboardType: TextInputType.number,
//           hintText: '500-8000',
//           prefixIcon: const Icon(Icons.radio_button_checked),
//           onChanged: (value) {
//             controller.patrolRadiusController.text = value;
//             controller.patrolRadiusError.value = '';
//             controller.update(['patrol_summary']);
//           },
//         ),
        
//         // Display error for radius
//         Obx(
//           () =>
//               controller.patrolRadiusError.value.isNotEmpty
//                   ? Padding(
//                     padding: const EdgeInsets.only(top: 8.0, bottom: 4.0),
//                     child: Text(
//                       controller.patrolRadiusError.value,
//                       style: TextStyle(color: Colors.red[700], fontSize: 12),
//                     ),
//                   )
//                   : const SizedBox.shrink(),
//         ),

//         // Show recommended range based on type
//         GetBuilder<OfficerInfoController>(
//           id: 'patrol_radius_field',
//           builder: (controller) {
//             final patrolType =
//                 controller.patrolTypeController.text.toLowerCase();
//             if (patrolType.isEmpty) return const SizedBox.shrink();

//             final String rangeText = _getRecommendedRangeText(patrolType);

//             return Padding(
//               padding: const EdgeInsets.only(left: 8.0, bottom: 16.0),
//               child: Text(
//                 'Recommended range: $rangeText',
//                 style: TextStyle(
//                   fontSize: 12,
//                   color: isDark ? Colors.grey[400] : Colors.grey[600],
//                   fontStyle: FontStyle.italic,
//                 ),
//               ),
//             );
//           },
//         ),
//       ],
//     );
//   }

//   // Get recommended range text based on patrol type
//   String _getRecommendedRangeText(String patrolType) {
//     switch (patrolType) {
//       case 'car':
//         return '5000-8000m';
//       case 'motorcycle':
//         return '3000-5000m';
//       case 'foot':
//         return '500-1500m';
//       case 'drone':
//         return '2000-4000m';
//       case 'mixed':
//         return '2000-6000m';
//       default:
//         return '';
//     }
//   }

//   // Validate radius against recommended range
//   String? _validateRadiusRange(String patrolType, double radius) {
//     switch (patrolType) {
//       case 'car':
//         if (radius < 5000) {
//           return 'Car patrols should have at least 5000m radius';
//         } else if (radius > 8000) {
//           return 'Car patrol radius should not exceed 8000m';
//         }
//         break;
//       case 'motorcycle':
//         if (radius < 3000) {
//           return 'Motorcycle patrols should have at least 3000m radius';
//         } else if (radius > 5000) {
//           return 'Motorcycle patrol radius should not exceed 5000m';
//         }
//         break;
//       case 'foot':
//         if (radius < 500) {
//           return 'Foot patrols should have at least 500m radius';
//         } else if (radius > 1500) {
//           return 'Foot patrol radius should not exceed 1500m';
//         }
//         break;
//       case 'drone':
//         if (radius < 2000) {
//           return 'Drone patrols should have at least 2000m radius';
//         } else if (radius > 4000) {
//           return 'Drone patrol radius should not exceed 4000m';
//         }
//         break;
//       case 'mixed':
//         if (radius < 2000) {
//           return 'Mixed patrols should have at least 2000m radius';
//         } else if (radius > 6000) {
//           return 'Mixed patrol radius should not exceed 6000m';
//         }
//         break;
//     }
//     return null;
//   }

//   // Build summary of the patrol unit being created
//   Widget _buildPatrolUnitSummary(OfficerInfoController controller) {
//     final isDark = THelperFunctions.isDarkMode(Get.context!);
//     final theme = Theme.of(Get.context!);

//     return GetBuilder<OfficerInfoController>(
//       id: 'patrol_summary',
//       builder: (controller) {
//         final name = controller.patrolNameController.text;
//         final type = controller.patrolTypeController.text;
//         final radius = controller.patrolRadiusController.text;
//         final memberCount = controller.memberCountController.text;
//         final category = controller.categoryController.text;
//         final status = controller.patrolStatusController.text;

//         if (name.isEmpty ||
//             type.isEmpty ||
//             radius.isEmpty ||
//             memberCount.isEmpty) {
//           return const SizedBox.shrink();
//         }

//         // Generate a preview ID based on the input
//         final String typeCode = type.isNotEmpty ? type[0].toUpperCase() : '';
//         final String unitCode =
//             controller.unitIdController.text.isNotEmpty
//                 ? controller.unitIdController.text.substring(
//                   controller.unitIdController.text.length - 2,
//                 )
//                 : 'XX';

//         final int rawSequence = DateTime.now().millisecondsSinceEpoch % 100000;
//         final String sequence = rawSequence
//             .toString()
//             .padLeft(2, '0')
//             .substring(0, rawSequence.toString().length.clamp(2, 5));

//         final previewId = 'PU-$typeCode$unitCode$sequence';

//         return Container(
//           padding: const EdgeInsets.all(16),
//           decoration: BoxDecoration(
//             color:
//                 isDark
//                     ? Colors.blueGrey[800]!.withOpacity(0.3)
//                     : Colors.blueGrey[50]!.withOpacity(0.5),
//             borderRadius: BorderRadius.circular(12),
//             border: Border.all(
//               color: isDark ? Colors.blueGrey[700]! : Colors.blueGrey[200]!,
//             ),
//           ),
//           child: Column(
//             crossAxisAlignment: CrossAxisAlignment.start,
//             children: [
//               Text(
//                 'Patrol Unit Preview',
//                 style: theme.textTheme.titleMedium!.copyWith(
//                   fontWeight: FontWeight.bold,
//                 ),
//               ),
//               const SizedBox(height: 12),

//               _buildSummaryRow('ID', previewId),
//               _buildSummaryRow('Name', name),
//               _buildSummaryRow(
//                 'Type',
//                 type.isNotEmpty
//                     ? type[0].toUpperCase() + type.substring(1)
//                     : '',
//               ),
//               _buildSummaryRow(
//                 'Status',
//                 status.isNotEmpty
//                     ? status[0].toUpperCase() + status.substring(1)
//                     : '',
//               ),
//               _buildSummaryRow('Radius', '$radius meters'),
//               _buildSummaryRow('Members', memberCount),
//               _buildSummaryRow(
//                 'Category',
//                 category.isNotEmpty
//                     ? category[0].toUpperCase() + category.substring(1)
//                     : '',
//               ),
//               _buildSummaryRow('Unit', controller.selectedUnitName.value),
//             ],
//           ),
//         );
//       },
//     );
//   }

//   // Helper to build summary row
//   Widget _buildSummaryRow(String label, String value) {
//     if (value.isEmpty) return const SizedBox.shrink();

//     return Padding(
//       padding: const EdgeInsets.only(bottom: 8.0),
//       child: Row(
//         crossAxisAlignment: CrossAxisAlignment.start,
//         children: [
//           SizedBox(
//             width: 80,
//             child: Text(
//               '$label:',
//               style: const TextStyle(fontWeight: FontWeight.w500, fontSize: 14),
//             ),
//           ),
//           Expanded(child: Text(value, style: const TextStyle(fontSize: 14))),
//         ],
//       ),
//     );
//   }

//   // Helper method to build a selection mode tab
//   Widget _buildModeTab(
//     PatrolUnitController controller,
//     PatrolSelectionMode mode,
//     String label,
//     IconData icon,
//   ) {
//     final bool isSelected = controller.patrolSelectionMode.value == mode;
//     final isDark = THelperFunctions.isDarkMode(Get.context!);

//     // define the color based on selection and theme
//     final boxDecorationColor =
//         isSelected
//             ? (isDark
//                 ? TColors.accent.withOpacity(0.1)
//                 : TColors.primary.withOpacity(0.1))
//             : Colors.transparent;

//     final color =
//         isSelected
//             ? (isDark ? TColors.accent : TColors.primary)
//             : isDark
//             ? TColors.accent.withOpacity(0.3)
//             : TColors.primary.withOpacity(0.3);

//     return Expanded(
//       child: InkWell(
//         onTap: () => controller.setPatrolSelectionMode(mode),
//         child: Container(
//           padding: const EdgeInsets.symmetric(vertical: 12),
//           decoration: BoxDecoration(
//             color: boxDecorationColor,
//             borderRadius: BorderRadius.circular(8),
//             border: Border.all(color: color),
//           ),
//           child: Column(
//             children: [
//               Icon(icon, color: color),
//               const SizedBox(height: 4),
//               Text(label, style: TextStyle(color: color)),
//             ],
//           ),
//         ),
//       ),
//     );
//   }
// }
