From 96a96900ef207432f676f1ba2da2c12543132a88 Mon Sep 17 00:00:00 2001 From: Faiz Hashmi Date: Wed, 28 Aug 2024 09:33:49 +0300 Subject: [PATCH] Branches Fix --- lib/config/provider_routes.dart | 4 +- lib/view_models/items_view_model.dart | 10 +- lib/view_models/schedule_view_model.dart | 24 +- .../add_new_service_appointment_page.dart | 48 +-- .../appoinments/merge_appointment_page.dart | 74 +--- .../dashboard/fragments/home_fragment.dart | 2 +- .../dashboard/widget/my_service_provider.dart | 25 +- lib/views/requests/request_detail_page.dart | 43 +- .../settings/branch/branch_detail_page.dart | 369 ++++++++++-------- .../settings/branch/branch_list_page.dart | 130 +++--- .../settings/branch/create_branch_view.dart | 250 ++++++++++++ .../branch/dealer/dealer_user_page.dart | 4 +- .../widget/assign_dealer_user_sheet.dart | 27 +- .../settings/branch/define_branch_page.dart | 230 ----------- .../settings/schedule/add_schedules_page.dart | 12 +- .../schedule/schedules_list_page.dart | 4 +- .../settings/services/create_item_page.dart | 7 +- .../services/create_services_page3.dart | 48 +-- .../duplication/matched_services_page.dart | 13 +- .../subscriptions/all_subscriptions_page.dart | 6 +- .../subscriptions/my_subscritions_page.dart | 1 - .../sheet/downgrade_data_sheet.dart | 58 +-- .../sheet/upgrade_package_sheet.dart | 24 +- 23 files changed, 697 insertions(+), 716 deletions(-) create mode 100644 lib/views/settings/branch/create_branch_view.dart delete mode 100644 lib/views/settings/branch/define_branch_page.dart diff --git a/lib/config/provider_routes.dart b/lib/config/provider_routes.dart index 955d792..c97a936 100644 --- a/lib/config/provider_routes.dart +++ b/lib/config/provider_routes.dart @@ -7,7 +7,7 @@ import 'package:car_provider_app/views/requests/request_detail_page.dart'; import 'package:car_provider_app/views/requests/send_offer_page.dart'; import 'package:car_provider_app/views/settings/branch/branch_detail_page.dart'; import 'package:car_provider_app/views/settings/branch/dealer/dealer_user_page.dart'; -import 'package:car_provider_app/views/settings/branch/define_branch_page.dart'; +import 'package:car_provider_app/views/settings/branch/create_branch_view.dart'; import 'package:car_provider_app/views/settings/schedule/add_schedules_page.dart'; import 'package:car_provider_app/views/settings/schedule/schedules_list_page.dart'; import 'package:car_provider_app/views/settings/services/create_item_page.dart'; @@ -80,7 +80,7 @@ class ProviderAppRoutes { // defineLicense: (context) => DefineLicensePage(), dealershipSetting: (context) => DealershipView(), // branchList: (context) => BranchListPage(), - defineBranch: (context) => DefineBranchPage((ModalRoute.of(context)!.settings.arguments) == null ? null : (ModalRoute.of(context)!.settings.arguments as BranchDetailModel)), + defineBranch: (context) => CreateBranchView((ModalRoute.of(context)!.settings.arguments) == null ? null : (ModalRoute.of(context)!.settings.arguments as BranchDetailModel)), branchDetail: (context) => BranchDetailPage(ModalRoute.of(context)!.settings.arguments as BranchDetailModel), //Appointments diff --git a/lib/view_models/items_view_model.dart b/lib/view_models/items_view_model.dart index 7f2bfda..0215567 100644 --- a/lib/view_models/items_view_model.dart +++ b/lib/view_models/items_view_model.dart @@ -1,9 +1,9 @@ import 'dart:io'; import 'package:mc_common_app/generated/locale_keys.g.dart'; +import 'package:mc_common_app/models/general_models/generic_resp_model.dart'; import 'package:mc_common_app/repositories/items_repo.dart'; import 'package:flutter/cupertino.dart'; -import 'package:mc_common_app/models/general_models/m_response.dart'; import 'package:mc_common_app/models/services_models/item_model.dart'; import 'package:mc_common_app/services/common_services.dart'; import 'package:mc_common_app/utils/enums.dart'; @@ -40,8 +40,8 @@ class ItemsVM extends BaseVM { return null; } - Future createServiceItem(Map map) async { - MResponse response = await itemsRepo.createServiceItems(map); + Future createServiceItem(Map map) async { + GenericRespModel response = await itemsRepo.createServiceItems(map); return response; } @@ -68,8 +68,8 @@ class ItemsVM extends BaseVM { return serviceItems; } - Future updateServiceItem(Map map) async { - MResponse response = await itemsRepo.updateServiceItem(map); + Future updateServiceItem(Map map) async { + GenericRespModel response = await itemsRepo.updateServiceItem(map); return response; } } diff --git a/lib/view_models/schedule_view_model.dart b/lib/view_models/schedule_view_model.dart index 5c079b3..95177d5 100644 --- a/lib/view_models/schedule_view_model.dart +++ b/lib/view_models/schedule_view_model.dart @@ -1,10 +1,8 @@ -import 'package:mc_common_app/main.dart'; import 'package:mc_common_app/models/appointments_models/schedule_model.dart'; -import 'package:mc_common_app/models/general_models/m_response.dart'; +import 'package:mc_common_app/models/general_models/generic_resp_model.dart'; import 'package:mc_common_app/models/provider_branches_models/profile/services.dart'; import 'package:mc_common_app/repositories/schedule_repo.dart'; import 'package:car_provider_app/views/settings/schedule/widgets/chips_picker_item.dart'; - import 'package:mc_common_app/utils/enums.dart'; import 'package:mc_common_app/utils/utils.dart'; import 'package:mc_common_app/view_models/base_view_model.dart'; @@ -33,8 +31,8 @@ class ScheduleVM extends BaseVM { setState(ViewState.idle); } - Future setScheduleInactive(int scheduleId, int branchId) async { - MResponse val = await scheduleRepo.setScheduleInActive(scheduleId, branchId); + Future setScheduleInactive(int scheduleId, int branchId) async { + GenericRespModel val = await scheduleRepo.setScheduleInActive(scheduleId, branchId); if (val.messageStatus == 1) { if (schedule!.data != null) { schedule!.data!.removeWhere((element) => element.serviceProviderBranchId == branchId && element.id == scheduleId); @@ -100,13 +98,13 @@ class ScheduleVM extends BaseVM { setState(ViewState.idle); } - Future createSchedule(Map map) async { - MResponse response = await scheduleRepo.createSchedule(map); + Future createSchedule(Map map) async { + GenericRespModel response = await scheduleRepo.createSchedule(map); return response; } - Future addServicesInSchedule(Map map) async { - MResponse response = await scheduleRepo.addServicesInSchedule(map); + Future addServicesInSchedule(Map map) async { + GenericRespModel response = await scheduleRepo.addServicesInSchedule(map); return response; } @@ -116,13 +114,13 @@ class ScheduleVM extends BaseVM { setState(ViewState.idle); } - Future updateSchedule(Map map) async { - MResponse response = await scheduleRepo.updateSchedule(map); + Future updateSchedule(Map map) async { + GenericRespModel response = await scheduleRepo.updateSchedule(map); return response; } - Future updateServicesInSchedule(Map map) async { - MResponse response = await scheduleRepo.updateServicesInSchedule(map); + Future updateServicesInSchedule(Map map) async { + GenericRespModel response = await scheduleRepo.updateServicesInSchedule(map); return response; } } diff --git a/lib/views/appoinments/add_new_service_appointment_page.dart b/lib/views/appoinments/add_new_service_appointment_page.dart index 56366e9..552f25a 100644 --- a/lib/views/appoinments/add_new_service_appointment_page.dart +++ b/lib/views/appoinments/add_new_service_appointment_page.dart @@ -1,6 +1,9 @@ import 'dart:async'; +import 'package:car_provider_app/views/dashboard/widget/appointment_slider_widget.dart'; +import 'package:car_provider_app/views/settings/schedule/widgets/chips_picker_item.dart'; import 'package:mc_common_app/generated/locale_keys.g.dart'; +import 'package:mc_common_app/models/general_models/generic_resp_model.dart'; import 'package:mc_common_app/view_models/service_view_model.dart'; import 'package:car_provider_app/views/appoinments/widget/select_items_sheet.dart'; import 'package:flutter/material.dart'; @@ -9,7 +12,6 @@ import 'package:mc_common_app/classes/app_state.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/appointments_models/appointment_list_model.dart'; -import 'package:mc_common_app/models/general_models/m_response.dart'; import 'package:mc_common_app/models/services_models/item_model.dart'; import 'package:mc_common_app/theme/colors.dart'; import 'package:mc_common_app/utils/enums.dart'; @@ -23,15 +25,11 @@ import 'package:mc_common_app/widgets/dropdown/dropdow_field.dart'; import 'package:mc_common_app/widgets/extensions/extensions_widget.dart'; import 'package:provider/provider.dart'; import 'package:easy_localization/easy_localization.dart'; -import '../dashboard/widget/appointment_slider_widget.dart'; -import '../settings/schedule/widgets/chips_picker_item.dart'; -import 'package:easy_localization/easy_localization.dart'; - class AddNewServiceAppointmentPage extends StatefulWidget { - AppointmentListModel appointmentListModel; + final AppointmentListModel appointmentListModel; - AddNewServiceAppointmentPage(this.appointmentListModel, {Key? key}) : super(key: key); + const AddNewServiceAppointmentPage(this.appointmentListModel, {Key? key}) : super(key: key); @override State createState() => _AddNewServiceAppointmentPageState(); @@ -85,9 +83,9 @@ class _AddNewServiceAppointmentPageState extends State 0)) Column( @@ -173,10 +171,10 @@ class _AddNewServiceAppointmentPageState extends State _updateAppointment(BuildContext context, int branchId) async { - await context.read().getMyAppointmentsForProvider({ - "ServiceProviderID": injector.get().getUser.data?.userInfo?.providerId.toString() ?? "0", - "ProviderBranchID": branchId.toString(), - },); + await context.read().getMyAppointmentsForProvider( + { + "ServiceProviderID": injector.get().getUser.data?.userInfo?.providerId.toString() ?? "0", + "ProviderBranchID": branchId.toString(), + }, + ); } double calculatePrice() { diff --git a/lib/views/appoinments/merge_appointment_page.dart b/lib/views/appoinments/merge_appointment_page.dart index ac4c9b0..d5bfe4a 100644 --- a/lib/views/appoinments/merge_appointment_page.dart +++ b/lib/views/appoinments/merge_appointment_page.dart @@ -1,10 +1,11 @@ +import 'package:car_provider_app/views/dashboard/widget/appointment_slider_widget.dart'; import 'package:flutter/material.dart'; import 'package:mc_common_app/classes/app_state.dart'; import 'package:mc_common_app/config/dependency_injection.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/models/general_models/m_response.dart'; +import 'package:mc_common_app/models/general_models/generic_resp_model.dart'; import 'package:mc_common_app/theme/colors.dart'; import 'package:mc_common_app/utils/enums.dart'; import 'package:mc_common_app/utils/navigator.dart'; @@ -13,27 +14,23 @@ import 'package:mc_common_app/view_models/appointments_view_model.dart'; import 'package:mc_common_app/widgets/button/show_fill_button.dart'; import 'package:mc_common_app/widgets/common_widgets/app_bar.dart'; -import '../../config/provider_routes.dart'; -import '../dashboard/widget/appointment_slider_widget.dart'; import 'package:provider/provider.dart'; import 'package:easy_localization/easy_localization.dart'; - class MergeAppointmentListPage extends StatelessWidget { - MergeAppointmentListPage({Key? key}) : super(key: key); + const MergeAppointmentListPage({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return Scaffold( - appBar: CustomAppBar( + appBar: CustomAppBar( title: LocaleKeys.selectAppointments.tr(), ), body: SizedBox( width: double.infinity, height: double.infinity, child: Consumer( - builder: (BuildContext context, AppointmentsVM appointmentsVM, - Widget? child) { + builder: (BuildContext context, AppointmentsVM appointmentsVM, Widget? child) { return Column( children: [ Expanded( @@ -45,28 +42,20 @@ class MergeAppointmentListPage extends StatelessWidget { : ListView.separated( itemBuilder: (context, index) { return AppointmentSliderWidget( - appointmentListModel: appointmentsVM - .myFilteredAppointments2[appointmentsVM - .selectedAppointmentIndex] - .customerAppointmentList![index], + appointmentListModel: appointmentsVM.myFilteredAppointments2[appointmentsVM.selectedAppointmentIndex].customerAppointmentList![index], isNeedTotalPayment: true, isSelectable: true, isNeedToShowAppointmentStatus: true, isNeedToShowMergeStatus: true, onTap: () { - appointmentsVM - .updateCheckBoxInMergeRequest(index); + appointmentsVM.updateCheckBoxInMergeRequest(index); }, ); }, separatorBuilder: (context, snapchat) { return 21.height; }, - itemCount: appointmentsVM - .myFilteredAppointments2[ - appointmentsVM.selectedAppointmentIndex] - .customerAppointmentList! - .length, + itemCount: appointmentsVM.myFilteredAppointments2[appointmentsVM.selectedAppointmentIndex].customerAppointmentList!.length, padding: const EdgeInsets.all(21), ), ), @@ -77,54 +66,30 @@ class MergeAppointmentListPage extends StatelessWidget { title: LocaleKeys.mergeAppointments.tr(), maxWidth: double.infinity, margin: const EdgeInsets.all(21), - txtColor: appointmentsVM.inNeedToEnableMergeButton - ? MyColors.white - : MyColors.black, - backgroundColor: appointmentsVM.inNeedToEnableMergeButton - ? MyColors.primaryColor - : MyColors.greyButtonColor, + txtColor: appointmentsVM.inNeedToEnableMergeButton ? MyColors.white : MyColors.black, + backgroundColor: appointmentsVM.inNeedToEnableMergeButton ? MyColors.primaryColor : MyColors.greyButtonColor, onPressed: () async { Utils.showLoading(context); List appointmentIDs = []; - for (var element in appointmentsVM - .myFilteredAppointments2[ - appointmentsVM.selectedAppointmentIndex] - .customerAppointmentList!) { + for (var element in appointmentsVM.myFilteredAppointments2[appointmentsVM.selectedAppointmentIndex].customerAppointmentList!) { if (element.isSelected ?? false) { appointmentIDs.add(element.id ?? 0); } } Map map = { - "serviceProviderID": injector - .get() - .getUser - .data - ?.userInfo - ?.providerId - .toString() ?? - "0", - "serviceProviderBranchID": appointmentsVM - .myFilteredAppointments2[ - appointmentsVM.selectedAppointmentIndex] - .branchId, + "serviceProviderID": injector.get().getUser.data?.userInfo?.providerId.toString() ?? "0", + "serviceProviderBranchID": appointmentsVM.myFilteredAppointments2[appointmentsVM.selectedAppointmentIndex].branchId, "serviceAppointmentIDs": appointmentIDs }; try { - MResponse response = - await appointmentsVM.createMergeAppointment(map); + GenericRespModel response = await appointmentsVM.createMergeAppointment(map); Utils.hideLoading(context); if (response.messageStatus == 1) { Utils.showToast(LocaleKeys.appointmentMergeSuccessfully.tr()); - _updateAppointment( - context, - appointmentsVM - .myFilteredAppointments2[ - appointmentsVM.selectedAppointmentIndex] - .branchId ?? - 0); + _updateAppointment(context, appointmentsVM.myFilteredAppointments2[appointmentsVM.selectedAppointmentIndex].branchId ?? 0); pop(context); pop(context); @@ -147,14 +112,7 @@ class MergeAppointmentListPage extends StatelessWidget { Future _updateAppointment(BuildContext context, int branchId) async { await context.read().getMyAppointmentsForProvider({ - "ServiceProviderID": injector - .get() - .getUser - .data - ?.userInfo - ?.providerId - .toString() ?? - "0", + "ServiceProviderID": injector.get().getUser.data?.userInfo?.providerId.toString() ?? "0", "ProviderBranchID": branchId.toString(), }); } diff --git a/lib/views/dashboard/fragments/home_fragment.dart b/lib/views/dashboard/fragments/home_fragment.dart index ddd8f8c..f63dce9 100644 --- a/lib/views/dashboard/fragments/home_fragment.dart +++ b/lib/views/dashboard/fragments/home_fragment.dart @@ -23,7 +23,7 @@ class HomeFragment extends StatelessWidget { const HomeFragment({Key? key}) : super(key: key); @override - Widget build(BuildContext context) { + Widget build(BuildContext context) { return Scaffold( appBar: CustomAppBar( isDrawerEnabled: true, diff --git a/lib/views/dashboard/widget/my_service_provider.dart b/lib/views/dashboard/widget/my_service_provider.dart index f834dd5..8ceda29 100644 --- a/lib/views/dashboard/widget/my_service_provider.dart +++ b/lib/views/dashboard/widget/my_service_provider.dart @@ -1,6 +1,8 @@ import 'package:car_provider_app/config/provider_routes.dart'; import 'package:car_provider_app/generated/locale_keys.g.dart'; +import 'package:flutter/cupertino.dart'; import 'package:mc_common_app/generated/locale_keys.g.dart'; +import 'package:mc_common_app/models/provider_branches_models/branch_detail_model.dart'; import 'package:mc_common_app/view_models/service_view_model.dart'; import 'package:flutter/material.dart'; import 'package:mc_common_app/classes/consts.dart'; @@ -34,21 +36,24 @@ class ServiceProviderWidget extends StatelessWidget { scrollDirection: Axis.horizontal, shrinkWrap: true, itemBuilder: (BuildContext context, int index) { + BranchDetailModel branchDetailModel = model.branches!.data!.serviceProviderBranch![index]; return SizedBox( width: 90, child: Column( children: [ - Image.asset( - MyAssets.bnCar, - width: 80, - height: 80, - fit: BoxFit.cover, - ).toCircle(borderRadius: 100), + branchDetailModel.branchProfileImage + .buildNetworkImage( + height: 80, + width: 80, + ) + .toCircle(borderRadius: 100), 8.height, - model.branches!.data!.serviceProviderBranch![index].branchName!.toText( - fontSize: 14, - isBold: true, - textAlign: TextAlign.center, + Flexible( + child: branchDetailModel.branchName!.toText( + fontSize: 14, + isBold: true, + textAlign: TextAlign.center, + ), ), ], ), diff --git a/lib/views/requests/request_detail_page.dart b/lib/views/requests/request_detail_page.dart index 7a85c23..5ac2e76 100644 --- a/lib/views/requests/request_detail_page.dart +++ b/lib/views/requests/request_detail_page.dart @@ -1,3 +1,5 @@ +import 'dart:developer'; + import 'package:flutter/material.dart'; import 'package:mc_common_app/classes/app_state.dart'; import 'package:mc_common_app/classes/consts.dart'; @@ -48,8 +50,40 @@ class RequestDetailPage extends StatelessWidget { errorValue: requestsVM.offerPriceError, keyboardType: TextInputType.number, hint: LocaleKeys.enterAmount.tr(), + numbersOnly: true, onChanged: (v) => requestsVM.updateOfferPrice(v), ), + if (requestDetail.requestType == RequestsTypeEnum.serviceRequest.getIdFromRequestTypeStatusEnum()) ...[ + 12.height, + TxtField( + value: requestsVM.serviceItem, + errorValue: requestsVM.offerPriceError, + keyboardType: TextInputType.number, + hint: "Service Item", + onChanged: (v) => requestsVM.updateServiceItem(v), + ), + 12.height, + TxtField( + value: requestsVM.itemManufacturer, + errorValue: requestsVM.offerPriceError, + keyboardType: TextInputType.number, + hint: "Manufacturer", + onChanged: (v) => requestsVM.updateItemManufacturer(v), + ), + 12.height, + TxtField( + errorValue: "", + hint: "Manufactured On", + value: requestsVM.serviceItemCreatedOn, + isNeedClickAll: true, + postfixData: Icons.calendar_month_rounded, + postFixDataColor: MyColors.darkTextColor, + onTap: () async { + final formattedDate = await Utils.pickDateFromDatePicker(context); + requestsVM.updateServiceItemCreatedOn(formattedDate); + }, + ), + ], 12.height, TxtField( maxLines: 5, @@ -87,7 +121,12 @@ class RequestDetailPage extends StatelessWidget { ); } - Widget buildBottomButton({required RequestStatus requestStatus, required String statusText, required BuildContext context, required Function() onViewChatTapped}) { + Widget buildBottomButton({ + required RequestStatus requestStatus, + required String statusText, + required BuildContext context, + required Function() onViewChatTapped, + }) { switch (requestStatus) { case RequestStatus.submitted: case RequestStatus.inProgress: @@ -237,7 +276,7 @@ class RequestDetailPage extends StatelessWidget { ], ), showItem("Customer Name", requestDetail.customerName), - showItem("Description", requestDetail.description), + showItem("Description ", requestDetail.description), showItem("Price Range:", ""), Row( children: [ diff --git a/lib/views/settings/branch/branch_detail_page.dart b/lib/views/settings/branch/branch_detail_page.dart index 385460e..8785b2b 100644 --- a/lib/views/settings/branch/branch_detail_page.dart +++ b/lib/views/settings/branch/branch_detail_page.dart @@ -1,9 +1,8 @@ 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:flutter/cupertino.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'; @@ -11,7 +10,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_svg/svg.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'; import 'package:mc_common_app/extensions/int_extensions.dart'; import 'package:mc_common_app/extensions/string_extensions.dart'; import 'package:mc_common_app/models/provider_branches_models/branch_detail_model.dart'; @@ -26,7 +24,7 @@ import 'package:mc_common_app/widgets/extensions/extensions_widget.dart'; import 'package:provider/provider.dart'; class BranchDetailPage extends StatelessWidget { - BranchDetailModel branchData; + final BranchDetailModel branchData; BranchDetailPage(this.branchData, {super.key}); @@ -41,7 +39,7 @@ class BranchDetailPage extends StatelessWidget { } filterBranch() { - branchData.branchServices!.forEach((element) { + for (var element in branchData.branchServices!) { categories.add( CategoryData( id: element.categoryId, @@ -49,27 +47,82 @@ class BranchDetailPage extends StatelessWidget { categoryNameN: element.categoryName, ), ); - }); + } categories = categories.toSet().toList(); for (var payment in categories) { - branchData.branchServices!.forEach((element) { + for (var element in branchData.branchServices!) { if (payment.id == element.categoryId) { payment.services ??= []; payment.services!.add(element); } - }); + } } branchData.categories = categories; } + Widget buildFooterActionWidget(BuildContext context) { + Widget actionWidget = const SizedBox(); + if (AppState().userType == UserType.providerDealer && branchData.branchStatus == BranchStatusEnum.approvedOrActive) { + actionWidget = ShowFillButton( + title: LocaleKeys.assignDealerUser.tr(), + maxWidth: double.infinity, + backgroundColor: Colors.transparent, + borderColor: MyColors.darkPrimaryColor, + txtColor: MyColors.darkPrimaryColor, + isFilled: false, + onPressed: () async { + showMyBottomSheet( + context, + child: AssignDealerUserSheet( + branchId: branchData.id.toString(), + callBackFunc: () { + getBranchUsers(context); + }, + ), + ); + }, + ); + } else if (branchData.branchStatus == BranchStatusEnum.pending) { + actionWidget = ShowFillButton( + title: "Pending Approval", + maxWidth: double.infinity, + backgroundColor: MyColors.darkWhiteColor, + borderColor: MyColors.darkPrimaryColor, + txtColor: MyColors.lightTextColor, + isFilled: true, + onPressed: () {}, + ); + } else if (branchData.branchStatus == BranchStatusEnum.rejected) { + actionWidget = Column( + children: [ + Row( + children: [ + ('${LocaleKeys.rejectionComments.tr()}:').toText(fontSize: 16, color: MyColors.darkTextColor), + ], + ), + Row( + children: [ + Flexible( + child: ('These are some dummy static comments from the Admin. Which will guide you regarding the next steps to resubmit.').toText( + fontSize: 14, + color: MyColors.primaryColor, + isItalic: true, + ), + ), + ], + ), + ], + ); + } + return actionWidget.paddingAll(21); + } + @override Widget build(BuildContext context) { filterBranch(); getBranchUsers(context); return Scaffold( - appBar: CustomAppBar( - title: branchData.branchName.toString(), - ), + appBar: CustomAppBar(title: LocaleKeys.branchDetail.tr()), body: Consumer(builder: (context, model, _) { return SizedBox( width: double.infinity, @@ -80,15 +133,20 @@ class BranchDetailPage extends StatelessWidget { child: SingleChildScrollView( child: Column( children: [ - Padding( - padding: const EdgeInsets.all(20.0), - child: Column( - children: [ - Row( - children: [ - Expanded( - child: titleWidget(MyAssets.icBranches, LocaleKeys.branchInfo.tr()), + Column( + children: [ + Row( + children: [ + Expanded( + child: Row( + children: [ + branchData.branchProfileImage.buildNetworkImage(), + 12.width, + LocaleKeys.branchInfo.tr().toText(fontSize: 16, color: Colors.black, isBold: true), + ], ), + ), + if (branchData.branchStatus != BranchStatusEnum.pending) ...[ IconButton( onPressed: () { navigateWithName(context, ProviderAppRoutes.defineBranch, arguments: branchData); @@ -96,23 +154,24 @@ class BranchDetailPage extends StatelessWidget { icon: SvgPicture.asset(MyAssets.icEdit), ) ], - ), - 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()), - ], - ), - ], - ), - ), + ], + ), + 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()), + ], + ), + ], + ).horPaddingMain(), + 10.height, Container( width: double.infinity, color: MyColors.darkIconColor, - padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 8), + padding: const EdgeInsets.symmetric(horizontal: 21, vertical: 10), child: Row( children: [ const Icon( @@ -122,11 +181,10 @@ class BranchDetailPage extends StatelessWidget { 8.width, Expanded( child: LocaleKeys.setorEditBranchSchedule.tr().toText( - isUnderLine: true, - fontSize: 14, - isBold: true, - color: Colors.white, - ), + isUnderLine: true, + fontSize: 12, + color: Colors.white, + ), ), const Icon( Icons.arrow_forward, @@ -147,15 +205,15 @@ class BranchDetailPage extends StatelessWidget { color: Colors.white, ).toContainer( borderRadius: 100, - paddingAll: 3, + paddingAll: 2, backgroundColor: MyColors.darkIconColor, ), 8.width, - LocaleKeys.addServices.tr().toText( - fontSize: 14, - color: MyColors.lightTextColor, - isBold: true, - ), + LocaleKeys.addNewService.tr().toText( + fontSize: 15, + color: MyColors.lightTextColor, + isBold: true, + ), ], ) .toContainer( @@ -175,99 +233,101 @@ class BranchDetailPage extends StatelessWidget { ), ); }), - categories.isEmpty - ? LocaleKeys.noServiceAddedYet.tr().toText(fontSize: 12) - : ListView.separated( - 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]); - }, - child: Row( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisSize: MainAxisSize.min, - children: [ - Padding( - padding: const EdgeInsets.only(top: 5), - child: SvgPicture.asset( - MyAssets.maintenanceIcon, - width: 16, - height: 16, + ListView.separated( + 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]); + }, + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + Padding( + padding: const EdgeInsets.only(top: 5), + child: SvgPicture.asset( + MyAssets.maintenanceIcon, + width: 16, + height: 16, + ), + ), + 8.width, + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + categories[pIndex].categoryName.toString().toText(fontSize: 16, isBold: true), + // Padding( + // padding: const EdgeInsets.all(4.0), + // child: SvgPicture.asset( + // MyAssets.icEdit, + // width: 16, + // height: 16, + // ), + // ), + ], ), - ), - 8.width, - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisAlignment: MainAxisAlignment.start, - children: [ - Row( - children: [ - categories[pIndex].categoryName.toString().toText(fontSize: 16, isBold: true), - // Padding( - // padding: const EdgeInsets.all(4.0), - // child: SvgPicture.asset( - // MyAssets.icEdit, - // width: 16, - // height: 16, - // ), - // ), - ], - mainAxisAlignment: MainAxisAlignment.spaceBetween, - ), - Row( - children: [ - Expanded( - child: ListView.builder( - itemBuilder: (context, index) { - return Container( - 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, - isBold: true, - ), - ); - }, - itemCount: categories[pIndex].services?.length, - physics: const NeverScrollableScrollPhysics(), - shrinkWrap: true, - padding: EdgeInsets.zero, - ), + Row( + mainAxisAlignment: MainAxisAlignment.end, + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + Expanded( + child: ListView.builder( + itemBuilder: (context, index) { + return Container( + 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, + isBold: true, + ), + ); + }, + itemCount: categories[pIndex].services?.length, + physics: const NeverScrollableScrollPhysics(), + shrinkWrap: true, + padding: EdgeInsets.zero, ), - const Padding( - padding: EdgeInsets.all(4.0), - child: Icon( - Icons.arrow_forward, - size: 20, - ), + ), + const Padding( + padding: EdgeInsets.all(4.0), + child: Icon( + Icons.arrow_forward, + size: 20, ), - ], - mainAxisAlignment: MainAxisAlignment.end, - crossAxisAlignment: CrossAxisAlignment.end, - ) - ], - )), - ], - ).toContainer( - width: double.infinity, - padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8), - isShadowEnabled: true, - ), - ); - }, - itemCount: categories.length, - physics: const NeverScrollableScrollPhysics(), - shrinkWrap: true, - padding: const EdgeInsets.all(20), - separatorBuilder: (BuildContext context, int index) { - return 12.height; - }, + ), + ], + ) + ], + )), + ], + ).toContainer( + borderRadius: 0, + width: double.infinity, + padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8), + isShadowEnabled: true, ), + ); + }, + itemCount: categories.length, + physics: const NeverScrollableScrollPhysics(), + shrinkWrap: true, + padding: const EdgeInsets.all(20), + separatorBuilder: (BuildContext context, int index) { + return 12.height; + }, + ), 12.height, ], ), @@ -278,29 +338,7 @@ class BranchDetailPage extends StatelessWidget { height: 1, color: Colors.grey[100], ), - if (AppState().userType == UserType.providerDealer) - Padding( - padding: const EdgeInsets.all(12.0), - child: ShowFillButton( - title: LocaleKeys.assignDealerUser.tr(), - maxWidth: double.infinity, - backgroundColor: Colors.transparent, - borderColor: MyColors.darkPrimaryColor, - txtColor: MyColors.darkPrimaryColor, - isFilled: false, - onPressed: () async { - showMyBottomSheet( - context, - child: AssignDealerUserSheet( - branchId: branchData.id.toString(), - callBackFunc: () { - getBranchUsers(context); - }, - ), - ); - }, - ), - ), + buildFooterActionWidget(context), ], ), ); @@ -310,7 +348,9 @@ class BranchDetailPage extends StatelessWidget { bool validation(BuildContext context) { bool isValid = false; - for (var element in context.read().allProviderDealersList) { + for (var element in context + .read() + .allProviderDealersList) { if (element.isBranchUser ?? false) { isValid = true; } @@ -318,21 +358,6 @@ class BranchDetailPage extends StatelessWidget { return isValid; } - Widget titleWidget(String icon, String title) { - return Row( - children: [ - SvgPicture.asset( - icon, - width: 18, - height: 18, - color: MyColors.darkPrimaryColor, - ), - 12.width, - title.toText(fontSize: 16, color: Colors.black, isBold: true), - ], - ); - } - Widget showData(String title, String value) { return Row( crossAxisAlignment: CrossAxisAlignment.start, diff --git a/lib/views/settings/branch/branch_list_page.dart b/lib/views/settings/branch/branch_list_page.dart index 6766f0d..d2c34fe 100644 --- a/lib/views/settings/branch/branch_list_page.dart +++ b/lib/views/settings/branch/branch_list_page.dart @@ -3,16 +3,9 @@ import 'package:mc_common_app/generated/locale_keys.g.dart'; import 'package:mc_common_app/view_models/service_view_model.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_svg/svg.dart'; -import 'package:geolocator/geolocator.dart'; -import 'package:car_provider_app/generated/locale_keys.g.dart'; - -import 'package:mc_common_app/classes/app_state.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/general_models/m_response.dart'; import 'package:mc_common_app/models/provider_branches_models/branch_detail_model.dart'; import 'package:mc_common_app/theme/colors.dart'; import 'package:mc_common_app/utils/enums.dart'; @@ -55,105 +48,90 @@ class BranchListPage extends StatelessWidget { ), Expanded( child: Consumer( - builder: (context, model, _) { - if (model.state == ViewState.busy) { + builder: (context, serviceVM, _) { + if (serviceVM.state == ViewState.busy) { return const Center(child: CircularProgressIndicator()); } else { List branches = []; - if (model.branches!.data != null) { - branches = model.branches!.data!.serviceProviderBranch!.where((element) => model.selectedBranchStatus == element.statusId).toList(); + if (serviceVM.branches!.data != null) { + if (serviceVM.selectedBranchStatus == 3) { + // 3 means active branch + branches = serviceVM.branches!.data!.serviceProviderBranch!.where((element) => element.statusId == 3).toList(); + } else { + branches = serviceVM.branches!.data!.serviceProviderBranch!.where((element) { + return element.statusId != 3; // means rest of the branches + }).toList(); + } } + return RefreshIndicator( - onRefresh: () async { - await context.read().getBranchAndServices(); - }, + onRefresh: () async => await context.read().getBranchAndServices(), child: branches.isEmpty - ? Center(child: Text(LocaleKeys.no_branch.tr())) + ? Center(child: LocaleKeys.no_branch.tr().toText(fontSize: 16, color: MyColors.lightTextColor)) : ListView.separated( itemBuilder: (context, index) { + BranchDetailModel branchModel = branches[index]; return Row( children: [ - Container( - width: 74, - height: 50, - decoration: const BoxDecoration( - color: MyColors.darkPrimaryColor, - borderRadius: BorderRadius.all(Radius.circular(8)), - ), - padding: const EdgeInsets.all(6), - child: SvgPicture.asset( - MyAssets.icBranches, - color: Colors.white, - ), - ), + branchModel.branchProfileImage.buildNetworkImage(width: 74, height: 50), 12.width, Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - Row( - children: [ - const Icon( - Icons.place, - size: 12, - color: MyColors.darkPrimaryColor, - ), - Geolocator.distanceBetween(AppState().currentLocation.latitude, AppState().currentLocation.latitude, double.parse(branches[index].latitude ?? "0"), - double.parse(branches[index].longitude ?? "0")) - .toStringAsFixed(2) - .toText( - fontSize: 12, - color: MyColors.darkPrimaryColor, - ) - ], + Utils.statusContainerChip( + text: branchModel.branchStatusLabel ?? "", + chipColor: Utils.getChipColorByBranchStatus(branchModel.branchStatus!), ), + 5.height, Text( - branches[index].branchName ?? "", + branchModel.branchName ?? "", style: const TextStyle( fontSize: 14, fontWeight: FontWeight.bold, ), ), - LocaleKeys.tapToEdit.tr().toText(fontSize: 10, color: MyColors.grey70Color), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Flexible( + child: (branchModel.branchDescription ?? "").toText( + fontSize: 10, + overflow: TextOverflow.ellipsis, + color: MyColors.grey70Color, + maxLines: 2, + )), + const Icon(Icons.arrow_forward_rounded, size: 18), + ], + ) ], ), ), - 12.width, - IconButton( - onPressed: () async { - Utils.showLoading(context); - MResponse res = await model.updateBranch(branches[index].id ?? 0, branches[index].branchName ?? "", branches[index].branchDescription ?? "", - branches[index].cityId.toString(), branches[index].address ?? "", branches[index].latitude.toString(), branches[index].longitude.toString(), - isNeedToDelete: false); - Utils.hideLoading(context); - if (res.messageStatus == 1) { - Utils.showToast(LocaleKeys.branch_deleted.tr()); - model.setState(ViewState.idle); - } else { - Utils.showToast(res.message ?? ""); - } - }, - icon: const Icon(Icons.delete), - color: Colors.red, - ), - const Icon( - Icons.arrow_forward_rounded, - size: 16, - ), + // 12.width, + // Column( + // crossAxisAlignment: CrossAxisAlignment.end, + // mainAxisAlignment: MainAxisAlignment.end, + // + // children: [ + // IconButton( + // onPressed: () async {}, + // icon: const Icon(Icons.delete), + // color: Colors.red, + // ), + // const Icon(Icons.arrow_forward_rounded, size: 16), + // ], + // ), ], - ).toContainer().onPress(() async { - branches[index].countryID = model.branches!.data!.countryID; - branches[index].countryName = model.branches!.data!.countryName; - navigateWithName(context, ProviderAppRoutes.branchDetail, arguments: branches[index]); + ).toWhiteContainer(width: double.infinity, pading: const EdgeInsets.all(12)).onPress(() async { + branchModel.countryID = serviceVM.branches!.data!.countryID; + branchModel.countryName = serviceVM.branches!.data!.countryName; + navigateWithName(context, ProviderAppRoutes.branchDetail, arguments: branchModel); }); }, - separatorBuilder: (context, index) { - return 12.height; - }, + separatorBuilder: (context, index) => 12.height, itemCount: branches.length, - padding: const EdgeInsets.all(12), - ), + ).paddingAll(21), ); } }, diff --git a/lib/views/settings/branch/create_branch_view.dart b/lib/views/settings/branch/create_branch_view.dart new file mode 100644 index 0000000..40742a7 --- /dev/null +++ b/lib/views/settings/branch/create_branch_view.dart @@ -0,0 +1,250 @@ +import 'dart:async'; + +import 'package:mc_common_app/classes/consts.dart'; +import 'package:mc_common_app/generated/locale_keys.g.dart'; +import 'package:mc_common_app/view_models/service_view_model.dart'; +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:car_provider_app/views/location/pick_location_page.dart'; +import 'package:mc_common_app/extensions/int_extensions.dart'; +import 'package:mc_common_app/models/provider_branches_models/branch_detail_model.dart'; +import 'package:mc_common_app/theme/colors.dart'; +import 'package:provider/provider.dart'; +import 'package:mc_common_app/utils/enums.dart'; +import 'package:mc_common_app/utils/navigator.dart'; +import 'package:mc_common_app/views/advertisement/ad_creation_steps/ad_creation_steps_containers.dart'; +import 'package:mc_common_app/views/advertisement/components/picked_images_container_widget.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/dropdown/dropdow_field.dart'; +import 'package:mc_common_app/widgets/extensions/extensions_widget.dart'; +import 'package:mc_common_app/widgets/txt_field.dart'; + +class CreateBranchView extends StatefulWidget { + final BranchDetailModel? branchData; + + const CreateBranchView(this.branchData, {super.key}); + + @override + State createState() => _CreateBranchViewState(); +} + +class _CreateBranchViewState extends State { + late ServiceVM branchVM; + + @override + void initState() { + super.initState(); + scheduleMicrotask(() { + branchVM = context.read(); + branchVM.getAllCountriesList(widget.branchData, EasyLocalization.of(context)?.currentLocale?.countryCode ?? "SA"); + }); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: CustomAppBar( + title: LocaleKeys.createBranch.tr(), + ), + body: Consumer(builder: (context, serviceVM, _) { + return SizedBox( + width: double.infinity, + height: double.infinity, + child: Column( + children: [ + Expanded( + child: SingleChildScrollView( + child: Padding( + padding: const EdgeInsets.all(20.0), + child: Column( + children: [ + // LocaleKeys.chooseCountry.tr().toText(fontSize: 14, color: MyColors.lightTextColor), + // 8.height, + serviceVM.country != null + ? DropdownField( + (DropValue value) { + serviceVM.countryValue = DropValue(value.id, value.value, ""); + serviceVM.countryCode = value.subValue; + serviceVM.countryId = value.id; + serviceVM.getAllCities(widget.branchData, EasyLocalization.of(context)?.currentLocale?.countryCode ?? "SA"); + }, + isSelectAble: widget.branchData == null ? true : false, + list: serviceVM.countryDropList, + dropdownValue: serviceVM.countryValue, + hint: "${LocaleKeys.chooseCountry.tr()}*", + ) + : const CircularProgressIndicator(), + 12.height, + if (serviceVM.countryId != -1) + serviceVM.cities != null + ? serviceVM.citiesDropList.isEmpty + ? Text(LocaleKeys.no_city_available.tr()) + : DropdownField( + (DropValue value) { + serviceVM.cityValue = DropValue(value.id, value.value, ""); + serviceVM.setOnlyState(ViewState.busy); + serviceVM.cityId = value.id; + serviceVM.setState(ViewState.idle); + }, + list: serviceVM.citiesDropList, + dropdownValue: serviceVM.cityValue, + hint: "${LocaleKeys.chooseCity.tr()}*", + ) + : const CircularProgressIndicator(), + 12.height, + if (serviceVM.cityId != -1) + Column( + children: [ + TxtField( + hint: "${LocaleKeys.branchName.tr()}*", + value: serviceVM.branchName, + onChanged: (v) { + serviceVM.branchName = v; + }, + ), + 12.height, + TxtField( + hint: "${LocaleKeys.branchDescription.tr()}*", + value: serviceVM.branchDescription, + onChanged: (v) { + serviceVM.branchDescription = v; + }, + ), + 12.height, + TxtField( + hint: LocaleKeys.address.tr(), + isNeedClickAll: false, + maxLines: 3, + value: serviceVM.address, + onChanged: (v) { + serviceVM.address = v; + }, + ), + 12.height, + InkWell( + onTap: () { + navigateTo( + context, + PickLocationPage( + onPickAddress: (double latitude, double longitude, String address) { + serviceVM.latitude = latitude; + serviceVM.longitude = longitude; + serviceVM.address = address; + serviceVM.setState(ViewState.idle); + }, + ), + ); + }, + child: Container( + width: double.infinity, + height: 45, + decoration: BoxDecoration( + color: Colors.transparent, + border: Border.all(color: MyColors.darkPrimaryColor, width: 2), + borderRadius: const BorderRadius.all(Radius.circular(8)), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + const Icon( + Icons.place_outlined, + size: 18, + color: MyColors.darkPrimaryColor, + ), + 8.width, + Text( + LocaleKeys.pickAddress.tr(), + style: const TextStyle( + color: MyColors.darkPrimaryColor, + ), + ), + ], + ), + ), + ), + 12.height, + DottedRectContainer( + onTap: () => serviceVM.pickMultipleImages(), + text: LocaleKeys.attachImage.tr(), + icon: MyAssets.attachmentIcon.buildSvg(), + ), + if (serviceVM.branchImageError != "") ...[ + 10.height, + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + serviceVM.branchImageError.toText(fontSize: 14, color: Colors.red), + ], + ).paddingOnly(right: 10) + ], + if (serviceVM.pickedBranchImages.isNotEmpty) ...[ + 16.height, + PickedFilesContainer( + pickedFiles: serviceVM.pickedBranchImages, + onCrossPressedPrimary: serviceVM.removeImageFromList, + onAddFilePressed: () { + serviceVM.pickMultipleImages(); + }, + ), + ], + ], + ), + ], + ), + ), + ), + ), + if (widget.branchData == null || widget.branchData!.id == null) ...[ + SizedBox( + width: double.infinity, + child: Padding( + padding: const EdgeInsets.only(left: 20, right: 20, bottom: 20), + child: ShowFillButton( + maxHeight: 55, + title: LocaleKeys.createBranch.tr(), + onPressed: () async { + await serviceVM.onCreateBranchPressed( + context: context, + branchName: serviceVM.branchName, + branchDesc: serviceVM.branchDescription, + cityID: serviceVM.cityId, + address: serviceVM.address, + latitude: serviceVM.latitude, + longitude: serviceVM.longitude, + ); + }, + ), + ), + ), + ] else ...[ + SizedBox( + width: double.infinity, + child: Padding( + padding: const EdgeInsets.only(left: 20, right: 20, bottom: 20), + child: ShowFillButton( + maxHeight: 55, + title: widget.branchData != null ? (widget.branchData!.id == null ? LocaleKeys.createBranch.tr() : LocaleKeys.updateBranch.tr()) : LocaleKeys.createBranch.tr(), + onPressed: () async { + await serviceVM.updateBranch( + widget.branchData!.id ?? 0, + serviceVM.branchName, + serviceVM.branchDescription, + serviceVM.cityId.toString(), + serviceVM.address, + serviceVM.latitude.toString(), + serviceVM.longitude.toString(), + ); + }, + ), + ), + ), + ], + ], + ), + ); + }), + ); + } +} diff --git a/lib/views/settings/branch/dealer/dealer_user_page.dart b/lib/views/settings/branch/dealer/dealer_user_page.dart index b8668ed..257fceb 100644 --- a/lib/views/settings/branch/dealer/dealer_user_page.dart +++ b/lib/views/settings/branch/dealer/dealer_user_page.dart @@ -1,11 +1,11 @@ import 'package:mc_common_app/generated/locale_keys.g.dart'; +import 'package:mc_common_app/models/general_models/generic_resp_model.dart'; import 'package:mc_common_app/view_models/service_view_model.dart'; import 'package:car_provider_app/views/settings/branch/dealer/widget/assign_dealer_user_sheet.dart'; import 'package:flutter/material.dart'; import 'package:mc_common_app/classes/app_state.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/general_models/m_response.dart'; import 'package:mc_common_app/theme/colors.dart'; import 'package:mc_common_app/utils/enums.dart'; import 'package:mc_common_app/utils/utils.dart'; @@ -129,7 +129,7 @@ class _DealerUserPageState extends State { "isActive": false, }; Utils.showLoading(context); - MResponse response = await provider.removeDealerFromBranch(map); + GenericRespModel response = await provider.removeDealerFromBranch(map); Utils.hideLoading(context); if (response.messageStatus == 1) { getBranchUsers(); diff --git a/lib/views/settings/branch/dealer/widget/assign_dealer_user_sheet.dart b/lib/views/settings/branch/dealer/widget/assign_dealer_user_sheet.dart index ed232ef..7d87c84 100644 --- a/lib/views/settings/branch/dealer/widget/assign_dealer_user_sheet.dart +++ b/lib/views/settings/branch/dealer/widget/assign_dealer_user_sheet.dart @@ -1,17 +1,16 @@ import 'package:car_provider_app/view_models/dashboard_view_model.dart'; +import 'package:flutter/cupertino.dart'; import 'package:mc_common_app/generated/locale_keys.g.dart'; +import 'package:mc_common_app/models/general_models/generic_resp_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:flutter/material.dart'; import 'package:mc_common_app/classes/app_state.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/general_models/m_response.dart'; 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/utils/utils.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/extensions/extensions_widget.dart'; import 'package:provider/provider.dart'; @@ -50,6 +49,7 @@ class _AssignDealerUserSheetState extends State { return Container( width: double.infinity, height: MediaQuery.of(context).size.height / 1.2, + padding: const EdgeInsets.all(21), color: Colors.white, child: Column( children: [ @@ -65,10 +65,7 @@ class _AssignDealerUserSheetState extends State { itemBuilder: (context, index) { return dealerUsersWidget(model, index); }, - separatorBuilder: (context, index) { - return 12.height; - }, - padding: const EdgeInsets.all(12), + separatorBuilder: (context, index) => 12.height, itemCount: model.allProviderDealersList.length, ); } @@ -85,6 +82,7 @@ class _AssignDealerUserSheetState extends State { ShowFillButton( title: LocaleKeys.assignDealerUser.tr(), maxWidth: double.infinity, + maxHeight: 55, onPressed: () async { if (validation()) { Utils.showLoading(context); @@ -98,7 +96,7 @@ class _AssignDealerUserSheetState extends State { "dealershipUserIDs": userIds, "serviceProviderBranchID": widget.branchId, }; - MResponse response = await provider.assignDealerToBranch(map); + GenericRespModel response = await provider.assignDealerToBranch(map); Utils.hideLoading(context); if (response.messageStatus == 1) { Utils.showToast(response.message.toString()); @@ -112,8 +110,9 @@ class _AssignDealerUserSheetState extends State { ), 12.height, ShowFillButton( - title: ("+ " + LocaleKeys.createNewUser.tr()), + title: ("+ ${LocaleKeys.createNewUser.tr()}"), maxWidth: double.infinity, + maxHeight: 55, backgroundColor: Colors.transparent, borderColor: MyColors.darkPrimaryColor, txtColor: MyColors.darkPrimaryColor, @@ -125,7 +124,7 @@ class _AssignDealerUserSheetState extends State { }, ) ], - ).paddingAll(12), + ) ], ), ); @@ -159,7 +158,7 @@ class _AssignDealerUserSheetState extends State { ], ).toWhiteContainer( width: double.infinity, - borderRadius: 12, + borderRadius: 0, pading: const EdgeInsets.symmetric(horizontal: 6, vertical: 12), ); } @@ -167,8 +166,10 @@ class _AssignDealerUserSheetState extends State { Widget itemWidget(String title, String value) { return Row( children: [ - (title + ": ").toText(isBold: true, color: MyColors.lightTextColor), - value.toText(isBold: true), + ("$title: ").toText(isBold: true, color: MyColors.lightTextColor), + Flexible( + child: value.toText(isBold: true, overflow: TextOverflow.ellipsis), + ), ], ); } diff --git a/lib/views/settings/branch/define_branch_page.dart b/lib/views/settings/branch/define_branch_page.dart deleted file mode 100644 index 8e1ea39..0000000 --- a/lib/views/settings/branch/define_branch_page.dart +++ /dev/null @@ -1,230 +0,0 @@ -import 'dart:async'; - -import 'package:car_provider_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:easy_localization/easy_localization.dart'; -import 'package:flutter/material.dart'; - -import 'package:car_provider_app/view_models/branch_view_model.dart'; -import 'package:car_provider_app/views/location/pick_location_page.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/general_models/m_response.dart'; -import 'package:mc_common_app/models/provider_branches_models/branch_detail_model.dart'; -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/utils/utils.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/dropdown/dropdow_field.dart'; -import 'package:mc_common_app/widgets/txt_field.dart'; - -import 'package:provider/provider.dart'; - -class DefineBranchPage extends StatefulWidget { - BranchDetailModel? branchData; - - DefineBranchPage(this.branchData); - - @override - State createState() => _DefineBranchPageState(); -} - -class _DefineBranchPageState extends State { - late ServiceVM branchVM; - - @override - void initState() { - // TODO: implement initState - super.initState(); - scheduleMicrotask(() { - branchVM = context.read(); - branchVM.getAllCountriesList(widget.branchData, EasyLocalization.of(context)?.currentLocale?.countryCode ?? "SA"); - }); - - } - - @override - Widget build(BuildContext context) { - // ServiceVM branchVM = context.read(); - // branchVM.getAllCountriesList(widget.branchData, - // EasyLocalization.of(context)?.currentLocale?.countryCode ?? "SA"); - return Scaffold( - appBar: CustomAppBar( - title: LocaleKeys.defineBranches.tr(), - ), - body: Consumer(builder: (context, model, _) { - return SizedBox( - width: double.infinity, - height: double.infinity, - child: Column( - children: [ - Expanded( - child: SingleChildScrollView( - child: Padding( - padding: const EdgeInsets.all(20.0), - child: Column( - children: [ - // LocaleKeys.chooseCountry.tr().toText(fontSize: 14, color: MyColors.lightTextColor), - // 8.height, - model.country != null - ? DropdownField( - (DropValue value) { - model.countryValue = DropValue(value.id, value.value, ""); - model.countryCode = value.subValue; - model.countryId = value.id; - model.getAllCities(widget.branchData, EasyLocalization.of(context)?.currentLocale?.countryCode ?? "SA"); - }, - isSelectAble: widget.branchData == null ? true : false, - list: model.countryDropList, - dropdownValue: model.countryValue, - hint: "${LocaleKeys.chooseCountry.tr()}*", - ) - : const CircularProgressIndicator(), - 12.height, - if (model.countryId != -1) - model.cities != null - ? model.citiesDropList.isEmpty - ? Text(LocaleKeys.no_city_available.tr()) - : DropdownField( - (DropValue value) { - model.cityValue = DropValue(value.id, value.value, ""); - model.setOnlyState(ViewState.busy); - model.cityId = value.id; - model.setState(ViewState.idle); - }, - list: model.citiesDropList, - dropdownValue: model.cityValue, - hint: "${LocaleKeys.chooseCity.tr()}*", - ) - : const CircularProgressIndicator(), - 12.height, - if (model.cityId != -1) - Column( - children: [ - TxtField( - hint: "${LocaleKeys.branchName.tr()}*", - value: model.branchName, - onChanged: (v) { - model.branchName = v; - }, - ), - 12.height, - TxtField( - hint: "${LocaleKeys.branchDescription.tr()}*", - value: model.branchDescription, - onChanged: (v) { - model.branchDescription = v; - }, - ), - 12.height, - TxtField( - hint: LocaleKeys.address.tr(), - isNeedClickAll: false, - maxLines: 5, - value: model.address, - onChanged: (v) { - model.address = v; - }, - ), - 12.height, - InkWell( - onTap: () { - navigateTo( - context, - PickLocationPage( - onPickAddress: (double latitude, double longitude, String address) { - model.latitude = latitude; - model.longitude = longitude; - model.address = address; - model.setState(ViewState.idle); - }, - ), - ); - }, - child: Container( - width: double.infinity, - height: 45, - decoration: BoxDecoration( - color: Colors.transparent, - border: Border.all(color: MyColors.darkPrimaryColor, width: 2), - borderRadius: const BorderRadius.all(Radius.circular(8)), - ), - child: Row( - mainAxisAlignment: MainAxisAlignment.center, - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - const Icon( - Icons.place_outlined, - size: 18, - color: MyColors.darkPrimaryColor, - ), - 8.width, - Text( - LocaleKeys.pickAddress.tr(), - style: const TextStyle( - color: MyColors.darkPrimaryColor, - ), - ), - const Icon( - Icons.place_outlined, - size: 18, - color: Colors.transparent, - ), - ], - ), - ), - ), - ], - ), - ], - ), - ), - ), - ), - SizedBox( - width: double.infinity, - child: Padding( - padding: const EdgeInsets.only(left: 20, right: 20, bottom: 20), - child: ShowFillButton( - title: widget.branchData != null ? (widget.branchData!.id == null ? LocaleKeys.createBranch.tr() : LocaleKeys.updateBranch.tr()) : LocaleKeys.createBranch.tr(), - onPressed: () async { - if (widget.branchData == null) { - Utils.showLoading(context); - MResponse res = - await model.createBranch(model.branchName, model.branchDescription, model.cityId.toString(), model.address, model.latitude.toString(), model.longitude.toString()); - Utils.hideLoading(context); - if (res.messageStatus == 1) { - Utils.showToast(LocaleKeys.branch_created.tr()); - pop(context); - model.getBranchAndServices(); - } else { - Utils.showToast(res.message ?? ""); - } - } else { - Utils.showLoading(context); - MResponse res = await model.updateBranch( - widget.branchData!.id ?? 0, model.branchName, model.branchDescription, model.cityId.toString(), model.address, model.latitude.toString(), model.longitude.toString()); - Utils.hideLoading(context); - if (res.messageStatus == 1) { - Utils.showToast(LocaleKeys.branch_updated.tr()); - pop(context); - pop(context); - model.getBranchAndServices(); - } else { - Utils.showToast(res.message ?? ""); - } - } - }, - ), - ), - ), - ], - ), - ); - }), - ); - } -} diff --git a/lib/views/settings/schedule/add_schedules_page.dart b/lib/views/settings/schedule/add_schedules_page.dart index deeb7bf..cc0018d 100644 --- a/lib/views/settings/schedule/add_schedules_page.dart +++ b/lib/views/settings/schedule/add_schedules_page.dart @@ -10,7 +10,7 @@ import 'package:mc_common_app/extensions/string_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/appointments_models/schedule_model.dart'; -import 'package:mc_common_app/models/general_models/m_response.dart'; +import 'package:mc_common_app/models/general_models/generic_resp_model.dart'; import 'package:mc_common_app/theme/colors.dart'; import 'package:mc_common_app/utils/date_helper.dart'; import 'package:mc_common_app/utils/navigator.dart'; @@ -24,7 +24,7 @@ import 'package:easy_localization/easy_localization.dart'; class AddSchedulesPage extends StatefulWidget { - AddSchedulesPage({Key? key}) : super(key: key); + const AddSchedulesPage({Key? key}) : super(key: key); @override State createState() => _AddSchedulesPageState(); @@ -318,7 +318,7 @@ class _AddSchedulesPageState extends State { }; Utils.showLoading(context); - MResponse scheduleResponse = await model.createSchedule(map); + GenericRespModel scheduleResponse = await model.createSchedule(map); if (scheduleResponse.messageStatus == 1) { List services = []; for (var element in model.selectedServicesItems) { @@ -331,7 +331,7 @@ class _AddSchedulesPageState extends State { "serviceGroupDescription": "string" }; - MResponse servicesResponse = await model.addServicesInSchedule(map1); + GenericRespModel servicesResponse = await model.addServicesInSchedule(map1); Utils.hideLoading(context); if (servicesResponse.messageStatus == 1) { Utils.showToast("Successfully schedule created"); @@ -372,7 +372,7 @@ class _AddSchedulesPageState extends State { }; Utils.showLoading(context); - MResponse scheduleResponse = await model.updateSchedule(map); + GenericRespModel scheduleResponse = await model.updateSchedule(map); if (scheduleResponse.messageStatus == 1) { List services = []; for (var element in model.selectedServicesItems) { @@ -385,7 +385,7 @@ class _AddSchedulesPageState extends State { "serviceGroupDescription": "string", }; - MResponse servicesResponse = await model.updateServicesInSchedule(map1); + GenericRespModel servicesResponse = await model.updateServicesInSchedule(map1); Utils.hideLoading(context); if (servicesResponse.messageStatus == 1) { Utils.showToast("Successfully schedule updated"); diff --git a/lib/views/settings/schedule/schedules_list_page.dart b/lib/views/settings/schedule/schedules_list_page.dart index 9d37e5e..527cd90 100644 --- a/lib/views/settings/schedule/schedules_list_page.dart +++ b/lib/views/settings/schedule/schedules_list_page.dart @@ -7,7 +7,7 @@ import 'package:mc_common_app/extensions/string_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/appointments_models/schedule_model.dart'; -import 'package:mc_common_app/models/general_models/m_response.dart'; +import 'package:mc_common_app/models/general_models/generic_resp_model.dart'; import 'package:mc_common_app/theme/colors.dart'; import 'package:mc_common_app/utils/date_helper.dart'; import 'package:mc_common_app/utils/navigator.dart'; @@ -71,7 +71,7 @@ class _SchedulesListPageState extends State { IconButton( onPressed: () async { Utils.showLoading(context); - MResponse res = await value.setScheduleInactive(value.schedule!.data![index].id!, value.schedule!.data![index].serviceProviderBranchId!); + GenericRespModel res = await value.setScheduleInactive(value.schedule!.data![index].id!, value.schedule!.data![index].serviceProviderBranchId!); Utils.hideLoading(context); if (res.messageStatus == 1) { Utils.showToast(LocaleKeys.branch_deleted.tr()); diff --git a/lib/views/settings/services/create_item_page.dart b/lib/views/settings/services/create_item_page.dart index b5ce762..c16c27e 100644 --- a/lib/views/settings/services/create_item_page.dart +++ b/lib/views/settings/services/create_item_page.dart @@ -3,8 +3,7 @@ import 'dart:convert'; import 'package:car_provider_app/view_models/items_view_model.dart'; import 'package:flutter/material.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/general_models/m_response.dart'; +import 'package:mc_common_app/models/general_models/generic_resp_model.dart'; import 'package:mc_common_app/models/services_models/item_model.dart'; import 'package:mc_common_app/theme/colors.dart'; import 'package:mc_common_app/utils/app_permission_handler.dart'; @@ -228,7 +227,7 @@ class _CreateItemPageState extends State { "isAppointmentCustomerLoc": isHomeAppointmentAvailable }; Utils.showLoading(context); - MResponse mResponse = await model!.createServiceItem(map); + GenericRespModel mResponse = await model!.createServiceItem(map); Utils.hideLoading(context); if (mResponse.messageStatus == 1) { model!.getServiceItems(itemData!.serviceProviderServiceId ?? 0); @@ -251,7 +250,7 @@ class _CreateItemPageState extends State { "isAppointmentCustomerLoc": isHomeAppointmentAvailable }; Utils.showLoading(context); - MResponse mResponse = await model!.updateServiceItem(map); + GenericRespModel mResponse = await model!.updateServiceItem(map); Utils.hideLoading(context); if (mResponse.messageStatus == 1) { model!.getServiceItems(itemData!.serviceProviderServiceId ?? 0); diff --git a/lib/views/settings/services/create_services_page3.dart b/lib/views/settings/services/create_services_page3.dart index 5afadc2..57c86d5 100644 --- a/lib/views/settings/services/create_services_page3.dart +++ b/lib/views/settings/services/create_services_page3.dart @@ -1,13 +1,11 @@ import 'dart:async'; - -import 'package:car_provider_app/generated/locale_keys.g.dart'; import 'package:mc_common_app/generated/locale_keys.g.dart'; +import 'package:mc_common_app/models/general_models/generic_resp_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:flutter/material.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/general_models/m_response.dart'; import 'package:mc_common_app/theme/colors.dart'; import 'package:mc_common_app/utils/enums.dart'; import 'package:mc_common_app/utils/utils.dart'; @@ -21,9 +19,9 @@ import 'package:mc_common_app/widgets/txt_field.dart'; import 'package:provider/provider.dart'; class CreateServicesPage3 extends StatefulWidget { - CreateBranchModel? branchModel; + final CreateBranchModel? branchModel; - CreateServicesPage3(this.branchModel, {Key? key}) : super(key: key); + const CreateServicesPage3(this.branchModel, {Key? key}) : super(key: key); @override State createState() => _CreateServicesPage3State(); @@ -31,19 +29,12 @@ class CreateServicesPage3 extends StatefulWidget { class _CreateServicesPage3State extends State { bool isAppointmentAvailable = false; - bool isHomeAppointmentAvailable = false; - int serviceRage = 0; - String chargersPerKm = "0"; - int? categoryId; - int? serviceId = -1; - DropValue? category; - DropValue? service; @override @@ -68,9 +59,8 @@ class _CreateServicesPage3State extends State { @override Widget build(BuildContext context) { - return Scaffold( - appBar: CustomAppBar(title: LocaleKeys.defineServices.tr()), + appBar: CustomAppBar(title: LocaleKeys.addServices.tr()), body: SizedBox( width: double.infinity, height: double.infinity, @@ -84,19 +74,19 @@ class _CreateServicesPage3State extends State { padding: const EdgeInsets.all(20.0), child: Column( children: [ - Text( - widget.branchModel!.branchName ?? "N/A", - style: const TextStyle( - fontSize: 12, - fontWeight: FontWeight.bold, - ), - ).toContainer( - padding: const EdgeInsets.only(left: 8, right: 8, bottom: 12, top: 12), - backgroundColor: MyColors.textFieldColor, - borderRadius: 0, - width: double.infinity, - ), - 12.height, + // Text( + // widget.branchModel!.branchName ?? "N/A", + // style: const TextStyle( + // fontSize: 12, + // fontWeight: FontWeight.bold, + // ), + // ).toContainer( + // padding: const EdgeInsets.only(left: 8, right: 8, bottom: 12, top: 12), + // backgroundColor: MyColors.textFieldColor, + // borderRadius: 0, + // width: double.infinity, + // ), + // 12.height, (widget.branchModel!.categoryId != null) ? Text( widget.branchModel!.categoryName ?? "N/A", @@ -275,7 +265,7 @@ class _CreateServicesPage3State extends State { } // print(map); Utils.showLoading(context); - MResponse mResponse = await model.createService(map); + GenericRespModel mResponse = await model.createService(map); model.getBranchAndServices(); Utils.hideLoading(context); Utils.showToast(mResponse.message ?? ""); @@ -294,7 +284,7 @@ class _CreateServicesPage3State extends State { // print(map); Utils.showLoading(context); - MResponse mResponse = await model.updateServices(map); + GenericRespModel mResponse = await model.updateServices(map); model.getBranchAndServices(); Utils.hideLoading(context); Utils.showToast(mResponse.message ?? ""); diff --git a/lib/views/settings/services/duplication/matched_services_page.dart b/lib/views/settings/services/duplication/matched_services_page.dart index d4f3355..2b56064 100644 --- a/lib/views/settings/services/duplication/matched_services_page.dart +++ b/lib/views/settings/services/duplication/matched_services_page.dart @@ -1,5 +1,6 @@ import 'dart:convert'; +import 'package:mc_common_app/models/general_models/generic_resp_model.dart'; import 'package:mc_common_app/view_models/service_view_model.dart'; import 'package:car_provider_app/views/settings/services/duplication/sheet/approved_branches_list_sheet.dart'; import 'package:car_provider_app/views/settings/services/duplication/sheet/items_selection_sheet.dart'; @@ -8,7 +9,6 @@ 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:flutter_svg/flutter_svg.dart'; -import 'package:mc_common_app/models/general_models/m_response.dart'; import 'package:mc_common_app/models/services_models/item_model.dart'; import 'package:mc_common_app/theme/colors.dart'; import 'package:mc_common_app/utils/navigator.dart'; @@ -22,9 +22,9 @@ import 'package:mc_common_app/widgets/extensions/extensions_widget.dart'; import 'package:provider/provider.dart'; class MatchedServicesPage extends StatefulWidget { - MatchServicesArguments? matchServicesArguments; + final MatchServicesArguments? matchServicesArguments; - MatchedServicesPage(this.matchServicesArguments, {Key? key}) : super(key: key); + const MatchedServicesPage(this.matchServicesArguments, {Key? key}) : super(key: key); @override State createState() => _MatchedServicesPageState(); @@ -123,8 +123,7 @@ class _MatchedServicesPageState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ model.matchedServices![index].serviceDescription.toString().toText(fontSize: 16, isBold: true), - "${model.matchedServices![index].serviceItems!.where((c) => c.isUpdateOrSelected == true).length} items selected out of ${model.matchedServices![index].serviceItems!.length}" - .toText(color: MyColors.lightTextColor) + "${model.matchedServices![index].serviceItems!.where((c) => c.isUpdateOrSelected == true).length} items selected out of ${model.matchedServices![index].serviceItems!.length}".toText(color: MyColors.lightTextColor) ], ), ), @@ -172,7 +171,7 @@ class _MatchedServicesPageState extends State { "serviceItems": items, }; print(jsonEncode(map)); - MResponse mResponse = await serviceVM.duplicateItems(map); + GenericRespModel mResponse = await serviceVM.duplicateItems(map); Utils.hideLoading(context); Utils.showToast(mResponse.message ?? ""); pop(context); @@ -182,8 +181,6 @@ class _MatchedServicesPageState extends State { ], ), ), - - ); } } diff --git a/lib/views/subscriptions/all_subscriptions_page.dart b/lib/views/subscriptions/all_subscriptions_page.dart index 2ed251d..93f06a7 100644 --- a/lib/views/subscriptions/all_subscriptions_page.dart +++ b/lib/views/subscriptions/all_subscriptions_page.dart @@ -8,7 +8,7 @@ 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/models/general_models/m_response.dart'; +import 'package:mc_common_app/models/general_models/generic_resp_model.dart'; import 'package:mc_common_app/theme/colors.dart'; import 'package:mc_common_app/utils/enums.dart'; import 'package:mc_common_app/utils/navigator.dart'; @@ -61,7 +61,7 @@ class _SubscriptionsPageState extends State { subcriptionsVM.monthlyTabs, selectedColor: MyColors.primaryColor, onSelected: (DropValue selectedValue, int index) { - subcriptionsVM.selectedMothlyTab = selectedValue; + subcriptionsVM.selectedMonthlyTab = selectedValue; subcriptionsVM.monthlyTabs.forEach((element) => element.isEnabled = false); subcriptionsVM.monthlyTabs[index].isEnabled = true; subcriptionsVM.filterSubscriptions(); @@ -75,7 +75,7 @@ class _SubscriptionsPageState extends State { subcriptionsVM.tempSubscriptions[index], isSubscribed: subcriptionsVM.tempSubscriptions[index].isSubscribed ?? false, onRenewSubscriptionClick: () async { - MResponse response = await subcriptionsVM.createSubscriptionOrder(subcriptionsVM.tempSubscriptions[index].id ?? 0, true, true); + GenericRespModel response = await subcriptionsVM.createSubscriptionOrder(subcriptionsVM.tempSubscriptions[index].id ?? 0, true, true); if (response.data != null) { context.read().updateOrderProviderSubscriptionId(id: response.data ?? 0); navigateWithName(context, AppRoutes.paymentMethodsView, arguments: PaymentTypes.subscription); diff --git a/lib/views/subscriptions/my_subscritions_page.dart b/lib/views/subscriptions/my_subscritions_page.dart index d1d2830..70416ec 100644 --- a/lib/views/subscriptions/my_subscritions_page.dart +++ b/lib/views/subscriptions/my_subscritions_page.dart @@ -11,7 +11,6 @@ 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/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'; import 'package:mc_common_app/utils/enums.dart'; diff --git a/lib/views/subscriptions/sheet/downgrade_data_sheet.dart b/lib/views/subscriptions/sheet/downgrade_data_sheet.dart index 3129c22..59751d9 100644 --- a/lib/views/subscriptions/sheet/downgrade_data_sheet.dart +++ b/lib/views/subscriptions/sheet/downgrade_data_sheet.dart @@ -1,10 +1,9 @@ -import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:mc_common_app/classes/app_state.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/general_models/m_response.dart'; +import 'package:mc_common_app/models/general_models/generic_resp_model.dart'; import 'package:mc_common_app/models/subscriptions_models/branch_user_selection_model.dart'; import 'package:mc_common_app/models/subscriptions_models/subscription_model.dart'; import 'package:mc_common_app/theme/colors.dart'; @@ -19,9 +18,9 @@ import 'package:mc_common_app/widgets/extensions/extensions_widget.dart'; import 'package:provider/provider.dart'; class DowngradeDataSheet extends StatefulWidget { - Subscription subscription; + final Subscription subscription; - DowngradeDataSheet(this.subscription, {super.key}); + const DowngradeDataSheet(this.subscription, {super.key}); @override State createState() => _DowngradeDataSheetState(); @@ -31,7 +30,7 @@ class _DowngradeDataSheetState extends State { @override void initState() { super.initState(); - context.read().getSPBranchUser_Get(); + context.read().getSPBranchUserGet(); } @override @@ -51,8 +50,7 @@ class _DowngradeDataSheetState extends State { isBold: true, ), 8.height, - "To select this subscription you need to deactivate your branches and users as this package only supports 1 branch and 2 users per branch. You can reactivate these branches later after upgrading the package" - .toText( + "To select this subscription you need to deactivate your branches and users as this package only supports 1 branch and 2 users per branch. You can reactivate these branches later after upgrading the package".toText( fontSize: 14, color: MyColors.textColor, ), @@ -69,8 +67,7 @@ class _DowngradeDataSheetState extends State { ? const Center(child: CircularProgressIndicator()) : ListView.separated( itemBuilder: (context, index) { - return showBranchItem( - model, model.branchSelectionList![index]); + return showBranchItem(model, model.branchSelectionList![index]); }, separatorBuilder: (context, index) { return 12.height; @@ -97,18 +94,14 @@ class _DowngradeDataSheetState extends State { } } } - print("opoewww"); - print(jsonEncode(listOfBranches)); - if (listOfBranches.isNotEmpty || - listOfUsers.isNotEmpty) { + if (listOfBranches.isNotEmpty || listOfUsers.isNotEmpty) { navigateTo( context, PaymentMethodsView( paymentType: PaymentTypes.subscription, onTempContinue: () async { Utils.showLoading(context); - MResponse response = - await model.payForSubscription( + GenericRespModel response = await model.payForSubscription( widget.subscription.id!, true, false, @@ -120,39 +113,21 @@ class _DowngradeDataSheetState extends State { Utils.hideLoading(context); if (response.messageStatus == 1) { - if(response.message!.contains("Your current sub-users are not")){ + if (response.message!.contains("Your current sub-users are not")) { Utils.showToast(response.message.toString()); - context.read().getMySubscriptions( - AppState() - .getUser - .data - ?.userInfo - ?.providerId - .toString() ?? - ""); + context.read().getMySubscriptions(AppState().getUser.data?.userInfo?.providerId.toString() ?? ""); pop(context); return false; - }else{ - context - .read() - .updateOrderProviderSubscriptionId( - id: response.data); + } else { + context.read().updateOrderProviderSubscriptionId(id: response.data); // Utils.showToast( // "Subscriptions is successfully updated"); return true; } - } else { Utils.showToast(response.message.toString()); - context.read().getMySubscriptions( - AppState() - .getUser - .data - ?.userInfo - ?.providerId - .toString() ?? - ""); + context.read().getMySubscriptions(AppState().getUser.data?.userInfo?.providerId.toString() ?? ""); return false; } }, @@ -219,9 +194,7 @@ class _DowngradeDataSheetState extends State { crossAxisAlignment: CrossAxisAlignment.center, children: [ Icon( - model.isOpend - ? Icons.keyboard_arrow_up_rounded - : Icons.keyboard_arrow_down_rounded, + model.isOpend ? Icons.keyboard_arrow_up_rounded : Icons.keyboard_arrow_down_rounded, ), ], ), @@ -246,8 +219,7 @@ class _DowngradeDataSheetState extends State { // model.usersList[index].isSelected = false; // } // } - model.usersList[index].isSelected = - !model.usersList[index].isSelected; + model.usersList[index].isSelected = !model.usersList[index].isSelected; viewModel.setState(ViewState.idle); }); }, diff --git a/lib/views/subscriptions/sheet/upgrade_package_sheet.dart b/lib/views/subscriptions/sheet/upgrade_package_sheet.dart index bb7521d..d3fc280 100644 --- a/lib/views/subscriptions/sheet/upgrade_package_sheet.dart +++ b/lib/views/subscriptions/sheet/upgrade_package_sheet.dart @@ -6,7 +6,7 @@ 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/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/date_helper.dart'; @@ -22,10 +22,10 @@ import 'package:provider/provider.dart'; import 'package:easy_localization/easy_localization.dart'; class UpgradePackageSheet extends StatefulWidget { - Subscription subscription; - bool isRenew; + final Subscription subscription; + final bool isRenew; - UpgradePackageSheet(this.subscription, this.isRenew, {super.key}); + const UpgradePackageSheet(this.subscription, this.isRenew, {super.key}); @override State createState() => _UpgradePackageSheetState(); @@ -105,13 +105,13 @@ class _UpgradePackageSheetState extends State { maxWidth: double.infinity, onPressed: () async { 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().updateOrderProviderSubscriptionId(id: response.data ?? 0); - navigateWithName(context, AppRoutes.paymentMethodsView, arguments: PaymentTypes.subscription); - } + Utils.showLoading(context); + GenericRespModel response = await model.createSubscriptionOrder(widget.subscription.id ?? 0, true, true); + Utils.hideLoading(context); + if (response.data != null) { + context.read().updateOrderProviderSubscriptionId(id: response.data ?? 0); + navigateWithName(context, AppRoutes.paymentMethodsView, arguments: PaymentTypes.subscription); + } } else { navigateTo( context, @@ -119,7 +119,7 @@ class _UpgradePackageSheetState extends State { paymentType: PaymentTypes.subscription, onTempContinue: () async { Utils.showLoading(context); - MResponse mResponse = await model.payForSubscription(widget.subscription.id!, isNowSelected, false, price); + GenericRespModel mResponse = await model.payForSubscription(widget.subscription.id!, isNowSelected, false, price); Utils.hideLoading(context); if (mResponse.messageStatus == 1) { context.read().updateOrderProviderSubscriptionId(id: mResponse.data);