import 'dart:convert';
import 'dart:math';

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:rasadyar_core/core.dart';
import 'package:rasadyar_livestock/presentation/page/auth/logic.dart';

import 'logic.dart';

class CaptchaWidget extends GetView<CaptchaWidgetLogic> {
  const CaptchaWidget({super.key});

  @override
  Widget build(BuildContext context) {
    return Row(
      crossAxisAlignment: CrossAxisAlignment.start,
      children: [
        GestureDetector(
          onTap: controller.getCaptcha,
          child: Container(
            width: 135,
            height: 50,
            clipBehavior: Clip.antiAliasWithSaveLayer,
            decoration: BoxDecoration(
              color: AppColor.whiteNormalHover,
              border: Border.all(color: Colors.grey.shade300),
              borderRadius: BorderRadius.circular(8),
            ),
            child: controller.obx(
              (state) => Image.memory(base64Decode(state?.captchaImage ?? ''), fit: BoxFit.cover),
              onLoading: const Center(
                child: CupertinoActivityIndicator(color: AppColor.blueNormal),
              ),
              onError: (error) {
                return Center(
                  child: Text('خطا ', style: AppFonts.yekan13.copyWith(color: Colors.red)),
                );
              },
            ),
          ),
        ),

        const SizedBox(width: 8),
        Expanded(
          child: Form(
            key: controller.formKey,
            autovalidateMode: AutovalidateMode.disabled,
            child: RTextField(
              label: 'کد امنیتی',
              controller: controller.textController,
              focusedBorder: OutlineInputBorder(
                borderRadius: BorderRadius.circular(8),
                borderSide: BorderSide(color: AppColor.textColor, width: 1),
              ),
              keyboardType: TextInputType.numberWithOptions(decimal: false, signed: false),
              maxLines: 1,
              maxLength: 6,
              suffixIcon: (controller.textController.text.trim().isNotEmpty ?? false)
                  ? clearButton(() => controller.textController.clear())
                  : null,

              validator: (value) {
                if (value == null || value.isEmpty) {
                  return 'کد امنیتی را وارد کنید';
                }
                return null;
              },
              onChanged: (pass) {
                if (pass.length == 6) {
                  if (controller.formKey.currentState?.validate() ?? false) {
                    Get.find<AuthLogic>().isDisabled.value = false;
                  }
                }
              },
              style: AppFonts.yekan13,
            ),
          ),
        ),
      ],
    );
  }
}

class _CaptchaLinePainter extends CustomPainter {
  @override
  void paint(Canvas canvas, Size size) {
    final random = Random();
    final paint1 = Paint()
      ..color = Colors.deepOrange
      ..strokeWidth = 2;
    final paint2 = Paint()
      ..color = Colors.blue
      ..strokeWidth = 2;

    // First line: top-left to bottom-right
    canvas.drawLine(Offset(0, 0), Offset(size.width, size.height), paint1);

    // Second line: bottom-left to top-right
    canvas.drawLine(Offset(0, size.height), Offset(size.width, 0), paint2);
  }

  @override
  bool shouldRepaint(covariant CustomPainter oldDelegate) => false;
}
