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 1 year ago
commit 5e80bf6eb2

@ -1,4 +1,6 @@
import 'dart:io';
import 'package:car_provider_app/config/provider_routes.dart';
import 'package:car_provider_app/views/settings/branch/dealer/widget/add_phone_num_wiget.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:easy_localization/easy_localization.dart';
@ -12,12 +14,16 @@ import 'package:mc_common_app/repositories/user_repo.dart';
import 'package:mc_common_app/services/common_services.dart';
import 'package:mc_common_app/utils/enums.dart';
import 'package:provider/provider.dart';
import 'package:mc_common_app/services/firebase_service.dart';
import 'package:mc_common_app/utils/enums.dart';
import 'package:mc_common_app/utils/location/Location.dart';
import 'package:mc_common_app/utils/navigator.dart';
import 'package:mc_common_app/utils/shared_prefrence.dart';
import 'package:mc_common_app/utils/utils.dart';
import 'package:mc_common_app/view_models/ad_view_model.dart';
import 'package:mc_common_app/view_models/appointments_view_model.dart';
import 'package:mc_common_app/view_models/base_view_model.dart';
import 'package:mc_common_app/widgets/bottom_sheet.dart';
import 'package:mc_common_app/view_models/chat_view_model.dart';
import 'package:mc_common_app/view_models/requests_view_model.dart';
import 'package:mc_common_app/view_models/service_view_model.dart';
@ -127,4 +133,48 @@ class DashboardVM extends BaseVM {
// await subscriptionsVM.getSubscriptionBySP(AppState().getUser.data?.userInfo?.providerId.toString() ?? "", true);
// }
}
void checkUserSubscription(SubscriptionActionTypeEnum actionType, BuildContext context, {required Function() callback}) async {
switch (actionType) {
case SubscriptionActionTypeEnum.ads:
performCheckOnAds(context);
break;
case SubscriptionActionTypeEnum.users:
performCheckOnUsers(context, callback);
break;
case SubscriptionActionTypeEnum.branches:
performCheckOnBranches(context);
break;
}
}
void performCheckOnBranches(BuildContext context) async {
if (AppState().getproviderSubscription.isNotEmpty && AppState().getproviderSubscription.first.branchesRemaining! > 0) {
await navigateWithName(context, ProviderAppRoutes.defineBranch);
} else {
Utils.showToast("Upgrade your subscription to add more Branches.");
}
}
void performCheckOnAds(BuildContext context) async {
if (AppState().getproviderSubscription.isNotEmpty && AppState().getproviderSubscription.first.adsRemaining! > 0) {
await navigateWithName(context, ProviderAppRoutes.defineBranch);
} else {
Utils.showToast("Upgrade your subscription to add more Ads.");
}
}
void performCheckOnUsers(BuildContext context, Function() callBack) async {
if (AppState().getproviderSubscription.isNotEmpty && AppState().getproviderSubscription.first.subUsersRemaining! > 0) {
showMyBottomSheet(
context,
isDismissible: false,
child: const AddPhoneNumWidget(),
callBackFunc: callBack
);
} else {
Utils.showToast("Upgrade your subscription to add more Sub Users.");
}
}
}

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

