import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:ride/constant/colors.dart';
import 'package:ride/constant/style.dart';
import 'package:ride/constant/table_names.dart';
import 'package:ride/controller/functions/ocr_controller.dart';
import 'package:ride/main.dart';
import 'package:ride/views/auth/captin/car_license_page.dart';
import 'package:ride/views/widgets/elevated_btn.dart';
import 'package:ride/views/widgets/my_scafold.dart';
import 'package:ride/views/widgets/mycircular.dart';

class AiPage extends StatelessWidget {
  ScanDocumentsByApi scanDocumentsByApi = Get.put(ScanDocumentsByApi());

  AiPage({super.key});
  @override
  Widget build(BuildContext context) {
    return MyScafolld(
        title: 'AI Page'.tr,
        body: [
          Positioned(
              top: 3,
              left: Get.width * .2,
              right: Get.width * .2,
              child: MyElevatedButton(
                title: 'Take Picture Of ID Card'.tr,
                onPressed: () {
                  scanDocumentsByApi.scanDocumentsByApi();
                },
              )),
          GetBuilder<ScanDocumentsByApi>(
            builder: (scanDocumentsByApi) => scanDocumentsByApi
                    .responseMap.isNotEmpty
                ? Positioned(
                    top: Get.height * .06,
                    left: Get.width * .051,
                    right: Get.width * .051,
                    child: scanDocumentsByApi.isLoading
                        ? Column(
                            children: [
                              const MyCircularProgressIndicator(),
                              Text(
                                'We are process picture please wait '.tr,
                                style: AppStyle.title,
                              )
                            ],
                          )
                        : Column(
                            children: [
                              Container(
                                decoration: AppStyle.boxDecoration,
                                height: Get.height * .4,
                                child: Padding(
                                  padding: const EdgeInsets.all(5),
                                  child: scanDocumentsByApi.responseMap.isEmpty
                                      ? Center(
                                          child: Text(
                                            'There is no data yet.'.tr,
                                            style: AppStyle.title,
                                          ),
                                        )
                                      : Column(
                                          mainAxisAlignment:
                                              MainAxisAlignment.spaceBetween,
                                          crossAxisAlignment:
                                              CrossAxisAlignment.start,
                                          children: [
                                            Row(
                                              mainAxisAlignment:
                                                  MainAxisAlignment
                                                      .spaceBetween,
                                              children: <Widget>[
                                                Column(
                                                  mainAxisAlignment:
                                                      MainAxisAlignment.start,
                                                  crossAxisAlignment:
                                                      CrossAxisAlignment.start,
                                                  children: [
                                                    Text(
                                                      'Name :${scanDocumentsByApi.name}',
                                                      style: AppStyle.subtitle,
                                                    ),
                                                    Row(
                                                      mainAxisAlignment:
                                                          MainAxisAlignment
                                                              .spaceBetween,
                                                      children: [
                                                        Text(
                                                          'Drivers License Class: ${scanDocumentsByApi.licenseClass}',
                                                          style: AppStyle.title,
                                                        ),
                                                        Image.memory(
                                                          scanDocumentsByApi
                                                              .imageSignature,
                                                          width: 100,
                                                          height: 30,
                                                        ),
                                                      ],
                                                    ),
                                                  ],
                                                ),
                                              ],
                                            ),
                                            Row(
                                                mainAxisAlignment:
                                                    MainAxisAlignment
                                                        .spaceBetween,
                                                children: [
                                                  Text(
                                                    'Document Number: ${scanDocumentsByApi.documentNo}',
                                                    style: AppStyle.title,
                                                  ),
                                                  Image.memory(
                                                    scanDocumentsByApi
                                                        .imagePortrait,
                                                    width: 60,
                                                  ),
                                                ]),
                                            Text(
                                              'Address: ${scanDocumentsByApi.address}',
                                              style: AppStyle.title,
                                            ),
                                            Row(
                                              mainAxisAlignment:
                                                  MainAxisAlignment
                                                      .spaceBetween,
                                              children: [
                                                Text(
                                                  'Height: ${scanDocumentsByApi.height}',
                                                  style: AppStyle.subtitle,
                                                ),
                                                Text(
                                                  'Postal Code: ${scanDocumentsByApi.postalCode}',
                                                  style: AppStyle.subtitle,
                                                ),
                                                Text(
                                                  'Sex: ${scanDocumentsByApi.sex}',
                                                  style: AppStyle.subtitle,
                                                ),
                                              ],
                                            ),
                                            Text(
                                              'Territorial Code: ${scanDocumentsByApi.stateCode}',
                                              style: AppStyle.subtitle,
                                            ),
                                            Row(
                                              mainAxisAlignment:
                                                  MainAxisAlignment
                                                      .spaceBetween,
                                              children: [
                                                Text(
                                                  'Expiry Date: ${scanDocumentsByApi.expireDate}',
                                                  style: DateTime.parse(
                                                              scanDocumentsByApi
                                                                  .responseMap['data']
                                                                      ['ocr'][
                                                                      'dateOfExpiry']
                                                                  .toString())
                                                          .isBefore(
                                                              scanDocumentsByApi
                                                                  .now)
                                                      ? AppStyle.title.copyWith(
                                                          color:
                                                              AppColor.redColor)
                                                      : AppStyle.title.copyWith(
                                                          color: AppColor
                                                              .greenColor),
                                                ),
                                                Text(
                                                  'Date of Birth: ${scanDocumentsByApi.dob}',
                                                  style: AppStyle.title,
                                                ),
                                              ],
                                            ),
                                          ],
                                        ),
                                ),
                              ),
                              DateTime.parse(scanDocumentsByApi
                                          .responseMap['data']['ocr']
                                              ['dateOfExpiry']
                                          .toString())
                                      .isBefore(scanDocumentsByApi.now)
                                  ? Text(
                                      'You can\'t continue with us .\nYou should renew Driver license',
                                      style: AppStyle.title
                                          .copyWith(color: AppColor.redColor),
                                    )
                                  : MyElevatedButton(
                                      title: 'Detect Your Face '.tr,
                                      onPressed: () => scanDocumentsByApi
                                          .checkMatchFaceApi(),
                                    ),
                              scanDocumentsByApi.res.isEmpty
                                  ? const SizedBox()
                                  : scanDocumentsByApi.res['data']['result']
                                              .toString() ==
                                          'Same'
                                      ? MyElevatedButton(
                                          onPressed: () =>
                                              Get.to(() => CarLicensePage()),
                                          title:
                                              'Go to next step\nscan Car License.'
                                                  .tr,
                                          kolor: AppColor.greenColor,
                                        )
                                      : const SizedBox(),
                              MyElevatedButton(
                                title: 'get sql  data',
                                kolor: AppColor.yellowColor,
                                onPressed: () {
                                  // sql.deleteAllData(TableName.faceDetectTimes);
                                  sql
                                      .getAllData(TableName.faceDetectTimes)
                                      .then((value) =>
                                          print(value[0]['faceDetectTimes']));
                                },
                              )
                            ],
                          ),
                  )
                : Positioned(
                    top: Get.height * .06,
                    left: Get.width * .051,
                    right: Get.width * .051,
                    child: scanDocumentsByApi.isLoading
                        ? Column(
                            children: [
                              const MyCircularProgressIndicator(),
                              Text(
                                'We are process picture please wait '.tr,
                                style: AppStyle.title,
                              )
                            ],
                          )
                        : Column(
                            children: [
                              Container(
                                decoration: AppStyle.boxDecoration,
                                height: Get.height * .35,
                                child: Padding(
                                    padding: const EdgeInsets.all(5),
                                    child: Center(
                                      child: Text(
                                        'There is no data yet.'.tr,
                                        style: AppStyle.title,
                                      ),
                                    )),
                              ),
                            ],
                          ),
                  ),
          ),
        ],
        isleading: true);
  }
}
