import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:siro_driver/views/widgets/error_snakbar.dart';
import 'package:siro_driver/views/widgets/my_textField.dart';
import 'package:siro_driver/views/widgets/elevated_btn.dart'; // Checked import
import 'package:flutter_font_icons/flutter_font_icons.dart';

import '../../../../constant/box_name.dart';
import '../../../../constant/colors.dart';
import '../../../../constant/links.dart';
import '../../../../constant/style.dart';
import '../../../../controller/firebase/notification_service.dart';
import '../../../../controller/functions/launch.dart';
import '../../../../controller/home/captin/map_driver_controller.dart';
import '../../../../main.dart';

class SosConnect extends StatelessWidget {
  SosConnect({super.key});

  @override
  Widget build(BuildContext context) {
    return GetBuilder<MapDriverController>(
      id: 'SosConnect', // Keep ID for updates
      builder: (controller) {
        bool showSos = controller.isRideStarted;

        if (!showSos) return const SizedBox();

        return Container(
          padding: const EdgeInsets.all(8),
          decoration: BoxDecoration(
            color: Colors.white.withOpacity(0.95),
            borderRadius: BorderRadius.circular(16),
            boxShadow: [
              BoxShadow(
                color: Colors.black.withOpacity(0.1),
                blurRadius: 10,
                offset: const Offset(0, 4),
              ),
            ],
          ),
          child: _buildModernActionButton(
            icon: MaterialIcons.warning,
            color: Colors.white,
            bgColor: AppColor.redColor,
            tooltip: 'EMERGENCY SOS',
            isPulsing: true,
            onTap: () => _handleSosCall(controller),
          ),
        );
      },
    );
  }

  Widget _buildModernActionButton({
    required IconData icon,
    required Color color,
    required Color bgColor,
    required String tooltip,
    required VoidCallback onTap,
    bool isPulsing = false,
  }) {
    return Material(
      color: Colors.transparent,
      child: InkWell(
        onTap: onTap,
        borderRadius: BorderRadius.circular(12),
        child: Container(
          width: 48,
          height: 48,
          decoration: BoxDecoration(
            color: bgColor,
            borderRadius: BorderRadius.circular(12),
            boxShadow: isPulsing
                ? [
                    BoxShadow(
                      color: bgColor.withOpacity(0.4),
                      blurRadius: 12,
                      spreadRadius: 2,
                    )
                  ]
                : [],
          ),
          child: Icon(icon, color: color, size: 24),
        ),
      ),
    );
  }

  // --- Logic Functions ---
  void _handleSosCall(MapDriverController mapDriverController) {
    if (box.read(BoxName.sosPhoneDriver) == null) {
      Get.defaultDialog(
        title: 'Emergency Contact'.tr,
        content: Column(
          children: [
            Text('Please enter the emergency number.'.tr),
            Form(
              key: mapDriverController.formKey1,
              child: MyTextForm(
                controller: mapDriverController.sosEmergincyNumberCotroller,
                label: 'Phone Number'.tr,
                hint: '0923456789',
                type: TextInputType.phone,
              ),
            ),
          ],
        ),
        confirm: MyElevatedButton(
          title: 'Save & Call'.tr,
          onPressed: () {
            if (mapDriverController.formKey1.currentState!.validate()) {
              box.write(BoxName.sosPhoneDriver,
                  mapDriverController.sosEmergincyNumberCotroller.text);
              Get.back();
              launchCommunication(
                  'phone', box.read(BoxName.sosPhoneDriver), '');
            }
          },
        ),
      );
    } else {
      launchCommunication('phone', box.read(BoxName.sosPhoneDriver), '');
    }
  }
}
