211 lines
8.1 KiB
Dart
211 lines
8.1 KiB
Dart
import 'package:sefer_driver/constant/box_name.dart';
|
||
import 'package:sefer_driver/constant/style.dart';
|
||
import 'package:sefer_driver/main.dart';
|
||
import 'package:sefer_driver/views/widgets/my_scafold.dart';
|
||
import 'package:flutter/material.dart';
|
||
import 'package:get/get.dart';
|
||
|
||
import '../../../constant/colors.dart';
|
||
import '../../../constant/links.dart';
|
||
import '../../../controller/functions/gemeni.dart';
|
||
import '../../../controller/functions/tts.dart';
|
||
import '../../widgets/elevated_btn.dart';
|
||
|
||
class CriminalDocumemtPage extends StatelessWidget {
|
||
const CriminalDocumemtPage({super.key});
|
||
|
||
@override
|
||
Widget build(BuildContext context) {
|
||
Get.put(AI());
|
||
return MyScafolld(
|
||
title: "Criminal Document".tr,
|
||
isleading: false,
|
||
body: [
|
||
GetBuilder<AI>(builder: (controller) {
|
||
return Column(
|
||
children: [
|
||
Container(
|
||
decoration: AppStyle.boxDecoration,
|
||
child: Padding(
|
||
padding: const EdgeInsets.all(8.0),
|
||
child: Text('You have upload Criminal documents'.tr),
|
||
)),
|
||
egyptCriminalRecord(),
|
||
controller.responseCriminalRecordEgypt.isNotEmpty
|
||
? MyElevatedButton(
|
||
title: 'Next'.tr,
|
||
onPressed: () async {
|
||
if (controller
|
||
.responseCriminalRecordEgypt['FullName'] !=
|
||
box.read(BoxName.nameArabic)) //todo get from server
|
||
{
|
||
Get.defaultDialog(
|
||
barrierDismissible: false,
|
||
title: 'Criminal Record Mismatch',
|
||
content: Column(
|
||
mainAxisSize: MainAxisSize.min,
|
||
children: [
|
||
const Icon(Icons.warning,
|
||
size: 48, color: Colors.red),
|
||
const SizedBox(height: 16),
|
||
Text(
|
||
'The full name on your criminal record does not match the one on your driver’s license. Please verify and provide the correct documents.'
|
||
.tr,
|
||
textAlign: TextAlign.center,
|
||
style: AppStyle.title,
|
||
),
|
||
const SizedBox(height: 16),
|
||
IconButton(
|
||
onPressed: () async {
|
||
await Get.find<TextToSpeechController>()
|
||
.speakText(
|
||
'The full name on your criminal record does not match the one on your driver’s license. Please verify and provide the correct documents.'
|
||
.tr,
|
||
);
|
||
},
|
||
icon: const Icon(Icons.volume_up),
|
||
),
|
||
],
|
||
),
|
||
actions: [
|
||
TextButton(
|
||
onPressed: () {
|
||
Get.back();
|
||
},
|
||
child: const Text('OK'),
|
||
),
|
||
],
|
||
);
|
||
} else {
|
||
await controller.addCriminalDocuments();
|
||
}
|
||
})
|
||
: const SizedBox(),
|
||
],
|
||
);
|
||
})
|
||
],
|
||
);
|
||
}
|
||
|
||
GetBuilder<AI> egyptCriminalRecord() {
|
||
return GetBuilder<AI>(
|
||
builder: (ai) {
|
||
if (ai.responseCriminalRecordEgypt.isNotEmpty) {
|
||
return Card(
|
||
elevation: 4.0,
|
||
shape: RoundedRectangleBorder(
|
||
borderRadius: BorderRadius.circular(16.0),
|
||
),
|
||
child: Padding(
|
||
padding: const EdgeInsets.all(16.0),
|
||
child: Column(
|
||
crossAxisAlignment: CrossAxisAlignment.start,
|
||
children: [
|
||
Row(
|
||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||
children: [
|
||
Text('Criminal Record'.tr, style: AppStyle.headTitle2),
|
||
IconButton(
|
||
onPressed: () async {
|
||
await ai.allMethodForAI(
|
||
"""
|
||
Write a JSON object from the following information extracted from the provided Arabic text:
|
||
|
||
{
|
||
"InspectionResult": "",
|
||
"NationalID": "",
|
||
"FullName": "",
|
||
"IssueDate": "" // Format: YYYY-MM-DD
|
||
}
|
||
|
||
Important notes:
|
||
1. For the IssueDate, ensure the date is in YYYY-MM-DD format using Latin numerals (0-9).
|
||
2. Add appropriate spaces in all text fields to ensure readability.
|
||
3. If any information is missing, leave the corresponding field as an empty string.
|
||
4. Ensure all text is properly formatted and spaces are used correctly.
|
||
5. Convert any Arabic numerals to Latin numerals (0-9) where applicable.
|
||
|
||
Please fill in the JSON object with the extracted information, following these guidelines.
|
||
""",
|
||
AppLink.uploadEgypt,
|
||
'criminalRecord',
|
||
);
|
||
},
|
||
icon: const Icon(Icons.refresh),
|
||
),
|
||
],
|
||
),
|
||
const SizedBox(height: 8.0),
|
||
const Divider(color: AppColor.accentColor),
|
||
const SizedBox(height: 8.0),
|
||
Text(
|
||
'${'InspectionResult'.tr}: ${ai.responseCriminalRecordEgypt['InspectionResult']}'),
|
||
const SizedBox(height: 8.0),
|
||
Text(
|
||
'${'FullName'.tr}: ${ai.responseCriminalRecordEgypt['FullName']}',
|
||
style: AppStyle.title.copyWith(
|
||
color: ai.responseCriminalRecordEgypt['FullName'] ==
|
||
ai.responseIdEgyptDriverLicense['name_arabic']
|
||
? AppColor.greenColor
|
||
: AppColor.redColor),
|
||
),
|
||
const SizedBox(height: 8.0),
|
||
Text(
|
||
'${'NationalID'.tr}: ${ai.responseCriminalRecordEgypt['NationalID']}'),
|
||
const SizedBox(height: 8.0),
|
||
Text(
|
||
'${'IssueDate'.tr}: ${ai.responseCriminalRecordEgypt['IssueDate']}'),
|
||
],
|
||
),
|
||
),
|
||
);
|
||
}
|
||
return Card(
|
||
child: InkWell(
|
||
onTap: () async {
|
||
await ai.allMethodForAI(
|
||
"""
|
||
Write a JSON object from the following information extracted from the provided Arabic text:
|
||
|
||
{
|
||
"InspectionResult": "",
|
||
"NationalID": "",
|
||
"FullName": "",
|
||
"IssueDate": "" // Format: YYYY-MM-DD
|
||
}
|
||
|
||
Important notes:
|
||
1. For the IssueDate, ensure the date is in YYYY-MM-DD format using Latin numerals (0-9).
|
||
2. Add appropriate spaces in all text fields to ensure readability.
|
||
3. If any information is missing, leave the corresponding field as an empty string.
|
||
4. Ensure all text is properly formatted and spaces are used correctly.
|
||
5. Convert any Arabic numerals to Latin numerals (0-9) where applicable.
|
||
|
||
Please fill in the JSON object with the extracted information, following these guidelines.
|
||
""",
|
||
AppLink.uploadEgypt,
|
||
'criminalRecord',
|
||
);
|
||
},
|
||
child: Column(
|
||
children: [
|
||
Image.asset(
|
||
'assets/images/6.png',
|
||
height: Get.height * .25,
|
||
width: double.maxFinite,
|
||
fit: BoxFit.fitHeight,
|
||
),
|
||
Text(
|
||
'Capture an Image of Your Criminal Record'.tr,
|
||
style: AppStyle.title,
|
||
),
|
||
],
|
||
),
|
||
),
|
||
);
|
||
},
|
||
);
|
||
}
|
||
}
|