@ -108,11 +108,15 @@ class _AddPhoneNumWidgetState extends State<AddPhoneNumWidget> {
if (_country != null) {
List<DropValue> dropList = [];
_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) {
countryCode = value.subValue;
}, list: dropList, hint: LocaleKeys.selectCountryCode.tr());
return DropdownField(
(DropValue value) {
countryCode = value.subValue;
},
list: dropList,
hint: countryCode.isNotEmpty ? countryCode.toString() : LocaleKeys.selectCountryCode.tr(),
);
} else {
return const Center(
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/view_models/service_view_model.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:easy_localization/easy_localization.dart';
// ignore: must_be_immutable
class AssignDealerUserSheet extends StatefulWidget {
String branchId;
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
State<AssignDealerUserSheet> createState() => _AssignDealerUserSheetState();
@ -41,11 +42,7 @@ class _AssignDealerUserSheetState extends State<AssignDealerUserSheet> {
}
getBranchUsers() {
provider.getAllProviderDealers({
// "id": services!.data![i].id,
"ServiceProviderBranchID": widget.branchId,
"ServiceProviderID": AppState().getUser.data?.userInfo?.providerId.toString() ?? ""
});
provider.getAllProviderDealers({"ServiceProviderBranchID": widget.branchId, "ServiceProviderID": AppState().getUser.data?.userInfo?.providerId.toString() ?? ""});
}
@override
@ -62,7 +59,7 @@ class _AssignDealerUserSheetState extends State<AssignDealerUserSheet> {
return const Center(child: CircularProgressIndicator());
} else {
if (model.allProviderDealersList.isEmpty) {
return Center(child: Text(LocaleKeys.noUserAddedYet.tr()));
return Center(child: Text(LocaleKeys.noUserAddedYet.tr()));
} else {
return ListView.separated(
itemBuilder: (context, index) {
@ -93,7 +90,7 @@ class _AssignDealerUserSheetState extends State<AssignDealerUserSheet> {
Utils.showLoading(context);
List<int> userIds = [];
for (var element in provider.allProviderDealersList) {
if (element.isBranchUser??false) {
if (element.isBranchUser ?? false) {
userIds.add(element.id);
}
}
@ -122,14 +119,9 @@ class _AssignDealerUserSheetState extends State<AssignDealerUserSheet> {
txtColor: MyColors.darkPrimaryColor,
isFilled: false,
onPressed: () {
showMyBottomSheet(
context,
isDismissible: false,
child: const AddPhoneNumWidget(),
callBackFunc: () {
getBranchUsers();
},
);
context.read<DashboardVM>().checkUserSubscription(SubscriptionActionTypeEnum.users, context, callback: () {
getBranchUsers();
});
},
)
],
@ -159,8 +151,8 @@ class _AssignDealerUserSheetState extends State<AssignDealerUserSheet> {
("${model.allProviderDealersList[index].firstName} ${model.allProviderDealersList[index].lastName}").toText(fontSize: 16, isBold: true),
8.height,
itemWidget("Role", "Dealer User"),
itemWidget("Email", model.allProviderDealersList[index].email??""),
itemWidget("Phone", model.allProviderDealersList[index].mobileNo??"")
itemWidget("Email", model.allProviderDealersList[index].email ?? ""),
itemWidget("Phone", model.allProviderDealersList[index].mobileNo ?? "")
],
),
),
@ -184,7 +176,7 @@ class _AssignDealerUserSheetState extends State<AssignDealerUserSheet> {
bool validation() {
bool isValid = false;
for (var element in provider.allProviderDealersList) {
if (element.isBranchUser??false) {
if (element.isBranchUser ?? false) {
isValid = true;
}
}

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

@ -69,17 +69,43 @@ class _MySubscriptionsPageState extends State<MySubscriptionsPage> {
backgroundColor: MyColors.darkIconColor,
isMainPage: model.mySubscriptionsBySp[index].isExpired ?? false,
onRenewSubscriptionClick: () async {
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);
}
print(sub.toJson());
showMyBottomSheet(
context,
child: UpgradePackageSheet(
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: () {
print("Upgrade");
print(sub.toJson());
// print(sub.toJson());
// showMyBottomSheet(
// context,
// child: UpgradePackageSheet(

@ -2,8 +2,10 @@ import 'dart:async';
import 'package:flutter/material.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/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/subscriptions_models/subscription_model.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/extensions/extensions_widget.dart';
import 'package:provider/provider.dart';
import 'package:easy_localization/easy_localization.dart';
class UpgradePackageSheet extends StatefulWidget {
Subscription subscription;
bool isRenew;
UpgradePackageSheet(this.subscription, {super.key});
UpgradePackageSheet(this.subscription, this.isRenew, {super.key});
@override
State<UpgradePackageSheet> createState() => _UpgradePackageSheetState();
@ -61,21 +65,21 @@ class _UpgradePackageSheetState extends State<UpgradePackageSheet> {
);
} else {
if (isNowSelected) {
price = model.newPrice.toString();
price = double.parse(model.newPrice).toStringAsFixed(2);
}
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start,
children: [
"When do you want to upgrade".toText(
(widget.isRenew ? LocaleKeys.whendoyouWanttoRenew.tr() : LocaleKeys.whendoyouWanttoUpgrade.tr()).toText(
fontSize: 18,
fontWeight: FontWeight.bold,
),
12.height,
packageItem(
"Now",
("Your subscription will upgrade now. Affecting from ${DateHelper.formatAsLongDate(widget.subscription.dateEnd ?? DateTime.now())}"),
model.newPrice.toString(),
LocaleKeys.nowVar.tr(),
(LocaleKeys.yourSubscriptionUpgradeAffectingFrom.tr() + " ${DateHelper.formatAsLongDate(widget.subscription.dateEnd ?? DateTime.now())}"),
double.parse(model.newPrice).toStringAsFixed(2),
isNowSelected,
).onPress(() {
setState(() {
@ -85,8 +89,8 @@ class _UpgradePackageSheetState extends State<UpgradePackageSheet> {
}),
6.height,
packageItem(
"Upgrade after current expiry",
("Your subscription will upgrade after you current subscription will end. Affecting from 27 January, 2024 ${DateHelper.formatAsLongDate(widget.subscription.dateEnd ?? DateTime.now())}"),
LocaleKeys.upgradeAfterCurrentExpiry.tr(),
(LocaleKeys.yourSubscriptionUpgradeCurrentSubscriptionAffectingFrom.tr() + " ${DateHelper.formatAsLongDate(widget.subscription.dateEnd ?? DateTime.now())}"),
widget.subscription.price.toString(),
isNowSelected ? false : true,
).onPress(() {
@ -97,30 +101,40 @@ class _UpgradePackageSheetState extends State<UpgradePackageSheet> {
}),
12.height,
ShowFillButton(
title: "Upgrade",
title: widget.isRenew ? LocaleKeys.renewVar.tr() : LocaleKeys.upgradeVar.tr(),
maxWidth: double.infinity,
onPressed: () async {
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);
if (widget.isRenew) {
Utils.showLoading(context);
MResponse response = await model.createSubscriptionOrder(widget.subscription.id ?? 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);
}
} else {
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(
// "Subscriptions is successfully updated");
return true;
} else {
Utils.showToast(mResponse.message.toString());
return false;
}
},
),
);
// Utils.showToast(
// "Subscriptions is successfully updated");
return true;
} else {
Utils.showToast(mResponse.message.toString());
return false;
}
},
),
);
}
},
),
],
@ -171,7 +185,7 @@ class _UpgradePackageSheetState extends State<UpgradePackageSheet> {
2.width,
Padding(
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),
5.width,
if (!providerSubscriptionModel.isExpired!)
Row(
children: [
Container(
height: 15,
width: 15,
decoration: BoxDecoration(
shape: BoxShape.circle,
color: MyColors.white,
),
alignment: Alignment.center,
child: Icon(
Icons.done,
size: 12,
color: MyColors.primaryColor,
),
),
5.width,
"Subscribed".toText(color: MyColors.white)
],
)
.toContainer(
backgroundColor: MyColors.primaryColor,
borderRadius: 30,
padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 7),
)
.onPress(() {
onUpgradeSubscriptionClick();
})
Row(
children: [
providerSubscriptionModel.isExpired!
? const SizedBox()
: Container(
height: 15,
width: 15,
decoration: const BoxDecoration(
shape: BoxShape.circle,
color: MyColors.white,
),
alignment: Alignment.center,
child: const Icon(
Icons.done,
size: 12,
color: MyColors.primaryColor,
),
),
5.width,
(providerSubscriptionModel.isExpired! ? "Expired" : "Subscribed").toText(color: providerSubscriptionModel.isExpired! ? MyColors.darkTextColor : MyColors.white)
],
)
.toContainer(
backgroundColor: providerSubscriptionModel.isExpired! ? MyColors.greyButtonColor : MyColors.primaryColor,
borderRadius: 30,
padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 7),
)
.onPress(() {
providerSubscriptionModel.isExpired! ? onRenewSubscriptionClick() : onUpgradeSubscriptionClick();
})
],
),
6.height,
@ -107,7 +109,7 @@ class MySubscriptionsCard extends StatelessWidget {
// ),
Row(
children: [
"Expires on ${DateHelper.formatAsDayMonthYear(providerSubscriptionModel.dateEnd)}".toText(
"${providerSubscriptionModel.isExpired! ? "Expired" : "Expires"} on ${DateHelper.formatAsDayMonthYear(providerSubscriptionModel.dateEnd)}".toText(
fontSize: 14,
color: textColor,
),

Loading…
Cancel
Save