134 lines
6.6 KiB
Python
134 lines
6.6 KiB
Python
import sys
|
|
import re
|
|
|
|
def refactor_controller(filepath):
|
|
with open(filepath, 'r') as f:
|
|
content = f.read()
|
|
|
|
# 1. Change double to String for pricing variables
|
|
content = re.sub(r'double totalPassengerSpeed = 0;', "String totalPassengerSpeed = '0';", content)
|
|
content = re.sub(r'double totalPassengerBalash = 0;', "String totalPassengerBalash = '0';", content)
|
|
content = re.sub(r'double totalPassengerComfort = 0;', "String totalPassengerComfort = '0';", content)
|
|
content = re.sub(r'double totalPassengerElectric = 0;', "String totalPassengerElectric = '0';", content)
|
|
content = re.sub(r'double totalPassengerLady = 0;', "String totalPassengerLady = '0';", content)
|
|
content = re.sub(r'double totalPassengerScooter = 0;', "String totalPassengerScooter = '0';", content)
|
|
content = re.sub(r'double totalPassengerVan = 0;', "String totalPassengerVan = '0';", content)
|
|
content = re.sub(r'double totalPassengerRayehGai = 0;', "String totalPassengerRayehGai = '0';", content)
|
|
content = re.sub(r'double totalPassengerRayehGaiComfort = 0;', "String totalPassengerRayehGaiComfort = '0';", content)
|
|
content = re.sub(r'double totalPassengerRayehGaiBalash = 0;', "String totalPassengerRayehGaiBalash = '0';", content)
|
|
|
|
content = re.sub(r'double totalPassenger = 0;', "String totalPassenger = '0';", content)
|
|
content = re.sub(r'double totalCostPassenger = 0;', "String totalCostPassenger = '0';", content)
|
|
|
|
# 2. Replace bottomSheet method
|
|
bottom_sheet_pattern = re.compile(r'Future bottomSheet\(\) async \{.*?(?=update\(\);\n\s*mapEngine\.changeBottomSheetShown\(forceValue: true\);\n\s*\})', re.DOTALL)
|
|
|
|
new_bottom_sheet = '''Future bottomSheet() async {
|
|
durationToAdd = Duration(seconds: durationToRide);
|
|
hours = durationToAdd.inHours;
|
|
minutes = (durationToAdd.inMinutes % 60).round();
|
|
final DateTime currentTime = DateTime.now();
|
|
newTime = currentTime.add(durationToAdd);
|
|
|
|
try {
|
|
final res = await CRUD().post(link: AppLink.getPrices, payload: {
|
|
'distance': distance.toString(),
|
|
'durationToRide': durationToRide.toString(),
|
|
'startNameAddress': startNameAddress,
|
|
'endNameAddress': endNameAddress,
|
|
'destLat': myDestination.latitude.toString(),
|
|
'destLng': myDestination.longitude.toString(),
|
|
'passengerLat': newMyLocation.latitude.toString(),
|
|
'passengerLng': newMyLocation.longitude.toString(),
|
|
'walletVal': box.read(BoxName.passengerWalletTotal)?.toString() ?? '0',
|
|
'activeMenuWaypointCount': activeMenuWaypointCount.toString(),
|
|
});
|
|
|
|
if (res != 'failure') {
|
|
var response = jsonDecode(res);
|
|
if (response['status'] == 'success') {
|
|
var data = response['data'];
|
|
totalPassengerSpeed = data['totalPassengerSpeed']?.toString() ?? '0';
|
|
totalPassengerBalash = data['totalPassengerBalash']?.toString() ?? '0';
|
|
totalPassengerComfort = data['totalPassengerComfort']?.toString() ?? '0';
|
|
totalPassengerElectric = data['totalPassengerElectric']?.toString() ?? '0';
|
|
totalPassengerLady = data['totalPassengerLady']?.toString() ?? '0';
|
|
totalPassengerScooter = data['totalPassengerScooter']?.toString() ?? '0';
|
|
totalPassengerVan = data['totalPassengerVan']?.toString() ?? '0';
|
|
totalPassengerRayehGai = data['totalPassengerRayehGai']?.toString() ?? '0';
|
|
totalPassengerRayehGaiComfort = data['totalPassengerRayehGaiComfort']?.toString() ?? '0';
|
|
totalPassengerRayehGaiBalash = data['totalPassengerRayehGaiBalash']?.toString() ?? '0';
|
|
|
|
totalPassenger = totalPassengerSpeed;
|
|
totalCostPassenger = totalPassenger;
|
|
}
|
|
}
|
|
} catch (e) {
|
|
Log.print("Error fetching prices: $e");
|
|
}
|
|
|
|
'''
|
|
content = bottom_sheet_pattern.sub(new_bottom_sheet, content)
|
|
|
|
# 3. Replace applyPromoCodeToPassenger
|
|
promo_pattern = re.compile(r'void applyPromoCodeToPassenger\(BuildContext context\) async \{.*?(?=Get\.back\(\);\n\s*await Future\.delayed\(const Duration\(milliseconds: 120\)\);\n\s*\} catch \(e\) \{)', re.DOTALL)
|
|
|
|
new_promo = '''void applyPromoCodeToPassenger(BuildContext context) async {
|
|
if (promoTaken == true) {
|
|
MyDialog().getDialog('Promo Already Used'.tr, 'You have already used this promo code.'.tr, () => Get.back());
|
|
return;
|
|
}
|
|
if (!promoFormKey.currentState!.validate()) return;
|
|
|
|
try {
|
|
final res = await CRUD().post(link: AppLink.getPrices, payload: {
|
|
'distance': distance.toString(),
|
|
'durationToRide': durationToRide.toString(),
|
|
'startNameAddress': startNameAddress,
|
|
'endNameAddress': endNameAddress,
|
|
'destLat': myDestination.latitude.toString(),
|
|
'destLng': myDestination.longitude.toString(),
|
|
'passengerLat': newMyLocation.latitude.toString(),
|
|
'passengerLng': newMyLocation.longitude.toString(),
|
|
'walletVal': box.read(BoxName.passengerWalletTotal)?.toString() ?? '0',
|
|
'activeMenuWaypointCount': activeMenuWaypointCount.toString(),
|
|
'promo_code': promo.text,
|
|
});
|
|
|
|
if (res != 'failure') {
|
|
var response = jsonDecode(res);
|
|
if (response['status'] == 'success') {
|
|
var data = response['data'];
|
|
totalPassengerSpeed = data['totalPassengerSpeed']?.toString() ?? '0';
|
|
totalPassengerBalash = data['totalPassengerBalash']?.toString() ?? '0';
|
|
totalPassengerComfort = data['totalPassengerComfort']?.toString() ?? '0';
|
|
totalPassengerElectric = data['totalPassengerElectric']?.toString() ?? '0';
|
|
totalPassengerLady = data['totalPassengerLady']?.toString() ?? '0';
|
|
totalPassengerScooter = data['totalPassengerScooter']?.toString() ?? '0';
|
|
totalPassengerVan = data['totalPassengerVan']?.toString() ?? '0';
|
|
totalPassengerRayehGai = data['totalPassengerRayehGai']?.toString() ?? '0';
|
|
totalPassengerRayehGaiComfort = data['totalPassengerRayehGaiComfort']?.toString() ?? '0';
|
|
totalPassengerRayehGaiBalash = data['totalPassengerRayehGaiBalash']?.toString() ?? '0';
|
|
|
|
promoTaken = true;
|
|
update();
|
|
|
|
Confetti.launch(
|
|
context,
|
|
options: const ConfettiOptions(particleCount: 100, spread: 70, y: 0.6),
|
|
);
|
|
} else {
|
|
MyDialog().getDialog('Promo Error'.tr, response['message']?.toString() ?? 'Invalid Promo'.tr, () => Get.back());
|
|
return;
|
|
}
|
|
}
|
|
'''
|
|
content = promo_pattern.sub(new_promo, content)
|
|
|
|
with open(filepath, 'w') as f:
|
|
f.write(content)
|
|
print(f"Refactored {filepath}")
|
|
|
|
if __name__ == '__main__':
|
|
refactor_controller(sys.argv[1])
|