diff --git a/lib/view_models/dashboard_view_model.dart b/lib/view_models/dashboard_view_model.dart index 472d190..6a8932c 100644 --- a/lib/view_models/dashboard_view_model.dart +++ b/lib/view_models/dashboard_view_model.dart @@ -2,7 +2,7 @@ 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:http/http.dart' as http; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/cupertino.dart'; import 'package:mc_common_app/classes/app_state.dart'; @@ -101,8 +101,9 @@ class DashboardVM extends BaseVM { await adVm.getVehicleTypes(); await adVm.getVehicleAdsDuration(); await requestsVM.getRequests(appType: AppType.provider); - await subscriptionsVM.getMySubscriptionsBySP(AppState().getUser.data?.userInfo?.providerId.toString() ?? ""); + // await subscriptionsVM.getMySubscriptionsBySP(AppState().getUser.data?.userInfo?.providerId.toString() ?? ""); await subscriptionsVM.getSubscriptionBySP(AppState().getUser.data?.userInfo?.providerId.toString() ?? "", true); + // await subscriptionsVM.getMySubscriptionsBySP(AppState().getUser.data?.userInfo?.providerId.toString() ?? ""); } void checkUserSubscription(SubscriptionActionTypeEnum actionType, BuildContext context, {required Function() callback}) async { @@ -128,6 +129,7 @@ class DashboardVM extends BaseVM { } void performCheckOnAds(BuildContext context) async { + //adsRemaining if (AppState().getproviderSubscription.isNotEmpty && AppState().getproviderSubscription.first.adsRemaining! > 0) { await navigateWithName(context, ProviderAppRoutes.defineBranch); } else { diff --git a/lib/views/subscriptions/my_subscritions_page.dart b/lib/views/subscriptions/my_subscritions_page.dart index 70416ec..7061b9c 100644 --- a/lib/views/subscriptions/my_subscritions_page.dart +++ b/lib/views/subscriptions/my_subscritions_page.dart @@ -11,6 +11,8 @@ 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/generated/locale_keys.g.dart'; +import 'package:mc_common_app/main.dart'; +import 'package:mc_common_app/models/general_models/generic_resp_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/utils/enums.dart'; @@ -36,7 +38,7 @@ class _MySubscriptionsPageState extends State { void initState() { super.initState(); scheduleMicrotask(() { - context.read().getMySubscriptionsBySP(AppState().getUser.data?.userInfo?.providerId.toString() ?? ""); + // context.read().getMySubscriptionsBySP(AppState().getUser.data?.userInfo?.providerId.toString() ?? ""); }); } @@ -63,7 +65,7 @@ class _MySubscriptionsPageState extends State { itemBuilder: (BuildContext context, int index) { var sub = model.mySubscriptionsBySp[index]; return MySubscriptionsCard( - model.mySubscriptionsBySp[index], + sub, isSubscribed: false, backgroundColor: MyColors.darkIconColor, isMainPage: model.mySubscriptionsBySp[index].isExpired ?? false, @@ -73,16 +75,16 @@ class _MySubscriptionsPageState extends State { context, child: UpgradePackageSheet( Subscription( - id: sub.subscriptionID, + id: sub.id, 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, + name: sub.name, + description: sub.description, + totalAds: sub.totalAds ?? 0, + totalBranches: sub.totalBranches ?? 0, + totalSubUsers: sub.totalSubUsers ?? 0, countryId: 1, countryName: "KSA", currency: "SAR", @@ -94,9 +96,9 @@ class _MySubscriptionsPageState extends State { ), true), ); - + // logger.i(model.mySubscriptionsBySp[index].toRawJson()); // Utils.showLoading(context); - // MResponse response = await model.createSubscriptionOrder(model.mySubscriptionsBySp[index].subscriptionID ?? 0, true, true); + // GenericRespModel response = await model.createSubscriptionOrder(model.mySubscriptionsBySp[index].subscriptionID ?? 0, true, true); // Utils.hideLoading(context); // if (response.data != null) { // context.read().updateOrderProviderSubscriptionId(id: response.data ?? 0); @@ -130,11 +132,6 @@ class _MySubscriptionsPageState extends State { // ); }, ); - // .onPress( - // () { - // // showMyBottomSheet(context, child: const SelectPackageSheet()); - // }, - // ); }, separatorBuilder: (BuildContext context, int index) { return 21.height; @@ -149,7 +146,6 @@ class _MySubscriptionsPageState extends State { ); }), ), - 21.height, ShowFillButton( title: LocaleKeys.modifyPackage.tr(), maxWidth: double.infinity, diff --git a/lib/views/subscriptions/sheet/upgrade_package_sheet.dart b/lib/views/subscriptions/sheet/upgrade_package_sheet.dart index d3fc280..6191895 100644 --- a/lib/views/subscriptions/sheet/upgrade_package_sheet.dart +++ b/lib/views/subscriptions/sheet/upgrade_package_sheet.dart @@ -58,6 +58,7 @@ class _UpgradePackageSheetState extends State { padding: const EdgeInsets.only(left: 21, right: 21, bottom: 21, top: 4), child: Consumer(builder: (context, model, _) { if (model.state == ViewState.busy) { + print(model.newPrice); return SizedBox( width: double.infinity, height: MediaQuery.of(context).size.height / 2, @@ -88,17 +89,18 @@ class _UpgradePackageSheetState extends State { }); }), 6.height, - packageItem( - LocaleKeys.upgradeAfterCurrentExpiry.tr(), - (LocaleKeys.yourSubscriptionUpgradeCurrentSubscriptionAffectingFrom.tr() + " ${DateHelper.formatAsLongDate(widget.subscription.dateEnd ?? DateTime.now())}"), - widget.subscription.price.toString(), - isNowSelected ? false : true, - ).onPress(() { - price = widget.subscription.price.toString(); - setState(() { - isNowSelected = false; - }); - }), + if (!AppState().getproviderSubscription.first.isExpired!) + packageItem( + LocaleKeys.upgradeAfterCurrentExpiry.tr(), + (LocaleKeys.yourSubscriptionUpgradeCurrentSubscriptionAffectingFrom.tr() + " ${DateHelper.formatAsLongDate(widget.subscription.dateEnd ?? DateTime.now())}"), + widget.subscription.price.toString(), + isNowSelected ? false : true, + ).onPress(() { + price = widget.subscription.price.toString(); + setState(() { + isNowSelected = false; + }); + }), 12.height, ShowFillButton( title: widget.isRenew ? LocaleKeys.renewVar.tr() : LocaleKeys.upgradeVar.tr(), diff --git a/lib/views/subscriptions/widget/all_subscriptions_card.dart b/lib/views/subscriptions/widget/all_subscriptions_card.dart index 259e35a..7371cb4 100644 --- a/lib/views/subscriptions/widget/all_subscriptions_card.dart +++ b/lib/views/subscriptions/widget/all_subscriptions_card.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:mc_common_app/classes/consts.dart'; import 'package:mc_common_app/extensions/int_extensions.dart'; import 'package:mc_common_app/extensions/string_extensions.dart'; import 'package:mc_common_app/models/subscriptions_models/subscription_model.dart'; @@ -29,13 +30,6 @@ class AllSubscriptionsCard extends StatelessWidget { @override Widget build(BuildContext context) { textColor = backgroundColor == null ? Colors.black : Colors.white; - // return InkWell( - // onTap: isSubscribed - // ? null - // : () { - // onRenewSubscriptionClick(); - // }, - // child: return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ @@ -44,39 +38,15 @@ class AllSubscriptionsCard extends StatelessWidget { Expanded( child: subscription.name.toString().toText( fontSize: 18, + letterSpacing: -0.43, color: textColor, ), ), - // if (isSubscribed) - // Row( - // children: [ - // Container( - // color: MyColors.white, - // padding: const EdgeInsets.all(2), - // child: const Icon( - // Icons.done, - // size: 8, - // color: MyColors.primaryColor, - // ), - // ).toCircle( - // borderRadius: 122, - // ), - // 6.width, - // "Subscribed".toText(color: Colors.white, isBold: true) - // ], - // ).toContainer( - // backgroundColor: MyColors.primaryColor, - // borderRadius: 20, - // padding: const EdgeInsets.symmetric( - // horizontal: 6, - // vertical: 3, - // ), - // ) - if (subscription.isMyCurrentPackage!) "Current Package".toText(color: MyColors.primaryColor, fontWeight: FontWeight.bold), + if (subscription.isMyCurrentPackage!) "Current Package".toText(color: MyColors.primaryColor, fontWeight: MyFonts.SemiBold), if (!subscription.isMyCurrentPackage!) (subscription.subscriptionTypeEnum)! .getStringSubscriptionTypeEnum() - .toText(color: Colors.white) + .toText(color: Colors.white, fontSize: 12) .toContainer( backgroundColor: MyColors.primaryColor, borderRadius: 30, @@ -95,9 +65,9 @@ class AllSubscriptionsCard extends StatelessWidget { ], ), 6.height, - showItem("Ads:", subscription.numberOfAds.toString()), - showItem("Users:", subscription.numberOfSubUsers.toString()), - showItem("Branches:", subscription.numberOfBranches.toString()), + showItem("Ads:", subscription.subscriptionAds.toString()), + showItem("Users:", subscription.subscriptionSubUsers.toString()), + showItem("Branches:", subscription.subscriptionBranches.toString()), 14.height, Row( crossAxisAlignment: CrossAxisAlignment.center, @@ -108,25 +78,20 @@ class AllSubscriptionsCard extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.end, children: [ - subscription.price.toString().toText( - fontSize: 26, - isBold: true, - color: textColor, - ), + subscription.price.toString().toText(fontSize: 29, isBold: true, color: textColor, letterSpacing: -1.77), 2.width, - "${subscription.currency}/Month".toText( - color: MyColors.lightTextColor, - fontSize: 16, - ), + "${subscription.currency}/Month".toText(color: MyColors.lightTextColor, fontSize: 16, letterSpacing: -0.64), ], ), ), - if (subscription.isMyCurrentPackage!) + if (subscription.subscriptionTypeEnum == SubscriptionTypeEnum.current && subscription.isRenewable!) Row( crossAxisAlignment: CrossAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center, children: [ - (subscription.subscriptionTypeEnum == SubscriptionTypeEnum.current) ? "Renew".toText() : (subscription.subscriptionTypeEnum)!.getStringSubscriptionTypeEnum().toText(), + (subscription.subscriptionTypeEnum == SubscriptionTypeEnum.current && subscription.isRenewable!) + ? "Renew".toText() + : (subscription.subscriptionTypeEnum)!.getStringSubscriptionTypeEnum().toText(), 6.width, const Icon( Icons.arrow_forward, @@ -153,15 +118,9 @@ class AllSubscriptionsCard extends StatelessWidget { Widget showItem(String title, String value) { return Row( children: [ - title.toText( - fontSize: 14, - color: textColor, - ), + title.toText(fontSize: 14, color: textColor, letterSpacing: -0.56, fontWeight: MyFonts.Medium), 2.width, - value.toText( - fontSize: 14, - color: textColor, - ), + value.toText(fontSize: 14, color: textColor, letterSpacing: -0.56, fontWeight: MyFonts.Medium), ], ); } diff --git a/lib/views/subscriptions/widget/my_subscriptions_card.dart b/lib/views/subscriptions/widget/my_subscriptions_card.dart index ca81db6..60897a0 100644 --- a/lib/views/subscriptions/widget/my_subscriptions_card.dart +++ b/lib/views/subscriptions/widget/my_subscriptions_card.dart @@ -1,6 +1,8 @@ import 'package:flutter/material.dart'; +import 'package:mc_common_app/classes/consts.dart'; import 'package:mc_common_app/extensions/int_extensions.dart'; import 'package:mc_common_app/extensions/string_extensions.dart'; +import 'package:mc_common_app/main.dart'; import 'package:mc_common_app/models/subscriptions_models/provider_subscription_model.dart'; import 'package:mc_common_app/models/subscriptions_models/subscription_model.dart'; import 'package:mc_common_app/theme/colors.dart'; @@ -9,7 +11,7 @@ import 'package:mc_common_app/utils/enums.dart'; import 'package:mc_common_app/widgets/extensions/extensions_widget.dart'; class MySubscriptionsCard extends StatelessWidget { - ProviderSubscriptionModel providerSubscriptionModel; + Subscription pvm; bool isSubscribed; Color? backgroundColor; late Color textColor; @@ -17,20 +19,12 @@ class MySubscriptionsCard extends StatelessWidget { Function onUpgradeSubscriptionClick; bool isMainPage; - MySubscriptionsCard(this.providerSubscriptionModel, - {Key? key, this.isSubscribed = false, this.backgroundColor, required this.onRenewSubscriptionClick, required this.onUpgradeSubscriptionClick, this.isMainPage = true}) + MySubscriptionsCard(this.pvm, {Key? key, this.isSubscribed = false, this.backgroundColor, required this.onRenewSubscriptionClick, required this.onUpgradeSubscriptionClick, this.isMainPage = true}) : super(key: key); @override Widget build(BuildContext context) { textColor = backgroundColor == null ? Colors.black : Colors.white; - // return InkWell( - // onTap: isSubscribed - // ? null - // : () { - // onRenewSubscriptionClick(); - // }, - // child: return Column( crossAxisAlignment: CrossAxisAlignment.start, @@ -38,17 +32,13 @@ class MySubscriptionsCard extends StatelessWidget { Row( children: [ Expanded( - child: providerSubscriptionModel.subscriptionName.toString().toText( - fontSize: 18, - color: textColor, - ), + child: pvm.name.toString().toText(fontSize: 18, color: textColor, letterSpacing: -0.43), ), // if (providerSubscriptionModel.isActive!) "Current Package".toText(color: MyColors.primaryColor, fontWeight: FontWeight.bold), 5.width, - Row( children: [ - providerSubscriptionModel.isExpired! + pvm.isExpired! ? const SizedBox() : Container( height: 15, @@ -65,65 +55,55 @@ class MySubscriptionsCard extends StatelessWidget { ), ), 5.width, - (providerSubscriptionModel.isExpired! ? "Expired" : "Subscribed").toText(color: providerSubscriptionModel.isExpired! ? MyColors.darkTextColor : MyColors.white) + (pvm.isExpired! ? "Expired" : "Subscribed").toText(color: pvm.isExpired! ? MyColors.darkTextColor : MyColors.white) ], ) .toContainer( - backgroundColor: providerSubscriptionModel.isExpired! ? MyColors.greyButtonColor : MyColors.primaryColor, + backgroundColor: pvm.isExpired! ? MyColors.greyButtonColor : MyColors.primaryColor, borderRadius: 30, padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 7), ) .onPress(() { - providerSubscriptionModel.isExpired! ? onRenewSubscriptionClick() : onUpgradeSubscriptionClick(); + pvm.isExpired! ? onRenewSubscriptionClick() : onUpgradeSubscriptionClick(); }) ], ), 6.height, - showItem("Ads:", providerSubscriptionModel.adsRemaining.toString()), - showItem("Users:", providerSubscriptionModel.subUsersRemaining.toString()), - showItem("Branches:", providerSubscriptionModel.branchesRemaining.toString()), + showItem("Ads:", "${pvm.adsRemaining.toString()} of ${pvm.totalAds.toString()} remaining"), + showItem("Users:", "${pvm.subUsersRemaining.toString()} of ${pvm.totalSubUsers.toString()} remaining"), + showItem("Branches:", "${pvm.branchesRemaining.toString()} of ${pvm.totalBranches.toString()} remaining"), 14.height, - // Row( - // crossAxisAlignment: CrossAxisAlignment.center, - // mainAxisAlignment: MainAxisAlignment.start, - // children: [ - // Expanded( - // child: Row( - // mainAxisAlignment: MainAxisAlignment.start, - // crossAxisAlignment: CrossAxisAlignment.end, - // children: [ - // "10000".toString().toText( - // fontSize: 26, - // isBold: true, - // color: textColor, - // ), - // 2.width, - // " SAR/Month".toText( - // color: MyColors.lightTextColor, - // fontSize: 16, - // ), - // ], - // ), - // ), - // ], - // ), Row( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.start, children: [ - "${providerSubscriptionModel.isExpired! ? "Expired" : "Expires"} on ${DateHelper.formatAsDayMonthYear(providerSubscriptionModel.dateEnd)}".toText( - fontSize: 14, - color: textColor, + Expanded( + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + pvm.price.toString().toText( + fontSize: 29, + isBold: true, + letterSpacing: -1.77, + color: textColor, + ), + 2.width, + " SAR/Month".toText(color: MyColors.lightTextColor, fontSize: 16, letterSpacing: -0.64), + ], + ), ), - if (!providerSubscriptionModel.isTrialSubscription!) + ], + ), + Row( + children: [ + "${pvm.isExpired! ? "Expired" : "Expires"} on ${DateHelper.formatAsDayMonthYear(pvm.dateEnd)}".toText(fontSize: 14, letterSpacing: -0.56, color: textColor, fontWeight: MyFonts.Medium), + if (pvm.isRenewable!) Row( children: [ 6.width, "Renew".toText( - color: MyColors.primaryColor, - fontSize: 14, - textDecoration: TextDecoration.underline, - decorationColor: MyColors.primaryColor, - isBold: true, - ), + color: MyColors.primaryColor, fontSize: 14, letterSpacing: -0.56, textDecoration: TextDecoration.underline, decorationColor: MyColors.primaryColor, fontWeight: MyFonts.Medium), ], ).onPress(() { onRenewSubscriptionClick(); @@ -145,10 +125,7 @@ class MySubscriptionsCard extends StatelessWidget { Widget showItem(String title, String value) { return Row( children: [ - title.toText( - fontSize: 14, - color: textColor, - ), + title.toText(fontSize: 14, color: textColor, letterSpacing: -0.56), 2.width, value.toText( fontSize: 14,