refactor: إعادة تسمية التطبيقات الأربعة siro_* → intaleq_*
المجلدات وأسماء حزم dart واستيراداتها: siro_rider → intaleq_rider siro_driver → intaleq_driver siro_admin → intaleq_admin siro_service → intaleq_service شمل ذلك `name:` في كل pubspec وكل `package:siro_*` في الاستيرادات (115 ملفاً في rider وحده)، وإشارات أسماء المجلدات في docs/ وتعليق في backend/Admin/notifications/broadcast.php. لم تبقَ إشارة واحدة (تحقّقت). + ضُمّت حزم get و get_storage داخل intaleq_driver/packages/ وحُوّلت مساراتها الثلاثة من `../../Intaleq/packages/*` إلى `./packages/*`. كانت تُحل عرضاً إلى مجلد App/Intaleq القديم المجاور — تبعية خارج المستودع تنكسر بأول نقل. لم يبقَ في أي تطبيق تبعية مسار خارج الشجرة. ⚠️ لم تُمسّ بعد: هويات المتاجر (applicationId · PRODUCT_BUNDLE_IDENTIFIER · shorebird app_id) ولا الألوان ولا النصوص المرئية ولا النطاقات — كل منها كوميت منفصل، والهويات تحتاج قرار المالك. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
92dc6b3641
commit
0aab85c732
@@ -0,0 +1,76 @@
|
||||
// import 'package:intaleq_rider/main.dart';
|
||||
import 'package:secure_string_operations/secure_string_operations.dart';
|
||||
|
||||
import '../env/env.dart';
|
||||
import 'char_map.dart';
|
||||
|
||||
class AK {
|
||||
static final String sss_pass = X.r(X.r(X.r(Env.sss_pass, cn), cC), cs);
|
||||
static final String allowed = Env.allowed;
|
||||
static final String allowedWallet = Env.allowedWallet;
|
||||
static final String passnpassenger = X
|
||||
.r(X.r(X.r(Env.passnpassenger, cn), cC), cs)
|
||||
.toString()
|
||||
.split(Env.addd)[0];
|
||||
static final String newId = Env.newId;
|
||||
static final String sss_encryptionSalt =
|
||||
X.r(X.r(X.r(Env.sss_encryptionSalt, cn), cC), cs);
|
||||
static final String secretKey = X.r(X.r(X.r(Env.secretKey, cn), cC), cs);
|
||||
static final String basicAuthCredentials =
|
||||
X.r(X.r(X.r(Env.basicAuthCredentials, cn), cC), cs);
|
||||
static final String accountSIDTwillo =
|
||||
X.r(X.r(X.r(Env.accountSIDTwillo, cn), cC), cs);
|
||||
static final String serverAPI = X.r(X.r(X.r(Env.serverAPI, cn), cC), cs);
|
||||
static final String mapAPIKEY = Env.mapAPIKEY;
|
||||
static final String mapAPIKEYIOS = Env.mapAPIKEYIOS;
|
||||
static final String twilloRecoveryCode =
|
||||
X.r(X.r(X.r(Env.twilloRecoveryCode, cn), cC), cs);
|
||||
static final String authTokenTwillo =
|
||||
X.r(X.r(X.r(Env.authTokenTwillo, cn), cC), cs);
|
||||
static final String chatGPTkey = X.r(X.r(X.r(Env.chatGPTkey, cn), cC), cs);
|
||||
static final String transactionCloude =
|
||||
X.r(X.r(X.r(Env.transactionCloude, cn), cC), cs);
|
||||
static final String visionApi = X.r(X.r(X.r(Env.visionApi, cn), cC), cs);
|
||||
static final String chatGPTkeySefer =
|
||||
X.r(X.r(X.r(Env.chatGPTkeySefer, cn), cC), cs);
|
||||
static final String chatGPTkeySeferNew =
|
||||
X.r(X.r(X.r(Env.chatGPTkeySeferNew, cn), cC), cs);
|
||||
static final String serverPHP = Env.serverPHP;
|
||||
static final String llamaKey = X.r(X.r(X.r(Env.llamaKey, cn), cC), cs);
|
||||
static final String cohere = X.r(X.r(X.r(Env.cohere, cn), cC), cs);
|
||||
static final String claudeAiAPI = X.r(X.r(X.r(Env.claudeAiAPI, cn), cC), cs);
|
||||
static final String geminiApi = X.r(X.r(X.r(Env.geminiApi, cn), cC), cs);
|
||||
static final String agoraAppId = X.r(X.r(X.r(Env.agoraAppId, cn), cC), cs);
|
||||
static final String agoraAppCertificate =
|
||||
X.r(X.r(X.r(Env.agoraAppCertificate, cn), cC), cs);
|
||||
static final String integrationIdPayMob =
|
||||
X.r(X.r(X.r(Env.integrationIdPayMob, cn), cC), cs);
|
||||
static final String passwordPayMob =
|
||||
X.r(X.r(X.r(Env.passwordPayMob, cn), cC), cs);
|
||||
static final String usernamePayMob =
|
||||
X.r(X.r(X.r(Env.usernamePayMob, cn), cC), cs);
|
||||
static final String payMobApikey =
|
||||
X.r(X.r(X.r(Env.payMobApikey, cn), cC), cs);
|
||||
static final String integrationIdPayMobWallet =
|
||||
X.r(X.r(X.r(Env.integrationIdPayMobWallet, cn), cC), cs);
|
||||
static final String apiKeyHere = Env.apiKeyHere;
|
||||
static final String smsPasswordEgypt =
|
||||
X.r(X.r(X.r(Env.smsPasswordEgypt, cn), cC), cs);
|
||||
static final String ocpApimSubscriptionKey = Env.ocpApimSubscriptionKey;
|
||||
static final String chatGPTkeySeferNew4 =
|
||||
X.r(X.r(X.r(Env.chatGPTkeySeferNew4, cn), cC), cs);
|
||||
static final String anthropicAIkeySeferNew =
|
||||
X.r(X.r(X.r(Env.anthropicAIkeySeferNew, cn), cC), cs);
|
||||
static final String llama3Key = X.r(X.r(X.r(Env.llama3Key, cn), cC), cs);
|
||||
static final String payMobOutClientSecrret =
|
||||
X.r(X.r(X.r(Env.payMobOutClientSecrret, cn), cC), cs);
|
||||
static final String payMobOutClient_id =
|
||||
X.r(X.r(X.r(Env.payMobOutClient_id, cn), cC), cs);
|
||||
static final String payMobOutPassword =
|
||||
X.r(X.r(X.r(Env.payMobOutPassword, cn), cC), cs);
|
||||
static final String payMobOutUserName =
|
||||
X.r(X.r(X.r(Env.payMobOutUserName, cn), cC), cs);
|
||||
|
||||
///////////
|
||||
static final String keyOfApp = X.r(X.r(X.r(Env.keyOfApp, cn), cC), cs);
|
||||
}
|
||||
@@ -0,0 +1,116 @@
|
||||
class BoxName {
|
||||
static const String driverID = "driverID";
|
||||
static const String countryCode = "countryCode";
|
||||
static const String googlaMapApp = "googlaMapApp";
|
||||
|
||||
static const String tokenParent = "tokenParent";
|
||||
static const String lang = "lang";
|
||||
static const String serverChosen = "serverChosen";
|
||||
static const String security_check = "security_check";
|
||||
static const String gender = "gender";
|
||||
static const String themeMode = "themeMode";
|
||||
static const String jwt = "jwt";
|
||||
static const String lowEndMode = "lowEndMode";
|
||||
static const String deviceFpEncrypted = "deviceFpEncrypted";
|
||||
static const String appVersionChecked = "appVersionChecked";
|
||||
static const String lastName = "lastName";
|
||||
static const String fingerPrint = "fingerPrint";
|
||||
static const String payMobApikey = "payMobApikey";
|
||||
static const String refreshToken = "refreshToken";
|
||||
static const String serverLocations = "serverLocations";
|
||||
static const String carType = "carType";
|
||||
static const String carPlate = "carPlate";
|
||||
static const String basicLink = "basicLink";
|
||||
static const String packagInfo = "packagInfo";
|
||||
static const String paymentLink = "paymentLink";
|
||||
static const String locationName = "locationName";
|
||||
static const String isVerified = 'isVerified';
|
||||
static const String isFirstTime = 'isFirstTime';
|
||||
static const String firstTimeLoadKey = 'firstTimeLoadKey';
|
||||
static const String isSavedPhones = 'isSavedPhones';
|
||||
static const String statusDriverLocation = "statusDriverLocation";
|
||||
static const String isTest = "isTest";
|
||||
static const String hmac = "hmac";
|
||||
static const String password = "password";
|
||||
static const String validity = "validity";
|
||||
static const String promo = "promo";
|
||||
static const String discount = "discount";
|
||||
static const String arrivalTime = "arrivalTime";
|
||||
static const String passwordDriver = "passwordDriver";
|
||||
static const String agreeTerms = "agreeTerms";
|
||||
static const String addWork = 'addWork';
|
||||
static const String addHome = 'addHome';
|
||||
static const String placesDestination = 'placesDestination';
|
||||
static const String tipPercentage = 'tipPercentage';
|
||||
static const String lastLocationPush = 'lastLocationPush';
|
||||
|
||||
static const String faceDetectTimes = "faceDetectTimes";
|
||||
static const String sosPhonePassenger = "sosPhonePassenger";
|
||||
static const String sosPhoneDriver = "sosPhoneDriver";
|
||||
static const String passengerID = "pasengerID";
|
||||
static const String phone = "phone";
|
||||
static const String package = "package";
|
||||
static const String isInstall = "isInstall";
|
||||
static const String isGiftToken = "isGiftToken";
|
||||
static const String isClaim = "isClaim";
|
||||
static const String inviteCode = "inviteCode";
|
||||
static const String phoneWallet = "phoneWallet";
|
||||
static const String phoneDriver = "phoneDriver";
|
||||
static const String dobDriver = "dobDriver";
|
||||
static const String sexDriver = "sexDriver";
|
||||
static const String lastNameDriver = "lastNameDriver";
|
||||
static const String name = "name";
|
||||
static const String locationPermission = "locationPermission";
|
||||
static const String nameDriver = "nameDriver";
|
||||
static const String driverPhotoUrl = "driverPhotoUrl";
|
||||
static const String passengerPhotoUrl = "passengerPhotoUrl";
|
||||
static const String email = "email";
|
||||
static const String emailDriver = "emailDriver";
|
||||
static const String tokens = "tokens";
|
||||
static const String tokenFCM = "tokenFCM";
|
||||
static const String tokenDriver = "tokenDriver";
|
||||
static const String cardNumber = "cardNumber";
|
||||
static const String cardNumberDriver = "cardNumberDriver";
|
||||
static const String cardHolderName = "cardHolderName";
|
||||
static const String cardHolderNameDriver = "cardHolderNameDriver";
|
||||
static const String expiryDate = "expiryDate";
|
||||
static const String expiryDateDriver = "expiryDateDriver";
|
||||
static const String cvvCode = "cvvCode";
|
||||
static const String cvvCodeDriver = "cvvCodeDriver";
|
||||
static const String passengerWalletDetails = "passengerWalletDetails";
|
||||
static const String passengerWalletTotal = "passengerWalletTotal";
|
||||
static const String passengerWalletFound = "passengerWalletFound";
|
||||
static const String periods = 'periods';
|
||||
static const String onBoarding = 'onBoarding';
|
||||
|
||||
static const String apiKeyRun = 'apiKeyRun';
|
||||
static const String keyOfApp = 'keyOfApp';
|
||||
static const String initializationVector = 'initializationVector';
|
||||
static const String serverAPI = 'serverAPI';
|
||||
static const String secretKey = 'secretKey';
|
||||
static const String basicAuthCredentials = 'basicAuthCredentials';
|
||||
static const String mapAPIKEY = 'mapAPIKEY';
|
||||
static const String twilloRecoveryCode = 'twilloRecoveryCode';
|
||||
static const String accountSIDTwillo = 'accountSIDTwillo';
|
||||
static const String authTokenTwillo = 'authTokenTwillo';
|
||||
static const String chatGPTkey = 'chatGPTkey';
|
||||
static const String chatGPTkeySefer = 'chatGPTkeySefer';
|
||||
static const String transactionCloude = 'transactionCloude';
|
||||
static const String visionApi = 'visionApi';
|
||||
static const String vin = "vin";
|
||||
static const String isvibrate = "isvibrate";
|
||||
static const String make = "make";
|
||||
static const String model = "model";
|
||||
static const String year = "year";
|
||||
static const String expirationDate = "expirationDate";
|
||||
static const String color = "color";
|
||||
static const String owner = "owner";
|
||||
static const String registrationDate = "registrationDate";
|
||||
static const String recentLocations = 'recentLocations';
|
||||
static const String tripData = 'tripData';
|
||||
static const String parentTripSelected = 'parentTripSelected';
|
||||
static const String styleVersion = 'styleVersion';
|
||||
static const String isDestinationMatch =
|
||||
'isDestinationMatch'; // 🆕 AI Destination Matching
|
||||
static const String isPrime = 'isPrime'; // 👑 Siro Prime subscription status
|
||||
}
|
||||
@@ -0,0 +1,75 @@
|
||||
import '../env/env.dart';
|
||||
|
||||
Map<String, String> cs = {
|
||||
"a": Env.a,
|
||||
"b": Env.b,
|
||||
"c": Env.c,
|
||||
"d": Env.d,
|
||||
"e": Env.e,
|
||||
"f": Env.f,
|
||||
"g": Env.g,
|
||||
"h": Env.h,
|
||||
"i": Env.i,
|
||||
"j": Env.j,
|
||||
"k": Env.k,
|
||||
"l": Env.l,
|
||||
"m": Env.m,
|
||||
"n": Env.n,
|
||||
"o": Env.o,
|
||||
"p": Env.p,
|
||||
"q": Env.q,
|
||||
"r": Env.r,
|
||||
"s": Env.s,
|
||||
"t": Env.t,
|
||||
"u": Env.u,
|
||||
"v": Env.v,
|
||||
"w": Env.w,
|
||||
"x": Env.x,
|
||||
"y": Env.y,
|
||||
"z": Env.z,
|
||||
};
|
||||
Map<String, String> cC = {
|
||||
"A": Env.A,
|
||||
"B": Env.B,
|
||||
"C": Env.C,
|
||||
"D": Env.D,
|
||||
"E": Env.E,
|
||||
"F": Env.F,
|
||||
"G": Env.G,
|
||||
"H": Env.H,
|
||||
"I": Env.I,
|
||||
"J": Env.J,
|
||||
"K": Env.K,
|
||||
"L": Env.L,
|
||||
"M": Env.M,
|
||||
"N": Env.N,
|
||||
"O": Env.O,
|
||||
"P": Env.P,
|
||||
"Q": Env.Q,
|
||||
"R": Env.R,
|
||||
"S": Env.S,
|
||||
"T": Env.T,
|
||||
"U": Env.U,
|
||||
"V": Env.V,
|
||||
"W": Env.W,
|
||||
"X": Env.X,
|
||||
"Y": Env.Y,
|
||||
"Z": Env.Z
|
||||
};
|
||||
|
||||
//
|
||||
|
||||
//
|
||||
|
||||
Map<String, String> cn = {
|
||||
"0": "3",
|
||||
"1": "7",
|
||||
"2": "1",
|
||||
"3": "9",
|
||||
"4": "0",
|
||||
"5": "5",
|
||||
"6": "2",
|
||||
"7": "6",
|
||||
"8": "4",
|
||||
"9": "8"
|
||||
};
|
||||
@@ -0,0 +1,34 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
/// A class that holds the color palette for the 'Siro' app.
|
||||
/// The palette is professionally designed to be modern, cohesive, and culturally
|
||||
/// relevant, inspired by the Syrian flag and the app's brand identity.
|
||||
class AppColor {
|
||||
// --- Core Brand Colors ---
|
||||
static const Color primaryColor = Color(0xFF1A2340); // Navy Blue
|
||||
static const Color secondaryColorStatic = Color(0xFF8C9CF8); // Periwinkle Blue
|
||||
static const Color accentColor = Color(0xFF8C9CF8);
|
||||
|
||||
// --- Dynamic Colors (Light / Dark Mode Support) ---
|
||||
static Color get writeColor => Get.isDarkMode ? Colors.white : const Color(0xFF0F172A); // Primary Text
|
||||
static Color get secondaryColor => Get.isDarkMode ? const Color(0xFF1E1E1E) : const Color(0xFFF8FAFC); // Background
|
||||
static Color get cardColor => Get.isDarkMode ? const Color(0xFF2C2C2E) : const Color(0xFFFFFFFF); // Card Background
|
||||
|
||||
// --- Neutral & Status Colors ---
|
||||
static Color get grayColor => Get.isDarkMode ? Colors.grey[400]! : const Color(0xFF64748B); // Secondary Text
|
||||
static Color get borderColor => Get.isDarkMode ? const Color(0xFF3A3A3C) : const Color(0xFFE2E8F0); // Border
|
||||
|
||||
static const Color redColor = Color(0xFFEF4444); // Error
|
||||
static const Color greenColor = Color(0xFF22C55E); // Success
|
||||
static const Color yellowColor = Color(0xFFF59E0B); // Warning
|
||||
|
||||
// --- Legacy / Maps Colors (Kept for compatibility) ---
|
||||
static const Color blueColor = Color(0xFF1A2340);
|
||||
static const Color gold = Color(0xFFFFD700);
|
||||
static const Color bronze = Color(0xFFCD7F32);
|
||||
static const Color goldenBronze = Color(0xFFB87333);
|
||||
|
||||
static Color get cyanBlue => const Color(0xFF1A2340);
|
||||
static Color get cyanAccent => const Color(0xFF1A2340).withOpacity(0.12);
|
||||
static Color get deepPurpleAccent => const Color(0xFF8C9CF8).withOpacity(0.1);
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
// في ملف: constant/country_polygons.dart
|
||||
|
||||
import 'package:intaleq_maps/intaleq_maps.dart';
|
||||
|
||||
class CountryPolygons {
|
||||
// ==========================================================
|
||||
// 1. الأردن: عمان، الزرقاء، إربد، السلط ومساحة كبيرة داخل الأردن
|
||||
// ==========================================================
|
||||
static final List<LatLng> jordanBoundary = [
|
||||
const LatLng(32.70, 35.80), // شمال إربد
|
||||
const LatLng(32.35, 36.30), // المفرق
|
||||
const LatLng(32.10, 36.30), // الزرقاء
|
||||
const LatLng(31.85, 36.20), // شرق عمان
|
||||
const LatLng(31.50, 36.00), // مادبا
|
||||
const LatLng(30.80, 35.80), // الكرك / الطفيلة
|
||||
const LatLng(30.20, 35.60), // معان
|
||||
const LatLng(29.50, 35.00), // العقبة
|
||||
const LatLng(29.50, 34.90), // الحدود الغربية للعقبة
|
||||
const LatLng(30.50, 35.20), // وادي عربة
|
||||
const LatLng(31.50, 35.50), // البحر الميت
|
||||
const LatLng(32.05, 35.60), // السلط
|
||||
const LatLng(32.70, 35.60), // غرب إربد
|
||||
];
|
||||
|
||||
// ==========================================================
|
||||
// 2. سوريا: دمشق، ريف دمشق، حمص، حلب، اللاذقية (استثناء الصحراء)
|
||||
// ==========================================================
|
||||
static final List<LatLng> syriaBoundary = [
|
||||
const LatLng(32.60, 36.00), // درعا
|
||||
const LatLng(32.70, 36.60), // السويداء
|
||||
const LatLng(33.50, 36.50), // ريف دمشق الشرقي
|
||||
const LatLng(34.10, 36.80), // النبك
|
||||
const LatLng(34.70, 36.80), // حمص
|
||||
const LatLng(35.10, 36.80), // حماة
|
||||
const LatLng(36.20, 37.30), // حلب الشرقية
|
||||
const LatLng(36.60, 37.00), // شمال حلب
|
||||
const LatLng(36.00, 36.00), // إدلب / الجبال
|
||||
const LatLng(35.70, 35.80), // اللاذقية
|
||||
const LatLng(34.80, 35.80), // طرطوس
|
||||
const LatLng(34.50, 36.20), // تلكلخ
|
||||
const LatLng(33.50, 36.00), // دمشق الغربية
|
||||
];
|
||||
|
||||
// ==========================================================
|
||||
// 3. مصر: القاهرة كاملة، الإسكندرية، ومراكز المحافظات
|
||||
// ==========================================================
|
||||
static final List<LatLng> egyptBoundary = [
|
||||
const LatLng(29.50, 30.80), // جنوب الفيوم
|
||||
const LatLng(29.80, 31.40), // شرق القاهرة الكبرى
|
||||
const LatLng(30.10, 31.80), // العاشر من رمضان
|
||||
const LatLng(30.60, 32.30), // الإسماعيلية
|
||||
const LatLng(31.30, 31.80), // بورسعيد
|
||||
const LatLng(31.50, 31.25), // دمياط
|
||||
const LatLng(31.30, 29.80), // الإسكندرية
|
||||
const LatLng(30.80, 29.80), // وادي النطرون
|
||||
const LatLng(30.00, 30.80), // 6 أكتوبر / غرب القاهرة
|
||||
];
|
||||
|
||||
/// دالة للتحقق مما إذا كان الموقع ضمن نطاق الخدمة المدعوم
|
||||
static bool isServiceSupported(LatLng? point) {
|
||||
if (point == null) return false;
|
||||
if (_isPointInPolygon(point, jordanBoundary)) return true;
|
||||
if (_isPointInPolygon(point, syriaBoundary)) return true;
|
||||
if (_isPointInPolygon(point, egyptBoundary)) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
/// دالة تحدد اسم الدولة (باللغة الإنجليزية للـ API) بناءً على الإحداثيات
|
||||
static String getCountryName(LatLng? point) {
|
||||
if (point == null) return "unsupported";
|
||||
|
||||
if (_isPointInPolygon(point, jordanBoundary)) return "jordan";
|
||||
if (_isPointInPolygon(point, syriaBoundary)) return "syria";
|
||||
if (_isPointInPolygon(point, egyptBoundary)) return "egypt";
|
||||
|
||||
return "unsupported";
|
||||
}
|
||||
|
||||
/// خوارزمية Ray Casting للتحقق من وقوع نقطة داخل مضلع
|
||||
static bool _isPointInPolygon(LatLng p, List<LatLng> polygon) {
|
||||
bool isInside = false;
|
||||
int j = polygon.length - 1;
|
||||
for (int i = 0; i < polygon.length; i++) {
|
||||
if (((polygon[i].latitude > p.latitude) !=
|
||||
(polygon[j].latitude > p.latitude)) &&
|
||||
(p.longitude <
|
||||
(polygon[j].longitude - polygon[i].longitude) *
|
||||
(p.latitude - polygon[i].latitude) /
|
||||
(polygon[j].latitude - polygon[i].latitude) +
|
||||
polygon[i].longitude)) {
|
||||
isInside = !isInside;
|
||||
}
|
||||
j = i;
|
||||
}
|
||||
return isInside;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,145 @@
|
||||
import 'package:intaleq_rider/print.dart';
|
||||
import 'dart:convert';
|
||||
import 'package:crypto/crypto.dart';
|
||||
|
||||
import '../controller/functions/crud.dart';
|
||||
import '../main.dart';
|
||||
import 'box_name.dart';
|
||||
import 'char_map.dart';
|
||||
import 'links.dart';
|
||||
|
||||
class AC {
|
||||
gAK() async {
|
||||
if (box.read(BoxName.apiKeyRun).toString() != 'run') {
|
||||
var res = await CRUD().get(link: AppLink.getApiKey, payload: {});
|
||||
var decod = res;
|
||||
Log.print(decod);
|
||||
Map<String, dynamic> jsonData = {};
|
||||
for (var i = 0; i < decod['message'].length; i++) {
|
||||
String h = decod['message'][i]['hashed_key'].toString();
|
||||
String retrievedString = r(r(r(h, cn), cC), cs);
|
||||
|
||||
await storage.write(
|
||||
key: decod['message'][i]['name'].toString(),
|
||||
value: retrievedString.toString(),
|
||||
);
|
||||
//
|
||||
String name = decod['message'][i]['name'].toString();
|
||||
String value = decod['message'][i]['hashed_key'].toString();
|
||||
|
||||
jsonData[name] = value;
|
||||
}
|
||||
String jsonString = json.encode(jsonData);
|
||||
Log.print(jsonString);
|
||||
box.write(BoxName.apiKeyRun, 'run');
|
||||
}
|
||||
}
|
||||
|
||||
String q(String b, String c) {
|
||||
final d = utf8.encode(c);
|
||||
final e = utf8.encode(b);
|
||||
|
||||
final f = Hmac(sha256, d);
|
||||
final g = f.convert(e);
|
||||
|
||||
final h = g.bytes;
|
||||
final i = base64Url.encode(h);
|
||||
return i;
|
||||
}
|
||||
|
||||
String j(String k, String l) {
|
||||
final m = utf8.encode(l);
|
||||
final n = base64Url.decode(k);
|
||||
|
||||
final o = Hmac(sha256, m);
|
||||
final p = o.convert(n);
|
||||
|
||||
final q = utf8.decode(p.bytes);
|
||||
return q;
|
||||
}
|
||||
|
||||
String a(String b, String c) {
|
||||
int d = b.length;
|
||||
int e = d ~/ 4;
|
||||
|
||||
List<String> f = [];
|
||||
for (int g = 0; g < d; g += e) {
|
||||
int h = g + e;
|
||||
if (h > d) {
|
||||
h = d;
|
||||
}
|
||||
String i = b.substring(g, h);
|
||||
f.add(i);
|
||||
}
|
||||
|
||||
// print(f);
|
||||
Map<String, String> j = {};
|
||||
j['birinci'] = f[4];
|
||||
j['ikinci'] = f[2];
|
||||
j['üçüncü'] = c + f[1];
|
||||
j['dördüncü'] = f[0];
|
||||
j['beş'] = f[3];
|
||||
|
||||
String k = '';
|
||||
j.forEach((l, m) {
|
||||
k += m;
|
||||
});
|
||||
|
||||
return k;
|
||||
}
|
||||
|
||||
Map<String, String> n(String o, String c) {
|
||||
String p = o.replaceAll(c, '');
|
||||
|
||||
Map<String, String> q = {};
|
||||
q['birinci'] = p[p.length - 5] + p[p.length - 3];
|
||||
q['ikinci'] = p[p.length - 1] + p[p.length - 15];
|
||||
q['üçüncü'] = p[p.length - 9] + p[p.length - 12];
|
||||
q['dördüncü'] = p[p.length - 11] + p[p.length - 6];
|
||||
q['beş'] = p[p.length - 2] + p[p.length - 8];
|
||||
|
||||
return q;
|
||||
}
|
||||
|
||||
String c(String a, Map<String, String> b) {
|
||||
StringBuffer c = StringBuffer();
|
||||
c.write(a);
|
||||
|
||||
String d = "Bl";
|
||||
c.write(b[d] ?? d);
|
||||
|
||||
StringBuffer e = StringBuffer();
|
||||
String f = c.toString();
|
||||
|
||||
for (int g = 0; g < f.length; g++) {
|
||||
String h = f[g];
|
||||
e.write(b[h] ?? h);
|
||||
}
|
||||
|
||||
return e.toString();
|
||||
}
|
||||
|
||||
String r(String a, Map<String, String> b) {
|
||||
StringBuffer c = StringBuffer();
|
||||
String d = "Bl";
|
||||
int e = d.length;
|
||||
|
||||
for (int f = 0; f < a.length; f++) {
|
||||
String g = a[f];
|
||||
String h = b.keys.firstWhere(
|
||||
(i) => b[i] == g,
|
||||
orElse: () => g,
|
||||
);
|
||||
|
||||
c.write(h);
|
||||
}
|
||||
|
||||
String j = c.toString();
|
||||
|
||||
if (j.endsWith(d)) {
|
||||
j = j.substring(0, j.length - e);
|
||||
}
|
||||
|
||||
return j;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
import 'package:intaleq_rider/main.dart';
|
||||
import 'package:intaleq_rider/constant/box_name.dart';
|
||||
import 'package:get/get.dart';
|
||||
|
||||
class CurrencyHelper {
|
||||
static String get currency {
|
||||
String country = box.read(BoxName.countryCode) ?? 'Jordan';
|
||||
switch (country) {
|
||||
case 'Syria': return 'SYP'.tr;
|
||||
case 'Egypt': return 'EGP'.tr;
|
||||
case 'Jordan':
|
||||
default: return 'JOD'.tr;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,172 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
|
||||
import 'colors.dart';
|
||||
|
||||
/// -----------------------------------------------------------------------------
|
||||
/// Siro Design Tokens
|
||||
/// -----------------------------------------------------------------------------
|
||||
/// A single source of truth for spacing, radii, shadows, durations and the
|
||||
/// shared bottom-sheet surface used across the passenger map overlays.
|
||||
///
|
||||
/// Goal: kill the "magic numbers" scattered across every map widget
|
||||
/// (radii of 15/24/25, ad-hoc shadows, handles that appear only sometimes)
|
||||
/// so all sheets read as ONE consistent product — the way Uber / Careem / Bolt
|
||||
/// feel like a single system rather than a pile of separate screens.
|
||||
///
|
||||
/// Everything here is additive. Existing widgets keep working untouched; new
|
||||
/// and refactored widgets opt in.
|
||||
|
||||
/// 4pt spacing scale. Use these instead of raw `SizedBox(height: 10)`.
|
||||
class AppSpacing {
|
||||
AppSpacing._();
|
||||
|
||||
static const double xs = 4;
|
||||
static const double sm = 8;
|
||||
static const double md = 12;
|
||||
static const double lg = 16;
|
||||
static const double xl = 20;
|
||||
static const double xxl = 24;
|
||||
|
||||
// Convenience gaps (const so they can live in const child lists).
|
||||
static const Widget gapXs = SizedBox(height: xs, width: xs);
|
||||
static const Widget gapSm = SizedBox(height: sm, width: sm);
|
||||
static const Widget gapMd = SizedBox(height: md, width: md);
|
||||
static const Widget gapLg = SizedBox(height: lg, width: lg);
|
||||
static const Widget gapXl = SizedBox(height: xl, width: xl);
|
||||
|
||||
static const Widget vGapXs = SizedBox(height: xs);
|
||||
static const Widget vGapSm = SizedBox(height: sm);
|
||||
static const Widget vGapMd = SizedBox(height: md);
|
||||
static const Widget vGapLg = SizedBox(height: lg);
|
||||
static const Widget vGapXl = SizedBox(height: xl);
|
||||
}
|
||||
|
||||
/// Corner radii. `sheet` is THE radius for every bottom sheet so they all match.
|
||||
class AppRadii {
|
||||
AppRadii._();
|
||||
|
||||
static const double sm = 8;
|
||||
static const double md = 12;
|
||||
static const double lg = 16;
|
||||
static const double sheet = 24;
|
||||
static const double pill = 999;
|
||||
|
||||
static const BorderRadius sheetTop = BorderRadius.only(
|
||||
topLeft: Radius.circular(sheet),
|
||||
topRight: Radius.circular(sheet),
|
||||
);
|
||||
|
||||
static BorderRadius all(double r) => BorderRadius.circular(r);
|
||||
}
|
||||
|
||||
/// Shared elevation. One shadow for sheets, one for cards — no more per-widget
|
||||
/// hand-tuned `BoxShadow`s (and no neumorphic accent-color shadows).
|
||||
class AppShadows {
|
||||
AppShadows._();
|
||||
|
||||
static List<BoxShadow> get sheet => [
|
||||
BoxShadow(
|
||||
color: Colors.black.withValues(
|
||||
alpha: Get.isDarkMode ? 0.45 : 0.12,
|
||||
),
|
||||
blurRadius: 24,
|
||||
spreadRadius: 1,
|
||||
offset: const Offset(0, -4),
|
||||
),
|
||||
];
|
||||
|
||||
static List<BoxShadow> get card => [
|
||||
BoxShadow(
|
||||
color: Colors.black.withValues(
|
||||
alpha: Get.isDarkMode ? 0.30 : 0.06,
|
||||
),
|
||||
blurRadius: 12,
|
||||
offset: const Offset(0, 4),
|
||||
),
|
||||
];
|
||||
}
|
||||
|
||||
/// Motion durations. Keep sheet slide-in/out consistent everywhere.
|
||||
class AppDurations {
|
||||
AppDurations._();
|
||||
|
||||
static const Duration fast = Duration(milliseconds: 200);
|
||||
static const Duration base = Duration(milliseconds: 300);
|
||||
static const Duration slow = Duration(milliseconds: 450);
|
||||
}
|
||||
|
||||
/// Minimum touch target (Material / iOS HIG guidance is 44–48px).
|
||||
class AppSizes {
|
||||
AppSizes._();
|
||||
|
||||
static const double minTouch = 48;
|
||||
}
|
||||
|
||||
/// -----------------------------------------------------------------------------
|
||||
/// Shared bottom-sheet surface
|
||||
/// -----------------------------------------------------------------------------
|
||||
/// The rounded-top card + shadow + optional drag handle that every map sheet
|
||||
/// draws by hand today. Wrap your content in this and all sheets instantly
|
||||
/// share the same radius, shadow, handle and horizontal rhythm.
|
||||
///
|
||||
/// It does NOT own show/hide animation — each caller keeps its own
|
||||
/// AnimatedPositioned / transform logic so behaviour is unchanged.
|
||||
class SiroSheetSurface extends StatelessWidget {
|
||||
const SiroSheetSurface({
|
||||
super.key,
|
||||
required this.child,
|
||||
this.padding =
|
||||
const EdgeInsets.fromLTRB(AppSpacing.xl, AppSpacing.md, AppSpacing.xl, AppSpacing.lg),
|
||||
this.showHandle = true,
|
||||
this.color,
|
||||
});
|
||||
|
||||
final Widget child;
|
||||
final EdgeInsets padding;
|
||||
final bool showHandle;
|
||||
final Color? color;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Container(
|
||||
width: double.infinity,
|
||||
decoration: BoxDecoration(
|
||||
color: color ?? AppColor.cardColor,
|
||||
borderRadius: AppRadii.sheetTop,
|
||||
boxShadow: AppShadows.sheet,
|
||||
),
|
||||
padding: padding,
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
crossAxisAlignment: CrossAxisAlignment.stretch,
|
||||
children: [
|
||||
if (showHandle) ...[
|
||||
const SiroSheetHandle(),
|
||||
AppSpacing.vGapMd,
|
||||
],
|
||||
child,
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/// The little grab handle at the top of a sheet. Consistent size everywhere.
|
||||
class SiroSheetHandle extends StatelessWidget {
|
||||
const SiroSheetHandle({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Center(
|
||||
child: Container(
|
||||
width: 40,
|
||||
height: 4,
|
||||
decoration: BoxDecoration(
|
||||
color: AppColor.grayColor.withValues(alpha: 0.35),
|
||||
borderRadius: BorderRadius.circular(AppRadii.pill),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,288 @@
|
||||
class AppInformation {
|
||||
static const String companyName = 'Siro llc';
|
||||
static const String appName = 'Siro';
|
||||
static const String phoneNumber = '';
|
||||
static const String linkedInProfile =
|
||||
'https://www.linkedin.com/in/hamza-ayed/';
|
||||
static const String website = 'https://intaleqapp.com';
|
||||
static const String email = 'support@intaleqapp.com';
|
||||
static const String addd = 'BlBlNl';
|
||||
static const String privacyPolicy = '''
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Siro - Privacy Policy & Terms of Use</title>
|
||||
<style>
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
|
||||
line-height: 1.7;
|
||||
color: #333;
|
||||
padding: 10px;
|
||||
}
|
||||
h1, h2, h3 {
|
||||
color: #2c3e50;
|
||||
}
|
||||
h1 {
|
||||
font-size: 1.8em;
|
||||
border-bottom: 2px solid #3498db;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
h2 {
|
||||
font-size: 1.5em;
|
||||
margin-top: 30px;
|
||||
color: #2980b9;
|
||||
}
|
||||
h3 {
|
||||
font-size: 1.2em;
|
||||
margin-top: 20px;
|
||||
color: #16a085;
|
||||
}
|
||||
strong {
|
||||
color: #2c3e50;
|
||||
}
|
||||
ul {
|
||||
padding-left: 20px;
|
||||
list-style-position: outside;
|
||||
}
|
||||
.highlight {
|
||||
background-color: #f8f9fa;
|
||||
padding: 15px;
|
||||
border-left: 4px solid #3498db;
|
||||
margin: 20px 0;
|
||||
border-radius: 4px;
|
||||
}
|
||||
a {
|
||||
color: #3498db;
|
||||
text-decoration: none;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Privacy Policy & Terms of Use</h1>
|
||||
|
||||
<div class="highlight">
|
||||
<p><strong>Effective Date:</strong> August 9, 2025</p>
|
||||
<p><strong>Last Updated:</strong> August 9, 2025</p>
|
||||
</div>
|
||||
|
||||
<h2>1. Introduction and Acceptance</h2>
|
||||
<p>By downloading, registering, or using the Siro application ("App"), you agree to be bound by this Privacy Policy and our Terms of Use. If you do not agree, you must stop using the App immediately. Your continued use constitutes acceptance of these terms and any future updates.</p>
|
||||
|
||||
<h2>2. Definitions</h2>
|
||||
<ul>
|
||||
<li><strong>"Siro", "we", "us":</strong> Refers to the Siro for Ride Hailing company, Damascus – Syria (Owner & operator), which provides the technology platform.</li>
|
||||
<li><strong>"Driver":</strong> An independent service provider who uses the App to offer transportation services.</li>
|
||||
<li><strong>"Passenger", "you":</strong> An individual who uses the App to request transportation services.</li>
|
||||
<li><strong>"Services":</strong> The connection between Passengers and Drivers facilitated by our App.</li>
|
||||
</ul>
|
||||
|
||||
<h2>3. Privacy Policy</h2>
|
||||
|
||||
<h3>3.1 Information We Collect</h3>
|
||||
<p>We collect information necessary to provide and improve our Services.</p>
|
||||
|
||||
<h4>A. Information You Provide:</h4>
|
||||
<ul>
|
||||
<li><strong>For Drivers:</strong> To ensure safety and compliance, we collect identity information, including your full name, phone number, personal photo, and official documents (e.g., driver's license, vehicle registration).</li>
|
||||
<li><strong>For Passengers:</strong> We only require a phone number for registration and communication. We are not authorized to request or view official identity documents for passengers.</li>
|
||||
</ul>
|
||||
|
||||
<h4>B. Information Collected Automatically:</h4>
|
||||
<ul>
|
||||
<li><strong>Location Data:</strong> We collect precise location data when the App is in use to facilitate ride matching, navigation, and for safety purposes.</li>
|
||||
<li><strong>Device Data:</strong> We collect information about your device, such as model, operating system, and unique identifiers, to ensure App functionality and for security verification.</li>
|
||||
<li><strong>Usage Data:</strong> We log how you interact with our App, including trip history and features used, to improve our services.</li>
|
||||
</ul>
|
||||
|
||||
<h3>3.2 Payment Information</h3>
|
||||
<p><strong>We do not collect, process, or store any sensitive payment information like credit/debit card numbers.</strong> We facilitate payments by connecting you to licensed, local third-party providers:</p>
|
||||
<ul>
|
||||
<li><strong>Mobile Carrier Billing:</strong> Payments via MTN and Syriatel are processed directly by them based on your registered phone number. A one-time password (OTP) sent by the carrier is required to confirm the transaction.</li>
|
||||
<li><strong>Bank Card Payments:</strong> We connect you with the Syrian company "eCash" to process card payments. They handle the transaction, and your bank will send an OTP to your phone to authorize it.</li>
|
||||
</ul>
|
||||
|
||||
<h3>3.3 How We Use Your Information</h3>
|
||||
<ul>
|
||||
<li>To operate and maintain the Services (e.g., connect Drivers and Passengers).</li>
|
||||
<li>To verify Driver identity and eligibility.</li>
|
||||
<li>To improve App security and prevent fraud.</li>
|
||||
<li>To provide customer support.</li>
|
||||
<li>To comply with legal obligations.</li>
|
||||
</ul>
|
||||
|
||||
<h3>3.4 Data Sharing</h3>
|
||||
<p>We do not sell your personal data. We only share it in the following limited circumstances:</p>
|
||||
<ul>
|
||||
<li><strong>Between Passenger and Driver:</strong> To facilitate a ride, we share necessary information like name, photo, and real-time location.</li>
|
||||
<li><strong>With Service Providers:</strong> For services like payment processing and mapping. These providers are contractually obligated to protect your data.</li>
|
||||
<li><strong>For Legal Reasons:</strong> If required by law or a valid legal order.</li>
|
||||
</ul>
|
||||
|
||||
<h3>3.5 Policy for Minors</h3>
|
||||
<p>Our services are intended for individuals over the age of 18.
|
||||
<strong>For Drivers:</strong> We strictly verify the identity and age of all drivers to ensure no minors are operating on our platform.
|
||||
<strong>For Passengers:</strong> While we do not verify passenger identity, the service is not directed at children under 18. If a parent or guardian becomes aware that their child has provided us with information without their consent, they should contact us immediately.</p>
|
||||
|
||||
<h2>4. User Obligations & Conduct</h2>
|
||||
<ul>
|
||||
<li>You must provide accurate and current information during registration.</li>
|
||||
<li>You are responsible for maintaining the security of your account.</li>
|
||||
<li>You agree not to use the App for any illegal activities, to harass others, or to cause damage to a Driver's vehicle.</li>
|
||||
</ul>
|
||||
|
||||
<h2>5. Disclaimer of Liability</h2>
|
||||
<p>The App is provided "as is". Siro is an intermediary platform and is not liable for the actions of Drivers or Passengers, accidents, delays, or any disputes between users. Our liability is limited to the fullest extent permitted by law.</p>
|
||||
|
||||
<h2>6. Policy Updates</h2>
|
||||
<p>We may update these terms. If we make significant changes, we will notify you within the App. You will be required to review and accept the new terms to continue using the Services, ensuring your consent is active and informed.</p>
|
||||
|
||||
<h2>7. Account Deletion & Contact</h2>
|
||||
<p>You have the right to request the deletion of your account and personal data. To do so, or for any other questions, please contact us. We will respond to deletion requests within 30 days.</p>
|
||||
<p><strong>Email:</strong> <a href="mailto:support@intaleqapp.com">support@intaleqapp.com</a></p>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
''';
|
||||
|
||||
static const String privacyPolicyArabic = '''
|
||||
<!DOCTYPE html>
|
||||
<html lang="ar" dir="rtl">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>سيرو - سياسة الخصوصية وشروط الاستخدام</title>
|
||||
<style>
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
|
||||
line-height: 1.7;
|
||||
color: #333;
|
||||
padding: 10px;
|
||||
text-align: right;
|
||||
}
|
||||
h1, h2, h3 {
|
||||
color: #2c3e50;
|
||||
}
|
||||
h1 {
|
||||
font-size: 1.8em;
|
||||
border-bottom: 2px solid #3498db;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
h2 {
|
||||
font-size: 1.5em;
|
||||
margin-top: 30px;
|
||||
color: #2980b9;
|
||||
}
|
||||
h3 {
|
||||
font-size: 1.2em;
|
||||
margin-top: 20px;
|
||||
color: #16a085;
|
||||
}
|
||||
strong {
|
||||
color: #2c3e50;
|
||||
}
|
||||
ul {
|
||||
padding-right: 20px;
|
||||
list-style-position: outside;
|
||||
}
|
||||
.highlight {
|
||||
background-color: #f8f9fa;
|
||||
padding: 15px;
|
||||
border-right: 4px solid #3498db;
|
||||
margin: 20px 0;
|
||||
border-radius: 4px;
|
||||
}
|
||||
a {
|
||||
color: #3498db;
|
||||
text-decoration: none;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>سياسة الخصوصية وشروط الاستخدام</h1>
|
||||
|
||||
<div class="highlight">
|
||||
<p><strong>تاريخ النفاذ:</strong> 9 أغسطس 2025</p>
|
||||
<p><strong>آخر تحديث:</strong> 9 أغسطس 2025</p>
|
||||
</div>
|
||||
|
||||
<h2>1. المقدمة والقبول</h2>
|
||||
<p>عبر تحميل أو تسجيل أو استخدام تطبيق "سيرو" ("التطبيق")، فإنك توافق على الالتزام بسياسة الخصوصية وشروط الاستخدام هذه. إذا كنت لا توافق، يجب عليك التوقف فورًا عن استخدام التطبيق. استمرارك في الاستخدام يُعد قبولاً لهذه الشروط وأي تحديثات مستقبلية لها.</p>
|
||||
|
||||
<h2>2. التعريفات</h2>
|
||||
<ul>
|
||||
<li><strong>"سيرو"، "نحن":</strong> تشير إلى شركة سيرو لنقل الركاب، دمشق – سوريا (مالك ومشغل التطبيق)، التي توفر المنصة التقنية.</li>
|
||||
<li><strong>"السائق":</strong> مقدم خدمة مستقل يستخدم التطبيق لتقديم خدمات النقل.</li>
|
||||
<li><strong>"الراكب"، "أنت":</strong> الفرد الذي يستخدم التطبيق لطلب خدمات النقل.</li>
|
||||
<li><strong>"الخدمات":</strong> عملية الربط بين الركاب والسائقين التي يسهلها تطبيقنا.</li>
|
||||
</ul>
|
||||
|
||||
<h2>3. سياسة الخصوصية</h2>
|
||||
|
||||
<h3>3.1 المعلومات التي نجمعها</h3>
|
||||
<p>نحن نجمع المعلومات الضرورية لتقديم خدماتنا وتحسينها.</p>
|
||||
|
||||
<h4>أ. المعلومات التي تقدمها بنفسك:</h4>
|
||||
<ul>
|
||||
<li><strong>بالنسبة للسائقين:</strong> لضمان السلامة والامتثال للقوانين، نجمع بيانات الهوية الشخصية، بما في ذلك الاسم الكامل، رقم الهاتف، صورة شخصية، والوثائق الرسمية (مثل رخصة القيادة وتسجيل المركبة).</li>
|
||||
<li><strong>بالنسبة للركاب:</strong> نطلب فقط رقم هاتف للتسجيل والتواصل. نحن غير مخولين بطلب أو الاطلاع على وثائق الهوية الرسمية للركاب.</li>
|
||||
</ul>
|
||||
|
||||
<h4>ب. المعلومات التي تُجمع تلقائيًا:</h4>
|
||||
<ul>
|
||||
<li><strong>بيانات الموقع:</strong> نجمع بيانات الموقع الجغرافي الدقيقة عند استخدام التطبيق لتسهيل تحديد أماكن الانطلاق والوصول، الملاحة، ولأغراض السلامة.</li>
|
||||
<li><strong>بيانات الجهاز:</strong> نجمع معلومات عن جهازك (طراز، نظام تشغيل، معرفات فريدة) لضمان عمل التطبيق وللتحقق الأمني.</li>
|
||||
<li><strong>بيانات الاستخدام:</strong> نسجل كيفية تفاعلك مع التطبيق، بما في ذلك سجل الرحلات والميزات المستخدمة، بهدف تحسين خدماتنا.</li>
|
||||
</ul>
|
||||
|
||||
<h3>3.2 معلومات الدفع</h3>
|
||||
<p><strong>نحن لا نجمع أو نعالج أو نخزن أي معلومات دفع حساسة</strong> مثل أرقام بطاقات الائتمان/الخصم. نحن نسهل عمليات الدفع عبر ربطك بمزودي خدمات محليين مرخصين:</p>
|
||||
<ul>
|
||||
<li><strong>الدفع عبر رصيد الهاتف المحمول:</strong> تتم معالجة الدفعات عبر شركتي MTN و Syriatel مباشرة من خلالهما بناءً على رقم هاتفك المسجل لديهم. يتطلب تأكيد العملية إدخال رمز تحقق (OTP) يُرسل من قبل شركة الاتصالات.</li>
|
||||
<li><strong>الدفع عبر البطاقات البنكية:</strong> نربطك بشركة "eCash" السورية لمعالجة الدفعات بالبطاقات. هي التي تتولى المعاملة، وسيقوم البنك الذي تتعامل معه بإرسال رمز تحقق (OTP) إلى هاتفك لتفويض العملية.</li>
|
||||
</ul>
|
||||
|
||||
<h3>3.3 كيف نستخدم معلوماتك</h3>
|
||||
<ul>
|
||||
<li>لتشغيل وصيانة الخدمات (مثل الربط بين السائقين والركاب).</li>
|
||||
<li>للتحقق من هوية السائقين وأهليتهم.</li>
|
||||
<li>لتحسين أمان التطبيق ومنع الاحتيال.</li>
|
||||
<li>لتقديم الدعم الفني للعملاء.</li>
|
||||
<li>للامتثال للالتزامات القانونية.</li>
|
||||
</ul>
|
||||
|
||||
<h3>3.4 مشاركة البيانات</h3>
|
||||
<p>نحن لا نبيع بياناتك الشخصية. نشاركها فقط في الحالات المحدودة التالية:</p>
|
||||
<ul>
|
||||
<li><strong>بين الراكب والسائق:</strong> لتسهيل الرحلة، نشارك المعلومات الضرورية مثل الاسم، الصورة، والموقع المباشر.</li>
|
||||
<li><strong>مع مزودي الخدمات:</strong> مثل معالجي الدفع وخدمات الخرائط. هؤلاء المزودون ملزمون تعاقديًا بحماية بياناتك.</li>
|
||||
<li><strong>لأسباب قانونية:</strong> إذا طُلب ذلك بموجب القانون أو أمر قضائي ساري المفعول.</li>
|
||||
</ul>
|
||||
|
||||
<h3>3.5 سياسة القاصرين</h3>
|
||||
<p>خدماتنا موجهة للأفراد الذين تزيد أعمارهم عن 18 عامًا.
|
||||
<strong>بالنسبة للسائقين:</strong> نحن نتحقق بدقة من هوية وعمر جميع السائقين لضمان عدم وجود قاصرين يعملون على منصتنا.
|
||||
<strong>بالنسبة للركاب:</strong> على الرغم من أننا لا نتحقق من هوية الركاب، فإن الخدمة غير موجهة للأطفال دون سن 18. إذا علم ولي الأمر أن طفله قد زودنا بمعلومات دون موافقته، فيجب عليه الاتصال بنا على الفور.</p>
|
||||
|
||||
<h2>4. التزامات المستخدم وسلوكه</h2>
|
||||
<ul>
|
||||
<li>يجب عليك تقديم معلومات دقيقة وحديثة عند التسجيل.</li>
|
||||
<li>أنت مسؤول عن الحفاظ على أمان حسابك.</li>
|
||||
<li>أنت توافق على عدم استخدام التطبيق لأي أنشطة غير قانونية، أو لمضايقة الآخرين، أو التسبب في ضرر لمركبة السائق.</li>
|
||||
</ul>
|
||||
|
||||
<h2>5. إخلاء المسؤولية</h2>
|
||||
<p>يتم تقديم التطبيق "كما هو". "سيرو" هي منصة وسيطة وليست مسؤولة عن تصرفات السائقين أو الركاب، أو الحوادث، أو التأخير، أو أي نزاعات بين المستخدمين. مسؤوليتنا محدودة إلى أقصى حد يسمح به القانون.</p>
|
||||
|
||||
<h2>6. تحديثات السياسة</h2>
|
||||
<p>قد نقوم بتحديث هذه الشروط. في حال إجراء تغييرات جوهرية، سنقوم بإعلامك داخل التطبيق. سيُطلب منك مراجعة الشروط الجديدة وقبولها لمواصلة استخدام الخدمات، لضمان أن موافقتك فعالة ومبنية على معرفة.</p>
|
||||
|
||||
<h2>7. حذف الحساب والتواصل</h2>
|
||||
<p>لديك الحق في طلب حذف حسابك وبياناتك الشخصية. للقيام بذلك، أو لأي استفسارات أخرى، يرجى التواصل معنا. سنرد على طلبات الحذف في غضون 30 يومًا.</p>
|
||||
<p><strong>البريد الإلكتروني:</strong> <a href="mailto:support@intaleqapp.com">support@intaleqapp.com</a></p>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
''';
|
||||
}
|
||||
@@ -0,0 +1,547 @@
|
||||
import 'package:intaleq_rider/constant/box_name.dart';
|
||||
import 'package:intaleq_rider/main.dart';
|
||||
|
||||
class AppLink {
|
||||
static const String appDomain = 'siromove.com';
|
||||
|
||||
static String get inviteRedirectUrl {
|
||||
if (currentCountry == 'Syria') {
|
||||
return "https://siromove.com/inviteSyria.php";
|
||||
}
|
||||
return "https://siromove.com/invite.php";
|
||||
}
|
||||
|
||||
static String get currentCountry => box.read(BoxName.countryCode) ?? 'Jordan';
|
||||
|
||||
static String get paymentServer {
|
||||
switch (currentCountry) {
|
||||
case 'Syria':
|
||||
return 'https://wallet-syria.siromove.com/v1/main';
|
||||
case 'Egypt':
|
||||
return 'https://wallet-egypt.siromove.com/v1/main';
|
||||
case 'Jordan':
|
||||
return 'https://walletintaleq.intaleq.xyz/v2/main';
|
||||
default:
|
||||
return 'https://wallet.siromove.com/v1/main';
|
||||
}
|
||||
}
|
||||
|
||||
static String get location {
|
||||
switch (currentCountry) {
|
||||
case 'Syria':
|
||||
return 'https://api-syria.siromove.com/siro_v3/ride/location';
|
||||
case 'Egypt':
|
||||
return 'https://api-egypt.siromove.com/siro_v3/ride/location';
|
||||
case 'Jordan':
|
||||
return 'https://jordan-siro.intaleqapp.com/backend/ride/location';
|
||||
default:
|
||||
return 'https://api.siromove.com/siro_v3/ride/location';
|
||||
}
|
||||
}
|
||||
|
||||
static String get locationServerSide {
|
||||
switch (currentCountry) {
|
||||
case 'Syria':
|
||||
return 'https://location-syria.siromove.com/siro/ride/location';
|
||||
case 'Egypt':
|
||||
return 'https://location-egypt.siromove.com/siro/ride/location';
|
||||
case 'Jordan':
|
||||
return 'https://jordan-siro.intaleqapp.com/backend/ride/location';
|
||||
default:
|
||||
return 'https://location.siromove.com/siro/ride/location';
|
||||
}
|
||||
}
|
||||
|
||||
static String get routesOsm {
|
||||
switch (currentCountry) {
|
||||
case 'Syria':
|
||||
return 'https://routes-syria.siromove.com';
|
||||
case 'Egypt':
|
||||
return 'https://routes-egypt.siromove.com';
|
||||
case 'Jordan':
|
||||
return 'https://routesjo.intaleq.xyz';
|
||||
default:
|
||||
return 'https://routes.siromove.com';
|
||||
}
|
||||
}
|
||||
|
||||
static String get mapSaasRoute {
|
||||
switch (currentCountry) {
|
||||
case 'Syria':
|
||||
return 'https://map-syria.siromove.com/api/maps/route';
|
||||
case 'Egypt':
|
||||
return 'https://map-egypt.siromove.com/api/maps/route';
|
||||
case 'Jordan':
|
||||
return 'https://map-saas.intaleqapp.com/api/maps/route';
|
||||
default:
|
||||
return 'https://map-saas.intaleqapp.com/api/maps/route';
|
||||
}
|
||||
}
|
||||
|
||||
static String get reverseGeocoding {
|
||||
switch (currentCountry) {
|
||||
case 'Syria':
|
||||
return 'https://map-syria.siromove.com/api/geocoding/reverse';
|
||||
case 'Egypt':
|
||||
return 'https://map-egypt.siromove.com/api/geocoding/reverse';
|
||||
case 'Jordan':
|
||||
return 'https://map-saas.intaleqapp.com/api/geocoding/reverse';
|
||||
default:
|
||||
return 'https://map-saas.intaleqapp.com/api/geocoding/reverse';
|
||||
}
|
||||
}
|
||||
|
||||
static String get searchGeocoding {
|
||||
switch (currentCountry) {
|
||||
case 'Syria':
|
||||
return 'https://map-syria.siromove.com/api/geocoding/search';
|
||||
case 'Egypt':
|
||||
return 'https://map-egypt.siromove.com/api/geocoding/search';
|
||||
case 'Jordan':
|
||||
return 'https://map-saas.intaleqapp.com/api/geocoding/search';
|
||||
default:
|
||||
return 'https://map-saas.intaleqapp.com/api/geocoding/search';
|
||||
}
|
||||
}
|
||||
|
||||
static String get mapSaasPlaces {
|
||||
switch (currentCountry) {
|
||||
case 'Syria':
|
||||
return 'https://map-syria.siromove.com/api/geocoding/places';
|
||||
case 'Egypt':
|
||||
return 'https://map-egypt.siromove.com/api/geocoding/places';
|
||||
case 'Jordan':
|
||||
return 'https://map-saas.intaleqapp.com/api/geocoding/places';
|
||||
default:
|
||||
return 'https://map-saas.intaleqapp.com/api/geocoding/places';
|
||||
}
|
||||
}
|
||||
|
||||
static String get endPoint => server;
|
||||
|
||||
static String get rideServerSide {
|
||||
switch (currentCountry) {
|
||||
case 'Syria':
|
||||
return 'https://ride-syria.siromove.com/siro';
|
||||
case 'Egypt':
|
||||
return 'https://ride-egypt.siromove.com/siro';
|
||||
case 'Jordan':
|
||||
return 'https://jordan-siro.intaleqapp.com/backend';
|
||||
default:
|
||||
return 'https://jordan-siro.intaleqapp.com/backend';
|
||||
}
|
||||
}
|
||||
|
||||
static String get server {
|
||||
switch (currentCountry) {
|
||||
case 'Syria':
|
||||
return 'https://api-syria.siromove.com/siro_v3';
|
||||
case 'Egypt':
|
||||
return 'https://api-egypt.siromove.com/siro_v3';
|
||||
case 'Jordan':
|
||||
return 'https://jordan-siro.intaleqapp.com/backend';
|
||||
default:
|
||||
return 'https://api.siromove.com/siro_v3';
|
||||
}
|
||||
}
|
||||
|
||||
static String get serverSocket {
|
||||
switch (currentCountry) {
|
||||
case 'Syria':
|
||||
return 'https://api-syria.siromove.com';
|
||||
case 'Egypt':
|
||||
return 'https://api-egypt.siromove.com';
|
||||
case 'Jordan':
|
||||
return 'https://jordan-siro.intaleqapp.com:3030';
|
||||
default:
|
||||
return 'https://jordan-siro.intaleqapp.com:3030';
|
||||
}
|
||||
}
|
||||
|
||||
///
|
||||
static String get googleMapsLink => 'https://maps.googleapis.com/maps/api/';
|
||||
|
||||
/// here map link for searching for places
|
||||
static String get searcMaps =>
|
||||
'https://autosuggest.search.hereapi.com/v1/autosuggest';
|
||||
|
||||
static String get test => "$server/test.php";
|
||||
//===============firebase==========================
|
||||
static String get getTokens => "$server/ride/firebase/getTokensPassenger.php";
|
||||
static String get getTokenParent =>
|
||||
"$server/ride/firebase/getTokenParent.php";
|
||||
static String get addTokens => "$server/ride/firebase/add.php";
|
||||
static String get addFingerPrint => "$paymentServer/ride/firebase/add.php";
|
||||
static String get addTokensDriver => "$server/ride/firebase/addDriver.php";
|
||||
static String get packageInfo => "$server/auth/packageInfo.php";
|
||||
|
||||
//=======================Wallet===================
|
||||
static String get wallet => '$paymentServer/ride/passengerWallet';
|
||||
static String get walletDriver => '$paymentServer/ride/driverWallet';
|
||||
static String get getAllPassengerTransaction =>
|
||||
"$wallet/getAllPassengerTransaction.php";
|
||||
static String get getWalletByPassenger => "$wallet/getWalletByPassenger.php";
|
||||
static String get getPassengersWallet => "$wallet/get.php";
|
||||
static String get payWithPayMobWalletPasenger =>
|
||||
'$paymentServer/ride/payMob/wallet/payWithPayMob.php';
|
||||
static String get payWithPayMobCardPassenger =>
|
||||
'$paymentServer/ride/payMob/payWithPayMob.php';
|
||||
static String get payWithEcash => "$paymentServer/ecash/payWithEcash.php";
|
||||
|
||||
static String get paymetVerifyPassenger =>
|
||||
"$paymentServer/ride/payMob/paymet_verfy.php";
|
||||
static String get getPassengerWalletArchive =>
|
||||
"$wallet/getPassengerWalletArchive.php";
|
||||
|
||||
static String get addDrivePayment => "$paymentServer/ride/payment/add.php";
|
||||
static String get addSeferWallet => "$paymentServer/ride/seferWallet/add.php";
|
||||
static String get addPassengersWallet => "$wallet/add.php";
|
||||
static String get deletePassengersWallet => "$wallet/delete.php";
|
||||
static String get updatePassengersWallet => "$wallet/update.php";
|
||||
|
||||
//=======================Siro Prime===================
|
||||
static String get initiatePrime => "$server/api/payments/initiate_prime.php";
|
||||
static String get getPrimeStatus =>
|
||||
"$server/api/payments/get_prime_status.php";
|
||||
|
||||
static String get getWalletByDriver => "$walletDriver/getWalletByDriver.php";
|
||||
static String get getDriversWallet => "$walletDriver/get.php";
|
||||
static String get addDriversWalletPoints => "$walletDriver/add.php";
|
||||
static String get deleteDriversWallet => "$walletDriver/delete.php";
|
||||
static String get updateDriversWallet => "$walletDriver/update.php";
|
||||
|
||||
//=======================promo===================ride.mobile-app.store/ride/promo/get.php
|
||||
static String get promo => '$server/ride/promo';
|
||||
static String get getPassengersPromo => "$promo/get.php";
|
||||
static String get getPromoFirst => "$promo/getPromoFirst.php";
|
||||
static String get getPromoBytody => "$promo/getPromoBytody.php";
|
||||
static String get addPassengersPromo => "$promo/add.php";
|
||||
static String get deletePassengersPromo => "$promo/delete.php";
|
||||
static String get updatePassengersPromo => "$promo/update.php";
|
||||
|
||||
//===============contact==========================
|
||||
static String get savePhones => "$server/ride/egyptPhones/add.php";
|
||||
static String get getPhones => "$server/ride/egyptPhones/get.php";
|
||||
|
||||
////=======================cancelRide===================
|
||||
// static String ride = '$server/ride';
|
||||
static String get addCancelRideFromPassenger =>
|
||||
"$rideServerSide/cancelRide/add.php";
|
||||
static String get cancelRide => "$rideServerSide/cancelRide/get.php";
|
||||
//-----------------ridessss------------------
|
||||
static String get addRides => "$rideServerSide/ride/rides/add.php";
|
||||
static String get getRides => "$rideServerSide/ride/rides/get.php";
|
||||
static String get getRideOrderID =>
|
||||
"$rideServerSide/ride/rides/getRideOrderID.php";
|
||||
static String get getRideStatus =>
|
||||
"$rideServerSide/ride/rides/getRideStatus.php";
|
||||
static String get getRideStatusBegin =>
|
||||
"$rideServerSide/ride/rides/getRideStatusBegin.php";
|
||||
static String get getRideStatusFromStartApp =>
|
||||
"$server/ride/rides/getRideStatusFromStartApp.php";
|
||||
static String get updateRides => "$rideServerSide/ride/rides/update.php";
|
||||
static String get updateStausFromSpeed =>
|
||||
"$rideServerSide/ride/rides/updateStausFromSpeed.php";
|
||||
static String get deleteRides => "$rideServerSide/ride/rides/delete.php";
|
||||
|
||||
//-----------------DriverPayment------------------
|
||||
static String get adddriverScam => "$server/driver_scam/add.php";
|
||||
static String get getdriverScam => "$server/ride/driver_scam/get.php";
|
||||
|
||||
/////////---getKazanPercent===////////////
|
||||
static String get getKazanPercent => "$server/ride/kazan/get.php";
|
||||
static String get addKazanPercent => "$server/ride/kazan/add.php";
|
||||
|
||||
////-----------------DriverPayment------------------
|
||||
static String get addDriverpayment => "$paymentServer/ride/payment/add.php";
|
||||
static String get addDriverPaymentPoints =>
|
||||
"$paymentServer/ride/driverPayment/add.php";
|
||||
static String get addPaymentTokenPassenger =>
|
||||
"$paymentServer/ride/passengerWallet/addPaymentTokenPassenger.php";
|
||||
static String get addPaymentTokenDriver =>
|
||||
"$paymentServer/ride/driverWallet/addPaymentToken.php";
|
||||
static String get getDriverPaymentPoints =>
|
||||
"$paymentServer/ride/driverWallet/get.php";
|
||||
static String get payWithEcashPassenger =>
|
||||
"$paymentServer/ride/ecash/passenger/payWithEcash.php";
|
||||
static String get payWithMTNConfirm =>
|
||||
"$paymentServer/ride/mtn/passenger/mtn_confirm.php";
|
||||
static String get payWithMTNStart =>
|
||||
"$paymentServer/ride/mtn/passenger/mtn_start.php";
|
||||
static String get payWithSyriatelConfirm =>
|
||||
"$paymentServer/ride/syriatel/passenger/confirm_payment.php";
|
||||
static String get payWithSyriatelStart =>
|
||||
"$paymentServer/ride/syriatel/passenger/start_payment.php";
|
||||
static String get getDriverpaymentToday =>
|
||||
"$paymentServer/ride/payment/get.php";
|
||||
static String get getCountRide =>
|
||||
"$paymentServer/ride/payment/getCountRide.php";
|
||||
static String get getAllPaymentFromRide =>
|
||||
"$paymentServer/ride/payment/getAllPayment.php";
|
||||
static String get getAllPaymentVisa =>
|
||||
"$paymentServer/ride/payment/getAllPaymentVisa.php";
|
||||
static String get createMtnInvoice =>
|
||||
"$paymentServer/ride/mtn_new/create_mtn_invoice.php";
|
||||
static String get createCliqInvoice =>
|
||||
"$paymentServer/ride/cliq/create_cliq_invoice.php";
|
||||
|
||||
static String get checkMtnStatus =>
|
||||
"$paymentServer/ride/mtn_new/check_status.php";
|
||||
static String get checkCliqStatus =>
|
||||
"$paymentServer/ride/cliq/check_status.php";
|
||||
static String get uploadMtnProof =>
|
||||
"$paymentServer/ride/mtn_new/verify_payment_ai.php";
|
||||
static String get uploadCliqProof =>
|
||||
"$paymentServer/ride/cliq/verify_payment_ai.php";
|
||||
|
||||
//-----------------Passenger NotificationCaptain------------------
|
||||
static String get addNotificationPassenger =>
|
||||
"$server/ride/notificationPassenger/add.php";
|
||||
static String get getNotificationPassenger =>
|
||||
"$server/ride/notificationPassenger/get.php";
|
||||
static String get updateNotificationPassenger =>
|
||||
"$server/ride/notificationPassenger/update.php";
|
||||
//-----------------Driver NotificationCaptain------------------
|
||||
static String get addNotificationCaptain =>
|
||||
"$server/ride/notificationCaptain/add.php";
|
||||
static String get addWaitingRide =>
|
||||
"$server/ride/notificationCaptain/addWaitingRide.php";
|
||||
static String get updateWaitingTrip =>
|
||||
"$server/ride/notificationCaptain/updateWaitingTrip.php";
|
||||
static String get getRideWaiting =>
|
||||
"$endPoint/ride/notificationCaptain/getRideWaiting.php";
|
||||
static String get getNotificationCaptain =>
|
||||
"$server/ride/notificationCaptain/get.php";
|
||||
static String get updateNotificationCaptain =>
|
||||
"$server/ride/notificationCaptain/update.php";
|
||||
static String get deleteNotificationCaptain =>
|
||||
"$server/ride/notificationCaptain/delete.php";
|
||||
//-----------------invitor------------------
|
||||
static String get getUnifiedCode =>
|
||||
"$server/ride/invitor/get_unified_code.php";
|
||||
static String get addUnifiedInvite =>
|
||||
"$server/ride/invitor/add_unified_invite.php";
|
||||
static String get getPassengerReferrals =>
|
||||
"$server/ride/invitor/get_passenger_referrals.php";
|
||||
static String get addInviteDriver => "$server/ride/invitor/add.php";
|
||||
static String get addInvitationPassenger =>
|
||||
"$server/ride/invitor/addInvitationPassenger.php";
|
||||
static String get getInviteDriver => "$server/ride/invitor/get.php";
|
||||
static String get getDriverInvitationToPassengers =>
|
||||
"$server/ride/invitor/getDriverInvitationToPassengers.php";
|
||||
static String get updateInviteDriver => "$server/ride/invitor/update.php";
|
||||
static String get updatePassengerGift =>
|
||||
"$server/ride/invitor/updatePassengerGift.php";
|
||||
static String get claimInviteReward => "$server/ride/invitor/claim.php";
|
||||
//-----------------Api Key------------------
|
||||
static String get addApiKey => "$server/ride/apiKey/add.php";
|
||||
static String get getApiKey => "$server/ride/apiKey/get.php";
|
||||
static String get getCnMap => "$server/auth/cnMap.php";
|
||||
static String get updateApiKey => "$server/ride/apiKey/update.php";
|
||||
static String get deleteApiKey => "$server/ride/apiKey/delete.php";
|
||||
static String get getPlacesSyria => "$server/ride/places_syria/get.php";
|
||||
|
||||
//-----------------Feed Back------------------
|
||||
static String get addFeedBack => "$server/ride/feedBack/add.php";
|
||||
static String get add_solve_all => "$server/ride/feedBack/add_solve_all.php";
|
||||
static String get uploadAudio => "$server/ride/feedBack/upload_audio.php";
|
||||
static String get getFeedBack => "$server/ride/feedBack/get.php";
|
||||
static String get updateFeedBack =>
|
||||
"$server/ride/feedBack/updateFeedBack.php";
|
||||
|
||||
//-----------------Tips------------------
|
||||
static String get addTips => "$server/ride/tips/add.php";
|
||||
static String get getTips => "$server/ride/tips/get.php";
|
||||
static String get updateTips => "$server/ride/tips/update.php";
|
||||
|
||||
//-----------------Help Center------------------
|
||||
static String get addhelpCenter => "$server/ride/helpCenter/add.php";
|
||||
static String get gethelpCenter => "$server/ride/helpCenter/get.php";
|
||||
static String get getByIdhelpCenter => "$server/ride/helpCenter/getById.php";
|
||||
static String get updatehelpCenter => "$server/ride/helpCenter/update.php";
|
||||
static String get deletehelpCenter => "$server/ride/helpCenter/delete.php";
|
||||
|
||||
//-----------------license------------------
|
||||
static String get addLicense => "$server/ride/license/add.php";
|
||||
static String get getLicense => "$server/ride/license/get.php";
|
||||
static String get updateLicense => "$server/ride/license/updateFeedBack.php";
|
||||
//-----------------RegisrationCar------------------
|
||||
static String get addRegisrationCar => "$server/ride/RegisrationCar/add.php";
|
||||
static String get getRegisrationCar =>
|
||||
"${box.read(BoxName.serverChosen)}/server/ride/RegisrationCar/get.php";
|
||||
static String get selectDriverAndCarForMishwariTrip =>
|
||||
"$server/ride/RegisrationCar/selectDriverAndCarForMishwariTrip.php";
|
||||
static String get updateRegisrationCar =>
|
||||
"$server/ride/RegisrationCar/update.php";
|
||||
|
||||
//-----------------mishwari------------------
|
||||
|
||||
static String get addMishwari => "$server/ride/mishwari/add.php";
|
||||
static String get cancelMishwari => "$server/ride/mishwari/cancel.php";
|
||||
static String get getMishwari => "$server/ride/mishwari/get.php";
|
||||
static String get sendChatMessage => "$server/ride/chat/send_message.php";
|
||||
|
||||
//-----------------DriverOrder------------------
|
||||
|
||||
static String get addDriverOrder => "$server/ride/driver_order/add.php";
|
||||
static String get getDriverOrder => "$server/ride/driver_order/get.php";
|
||||
static String get getOrderCancelStatus =>
|
||||
"$server/ride/driver_order/getOrderCancelStatus.php";
|
||||
static String get updateDriverOrder => "$server/ride/driver_order/update.php";
|
||||
static String get deleteDriverOrder => "$server/ride/driver_order/delete.php";
|
||||
|
||||
// =====================================
|
||||
static String get addRateToPassenger => "$server/ride/rate/add.php";
|
||||
static String get savePlacesServer => "$server/ride/places/add.php";
|
||||
static String get getapiKey => "$server/ride/apiKey/get.php";
|
||||
|
||||
// Endpoint لجلب التسعيرة من السيرفر (Server-Side Pricing)
|
||||
static String get getPrices => "$server/ride/pricing/get.php";
|
||||
static String get getCompetitorContext =>
|
||||
"$server/api/ride/get_competitor_context.php";
|
||||
|
||||
static String get addRateToDriver => "$server/ride/rate/addRateToDriver.php";
|
||||
static String get getDriverRate => "$server/ride/rate/getDriverRate.php";
|
||||
static String get getPassengerRate =>
|
||||
"$server/ride/rate/getPassengerRate.php";
|
||||
|
||||
////////////////emails ============//
|
||||
static String get sendEmailToPassengerForTripDetails =>
|
||||
"$server/ride/rides/emailToPassengerTripDetail.php";
|
||||
|
||||
// ===========================================
|
||||
static String get pathImage => "$server/upload/types/";
|
||||
static String get uploadImage => "$server/uploadImage.php";
|
||||
static String get uploadImage1 => "$server/uploadImage1.php";
|
||||
static String get uploadImagePortrate => "$server/uploadImagePortrate.php";
|
||||
static String get uploadImageType => "$server/uploadImageType.php";
|
||||
//=============egypt documents ==============
|
||||
static String get uploadEgyptidFront =>
|
||||
"$server/EgyptDocuments/uploadEgyptidFront.php";
|
||||
static String get uploadEgypt => "$server/uploadEgypt.php";
|
||||
|
||||
//==================certifcate==========
|
||||
// static String location = '${box.read(BoxName.serverChosen)}/ride/location';
|
||||
static String get getCarsLocationByPassenger => "$location/get.php";
|
||||
|
||||
static String get getLocationAreaLinks =>
|
||||
'$server/ride/location/get_location_area_links.php';
|
||||
static String get addpassengerLocation =>
|
||||
"$locationServerSide/addpassengerLocation.php";
|
||||
static String get getCarsLocationByPassengerSpeed => "$location/getSpeed.php";
|
||||
static String get getCarsLocationByPassengerComfort =>
|
||||
"$location/getComfort.php";
|
||||
static String get getCarsLocationByPassengerBalash =>
|
||||
"$location/getBalash.php";
|
||||
static String get getCarsLocationByPassengerElectric =>
|
||||
"$location/getElectric.php";
|
||||
static String get getCarsLocationByPassengerPinkBike =>
|
||||
"$location/getPinkBike.php";
|
||||
static String get getCarsLocationByPassengerVan =>
|
||||
"$location/getCarsLocationByPassengerVan.php";
|
||||
static String get getCarsLocationByPassengerDelivery =>
|
||||
"$location/getDelivery.php";
|
||||
static String get getLocationParents => "$location/getLocationParents.php";
|
||||
static String get getFemalDriverLocationByPassenger =>
|
||||
"$location/getFemalDriver.php";
|
||||
static String get getDriverCarsLocationToPassengerAfterApplied =>
|
||||
"$location/getDriverCarsLocationToPassengerAfterApplied.php";
|
||||
// static String addCarsLocationByPassenger = "$location/add.php";
|
||||
// static String deleteCarsLocationByPassenger = "$location/delete.php";
|
||||
// static String updateCarsLocationByPassenger = "$location/update.php";
|
||||
// static String getTotalDriverDuration = "$location/getTotalDriverDuration.php";
|
||||
// static String getTotalDriverDurationToday =
|
||||
// "$location/getTotalDriverDurationToday.php";
|
||||
|
||||
//==================Blog=============
|
||||
static String get profile => '$server/ride/profile';
|
||||
static String get getprofile => "$profile/get.php";
|
||||
static String get getCaptainProfile => "$profile/getCaptainProfile.php";
|
||||
static String get addprofile => "$profile/add.php";
|
||||
static String get deleteprofile => "$profile/delete.php";
|
||||
static String get updateprofile => "$profile/update.php";
|
||||
|
||||
//===================Auth============
|
||||
|
||||
static String get auth => '$server/auth';
|
||||
static String get login => "$auth/login.php";
|
||||
static String get loginJwtRider => "$server/login.php";
|
||||
static String get loginJwtWalletRider => "$server/loginWallet.php";
|
||||
static String get loginFirstTime => "$server/loginFirstTime.php";
|
||||
static String get getTesterApp => "$auth/Tester/getTesterApp.php";
|
||||
static String get updateTesterApp => "$auth/Tester/updateTesterApp.php";
|
||||
static String get signUp => "$auth/passenger/register.php";
|
||||
static String get savePassengerLocation =>
|
||||
"$auth/passenger/save_location.php";
|
||||
static String get sendVerifyEmail => "$auth/sendVerifyEmail.php";
|
||||
static String get loginFromGooglePassenger =>
|
||||
"$auth/passenger/loginFromGoogle.php";
|
||||
static String get loginUsingCredentialsWithoutGooglePassenger =>
|
||||
"$auth/passenger/loginUsingCredentialsWithoutGoogle.php";
|
||||
static String get checkPhoneNumberISVerfiedPassenger =>
|
||||
"$auth/checkPhoneNumberISVerfiedPassenger.php";
|
||||
|
||||
static String get passengerRemovedAccountEmail =>
|
||||
"$auth/passenger/remove_account.php";
|
||||
static String get verifyEmail => "$auth/verifyEmail.php";
|
||||
//===================Auth Captin============
|
||||
static String get authCaptin => '$server/auth/driver';
|
||||
static String get loginCaptin => "$authCaptin/login.php";
|
||||
static String get loginFromGoogleCaptin => "$authCaptin/loginFromGoogle.php";
|
||||
static String get signUpCaptin => "$authCaptin/register.php";
|
||||
static String get sendVerifyEmailCaptin => "$authCaptin/sendVerifyEmail.php";
|
||||
static String get sendVerifyOtpMessage => "$server/auth/otp/request.php";
|
||||
static String get verifyOtpMessage => "$server/auth/otp/verify.php";
|
||||
static String get verifyEmailCaptin => "$authCaptin/verifyEmail.php";
|
||||
static String get removeUser => "$authCaptin/removeAccount.php";
|
||||
static String get deletecaptainAccounr =>
|
||||
"$authCaptin/deletecaptainAccounr.php";
|
||||
static String get updateAccountBank => "$authCaptin/updateAccountBank.php";
|
||||
static String get getAccount => "$authCaptin/getAccount.php";
|
||||
static String get updatePassengersInvitation =>
|
||||
"$server/ride/invitor/updatePassengersInvitation.php";
|
||||
static String get updateDriverInvitationDirectly =>
|
||||
"$server/ride/invitor/updateDriverInvitationDirectly.php";
|
||||
//===================Admin Captin============
|
||||
|
||||
static String get getPassengerDetailsByPassengerID =>
|
||||
"$server/Admin/getPassengerDetailsByPassengerID.php";
|
||||
static String get getPassengerDetails =>
|
||||
"$server/Admin/getPassengerDetails.php";
|
||||
static String get getPassengerbyEmail =>
|
||||
"$server/Admin/getPassengerbyEmail.php";
|
||||
static String get addAdminUser => "$server/Admin/adminUser/add.php";
|
||||
static String get getAdminUser => "$server/Admin/adminUser/get.php";
|
||||
static String get addError => "$server/Admin/errorApp.php";
|
||||
static String get getCaptainDetailsByEmailOrIDOrPhone =>
|
||||
"$server/Admin/AdminCaptain/getCaptainDetailsByEmailOrIDOrPhone.php";
|
||||
static String get getCaptainDetails => "$server/Admin/AdminCaptain/get.php";
|
||||
static String get getRidesPerMonth =>
|
||||
"$server/Admin/AdminRide/getRidesPerMonth.php";
|
||||
static String get getRidesDetails => "$server/Admin/AdminRide/get.php";
|
||||
|
||||
//////////Sms egypt///////////
|
||||
static String get sendSms => "https://sms.kazumi.me/api/sms/send-sms";
|
||||
static String get sendSmsFromPHP => '$server/auth/otp/request.php';
|
||||
static String get verifyOtpPassenger => '$server/auth/otp/verify.php';
|
||||
static String get senddlr => "https://sms.kazumi.me/api/sms/send-dlr";
|
||||
static String get sendvalidity =>
|
||||
"https://sms.kazumi.me/api/sms/send-validity";
|
||||
static String get sendmany => "https://sms.kazumi.me/api/sms/send-many";
|
||||
static String get checkCredit => "https://sms.kazumi.me/api/sms/check-credit";
|
||||
static String get getSender => "$server/auth/sms/getSender.php";
|
||||
static String get checkStatus => "https://sms.kazumi.me/api/sms/check-status";
|
||||
static String get updatePhoneInvalidSMSPassenger =>
|
||||
"$server/auth/sms/updatePhoneInvalidSMSPassenger.php";
|
||||
|
||||
static String detectCountryFromPhone(String phone) {
|
||||
final clean = phone.replaceAll(RegExp(r'[^0-9]'), '');
|
||||
if (clean.startsWith('962')) return 'Jordan';
|
||||
if (clean.startsWith('963')) return 'Syria';
|
||||
if (clean.startsWith('20')) return 'Egypt';
|
||||
if (clean.startsWith('07') || clean.startsWith('7')) return 'Jordan';
|
||||
if (clean.startsWith('09') || clean.startsWith('9')) return 'Syria';
|
||||
if (clean.startsWith('01') || clean.startsWith('1')) return 'Egypt';
|
||||
return '';
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
List<String> passengerMessages = [
|
||||
// --- رسائل العروض والتوفير ---
|
||||
"وفر على حالك: 🚗 أسعار سيرو نازلة كتير! شوف العروض الجديدة وفوت هلأ قبل ما تخلص. 🌟",
|
||||
"خصم اليوم: 🤔 لا تفوّت الفرصة! افتح تطبيق سيرو وشوف الأسعار يلي ما بتنعاد.",
|
||||
"عروض نارية: 🎁 اليوم خصم خاص إلك، احجز مشوارك الجاي بسعر ولا أروع!",
|
||||
"مشاوير اقتصادية: 💸 مع سيرو بتتحرك براحتك وبتدفع أقل، جرب وشوف الفرق!",
|
||||
|
||||
// --- رسائل السهولة والراحة ---
|
||||
"مشوار بكبسة زر: 📲 افتح تطبيق سيرو، وخلِّي السيارة توصلك لعندك بثواني.",
|
||||
"ارتاح من المواصلات: 🤔 خلّي سيرو يريحك من الانتظار والزحمة، وسيرو وين ما بدك.",
|
||||
"سيارتك جاهزة: 🚕 الكابتن ناطر طلبك، حدد وجهتك وخلّي الطريق علينا.",
|
||||
"رحلة مريحة: 🛣️ ارتاح بالكرسي، نحنا منهتم بكل التفاصيل من الباب للباب.",
|
||||
|
||||
// --- رسائل الأمان والثقة ---
|
||||
"رحلتك بأمان: 🙏 كل كباتنّا مدرّبين وملتزمين، وسلامتك أولويتنا.",
|
||||
"سافر وانت مطمّن: 🔒 مع سيرو كل شي موثوق ومسجّل لتكون مرتاح البال.",
|
||||
"شارك رحلتك: ❤️ فيك تبعت تفاصيل المشوار لأهلك أو رفقاتك بخطوة وحدة.",
|
||||
"سيرو بثقة: ✅ كل الرحلات مراقبة لتضمن تجربة آمنة ومريحة 100%.",
|
||||
|
||||
// --- رسائل تفاعلية ومناسبات ---
|
||||
"الويكند بلّش: 🥳 خلي مشاويرك مع الأصحاب علينا، وفر وقتك وفلوسك مع سيرو.",
|
||||
"رايح عالشغل: 💼 لا تتأخر، افتح التطبيق وخلي الكابتن يوصلك بلا تعب.",
|
||||
"الشمس مولّعة: ☀️ لا تمشي تحت الحر، خلي السيارة تجي لعندك.",
|
||||
"مستعجل: 🏃♂️ لا تقلق، سيرو أسرع طريق لتوصل عموعدك.",
|
||||
|
||||
// --- رسائل تشجيعية عامة ---
|
||||
"وين رايح اليوم؟ 🗺️ وين ما كانت وجهتك، سيرو بيخدمك بكل مكان وبأي وقت.",
|
||||
"جرب شي جديد: 🚘 شوف فئات السيارات الجديدة وخلي رحلتك أريح وأجمل.",
|
||||
"شكراً لاختيارك: ⭐ وجودك معنا بيفرحنا، ونتمنى دايماً تكون رحلتك مريحة وسعيدة.",
|
||||
"كل يوم جديد: ✨ فوت عالتطبيق وتابع آخر التحديثات والعروض يلي نازلة خصيصاً إلك."
|
||||
];
|
||||
@@ -0,0 +1,66 @@
|
||||
import 'package:get/get.dart';
|
||||
import 'package:intaleq_rider/constant/box_name.dart';
|
||||
import 'package:intaleq_rider/main.dart';
|
||||
|
||||
class PaymentTier {
|
||||
final double amount;
|
||||
final double bonus;
|
||||
const PaymentTier(this.amount, this.bonus);
|
||||
}
|
||||
|
||||
class PaymentTierConfig {
|
||||
final String currencyCode;
|
||||
final List<PaymentTier> tiers;
|
||||
const PaymentTierConfig({required this.currencyCode, required this.tiers});
|
||||
|
||||
static const Map<String, PaymentTierConfig> _configs = {
|
||||
'Jordan': PaymentTierConfig(
|
||||
currencyCode: 'JOD',
|
||||
tiers: [
|
||||
PaymentTier(5, 0),
|
||||
PaymentTier(10, 0.5),
|
||||
PaymentTier(20, 1),
|
||||
PaymentTier(50, 3),
|
||||
],
|
||||
),
|
||||
'Egypt': PaymentTierConfig(
|
||||
currencyCode: 'EGP',
|
||||
tiers: [
|
||||
PaymentTier(100, 0),
|
||||
PaymentTier(200, 10),
|
||||
PaymentTier(400, 20),
|
||||
PaymentTier(1000, 50),
|
||||
],
|
||||
),
|
||||
'Syria': PaymentTierConfig(
|
||||
currencyCode: 'SYP',
|
||||
tiers: [
|
||||
PaymentTier(100, 0),
|
||||
PaymentTier(200, 10),
|
||||
PaymentTier(400, 20),
|
||||
PaymentTier(1000, 50),
|
||||
],
|
||||
),
|
||||
};
|
||||
|
||||
static PaymentTierConfig get current {
|
||||
final country = box.read(BoxName.countryCode) ?? 'Jordan';
|
||||
return _configs[country] ?? _configs['Jordan']!;
|
||||
}
|
||||
|
||||
static List<PaymentTier> get currentTiers => current.tiers;
|
||||
static String get currentCurrency => current.currencyCode;
|
||||
|
||||
static String formatAmount(double v) {
|
||||
return v == v.roundToDouble() ? v.toInt().toString() : v.toStringAsFixed(1);
|
||||
}
|
||||
|
||||
static String tierLabel(int index) {
|
||||
final t = currentTiers[index];
|
||||
final cur = currentCurrency;
|
||||
if (t.bonus > 0) {
|
||||
return '${'Pay'.tr} ${formatAmount(t.amount)} $cur, ${'Get'.tr} ${formatAmount(t.amount + t.bonus)} $cur';
|
||||
}
|
||||
return '${formatAmount(t.amount)} $cur';
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,198 @@
|
||||
sefer cairo server
|
||||
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
listen [::]:80;
|
||||
listen 443 ssl http2;
|
||||
listen [::]:443 ssl http2;
|
||||
{{ssl_certificate_key}}
|
||||
{{ssl_certificate}}
|
||||
server_name www.sefer.click;
|
||||
return 301 https://sefer.click$request_uri;
|
||||
}
|
||||
server {
|
||||
listen 80;
|
||||
listen [::]:80;
|
||||
listen 443 ssl http2;
|
||||
listen [::]:443 ssl http2;
|
||||
{{ssl_certificate_key}}
|
||||
{{ssl_certificate}}
|
||||
server_name sefer.click www1.sefer.click;
|
||||
{{root}}
|
||||
{{nginx_access_log}}
|
||||
{{nginx_error_log}}
|
||||
# Set the maximum request body size
|
||||
client_max_body_size 10m;
|
||||
if ($scheme != "https") {
|
||||
rewrite ^ https://$host$uri permanent;
|
||||
}
|
||||
location ~ /.well-known {
|
||||
auth_basic off;
|
||||
allow all;
|
||||
}
|
||||
# Security headers
|
||||
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
|
||||
add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline';" always;
|
||||
add_header Referrer-Policy "no-referrer-when-downgrade" always;
|
||||
add_header Permissions-Policy "geolocation=(), microphone=()" always;
|
||||
add_header X-Frame-Options "SAMEORIGIN" always;
|
||||
add_header X-Content-Type-Options "nosniff" always;
|
||||
|
||||
{{settings}}
|
||||
location / {
|
||||
{{varnish_proxy_pass}}
|
||||
proxy_set_header Host $http_host;
|
||||
proxy_set_header X-Forwarded-Host $http_host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_hide_header X-Varnish;
|
||||
proxy_redirect off;
|
||||
proxy_max_temp_file_size 0;
|
||||
proxy_connect_timeout 720;
|
||||
proxy_send_timeout 720;
|
||||
proxy_read_timeout 720;
|
||||
proxy_buffer_size 128k;
|
||||
proxy_buffers 4 256k;
|
||||
proxy_busy_buffers_size 256k;
|
||||
proxy_temp_file_write_size 256k;
|
||||
}
|
||||
location ~* ^.+\.(css|js|jpg|jpeg|gif|png|ico|gz|svg|svgz|ttf|otf|woff|woff2|eot|mp4|ogg|ogv|webm|webp|zip|swf|map|mjs)$ {
|
||||
add_header Access-Control-Allow-Origin "*";
|
||||
expires max;
|
||||
access_log off;
|
||||
}
|
||||
location ~ /\.(ht|svn|git) {
|
||||
deny all;
|
||||
}
|
||||
if (-f $request_filename) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
server {
|
||||
listen 8080;
|
||||
listen [::]:8080;
|
||||
server_name sefer.click www1.sefer.click;
|
||||
{{root}}
|
||||
try_files $uri $uri/ /index.php?$args;
|
||||
index index.php index.html;
|
||||
location ~ \.php$ {
|
||||
include fastcgi_params;
|
||||
fastcgi_intercept_errors on;
|
||||
fastcgi_index index.php;
|
||||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||
try_files $uri =404;
|
||||
fastcgi_read_timeout 3600;
|
||||
fastcgi_send_timeout 3600;
|
||||
proxy_read_timeout 3600;
|
||||
proxy_send_timeout 3600;
|
||||
fastcgi_param HTTPS "on";
|
||||
fastcgi_param SERVER_PORT 443;
|
||||
fastcgi_pass 127.0.0.1:{{php_fpm_port}};
|
||||
fastcgi_param PHP_VALUE "{{php_settings}}";
|
||||
}
|
||||
if (-f $request_filename) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
wallet server
|
||||
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
listen [::]:80;
|
||||
listen 443 ssl http2;
|
||||
listen [::]:443 ssl http2;
|
||||
{{ssl_certificate_key}}
|
||||
{{ssl_certificate}}
|
||||
server_name www.seferpw.shop;
|
||||
return 301 https://seferpw.shop$request_uri;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
listen [::]:80;
|
||||
listen 443 ssl http2;
|
||||
listen [::]:443 ssl http2;
|
||||
{{ssl_certificate_key}}
|
||||
{{ssl_certificate}}
|
||||
server_name seferpw.shop www1.seferpw.shop 156.67.82.188;
|
||||
{{root}}
|
||||
{{nginx_access_log}}
|
||||
{{nginx_error_log}}
|
||||
# Set the maximum request body size
|
||||
client_max_body_size 10m;
|
||||
if ($scheme != "https") {
|
||||
rewrite ^ https://$host$uri permanent;
|
||||
}
|
||||
location ~ /.well-known {
|
||||
auth_basic off;
|
||||
allow all;
|
||||
}
|
||||
# Security headers
|
||||
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
|
||||
add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline';" always;
|
||||
add_header Referrer-Policy "no-referrer-when-downgrade" always;
|
||||
add_header Permissions-Policy "geolocation=(), microphone=()" always;
|
||||
add_header X-Frame-Options "SAMEORIGIN" always;
|
||||
add_header X-Content-Type-Options "nosniff" always;
|
||||
|
||||
{{settings}}
|
||||
location / {
|
||||
{{varnish_proxy_pass}}
|
||||
proxy_set_header Host $http_host;
|
||||
proxy_set_header X-Forwarded-Host $http_host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_hide_header X-Varnish;
|
||||
proxy_redirect off;
|
||||
proxy_max_temp_file_size 0;
|
||||
proxy_connect_timeout 720;
|
||||
proxy_send_timeout 720;
|
||||
proxy_read_timeout 720;
|
||||
proxy_buffer_size 128k;
|
||||
proxy_buffers 4 256k;
|
||||
proxy_busy_buffers_size 256k;
|
||||
proxy_temp_file_write_size 256k;
|
||||
}
|
||||
location ~* ^.+\.(css|js|jpg|jpeg|gif|png|ico|gz|svg|svgz|ttf|otf|woff|woff2|eot|mp4|ogg|ogv|webm|webp|zip|swf|map|mjs)$ {
|
||||
add_header Access-Control-Allow-Origin "*";
|
||||
expires max;
|
||||
access_log off;
|
||||
}
|
||||
location ~ /\.(ht|svn|git) {
|
||||
deny all;
|
||||
}
|
||||
if (-f $request_filename) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
server {
|
||||
listen 8080;
|
||||
listen [::]:8080;
|
||||
server_name seferpw.shop www1.seferpw.shop 156.67.82.188;
|
||||
{{root}}
|
||||
try_files $uri $uri/ /index.php?$args;
|
||||
index index.php index.html;
|
||||
location ~ \.php$ {
|
||||
include fastcgi_params;
|
||||
fastcgi_intercept_errors on;
|
||||
fastcgi_index index.php;
|
||||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||
try_files $uri =404;
|
||||
fastcgi_read_timeout 3600;
|
||||
fastcgi_send_timeout 3600;
|
||||
proxy_read_timeout 3600;
|
||||
proxy_send_timeout 3600;
|
||||
fastcgi_param HTTPS "on";
|
||||
fastcgi_param SERVER_PORT 443;
|
||||
fastcgi_pass 127.0.0.1:{{php_fpm_port}};
|
||||
fastcgi_param PHP_VALUE "{{php_settings}}";
|
||||
}
|
||||
if (-f $request_filename) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import '../main.dart';
|
||||
import 'box_name.dart';
|
||||
import 'colors.dart';
|
||||
|
||||
class AppStyle {
|
||||
static TextStyle get headTitle => TextStyle(
|
||||
fontWeight: FontWeight.bold,
|
||||
fontSize: box.read(BoxName.lang) == 'ar' ? 36 : 28,
|
||||
color: AppColor.accentColor,
|
||||
fontFamily: box.read(BoxName.lang) == 'ar'
|
||||
// ?GoogleFonts.markaziText().fontFamily
|
||||
? GoogleFonts.markaziText().fontFamily
|
||||
: GoogleFonts.inter().fontFamily);
|
||||
static TextStyle get headTitle2 => TextStyle(
|
||||
fontWeight: FontWeight.bold,
|
||||
fontSize: box.read(BoxName.lang) == 'ar' ? 24 : 20,
|
||||
color: AppColor.writeColor,
|
||||
fontFamily: box.read(BoxName.lang) == 'ar'
|
||||
? GoogleFonts.markaziText().fontFamily
|
||||
: GoogleFonts.inter().fontFamily);
|
||||
static TextStyle get title => TextStyle(
|
||||
fontWeight: FontWeight.normal,
|
||||
fontSize: box.read(BoxName.lang) == 'ar' ? 16 : 14,
|
||||
color: AppColor.writeColor,
|
||||
fontFamily: box.read(BoxName.lang) == 'ar'
|
||||
? GoogleFonts.markaziText().fontFamily
|
||||
: GoogleFonts.inter().fontFamily);
|
||||
static TextStyle get subtitle => TextStyle(
|
||||
fontWeight: FontWeight.bold,
|
||||
fontSize: box.read(BoxName.lang) == 'ar' ? 12 : 11,
|
||||
color: AppColor.writeColor,
|
||||
fontFamily: box.read(BoxName.lang) == 'ar'
|
||||
? GoogleFonts.markaziText().fontFamily
|
||||
: GoogleFonts.inter().fontFamily);
|
||||
static TextStyle get number => TextStyle(
|
||||
fontWeight: FontWeight.bold,
|
||||
fontSize: 14,
|
||||
color: AppColor.writeColor,
|
||||
fontFamily: 'digit');
|
||||
|
||||
static BoxDecoration get boxDecoration => BoxDecoration(
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
color: AppColor.accentColor.withOpacity(0.3),
|
||||
blurRadius: 5,
|
||||
offset: const Offset(2, 4)),
|
||||
BoxShadow(
|
||||
color: AppColor.accentColor.withOpacity(0.1),
|
||||
blurRadius: 5,
|
||||
offset: const Offset(-2, -2))
|
||||
],
|
||||
color: AppColor.secondaryColor,
|
||||
borderRadius: const BorderRadius.all(
|
||||
Radius.elliptical(15, 30),
|
||||
));
|
||||
static BoxDecoration get boxDecoration1 => BoxDecoration(
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
color: Colors.black.withOpacity(0.05),
|
||||
blurRadius: 10,
|
||||
offset: const Offset(0, 4)),
|
||||
BoxShadow(
|
||||
color: AppColor.primaryColor.withOpacity(0.02),
|
||||
blurRadius: 5,
|
||||
offset: const Offset(-2, -2))
|
||||
],
|
||||
color: AppColor.secondaryColor,
|
||||
borderRadius: const BorderRadius.all(
|
||||
Radius.elliptical(15, 30),
|
||||
),
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
// import 'package:intaleq_rider/env/env.dart';
|
||||
|
||||
class TableName {
|
||||
static const String placesFavorite = "placesFavorite";
|
||||
static const String recentLocations = "recentLocations";
|
||||
static const String carLocations = "carLocations";
|
||||
static const String driverOrdersRefuse = "driverOrdersRefuse";
|
||||
static const String rideLocation = "rideLocation";
|
||||
static const String faceDetectTimes = "faceDetectTimes";
|
||||
static const String captainNotification = "captainNotification";
|
||||
}
|
||||
|
||||
class Pasenger {
|
||||
static const String pasengerpas = 'MG6DEJZSczBT6Rx0jOlehQ==';
|
||||
static const String payMobApikey = 'payMobApikey';
|
||||
static const String initializationVector = 'initializationVector';
|
||||
static const String keyOfApp = 'keyOfApp';
|
||||
static const String FCM_PRIVATE_KEY_SIRO = 'FCM_PRIVATE_KEY_SIRO';
|
||||
}
|
||||
@@ -0,0 +1,83 @@
|
||||
import 'package:intaleq_maps/intaleq_maps.dart';
|
||||
|
||||
class UniversitiesPolygons {
|
||||
// AUC polygon points
|
||||
static const List<List<LatLng>> universityPolygons = [
|
||||
// AUC Polygon
|
||||
[
|
||||
LatLng(30.013431, 31.502572),
|
||||
LatLng(30.018469, 31.497478),
|
||||
LatLng(30.023158, 31.495870),
|
||||
LatLng(30.025084, 31.496781),
|
||||
LatLng(30.018701, 31.511393),
|
||||
LatLng(30.015312, 31.508310),
|
||||
],
|
||||
// Example polygon for University 'German University in Cairo (GUC)'
|
||||
[
|
||||
LatLng(29.984554, 31.437829),
|
||||
LatLng(29.990363, 31.438390),
|
||||
LatLng(29.990560, 31.445643),
|
||||
LatLng(29.984436, 31.445825),
|
||||
],
|
||||
//Future University in Egypt (FUE)
|
||||
[
|
||||
LatLng(30.025794, 31.490946),
|
||||
LatLng(30.028341, 31.491014),
|
||||
LatLng(30.028341, 31.492586),
|
||||
LatLng(30.025844, 31.492491),
|
||||
],
|
||||
//'British University in Egypt (BUE)'
|
||||
[
|
||||
LatLng(30.117423, 31.605834),
|
||||
LatLng(30.118224, 31.605543),
|
||||
LatLng(30.118649, 31.607361),
|
||||
LatLng(30.118932, 31.608033),
|
||||
LatLng(30.119592, 31.612159),
|
||||
LatLng(30.119372, 31.612958),
|
||||
LatLng(30.120017, 31.617102),
|
||||
LatLng(30.119435, 31.617193),
|
||||
],
|
||||
//Misr International University (MIU)
|
||||
[
|
||||
LatLng(30.166498, 31.491663),
|
||||
LatLng(30.171956, 31.491060),
|
||||
LatLng(30.172212, 31.495754),
|
||||
LatLng(30.167112, 31.496108),
|
||||
],
|
||||
// Canadian International College (CIC)
|
||||
[
|
||||
LatLng(30.034312, 31.428963),
|
||||
LatLng(30.035661, 31.429037),
|
||||
LatLng(30.036074, 31.430522),
|
||||
LatLng(30.036017, 31.431146),
|
||||
LatLng(30.034580, 31.431117),
|
||||
],
|
||||
// October 6 University (O6U)
|
||||
[
|
||||
LatLng(29.974102, 30.946934),
|
||||
LatLng(29.976620, 30.944925),
|
||||
LatLng(29.979848, 30.949832),
|
||||
LatLng(29.977372, 30.951950),
|
||||
],
|
||||
[
|
||||
LatLng(30.029312, 31.210046),
|
||||
LatLng(30.027124, 31.201393),
|
||||
LatLng(30.014523, 31.205087),
|
||||
LatLng(30.015416, 31.212218),
|
||||
LatLng(30.027325, 31.210661),
|
||||
],
|
||||
// Add polygons for 8 more universities...
|
||||
];
|
||||
|
||||
static const List<String> universityNames = [
|
||||
"American University in Cairo (AUC)",
|
||||
'German University in Cairo (GUC)',
|
||||
'Future University in Egypt (FUE)',
|
||||
'British University in Egypt (BUE)',
|
||||
'Misr International University (MIU)',
|
||||
'Canadian International College (CIC)',
|
||||
'October 6 University (O6U)',
|
||||
"Cairo University",
|
||||
// Add names for 8 more universities...
|
||||
];
|
||||
}
|
||||
Reference in New Issue
Block a user