Merge branch 'aamir_dev' into faiz_development

# Conflicts:
#	lib/view_models/dashboard_view_model.dart
#	lib/views/dashboard/dashboard_page.dart
#	lib/views/settings/branch/branch_list_page.dart
aamir_dev
Faiz Hashmi 2 years ago
commit d8f14ff21f

@ -1,15 +1,14 @@
import 'dart:convert'; import 'dart:async';
import 'dart:developer';
import 'package:car_provider_app/config/provider_routes.dart'; import 'package:car_provider_app/config/provider_routes.dart';
import 'package:car_provider_app/views/settings/branch/dealer/widget/assign_dealer_user_sheet.dart';
import 'package:mc_common_app/generated/locale_keys.g.dart'; import 'package:mc_common_app/generated/locale_keys.g.dart';
import 'package:mc_common_app/models/general_models/m_response.dart';
import 'package:mc_common_app/utils/utils.dart';
import 'package:mc_common_app/view_models/service_view_model.dart'; import 'package:mc_common_app/view_models/service_view_model.dart';
import 'package:car_provider_app/views/settings/services/services_list_page.dart'; import 'package:car_provider_app/views/settings/services/services_list_page.dart';
import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
import 'package:car_provider_app/view_models/branch_view_model.dart';
import 'package:mc_common_app/classes/app_state.dart'; import 'package:mc_common_app/classes/app_state.dart';
import 'package:mc_common_app/classes/consts.dart'; import 'package:mc_common_app/classes/consts.dart';
import 'package:mc_common_app/config/routes.dart'; import 'package:mc_common_app/config/routes.dart';
@ -20,23 +19,28 @@ import 'package:mc_common_app/models/provider_branches_models/profile/categroy.d
import 'package:mc_common_app/theme/colors.dart'; import 'package:mc_common_app/theme/colors.dart';
import 'package:mc_common_app/utils/enums.dart'; import 'package:mc_common_app/utils/enums.dart';
import 'package:mc_common_app/utils/navigator.dart'; import 'package:mc_common_app/utils/navigator.dart';
import 'package:mc_common_app/widgets/bottom_sheet.dart';
import 'package:mc_common_app/widgets/button/show_fill_button.dart'; import 'package:mc_common_app/widgets/button/show_fill_button.dart';
import 'package:mc_common_app/widgets/common_widgets/app_bar.dart'; import 'package:mc_common_app/widgets/common_widgets/app_bar.dart';
import 'package:mc_common_app/widgets/extensions/extensions_widget.dart'; import 'package:mc_common_app/widgets/extensions/extensions_widget.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../../../generated/locale_keys.g.dart';
class BranchDetailPage extends StatelessWidget { class BranchDetailPage extends StatelessWidget {
BranchDetailModel branchData; BranchDetailModel branchData;
BranchDetailPage(this.branchData); BranchDetailPage(this.branchData, {super.key});
List<CategoryData> categories = []; List<CategoryData> categories = [];
@override getBranchUsers(BuildContext context) {
Widget build(BuildContext context) { scheduleMicrotask(() {
context.read<ServiceVM>().getAllProviderDealers(
{"ServiceProviderBranchID": branchData.id.toString(), "ServiceProviderID": AppState().getUser.data?.userInfo?.providerId.toString() ?? ""},
);
});
}
filterBranch() {
branchData.branchServices!.forEach((element) { branchData.branchServices!.forEach((element) {
categories.add( categories.add(
CategoryData( CategoryData(
@ -56,6 +60,12 @@ class BranchDetailPage extends StatelessWidget {
}); });
} }
branchData.categories = categories; branchData.categories = categories;
}
@override
Widget build(BuildContext context) {
filterBranch();
getBranchUsers(context);
return Scaffold( return Scaffold(
appBar: CustomAppBar( appBar: CustomAppBar(
title: branchData.branchName.toString(), title: branchData.branchName.toString(),
@ -77,14 +87,11 @@ class BranchDetailPage extends StatelessWidget {
Row( Row(
children: [ children: [
Expanded( Expanded(
child: titleWidget(MyAssets.icBranches, child: titleWidget(MyAssets.icBranches, LocaleKeys.branchInfo.tr()),
LocaleKeys.branchInfo.tr()),
), ),
IconButton( IconButton(
onPressed: () { onPressed: () {
navigateWithName( navigateWithName(context, ProviderAppRoutes.defineBranch, arguments: branchData);
context, ProviderAppRoutes.defineBranch,
arguments: branchData);
}, },
icon: SvgPicture.asset(MyAssets.icEdit), icon: SvgPicture.asset(MyAssets.icEdit),
) )
@ -92,17 +99,11 @@ class BranchDetailPage extends StatelessWidget {
), ),
Column( Column(
children: [ children: [
showData("${LocaleKeys.country.tr()}:", showData("${LocaleKeys.country.tr()}:", branchData.countryName.toString()),
branchData.countryName.toString()), showData("${LocaleKeys.city.tr()}:", branchData.cityName.toString()),
showData("${LocaleKeys.city.tr()}:", showData("${LocaleKeys.branchName.tr()}:", branchData.branchName.toString()),
branchData.cityName.toString()), showData("${LocaleKeys.branchDescription.tr()}:", branchData.branchDescription.toString()),
showData("${LocaleKeys.branchName.tr()}:", showData("${LocaleKeys.address.tr()}:", branchData.address.toString()),
branchData.branchName.toString()),
showData(
"${LocaleKeys.branchDescription.tr()}:",
branchData.branchDescription.toString()),
showData("${LocaleKeys.address.tr()}:",
branchData.address.toString()),
], ],
), ),
], ],
@ -111,8 +112,7 @@ class BranchDetailPage extends StatelessWidget {
Container( Container(
width: double.infinity, width: double.infinity,
color: MyColors.darkIconColor, color: MyColors.darkIconColor,
padding: const EdgeInsets.symmetric( padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 8),
horizontal: 20, vertical: 8),
child: Row( child: Row(
children: [ children: [
const Icon( const Icon(
@ -122,11 +122,11 @@ class BranchDetailPage extends StatelessWidget {
8.width, 8.width,
Expanded( Expanded(
child: LocaleKeys.setorEditBranchSchedule.tr().toText( child: LocaleKeys.setorEditBranchSchedule.tr().toText(
isUnderLine: true, isUnderLine: true,
fontSize: 14, fontSize: 14,
isBold: true, isBold: true,
color: Colors.white, color: Colors.white,
), ),
), ),
const Icon( const Icon(
Icons.arrow_forward, Icons.arrow_forward,
@ -136,9 +136,7 @@ class BranchDetailPage extends StatelessWidget {
], ],
), ),
).onPress(() { ).onPress(() {
navigateWithName( navigateWithName(context, ProviderAppRoutes.schedulesList, arguments: branchData.id.toString());
context, ProviderAppRoutes.schedulesList,
arguments: branchData.id.toString());
}), }),
Row( Row(
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
@ -154,10 +152,10 @@ class BranchDetailPage extends StatelessWidget {
), ),
8.width, 8.width,
LocaleKeys.addServices.tr().toText( LocaleKeys.addServices.tr().toText(
fontSize: 14, fontSize: 14,
color: MyColors.lightTextColor, color: MyColors.lightTextColor,
isBold: true, isBold: true,
), ),
], ],
) )
.toContainer( .toContainer(
@ -165,8 +163,7 @@ class BranchDetailPage extends StatelessWidget {
backgroundColor: MyColors.darkWhiteColor, backgroundColor: MyColors.darkWhiteColor,
width: double.infinity, width: double.infinity,
paddingAll: 20, paddingAll: 20,
margin: margin: const EdgeInsets.only(left: 20, right: 20, top: 20),
const EdgeInsets.only(left: 20, right: 20, top: 20),
) )
.onPress(() { .onPress(() {
navigateWithName( navigateWithName(
@ -184,17 +181,12 @@ class BranchDetailPage extends StatelessWidget {
itemBuilder: (context, pIndex) { itemBuilder: (context, pIndex) {
return InkWell( return InkWell(
onTap: () { onTap: () {
categories[pIndex].branchId = categories[pIndex].branchId = branchData.id.toString();
branchData.id.toString(); categories[pIndex].branchName = branchData.branchName.toString();
categories[pIndex].branchName = navigateWithName(context, ProviderAppRoutes.servicesList, arguments: categories[pIndex]);
branchData.branchName.toString();
navigateWithName(
context, ProviderAppRoutes.servicesList,
arguments: categories[pIndex]);
}, },
child: Row( child: Row(
crossAxisAlignment: crossAxisAlignment: CrossAxisAlignment.start,
CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
Padding( Padding(
@ -208,19 +200,12 @@ class BranchDetailPage extends StatelessWidget {
8.width, 8.width,
Expanded( Expanded(
child: Column( child: Column(
crossAxisAlignment: crossAxisAlignment: CrossAxisAlignment.start,
CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
mainAxisAlignment:
MainAxisAlignment.start,
children: [ children: [
Row( Row(
children: [ children: [
categories[pIndex] categories[pIndex].categoryName.toString().toText(fontSize: 16, isBold: true),
.categoryName
.toString()
.toText(
fontSize: 16,
isBold: true),
// Padding( // Padding(
// padding: const EdgeInsets.all(4.0), // padding: const EdgeInsets.all(4.0),
// child: SvgPicture.asset( // child: SvgPicture.asset(
@ -230,46 +215,26 @@ class BranchDetailPage extends StatelessWidget {
// ), // ),
// ), // ),
], ],
mainAxisAlignment: mainAxisAlignment: MainAxisAlignment.spaceBetween,
MainAxisAlignment.spaceBetween,
), ),
Row( Row(
children: [ children: [
Expanded( Expanded(
child: ListView.builder( child: ListView.builder(
itemBuilder: itemBuilder: (context, index) {
(context, index) {
return Container( return Container(
child: (EasyLocalization.of( child: (EasyLocalization.of(context)?.currentLocale?.countryCode == "SA"
context) ? categories[pIndex].services![index].serviceDescriptionN.toString()
?.currentLocale : categories[pIndex].services![index].serviceDescription.toString())
?.countryCode ==
"SA"
? categories[
pIndex]
.services![
index]
.serviceDescriptionN
.toString()
: categories[
pIndex]
.services![
index]
.serviceDescription
.toString())
.toText( .toText(
fontSize: 12, fontSize: 12,
color: MyColors color: MyColors.lightTextColor,
.lightTextColor,
isBold: true, isBold: true,
), ),
); );
}, },
itemCount: categories[pIndex] itemCount: categories[pIndex].services?.length,
.services physics: const NeverScrollableScrollPhysics(),
?.length,
physics:
const NeverScrollableScrollPhysics(),
shrinkWrap: true, shrinkWrap: true,
padding: EdgeInsets.zero, padding: EdgeInsets.zero,
), ),
@ -282,18 +247,15 @@ class BranchDetailPage extends StatelessWidget {
), ),
), ),
], ],
mainAxisAlignment: mainAxisAlignment: MainAxisAlignment.end,
MainAxisAlignment.end, crossAxisAlignment: CrossAxisAlignment.end,
crossAxisAlignment:
CrossAxisAlignment.end,
) )
], ],
)), )),
], ],
).toContainer( ).toContainer(
width: double.infinity, width: double.infinity,
padding: const EdgeInsets.symmetric( padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8),
horizontal: 12, vertical: 8),
isShadowEnabled: true, isShadowEnabled: true,
), ),
); );
@ -302,8 +264,7 @@ class BranchDetailPage extends StatelessWidget {
physics: const NeverScrollableScrollPhysics(), physics: const NeverScrollableScrollPhysics(),
shrinkWrap: true, shrinkWrap: true,
padding: const EdgeInsets.all(20), padding: const EdgeInsets.all(20),
separatorBuilder: separatorBuilder: (BuildContext context, int index) {
(BuildContext context, int index) {
return 12.height; return 12.height;
}, },
), ),
@ -327,9 +288,16 @@ class BranchDetailPage extends StatelessWidget {
borderColor: MyColors.darkPrimaryColor, borderColor: MyColors.darkPrimaryColor,
txtColor: MyColors.darkPrimaryColor, txtColor: MyColors.darkPrimaryColor,
isFilled: false, isFilled: false,
onPressed: () { onPressed: () async {
navigateWithName(context, ProviderAppRoutes.dealerUser, showMyBottomSheet(
arguments: branchData.id.toString()); context,
child: AssignDealerUserSheet(
branchId: branchData.id.toString(),
callBackFunc: () {
getBranchUsers(context);
},
),
);
}, },
), ),
), ),
@ -340,6 +308,16 @@ class BranchDetailPage extends StatelessWidget {
); );
} }
bool validation(BuildContext context) {
bool isValid = false;
for (var element in context.read<ServiceVM>().allProviderDealersList) {
if (element.isBranchUser ?? false) {
isValid = true;
}
}
return isValid;
}
Widget titleWidget(String icon, String title) { Widget titleWidget(String icon, String title) {
return Row( return Row(
children: [ children: [

@ -108,11 +108,15 @@ class _AddPhoneNumWidgetState extends State<AddPhoneNumWidget> {
if (_country != null) { if (_country != null) {
List<DropValue> dropList = []; List<DropValue> dropList = [];
_country!.data?.forEach((element) { _country!.data?.forEach((element) {
dropList.add(DropValue(element.id ?? 0, (element.countryName ?? "") + " " + (element.countryCode ?? ""), element.countryCode ?? "")); dropList.add(DropValue(element.id ?? 0, "${element.countryName ?? ""} ${element.countryCode ?? ""}", element.countryCode ?? ""));
}); });
return DropdownField((DropValue value) { return DropdownField(
countryCode = value.subValue; (DropValue value) {
}, list: dropList, hint: LocaleKeys.selectCountryCode.tr()); countryCode = value.subValue;
},
list: dropList,
hint: countryCode.isNotEmpty ? countryCode.toString() : LocaleKeys.selectCountryCode.tr(),
);
} else { } else {
return const Center( return const Center(
child: CircularProgressIndicator(), child: CircularProgressIndicator(),

@ -1,3 +1,4 @@
import 'package:car_provider_app/view_models/dashboard_view_model.dart';
import 'package:mc_common_app/generated/locale_keys.g.dart'; import 'package:mc_common_app/generated/locale_keys.g.dart';
import 'package:mc_common_app/view_models/service_view_model.dart'; import 'package:mc_common_app/view_models/service_view_model.dart';
import 'package:car_provider_app/views/settings/branch/dealer/widget/add_phone_num_wiget.dart'; import 'package:car_provider_app/views/settings/branch/dealer/widget/add_phone_num_wiget.dart';
@ -16,13 +17,13 @@ import 'package:mc_common_app/widgets/extensions/extensions_widget.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.dart';
// ignore: must_be_immutable // ignore: must_be_immutable
class AssignDealerUserSheet extends StatefulWidget { class AssignDealerUserSheet extends StatefulWidget {
String branchId; String branchId;
VoidCallback callBackFunc; VoidCallback callBackFunc;
bool? isFromBranch;
AssignDealerUserSheet({required this.branchId, required this.callBackFunc, Key? key}) : super(key: key); AssignDealerUserSheet({required this.branchId, required this.callBackFunc, this.isFromBranch, Key? key}) : super(key: key);
@override @override
State<AssignDealerUserSheet> createState() => _AssignDealerUserSheetState(); State<AssignDealerUserSheet> createState() => _AssignDealerUserSheetState();
@ -41,11 +42,7 @@ class _AssignDealerUserSheetState extends State<AssignDealerUserSheet> {
} }
getBranchUsers() { getBranchUsers() {
provider.getAllProviderDealers({ provider.getAllProviderDealers({"ServiceProviderBranchID": widget.branchId, "ServiceProviderID": AppState().getUser.data?.userInfo?.providerId.toString() ?? ""});
// "id": services!.data![i].id,
"ServiceProviderBranchID": widget.branchId,
"ServiceProviderID": AppState().getUser.data?.userInfo?.providerId.toString() ?? ""
});
} }
@override @override
@ -62,7 +59,7 @@ class _AssignDealerUserSheetState extends State<AssignDealerUserSheet> {
return const Center(child: CircularProgressIndicator()); return const Center(child: CircularProgressIndicator());
} else { } else {
if (model.allProviderDealersList.isEmpty) { if (model.allProviderDealersList.isEmpty) {
return Center(child: Text(LocaleKeys.noUserAddedYet.tr())); return Center(child: Text(LocaleKeys.noUserAddedYet.tr()));
} else { } else {
return ListView.separated( return ListView.separated(
itemBuilder: (context, index) { itemBuilder: (context, index) {
@ -93,7 +90,7 @@ class _AssignDealerUserSheetState extends State<AssignDealerUserSheet> {
Utils.showLoading(context); Utils.showLoading(context);
List<int> userIds = []; List<int> userIds = [];
for (var element in provider.allProviderDealersList) { for (var element in provider.allProviderDealersList) {
if (element.isBranchUser??false) { if (element.isBranchUser ?? false) {
userIds.add(element.id); userIds.add(element.id);
} }
} }
@ -122,14 +119,9 @@ class _AssignDealerUserSheetState extends State<AssignDealerUserSheet> {
txtColor: MyColors.darkPrimaryColor, txtColor: MyColors.darkPrimaryColor,
isFilled: false, isFilled: false,
onPressed: () { onPressed: () {
showMyBottomSheet( context.read<DashboardVM>().checkUserSubscription(SubscriptionActionTypeEnum.users, context, callback: () {
context, getBranchUsers();
isDismissible: false, });
child: const AddPhoneNumWidget(),
callBackFunc: () {
getBranchUsers();
},
);
}, },
) )
], ],
@ -159,8 +151,8 @@ class _AssignDealerUserSheetState extends State<AssignDealerUserSheet> {
("${model.allProviderDealersList[index].firstName} ${model.allProviderDealersList[index].lastName}").toText(fontSize: 16, isBold: true), ("${model.allProviderDealersList[index].firstName} ${model.allProviderDealersList[index].lastName}").toText(fontSize: 16, isBold: true),
8.height, 8.height,
itemWidget("Role", "Dealer User"), itemWidget("Role", "Dealer User"),
itemWidget("Email", model.allProviderDealersList[index].email??""), itemWidget("Email", model.allProviderDealersList[index].email ?? ""),
itemWidget("Phone", model.allProviderDealersList[index].mobileNo??"") itemWidget("Phone", model.allProviderDealersList[index].mobileNo ?? "")
], ],
), ),
), ),
@ -184,7 +176,7 @@ class _AssignDealerUserSheetState extends State<AssignDealerUserSheet> {
bool validation() { bool validation() {
bool isValid = false; bool isValid = false;
for (var element in provider.allProviderDealersList) { for (var element in provider.allProviderDealersList) {
if (element.isBranchUser??false) { if (element.isBranchUser ?? false) {
isValid = true; isValid = true;
} }
} }

@ -82,7 +82,7 @@ class _SubscriptionsPageState extends State<SubscriptionsPage> {
} }
}, },
onUpgradeSubscriptionClick: () { onUpgradeSubscriptionClick: () {
showMyBottomSheet(context, child: UpgradePackageSheet(subcriptionsVM.tempSubscriptions[index])); showMyBottomSheet(context, child: UpgradePackageSheet(subcriptionsVM.tempSubscriptions[index], false));
}, },
onDowngradeSubscriptionClick: () { onDowngradeSubscriptionClick: () {
showMyBottomSheet(context, child: DowngradeDataSheet(subcriptionsVM.tempSubscriptions[index])); showMyBottomSheet(context, child: DowngradeDataSheet(subcriptionsVM.tempSubscriptions[index]));

@ -69,17 +69,43 @@ class _MySubscriptionsPageState extends State<MySubscriptionsPage> {
backgroundColor: MyColors.darkIconColor, backgroundColor: MyColors.darkIconColor,
isMainPage: model.mySubscriptionsBySp[index].isExpired ?? false, isMainPage: model.mySubscriptionsBySp[index].isExpired ?? false,
onRenewSubscriptionClick: () async { onRenewSubscriptionClick: () async {
Utils.showLoading(context); print(sub.toJson());
MResponse response = await model.createSubscriptionOrder(model.mySubscriptionsBySp[index].subscriptionID ?? 0, true, true); showMyBottomSheet(
Utils.hideLoading(context); context,
if (response.data != null) { child: UpgradePackageSheet(
context.read<PaymentVM>().updateOrderProviderSubscriptionId(id: response.data ?? 0); Subscription(
navigateWithName(context, AppRoutes.paymentMethodsView, arguments: PaymentTypes.subscription); id: sub.subscriptionID,
} isMyCurrentPackage: true,
isExpired: sub.isExpired,
isActive: sub.isActive,
isSubscribed: true,
name: sub.subscriptionName,
description: sub.subscriptionDescription,
numberOfAds: sub.totalAds ?? 0,
numberOfBranches: sub.totalBranches ?? 0,
numberOfSubUsers: sub.totalSubUsers ?? 0,
countryId: 1,
countryName: "KSA",
currency: "SAR",
price: 0,
dateEnd: sub.dateEnd,
dateStart: sub.dateStart,
serviceProviderId: sub.serviceProviderId,
subscriptionAppliedId: sub.serviceProviderId,
),
true),
);
// Utils.showLoading(context);
// MResponse response = await model.createSubscriptionOrder(model.mySubscriptionsBySp[index].subscriptionID ?? 0, true, true);
// Utils.hideLoading(context);
// if (response.data != null) {
// context.read<PaymentVM>().updateOrderProviderSubscriptionId(id: response.data ?? 0);
// navigateWithName(context, AppRoutes.paymentMethodsView, arguments: PaymentTypes.subscription);
// }
}, },
onUpgradeSubscriptionClick: () { onUpgradeSubscriptionClick: () {
print("Upgrade"); // print(sub.toJson());
print(sub.toJson());
// showMyBottomSheet( // showMyBottomSheet(
// context, // context,
// child: UpgradePackageSheet( // child: UpgradePackageSheet(

@ -2,8 +2,10 @@ import 'dart:async';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mc_common_app/classes/app_state.dart'; import 'package:mc_common_app/classes/app_state.dart';
import 'package:mc_common_app/config/routes.dart';
import 'package:mc_common_app/extensions/int_extensions.dart'; import 'package:mc_common_app/extensions/int_extensions.dart';
import 'package:mc_common_app/extensions/string_extensions.dart'; import 'package:mc_common_app/extensions/string_extensions.dart';
import 'package:mc_common_app/generated/locale_keys.g.dart';
import 'package:mc_common_app/models/general_models/m_response.dart'; import 'package:mc_common_app/models/general_models/m_response.dart';
import 'package:mc_common_app/models/subscriptions_models/subscription_model.dart'; import 'package:mc_common_app/models/subscriptions_models/subscription_model.dart';
import 'package:mc_common_app/theme/colors.dart'; import 'package:mc_common_app/theme/colors.dart';
@ -17,11 +19,13 @@ import 'package:mc_common_app/views/payments/payment_methods_view.dart';
import 'package:mc_common_app/widgets/button/show_fill_button.dart'; import 'package:mc_common_app/widgets/button/show_fill_button.dart';
import 'package:mc_common_app/widgets/extensions/extensions_widget.dart'; import 'package:mc_common_app/widgets/extensions/extensions_widget.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:easy_localization/easy_localization.dart';
class UpgradePackageSheet extends StatefulWidget { class UpgradePackageSheet extends StatefulWidget {
Subscription subscription; Subscription subscription;
bool isRenew;
UpgradePackageSheet(this.subscription, {super.key}); UpgradePackageSheet(this.subscription, this.isRenew, {super.key});
@override @override
State<UpgradePackageSheet> createState() => _UpgradePackageSheetState(); State<UpgradePackageSheet> createState() => _UpgradePackageSheetState();
@ -61,21 +65,21 @@ class _UpgradePackageSheetState extends State<UpgradePackageSheet> {
); );
} else { } else {
if (isNowSelected) { if (isNowSelected) {
price = model.newPrice.toString(); price = double.parse(model.newPrice).toStringAsFixed(2);
} }
return Column( return Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
children: [ children: [
"When do you want to upgrade".toText( (widget.isRenew ? LocaleKeys.whendoyouWanttoRenew.tr() : LocaleKeys.whendoyouWanttoUpgrade.tr()).toText(
fontSize: 18, fontSize: 18,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
), ),
12.height, 12.height,
packageItem( packageItem(
"Now", LocaleKeys.nowVar.tr(),
("Your subscription will upgrade now. Affecting from ${DateHelper.formatAsLongDate(widget.subscription.dateEnd ?? DateTime.now())}"), (LocaleKeys.yourSubscriptionUpgradeAffectingFrom.tr() + " ${DateHelper.formatAsLongDate(widget.subscription.dateEnd ?? DateTime.now())}"),
model.newPrice.toString(), double.parse(model.newPrice).toStringAsFixed(2),
isNowSelected, isNowSelected,
).onPress(() { ).onPress(() {
setState(() { setState(() {
@ -85,8 +89,8 @@ class _UpgradePackageSheetState extends State<UpgradePackageSheet> {
}), }),
6.height, 6.height,
packageItem( packageItem(
"Upgrade after current expiry", LocaleKeys.upgradeAfterCurrentExpiry.tr(),
("Your subscription will upgrade after you current subscription will end. Affecting from 27 January, 2024 ${DateHelper.formatAsLongDate(widget.subscription.dateEnd ?? DateTime.now())}"), (LocaleKeys.yourSubscriptionUpgradeCurrentSubscriptionAffectingFrom.tr() + " ${DateHelper.formatAsLongDate(widget.subscription.dateEnd ?? DateTime.now())}"),
widget.subscription.price.toString(), widget.subscription.price.toString(),
isNowSelected ? false : true, isNowSelected ? false : true,
).onPress(() { ).onPress(() {
@ -97,30 +101,40 @@ class _UpgradePackageSheetState extends State<UpgradePackageSheet> {
}), }),
12.height, 12.height,
ShowFillButton( ShowFillButton(
title: "Upgrade", title: widget.isRenew ? LocaleKeys.renewVar.tr() : LocaleKeys.upgradeVar.tr(),
maxWidth: double.infinity, maxWidth: double.infinity,
onPressed: () async { onPressed: () async {
navigateTo( if (widget.isRenew) {
context, Utils.showLoading(context);
PaymentMethodsView( MResponse response = await model.createSubscriptionOrder(widget.subscription.id ?? 0, true, true);
paymentType: PaymentTypes.subscription, Utils.hideLoading(context);
onTempContinue: () async { if (response.data != null) {
Utils.showLoading(context); context.read<PaymentVM>().updateOrderProviderSubscriptionId(id: response.data ?? 0);
MResponse mResponse = await model.payForSubscription(widget.subscription.id!, isNowSelected, false, price); navigateWithName(context, AppRoutes.paymentMethodsView, arguments: PaymentTypes.subscription);
Utils.hideLoading(context); }
if (mResponse.messageStatus == 1) { } else {
context.read<PaymentVM>().updateOrderProviderSubscriptionId(id: mResponse.data); navigateTo(
context,
PaymentMethodsView(
paymentType: PaymentTypes.subscription,
onTempContinue: () async {
Utils.showLoading(context);
MResponse mResponse = await model.payForSubscription(widget.subscription.id!, isNowSelected, false, price);
Utils.hideLoading(context);
if (mResponse.messageStatus == 1) {
context.read<PaymentVM>().updateOrderProviderSubscriptionId(id: mResponse.data);
// Utils.showToast( // Utils.showToast(
// "Subscriptions is successfully updated"); // "Subscriptions is successfully updated");
return true; return true;
} else { } else {
Utils.showToast(mResponse.message.toString()); Utils.showToast(mResponse.message.toString());
return false; return false;
} }
}, },
), ),
); );
}
}, },
), ),
], ],
@ -171,7 +185,7 @@ class _UpgradePackageSheetState extends State<UpgradePackageSheet> {
2.width, 2.width,
Padding( Padding(
padding: const EdgeInsets.only(bottom: 2), padding: const EdgeInsets.only(bottom: 2),
child: "SAR".toText(fontSize: 16, isBold: true, color: MyColors.lightTextColor), child: LocaleKeys.sar.tr().toText(fontSize: 16, isBold: true, color: MyColors.lightTextColor),
), ),
], ],
) )

@ -45,35 +45,37 @@ class MySubscriptionsCard extends StatelessWidget {
), ),
// if (providerSubscriptionModel.isActive!) "Current Package".toText(color: MyColors.primaryColor, fontWeight: FontWeight.bold), // if (providerSubscriptionModel.isActive!) "Current Package".toText(color: MyColors.primaryColor, fontWeight: FontWeight.bold),
5.width, 5.width,
if (!providerSubscriptionModel.isExpired!)
Row( Row(
children: [ children: [
Container( providerSubscriptionModel.isExpired!
height: 15, ? const SizedBox()
width: 15, : Container(
decoration: BoxDecoration( height: 15,
shape: BoxShape.circle, width: 15,
color: MyColors.white, decoration: const BoxDecoration(
), shape: BoxShape.circle,
alignment: Alignment.center, color: MyColors.white,
child: Icon( ),
Icons.done, alignment: Alignment.center,
size: 12, child: const Icon(
color: MyColors.primaryColor, Icons.done,
), size: 12,
), color: MyColors.primaryColor,
5.width, ),
"Subscribed".toText(color: MyColors.white) ),
], 5.width,
) (providerSubscriptionModel.isExpired! ? "Expired" : "Subscribed").toText(color: providerSubscriptionModel.isExpired! ? MyColors.darkTextColor : MyColors.white)
.toContainer( ],
backgroundColor: MyColors.primaryColor, )
borderRadius: 30, .toContainer(
padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 7), backgroundColor: providerSubscriptionModel.isExpired! ? MyColors.greyButtonColor : MyColors.primaryColor,
) borderRadius: 30,
.onPress(() { padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 7),
onUpgradeSubscriptionClick(); )
}) .onPress(() {
providerSubscriptionModel.isExpired! ? onRenewSubscriptionClick() : onUpgradeSubscriptionClick();
})
], ],
), ),
6.height, 6.height,
@ -107,7 +109,7 @@ class MySubscriptionsCard extends StatelessWidget {
// ), // ),
Row( Row(
children: [ children: [
"Expires on ${DateHelper.formatAsDayMonthYear(providerSubscriptionModel.dateEnd)}".toText( "${providerSubscriptionModel.isExpired! ? "Expired" : "Expires"} on ${DateHelper.formatAsDayMonthYear(providerSubscriptionModel.dateEnd)}".toText(
fontSize: 14, fontSize: 14,
color: textColor, color: textColor,
), ),

Loading…
Cancel
Save