25-01-21-secure

This commit is contained in:
Hamza Aleghwairyeen
2025-01-21 00:16:51 +02:00
parent a893e49282
commit ea7fc2303a
9 changed files with 144 additions and 141 deletions

View File

@@ -12,6 +12,7 @@ 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 {
@@ -94,11 +95,11 @@ class AiPage extends StatelessWidget {
Row(
children: [
Text(
'${'Name'.tr} :${contentController.responseMap['first_name']}',
'${'Name'.tr} :${encryptionHelper.decryptData(contentController.responseMap['first_name'])}',
style: AppStyle.subtitle,
),
Text(
' ${contentController.responseMap['last_name']}',
' ${encryptionHelper.decryptData(contentController.responseMap['last_name'])}',
style: AppStyle.subtitle,
),
],

View File

@@ -322,7 +322,7 @@ class EgyptCardAI extends StatelessWidget {
IconButton(
onPressed: () async {
await ai.allMethodForAI(
encryptionHelper.encryptData(
encryptionHelper.decryptData(
ai.prompts[0]['prompt'].toString()),
AppLink.uploadEgypt,
'driver_license'); //egypt
@@ -335,30 +335,32 @@ class EgyptCardAI extends StatelessWidget {
const Divider(color: AppColor.accentColor),
const SizedBox(height: 8.0),
Text(
'${'License Type'.tr}: ${ai.responseIdEgyptDriverLicense['license_type']}',
'${'License Type'.tr}: ${encryptionHelper.decryptData(ai.responseIdEgyptDriverLicense['license_type'])}',
style: AppStyle.title,
),
const SizedBox(height: 8.0),
Text(
'${'National Number'.tr}: ${ai.responseIdEgyptDriverLicense['national_number']}',
'${'National Number'.tr}: ${encryptionHelper.decryptData(ai.responseIdEgyptDriverLicense['national_number'])}',
style: AppStyle.title.copyWith(
color: ai.responseIdEgyptDriverLicense[
'national_number'] ==
ai.responseIdEgyptBack['nationalID']
color: encryptionHelper.decryptData(
ai.responseIdEgyptDriverLicense[
'national_number']) ==
encryptionHelper.decryptData(
ai.responseIdEgyptBack['nationalID'])
? AppColor.greenColor
: AppColor.redColor),
),
const SizedBox(height: 8.0),
Text(
'${'Name (Arabic)'.tr}: ${ai.responseIdEgyptDriverLicense['name_arabic']}',
'${'Name (Arabic)'.tr}: ${encryptionHelper.decryptData(ai.responseIdEgyptDriverLicense['name_arabic'])}',
),
const SizedBox(height: 8.0),
Text(
'${'Name (English)'.tr}: ${ai.responseIdEgyptDriverLicense['name_english']}',
'${'Name (English)'.tr}: ${encryptionHelper.decryptData(ai.responseIdEgyptDriverLicense['name_english'])}',
),
const SizedBox(height: 8.0),
Text(
'${'Address'.tr}: ${ai.responseIdEgyptDriverLicense['address']}',
'${'Address'.tr}: ${encryptionHelper.decryptData(ai.responseIdEgyptDriverLicense['address'])}',
),
const SizedBox(height: 8.0),
Text(
@@ -386,7 +388,7 @@ class EgyptCardAI extends StatelessWidget {
onTap: () async {
await ai.allMethodForAI(
encryptionHelper
.encryptData(ai.prompts[0]['prompt'].toString()),
.decryptData(ai.prompts[0]['prompt'].toString()),
AppLink.uploadEgypt,
'driver_license'); //egypt
},
@@ -441,7 +443,7 @@ class EgyptCardAI extends StatelessWidget {
IconButton(
onPressed: () async {
await ai.allMethodForAI(
encryptionHelper.encryptData(
encryptionHelper.decryptData(
ai.prompts[1]['prompt'].toString()),
AppLink.uploadEgypt,
'id_back'); //egypt
@@ -455,18 +457,20 @@ class EgyptCardAI extends StatelessWidget {
const SizedBox(height: 8.0),
// Assuming these keys exist in ai.responseIdEgyptFront
Text(
'${'National ID'.tr}: ${ai.responseIdEgyptBack['nationalID']}',
'${'National ID'.tr}: ${encryptionHelper.decryptData(ai.responseIdEgyptBack['nationalID'])}',
style: AppStyle.title.copyWith(
color: ai.responseIdEgyptDriverLicense[
'national_number'] ==
ai.responseIdEgyptBack['nationalID']
color: encryptionHelper.decryptData(
ai.responseIdEgyptDriverLicense[
'national_number']) ==
encryptionHelper.decryptData(
ai.responseIdEgyptBack['nationalID'])
? AppColor.greenColor
: AppColor.redColor),
),
const SizedBox(height: 8.0),
Text(
'${'Occupation'.tr}: ${ai.responseIdEgyptBack['occupation']}', // Assuming 'occupation' exists
'${'Occupation'.tr}: ${encryptionHelper.decryptData(ai.responseIdEgyptBack['occupation'])}', // Assuming 'occupation' exists
),
const SizedBox(height: 8.0),
Row(
@@ -476,7 +480,7 @@ class EgyptCardAI extends StatelessWidget {
'${'Issue Date'.tr}: ${ai.responseIdEgyptBack['issueDate']}', // Assuming 'issueDate' exists
),
Text(
'${'Gender'.tr}: ${ai.responseIdEgyptBack['gender']}', // Assuming 'gender' exists
'${'Gender'.tr}: ${encryptionHelper.decryptData(ai.responseIdEgyptBack['gender'])}', // Assuming 'gender' exists
),
],
),
@@ -514,7 +518,7 @@ class EgyptCardAI extends StatelessWidget {
onTap: () async {
await ai.allMethodForAI(
encryptionHelper
.encryptData(ai.prompts[1]['prompt'].toString()),
.decryptData(ai.prompts[1]['prompt'].toString()),
AppLink.uploadEgypt,
'id_back'); //egypt
},
@@ -568,8 +572,7 @@ class EgyptCardAI extends StatelessWidget {
onPressed: () async {
await ai.allMethodForAI(
encryptionHelper.decryptData(
encryptionHelper.encryptData(
ai.prompts[7]['prompt'].toString())),
ai.prompts[7]['prompt'].toString()),
AppLink.uploadEgypt,
'non_id_back');
},
@@ -581,16 +584,16 @@ class EgyptCardAI extends StatelessWidget {
const Divider(color: AppColor.accentColor),
const SizedBox(height: 8.0),
Text(
'${'Country'.tr}: ${ai.responseNonIdCardBack['country']}',
'${'Country'.tr}: ${encryptionHelper.decryptData(ai.responseNonIdCardBack['country'])}',
style: AppStyle.title,
),
const SizedBox(height: 8.0),
Text(
'${'Residency Type'.tr}: ${ai.responseNonIdCardBack['residencyType']}',
'${'Residency Type'.tr}: ${encryptionHelper.decryptData(ai.responseNonIdCardBack['residencyType'])}',
),
const SizedBox(height: 8.0),
Text(
'${'Work Status'.tr}: ${ai.responseNonIdCardBack['workStatus']}',
'${'Work Status'.tr}: ${encryptionHelper.decryptData(ai.responseNonIdCardBack['workStatus'])}',
),
const SizedBox(height: 8.0),
Row(
@@ -600,7 +603,7 @@ class EgyptCardAI extends StatelessWidget {
'${'Issue Date'.tr}: ${ai.responseNonIdCardBack['issueDate']}',
),
Text(
'${'Birth Date'.tr}: ${ai.responseNonIdCardBack['birthDate']}',
'${'Birth Date'.tr}: ${encryptionHelper.decryptData(ai.responseNonIdCardBack['birthDate'])}',
),
],
),
@@ -622,7 +625,7 @@ class EgyptCardAI extends StatelessWidget {
onTap: () async {
await ai.allMethodForAI(
encryptionHelper
.encryptData(ai.prompts[7]['prompt'].toString()),
.decryptData(ai.prompts[7]['prompt'].toString()),
AppLink.uploadEgypt,
'non_id_back');
},
@@ -667,7 +670,7 @@ class EgyptCardAI extends StatelessWidget {
IconButton(
onPressed: () async {
await ai.allMethodForAI(
encryptionHelper.encryptData(
encryptionHelper.decryptData(
ai.prompts[2]['id_front'].toString()),
AppLink.uploadEgypt,
'id_front'); //egypt
@@ -685,10 +688,10 @@ class EgyptCardAI extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
'${'First Name'.tr}: ${ai.responseIdEgyptFront['first_name']}',
'${'First Name'.tr}: ${encryptionHelper.decryptData(ai.responseIdEgyptFront['first_name'])}',
),
Text(
'${'CardID'.tr}: ${ai.responseIdEgyptFront['card_id']}',
'${'CardID'.tr}: ${encryptionHelper.decryptData(ai.responseIdEgyptFront['card_id'])}',
),
],
),
@@ -697,16 +700,16 @@ class EgyptCardAI extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
'${'Full Name'.tr}: ${ai.responseIdEgyptFront['full_name']}',
'${'Full Name'.tr}: ${encryptionHelper.decryptData(ai.responseIdEgyptFront['full_name'])}',
),
Text(
'${'DOB'.tr}: ${ai.responseIdEgyptFront['dob']}',
'${'DOB'.tr}: ${encryptionHelper.decryptData(ai.responseIdEgyptFront['dob'])}',
),
],
),
const SizedBox(height: 8.0),
Text(
'${'Address'.tr}: ${ai.responseIdEgyptFront['address']}',
'${'Address'.tr}: ${encryptionHelper.decryptData(ai.responseIdEgyptFront['address'])}',
),
const SizedBox(height: 8.0),
// Text(
@@ -725,7 +728,7 @@ class EgyptCardAI extends StatelessWidget {
onTap: () async {
await ai.allMethodForAI(
encryptionHelper
.encryptData(ai.prompts[2]['prompt'].toString()),
.decryptData(ai.prompts[2]['prompt'].toString()),
AppLink.uploadEgypt,
'id_front'); //egypt
},
@@ -770,7 +773,7 @@ class EgyptCardAI extends StatelessWidget {
IconButton(
onPressed: () async {
await ai.allMethodForAI(
encryptionHelper.encryptData(
encryptionHelper.decryptData(
ai.prompts[6]['prompt'].toString()),
AppLink.uploadEgypt,
'non_id_front');
@@ -783,7 +786,7 @@ class EgyptCardAI extends StatelessWidget {
const Divider(color: AppColor.accentColor),
const SizedBox(height: 8.0),
Text(
'${'Full Name'.tr}: ${ai.responseNonIdCardFront['full_name']}',
'${'Full Name'.tr}: ${encryptionHelper.decryptData(ai.responseNonIdCardFront['full_name'])}',
style: AppStyle.title,
),
const SizedBox(height: 8.0),
@@ -791,10 +794,10 @@ class EgyptCardAI extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
'${'Passport No'.tr}: ${ai.responseNonIdCardFront['passport_no']}',
'${'Passport No'.tr}: ${encryptionHelper.decryptData(ai.responseNonIdCardFront['passport_no'])}',
),
Text(
'${'Card ID'.tr}: ${ai.responseNonIdCardFront['card_id']}',
'${'Card ID'.tr}: ${encryptionHelper.decryptData(ai.responseNonIdCardFront['card_id'])}',
),
],
),
@@ -803,20 +806,20 @@ class EgyptCardAI extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
'${'Country'.tr}: ${ai.responseNonIdCardFront['country']}',
'${'Country'.tr}: ${encryptionHelper.decryptData(ai.responseNonIdCardFront['country'])}',
),
Text(
'${'Gender'.tr}: ${ai.responseNonIdCardFront['gender']}',
'${'Gender'.tr}: ${encryptionHelper.decryptData(ai.responseNonIdCardFront['gender'])}',
),
],
),
const SizedBox(height: 8.0),
Text(
'${'Birth Date'.tr}: ${ai.responseNonIdCardFront['birthdate']}',
'${'Birth Date'.tr}: ${encryptionHelper.decryptData(ai.responseNonIdCardFront['birthdate'])}',
),
const SizedBox(height: 8.0),
Text(
'${'Address'.tr}: ${ai.responseNonIdCardFront['address']}',
'${'Address'.tr}: ${encryptionHelper.decryptData(ai.responseNonIdCardFront['address'])}',
),
],
),
@@ -828,7 +831,7 @@ class EgyptCardAI extends StatelessWidget {
onTap: () async {
await ai.allMethodForAI(
encryptionHelper
.encryptData(ai.prompts[6]['prompt'].toString()),
.decryptData(ai.prompts[6]['prompt'].toString()),
AppLink.uploadEgypt,
'non_id_front');
},
@@ -881,7 +884,7 @@ class EgyptCardAI extends StatelessWidget {
IconButton(
onPressed: () async {
ai.allMethodForAI(
encryptionHelper.encryptData(
encryptionHelper.decryptData(
ai.prompts[3]['prompt'].toString()),
AppLink.uploadEgypt,
'car_front');
@@ -896,15 +899,15 @@ class EgyptCardAI extends StatelessWidget {
// Removed Make, Model, etc. as they are not available
Text(
'${'Plate Number'.tr}: ${ai.responseIdCardDriverEgyptFront['car_plate']}',
'${'Plate Number'.tr}: ${encryptionHelper.decryptData(ai.responseIdCardDriverEgyptFront['car_plate'])}',
),
const SizedBox(height: 8.0),
Text(
'${'Owner Name'.tr}: ${ai.responseIdCardDriverEgyptFront['owner']}',
'${'Owner Name'.tr}: ${encryptionHelper.decryptData(ai.responseIdCardDriverEgyptFront['owner'])}',
),
const SizedBox(height: 8.0),
Text(
'${'Address'.tr}: ${ai.responseIdCardDriverEgyptFront['address']}',
'${'Address'.tr}: ${encryptionHelper.decryptData(ai.responseIdCardDriverEgyptFront['address'])}',
),
const SizedBox(height: 8.0),
Row(
@@ -930,7 +933,7 @@ class EgyptCardAI extends StatelessWidget {
onTap: () async {
ai.allMethodForAI(
encryptionHelper
.encryptData(ai.prompts[3]['prompt'].toString()),
.decryptData(ai.prompts[3]['prompt'].toString()),
AppLink.uploadEgypt,
'car_front');
},
@@ -1000,7 +1003,7 @@ class EgyptCardAI extends StatelessWidget {
IconButton(
onPressed: () async {
ai.allMethodForAI(
encryptionHelper.encryptData(
encryptionHelper.decryptData(
ai.prompts[4]['prompt'].toString()),
AppLink.uploadEgypt,
'car_back');
@@ -1016,9 +1019,9 @@ class EgyptCardAI extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
'${'Make'.tr}: ${ai.responseIdCardDriverEgyptBack['make']}'),
'${'Make'.tr}: ${(ai.responseIdCardDriverEgyptBack['make'])}'),
Text(
'${'Model'.tr}: ${ai.responseIdCardDriverEgyptBack['model']}'),
'${'Model'.tr}: ${(ai.responseIdCardDriverEgyptBack['model'])}'),
],
),
const SizedBox(height: 8.0),
@@ -1075,7 +1078,7 @@ class EgyptCardAI extends StatelessWidget {
onTap: () async {
ai.allMethodForAI(
encryptionHelper
.encryptData(ai.prompts[4]['prompt'].toString()),
.decryptData(ai.prompts[4]['prompt'].toString()),
AppLink.uploadEgypt,
'car_back');
},
@@ -1120,7 +1123,7 @@ class EgyptCardAI extends StatelessWidget {
IconButton(
onPressed: () async {
await ai.allMethodForAI(
encryptionHelper.encryptData(
encryptionHelper.decryptData(
ai.prompts[5]['prompt'].toString()),
AppLink.uploadEgypt,
'criminalRecord',
@@ -1137,16 +1140,19 @@ class EgyptCardAI extends StatelessWidget {
'${'InspectionResult'.tr}: ${ai.responseCriminalRecordEgypt['InspectionResult']}'),
const SizedBox(height: 8.0),
Text(
'${'FullName'.tr}: ${ai.responseCriminalRecordEgypt['FullName']}',
'${'FullName'.tr}: ${encryptionHelper.decryptData(ai.responseCriminalRecordEgypt['FullName'])}',
style: AppStyle.title.copyWith(
color: ai.responseCriminalRecordEgypt['FullName'] ==
ai.responseIdEgyptDriverLicense['name_arabic']
color: encryptionHelper.decryptData(ai
.responseCriminalRecordEgypt['FullName']) ==
encryptionHelper.decryptData(
ai.responseIdEgyptDriverLicense[
'name_arabic'])
? AppColor.greenColor
: AppColor.redColor),
),
const SizedBox(height: 8.0),
Text(
'${'NationalID'.tr}: ${ai.responseCriminalRecordEgypt['NationalID']}'),
'${'NationalID'.tr}: ${encryptionHelper.decryptData(ai.responseCriminalRecordEgypt['NationalID'])}'),
const SizedBox(height: 8.0),
Text(
'${'IssueDate'.tr}: ${ai.responseCriminalRecordEgypt['IssueDate']}'),
@@ -1160,7 +1166,7 @@ class EgyptCardAI extends StatelessWidget {
onTap: () async {
await ai.allMethodForAI(
encryptionHelper
.encryptData(ai.prompts[5]['prompt'].toString()),
.decryptData(ai.prompts[5]['prompt'].toString()),
AppLink.uploadEgypt,
'criminalRecord',
);

View File

@@ -1,13 +1,13 @@
import 'package:sefer_driver/constant/colors.dart';
import 'package:sefer_driver/constant/style.dart';
import 'package:sefer_driver/views/widgets/my_scafold.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_font_icons/flutter_font_icons.dart';
import 'package:get/get.dart';
import '../../../constant/colors.dart';
import '../../../constant/style.dart';
import '../../../controller/functions/tts.dart';
import '../../../controller/home/captin/contact_us_controller.dart';
import '../../widgets/my_scafold.dart';
class ContactUsPage extends StatelessWidget {
ContactUsPage({super.key});
@@ -35,7 +35,7 @@ class ContactUsPage extends StatelessWidget {
IconButton(
onPressed: () async {
Get.put(TextToSpeechController()).speakText(
'SEFER is the safest ride-sharing app that introduces many features for both captains and passengers. We offer the lowest commission rate of just 8%, ensuring you get the best value for your rides. Our app includes insurance for the best captains, regular maintenance of cars with top engineers, and on-road services to ensure a respectful and high-quality experience for all users.'
'Swifti is the safest ride-sharing app that introduces many features for both captains and passengers. We offer the lowest commission rate of just 8%, ensuring you get the best value for your rides. Our app includes insurance for the best captains, regular maintenance of cars with top engineers, and on-road services to ensure a respectful and high-quality experience for all users.'
.tr);
},
icon: const Icon(Icons.headphones),
@@ -43,7 +43,7 @@ class ContactUsPage extends StatelessWidget {
Padding(
padding: const EdgeInsets.all(8.0),
child: Text(
'SEFER is the safest ride-sharing app that introduces many features for both captains and passengers. We offer the lowest commission rate of just 8%, ensuring you get the best value for your rides. Our app includes insurance for the best captains, regular maintenance of cars with top engineers, and on-road services to ensure a respectful and high-quality experience for all users.'
'Swifti is the safest ride-sharing app that introduces many features for both captains and passengers. We offer the lowest commission rate of just 8%, ensuring you get the best value for your rides. Our app includes insurance for the best captains, regular maintenance of cars with top engineers, and on-road services to ensure a respectful and high-quality experience for all users.'
.tr,
style: AppStyle.title,
textAlign: TextAlign.center,

View File

@@ -1,15 +1,16 @@
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/box_name.dart';
import '../../../constant/colors.dart';
import '../../../constant/links.dart';
import '../../../constant/style.dart';
import '../../../controller/functions/encrypt_decrypt.dart';
import '../../../controller/functions/gemeni.dart';
import '../../../controller/functions/tts.dart';
import '../../../main.dart';
import '../../widgets/elevated_btn.dart';
import '../../widgets/my_scafold.dart';
class CriminalDocumemtPage extends StatelessWidget {
const CriminalDocumemtPage({super.key});
@@ -35,8 +36,8 @@ class CriminalDocumemtPage extends StatelessWidget {
? MyElevatedButton(
title: 'Next'.tr,
onPressed: () async {
if (controller
.responseCriminalRecordEgypt['FullName'] !=
if (encryptionHelper.decryptData(controller
.responseCriminalRecordEgypt['FullName']) !=
box.read(BoxName.nameArabic)) //todo get from server
{
Get.defaultDialog(
@@ -140,19 +141,22 @@ Please fill in the JSON object with the extracted information, following these g
const Divider(color: AppColor.accentColor),
const SizedBox(height: 8.0),
Text(
'${'InspectionResult'.tr}: ${ai.responseCriminalRecordEgypt['InspectionResult']}'),
'${'InspectionResult'.tr}: ${encryptionHelper.decryptData(ai.responseCriminalRecordEgypt['InspectionResult'])}'),
const SizedBox(height: 8.0),
Text(
'${'FullName'.tr}: ${ai.responseCriminalRecordEgypt['FullName']}',
'${'FullName'.tr}: ${encryptionHelper.decryptData(ai.responseCriminalRecordEgypt['FullName'])}',
style: AppStyle.title.copyWith(
color: ai.responseCriminalRecordEgypt['FullName'] ==
ai.responseIdEgyptDriverLicense['name_arabic']
color: encryptionHelper.decryptData(ai
.responseCriminalRecordEgypt['FullName']) ==
encryptionHelper.decryptData(
ai.responseIdEgyptDriverLicense[
'name_arabic'])
? AppColor.greenColor
: AppColor.redColor),
),
const SizedBox(height: 8.0),
Text(
'${'NationalID'.tr}: ${ai.responseCriminalRecordEgypt['NationalID']}'),
'${'NationalID'.tr}: ${encryptionHelper.decryptData(ai.responseCriminalRecordEgypt['NationalID'])}'),
const SizedBox(height: 8.0),
Text(
'${'IssueDate'.tr}: ${ai.responseCriminalRecordEgypt['IssueDate']}'),

View File

@@ -1,13 +1,13 @@
import 'dart:convert';
import 'package:sefer_driver/constant/box_name.dart';
import 'package:sefer_driver/constant/colors.dart';
import 'package:sefer_driver/constant/links.dart';
import 'package:sefer_driver/controller/functions/crud.dart';
import 'package:sefer_driver/main.dart';
import 'package:sefer_driver/views/widgets/error_snakbar.dart';
import 'package:get/get.dart';
import '../../../constant/box_name.dart';
import '../../../constant/links.dart';
import '../../../controller/functions/crud.dart';
import '../../../main.dart';
import '../../widgets/error_snakbar.dart';
class DriverCarController extends GetxController {
bool isLoading = false;
List cars = [];

View File

@@ -1,12 +1,12 @@
import 'package:sefer_driver/constant/box_name.dart';
import 'package:sefer_driver/constant/colors.dart';
import 'package:sefer_driver/main.dart';
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';
import 'package:get/get.dart';
import '../../../constant/box_name.dart';
import '../../../constant/colors.dart';
import '../../../controller/auth/captin/invit_controller.dart';
import '../../../controller/functions/encrypt_decrypt.dart';
import '../../../main.dart';
class InviteScreen extends StatelessWidget {
final InviteController controller = Get.put(InviteController());