import 'package:flutter/material.dart';
import 'package:taxglide/consts/app_asstes.dart';
import 'package:taxglide/consts/app_colors.dart';

class ValidationPopup {
  // Show SnackBar
  void _showSnackBar(BuildContext context, String msg, {bool isError = false}) {
    ScaffoldMessenger.of(context).showSnackBar(
      SnackBar(
        duration: const Duration(seconds: 2),
        backgroundColor: isError
            ? Colors.red
            : AppColors.commanbutton, // 🔴 Error red
        behavior: SnackBarBehavior.floating,
        shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)),
        elevation: 6,
        margin: const EdgeInsets.symmetric(horizontal: 70, vertical: 25),
        padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 12),
        content: SizedBox(
          width: 200,
          child: Row(
            mainAxisSize: MainAxisSize.min,
            children: [
              Image.asset(AppAssets.taxgildelogoauth, height: 18, width: 18),
              const SizedBox(width: 8),
              Expanded(
                child: Text(
                  msg,
                  style: const TextStyle(color: Colors.white, fontSize: 12),
                  overflow: TextOverflow.ellipsis,
                  maxLines: 2,
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }

  // Validate Mobile Number
  bool validateMobileNumber(BuildContext context, String mobileNumber) {
    // Check if empty
    if (mobileNumber.isEmpty) {
      _showSnackBar(context, "Please enter mobile number", isError: true);
      return false;
    }

    // Remove spaces and special characters
    String cleanNumber = mobileNumber.replaceAll(RegExp(r'[^\d]'), '');

    // Check if contains only digits
    if (!RegExp(r'^[0-9]+$').hasMatch(cleanNumber)) {
      _showSnackBar(
        context,
        "Mobile number must contain only digits",
        isError: true,
      );
      return false;
    }

    // Check length (Indian mobile numbers are 10 digits)
    if (cleanNumber.length != 10) {
      _showSnackBar(context, "Mobile number must be 10 digits", isError: true);
      return false;
    }

    // Check if starts with valid digit (6-9 for Indian numbers)
    if (!RegExp(r'^[6-9]').hasMatch(cleanNumber)) {
      _showSnackBar(
        context,
        "Mobile number must start with 6, 7, 8, or 9",
        isError: true,
      );
      return false;
    }

    // All validations passed
    return true;
  }

  // Add this method to your ValidationPopup class
  bool validateEmail(BuildContext context, String email) {
    // Email regex pattern
    final emailRegex = RegExp(
      r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$',
    );

    if (!emailRegex.hasMatch(email)) {
      showErrorMessage(context, "Please enter a valid email address");
      return false;
    }
    return true;
  }

  // Show success message
  void showSuccessMessage(BuildContext context, String msg) {
    _showSnackBar(context, msg, isError: false);
  }

  // Show error message
  void showErrorMessage(BuildContext context, String msg) {
    _showSnackBar(context, msg, isError: true);
  }
}
