import 'package:sefer_driver/controller/functions/crud.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:sefer_driver/constant/colors.dart'; import 'package:sefer_driver/constant/style.dart'; import 'package:sefer_driver/constant/table_names.dart'; import 'package:sefer_driver/controller/auth/captin/register_captin_controller.dart'; import 'package:sefer_driver/controller/functions/ocr_controller.dart'; import 'package:sefer_driver/main.dart'; import 'package:sefer_driver/views/widgets/elevated_btn.dart'; import 'package:sefer_driver/views/widgets/my_scafold.dart'; import 'package:sefer_driver/views/widgets/mycircular.dart'; import '../../../constant/links.dart'; import '../../../controller/functions/encrypt_decrypt.dart'; import '../../../controller/functions/gemeni.dart'; class AiPage extends StatelessWidget { ScanDocumentsByApi scanDocumentsByApi = Get.put(ScanDocumentsByApi()); RegisterCaptainController registerCaptainController = Get.put(RegisterCaptainController()); @override Widget build(BuildContext context) { Get.put(AI()); String text = ''; return MyScafolld( title: 'Documents check'.tr, body: [ GetBuilder(builder: (controller) { return controller.isLoading ? const MyCircularProgressIndicator() : Padding( padding: const EdgeInsets.all(8.0), child: ListView( children: [ // egyptDriverLicense(), // egyptCarLicenceFront(), // egyptCarLicenceBack(), // egyptDriverIDFront(), // egyptDriverIDBack(), ], ), ); }), ], isleading: true); } GetBuilder egyptDriverLicenseWidget() { return GetBuilder( builder: (contentController) => contentController.responseMap.isNotEmpty ? contentController.isloading ? Column( children: [ const MyCircularProgressIndicator(), Text( 'We are process picture please wait '.tr, style: AppStyle.title, ) ], ) : SizedBox( height: Get.height * .7, child: ListView( children: [ Container( decoration: AppStyle.boxDecoration1, // height: Get.height * .4, child: Padding( padding: const EdgeInsets.all(5), child: contentController.responseMap.isEmpty ? Center( child: Text( 'Capture an Image of Your Driver’s License' .tr, style: AppStyle.title, ), ) : Column( mainAxisAlignment: MainAxisAlignment.spaceBetween, crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Column( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( children: [ Text( '${'Name'.tr} :${EncryptionHelper.instance.decryptData(contentController.responseMap['first_name'])}', style: AppStyle.subtitle, ), Text( ' ${EncryptionHelper.instance.decryptData(contentController.responseMap['last_name'])}', style: AppStyle.subtitle, ), ], ), Text( '${'Name in arabic'.tr}: ${EncryptionHelper.instance.decryptData(contentController.responseMap['name_in_arabic'])}', style: AppStyle.title, ), Text( '${'Drivers License Class'.tr}: ${contentController.responseMap['class']}', style: AppStyle.title, ), ], ), ], ), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( '${'National Number'.tr}: ${EncryptionHelper.instance.decryptData(contentController.responseMap['id'])}', style: AppStyle.title, ), // Image.memory( // scanDocumentsByApi // .imagePortrait, // width: 60, // ), ]), Text( '${'Address'.tr}: ${EncryptionHelper.instance.decryptData(contentController.responseMap['address'])}', style: AppStyle.title, ), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( '${'Date of Birth'.tr}: ${contentController.responseMap['dob']}', style: AppStyle.title, ), Text( '${'Age'.tr} : ${contentController.responseMap['age_in_years']}', style: AppStyle.title, ), ], ), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( '${'Expiry Date'.tr}: ${contentController.responseMap['expiration_date']}', style: DateTime.parse( contentController .responseMap[ 'expiration_date'] .toString()) .isBefore( contentController.now) ? AppStyle.title.copyWith( color: AppColor.redColor) : AppStyle.title.copyWith( color: AppColor.greenColor), ), ], ), ], ), ), ), const SizedBox( height: 10, ), DateTime.parse(contentController .responseMap['expiration_date'] .toString()) .isBefore(contentController.now) ? Text( 'You can\'t continue with us .\nYou should renew Driver license' .tr, style: AppStyle.title .copyWith(color: AppColor.redColor), ) : MyElevatedButton( kolor: AppColor.greenColor, title: 'Lets check Car license '.tr, onPressed: () => contentController .getCarLicenseJordanContent()), const SizedBox( height: 10, ), contentController.responseCarLicenseMapJordan.isNotEmpty ? Container( decoration: AppStyle.boxDecoration, // height: Get.height * .3, width: Get.width * .9, child: Column( children: [ Text( '${'Name'.tr} ${contentController.responseCarLicenseMapJordan['name']}', style: AppStyle.title, ), Text( '${'Address'.tr} ${contentController.responseCarLicenseMapJordan['address']}', style: AppStyle.title, ), Text( '${'Car Kind'.tr} ${contentController.responseCarLicenseMapJordan['car_kind']}', style: AppStyle.title, ), Text( '${'Color'.tr} ${contentController.responseCarLicenseMapJordan['car_color']}', style: AppStyle.title, ), Text( '${'Year'.tr} ${contentController.responseCarLicenseMapJordan['car_year']}', style: AppStyle.title, ), Text( '${'Car Plate'.tr} ${contentController.responseCarLicenseMapJordan['car_plate']}', style: AppStyle.title, ), Text( '${'Car Expire'.tr} ${contentController.responseCarLicenseMapJordan['expire_date_of_license']}', style: contentController .responseCarLicenseMapJordan .isNotEmpty ? DateTime.parse(contentController .responseCarLicenseMapJordan[ 'expire_date_of_license'] .toString()) .isBefore(contentController.now) ? AppStyle.title.copyWith( color: AppColor.redColor) : AppStyle.title.copyWith( color: AppColor.greenColor) : null, ), ], ), ) : const SizedBox(), const SizedBox( height: 10, ), // DateTime.parse(contentController // .responseCarLicenseMap[ // 'expire_date_of_license'] // .toString()) // .isBefore(contentController.now) // ? Text( // 'You can\'t continue with us .\nYou should renew Car license' // .tr, // style: AppStyle.title.copyWith( // color: AppColor.redColor), // ) // : MyElevatedButton( kolor: AppColor.greenColor, title: 'Lets check License Back Face'.tr, onPressed: () => contentController .generateBackCarLicenseJordanContent()), const SizedBox( height: 10, ), contentController.responseBackCarLicenseMap.isNotEmpty ? Container( decoration: AppStyle.boxDecoration, // height: 300, child: Column(children: [ Text( 'VIN ${contentController.responseBackCarLicenseMap['vin']}', style: AppStyle.title, ), Text( 'Fuel Type ${contentController.responseBackCarLicenseMap['fuelType']}', style: AppStyle.title, ), Text( 'Insurance Company ${contentController.responseBackCarLicenseMap['insuranceCompany']}', style: AppStyle.title, ), Text( 'Policy Number ${contentController.responseBackCarLicenseMap['policyNumber']}', style: AppStyle.title, ), Text( 'Insurance Type ${contentController.responseBackCarLicenseMap['insuranceType']}', style: AppStyle.title, ) ])) : const SizedBox() ], ), ) : 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.boxDecoration1, height: Get.height * .35, child: Padding( padding: const EdgeInsets.all(5), child: Center( child: InkWell( onTap: () async { await CRUD().allMethodForAI( 'name,address,dob,nationalNo,', AppLink.uploadEgypt, 'idFront'); //egypt }, child: Text( 'Take Picture Of ID Card'.tr, style: AppStyle.title, ), ), )), ), ], ), ), ); } GetBuilder jordanDriverLicenseWidget() { return GetBuilder( builder: (contentController) => contentController.responseMap.isNotEmpty ? Positioned( top: Get.height * .09, left: Get.width * .051, right: Get.width * .051, child: contentController.isloading ? Column( children: [ const MyCircularProgressIndicator(), Text( 'We are process picture please wait '.tr, style: AppStyle.title, ) ], ) : SizedBox( height: Get.height * .7, child: ListView( children: [ Container( decoration: AppStyle.boxDecoration, // height: Get.height * .4, child: Padding( padding: const EdgeInsets.all(5), child: contentController.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: [ Column( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( children: [ Text( '${'Name'.tr} :${contentController.responseMap['first_name']}', style: AppStyle.subtitle, ), Text( ' ${contentController.responseMap['last_name']}', style: AppStyle.subtitle, ), ], ), Text( '${'Name in arabic'.tr}: ${contentController.responseMap['name_in_arabic']}', style: AppStyle.title, ), Text( '${'Drivers License Class'.tr}: ${contentController.responseMap['class']}', style: AppStyle.title, ), ], ), ], ), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( '${'National Number'.tr}: ${contentController.responseMap['id']}', style: AppStyle.title, ), // Image.memory( // scanDocumentsByApi // .imagePortrait, // width: 60, // ), ]), Text( '${'Address'.tr}: ${contentController.responseMap['address']}', style: AppStyle.title, ), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( '${'Date of Birth'.tr}: ${contentController.responseMap['dob']}', style: AppStyle.title, ), Text( '${'Age'.tr} : ${contentController.responseMap['age_in_years']}', style: AppStyle.title, ), ], ), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( '${'Expiry Date'.tr}: ${contentController.responseMap['expiration_date']}', style: DateTime.parse( contentController .responseMap[ 'expiration_date'] .toString()) .isBefore( contentController.now) ? AppStyle.title.copyWith( color: AppColor.redColor) : AppStyle.title.copyWith( color: AppColor.greenColor), ), ], ), ], ), ), ), const SizedBox( height: 10, ), DateTime.parse(contentController .responseMap['expiration_date'] .toString()) .isBefore(contentController.now) ? Text( 'You can\'t continue with us .\nYou should renew Driver license' .tr, style: AppStyle.title .copyWith(color: AppColor.redColor), ) : MyElevatedButton( kolor: AppColor.greenColor, title: 'Lets check Car license '.tr, onPressed: () => contentController .getTextFromCard( '''Extract the following information from the front face of the car license card in Jordan: * name * Address * Vehicle type * car_kind * car_color * Vehicle category * car_year * car_plate * Registration type * Usage type * expire_date_of_license Output the extracted information in the following JSON formate and make date format like YYYY-MM-DD''')), const SizedBox( height: 10, ), contentController .responseCarLicenseMapJordan.isNotEmpty ? Container( decoration: AppStyle.boxDecoration, // height: Get.height * .3, width: Get.width * .9, child: Column( children: [ Text( '${'Name'.tr} ${contentController.responseCarLicenseMapJordan['name']}', style: AppStyle.title, ), Text( '${'Address'.tr} ${contentController.responseCarLicenseMapJordan['address']}', style: AppStyle.title, ), Text( '${'Car Kind'.tr} ${contentController.responseCarLicenseMapJordan['car_kind']}', style: AppStyle.title, ), Text( '${'Color'.tr} ${contentController.responseCarLicenseMapJordan['car_color']}', style: AppStyle.title, ), Text( '${'Year'.tr} ${contentController.responseCarLicenseMapJordan['car_year']}', style: AppStyle.title, ), Text( '${'Car Plate'.tr} ${contentController.responseCarLicenseMapJordan['car_plate']}', style: AppStyle.title, ), Text( '${'ُExpire Date'.tr} ${contentController.responseCarLicenseMapJordan['expire_date_of_license']}', style: contentController .responseCarLicenseMapJordan .isNotEmpty ? DateTime.parse(contentController .responseCarLicenseMapJordan[ 'expire_date_of_license'] .toString()) .isBefore( contentController.now) ? AppStyle.title.copyWith( color: AppColor.redColor) : AppStyle.title.copyWith( color: AppColor.greenColor) : null, ), ], ), ) : const SizedBox(), const SizedBox( height: 10, ), //todo temporary // DateTime.parse(contentController // .responseCarLicenseMap[ // 'expire_date_of_license'] // .toString()) // .isBefore(contentController.now) // ? Text( // 'You can\'t continue with us .\nYou should renew Car license' // .tr, // style: AppStyle.title.copyWith( // color: AppColor.redColor), // ) // : MyElevatedButton( kolor: AppColor.greenColor, title: 'Lets check License Back Face'.tr, onPressed: () => contentController.getTextFromCard( 'write json output from extracting car license back face for these key ,vin,fuelType,passengerType,curbWeight,insuranceCompany,policyNumber,notes,insuranceType and output it json .dont add data else this image', )), const SizedBox( height: 10, ), contentController.responseBackCarLicenseMap.isNotEmpty ? Container( decoration: AppStyle.boxDecoration, // height: 300, child: Column(children: [ Text( 'VIN ${contentController.responseBackCarLicenseMap['vin']}', style: AppStyle.title, ), Text( 'Fuel Type ${contentController.responseBackCarLicenseMap['fuelType']}', style: AppStyle.title, ), Text( 'Insurance Company ${contentController.responseBackCarLicenseMap['insuranceCompany']}', style: AppStyle.title, ), Text( 'Policy Number ${contentController.responseBackCarLicenseMap['policyNumber']}', style: AppStyle.title, ), Text( 'Insurance Type ${contentController.responseBackCarLicenseMap['insuranceType']}', style: AppStyle.title, ) ])) : const SizedBox() // MyElevatedButton( // title: 'Detect Your Face '.tr, // onPressed: () => scanDocumentsByApi // .checkMatchFaceApi(), // ), // scanDocumentsByApi.res.isEmpty // ? const SizedBox() // : scanDocumentsByApi.res['data'] // ['result'] // .toString() == // 'Same' // ? MyElevatedButton( // onPressed: () async { // await registerCaptainController // .register(); // await registerCaptainController // .addLisence(); // // await scanDocumentsByApi // // .uploadImagePortrate(); // }, // 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) // 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, ), )), ), ], ), ), ); } GetBuilder usaDriverLicensWidget() { return GetBuilder( 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: [ Column( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( '${'Name :'.tr}${scanDocumentsByApi.name}', style: AppStyle.subtitle, ), Row( mainAxisAlignment: MainAxisAlignment .spaceBetween, children: [ Text( '${'Drivers License Class: '.tr}${scanDocumentsByApi.licenseClass}', style: AppStyle.title, ), Image.memory( scanDocumentsByApi .imageSignature, width: 100, height: 30, ), ], ), ], ), ], ), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( '${'Document Number: '.tr}${scanDocumentsByApi.documentNo}', style: AppStyle.title, ), Image.memory( scanDocumentsByApi.imagePortrait, width: 60, ), ]), Text( '${'Address: '.tr}${scanDocumentsByApi.address}', style: AppStyle.title, ), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( '${'Height: '.tr}${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: '.tr}${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: '.tr}${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: () async { await registerCaptainController .register(); await registerCaptainController .addLisence(); // await scanDocumentsByApi // .uploadImagePortrate(); }, 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); }, ) ], ), ) : 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, ), )), ), ], ), ), ); } } class EgyptDocuments extends StatelessWidget { const EgyptDocuments({ super.key, required this.contentController, }); final AI contentController; @override Widget build(BuildContext context) { return Positioned( top: 3, left: Get.width * .1, right: Get.width * .1, child: MyElevatedButton( title: 'Take Picture Of ID Card'.tr, //egypt onPressed: () async { await CRUD().allMethodForAI('name,address,dob,nationalNo,', AppLink.uploadEgypt, 'idFront'); //egypt }, )); } } class JordanDocumants extends StatelessWidget { const JordanDocumants({ super.key, required this.contentController, }); final AI contentController; @override Widget build(BuildContext context) { return Positioned( top: 3, left: Get.width * .1, right: Get.width * .1, child: MyElevatedButton( title: 'Take Picture Of Driver License Card'.tr, onPressed: () { contentController.getDriverLicenseJordanContent(); }, )); } } class UsaAiDocuments extends StatelessWidget { const UsaAiDocuments({ super.key, required this.scanDocumentsByApi, }); final ScanDocumentsByApi scanDocumentsByApi; @override Widget build(BuildContext context) { return Positioned( top: 3, left: Get.width * .2, right: Get.width * .2, child: MyElevatedButton( title: 'Take Picture Of ID Card'.tr, onPressed: () { scanDocumentsByApi.scanDocumentsByApi(); }, )); } }