diff --git a/lib/repositories/branch_repo.dart b/lib/repositories/branch_repo.dart index ba2ede7..76d096c 100644 --- a/lib/repositories/branch_repo.dart +++ b/lib/repositories/branch_repo.dart @@ -1,11 +1,11 @@ import 'dart:async'; + +import 'package:flutter/cupertino.dart'; import 'package:mc_common_app/api/api_client.dart'; import 'package:mc_common_app/classes/app_state.dart'; - import 'package:mc_common_app/classes/consts.dart'; import 'package:mc_common_app/config/dependency_injection.dart'; import 'package:mc_common_app/models/general_models/generic_resp_model.dart'; -import 'package:flutter/cupertino.dart'; import 'package:mc_common_app/models/provider_branches_models/branch_detail_model.dart'; import 'package:mc_common_app/models/provider_branches_models/branch_review_model.dart'; import 'package:mc_common_app/models/provider_branches_models/profile/branch.dart'; @@ -15,6 +15,7 @@ import 'package:mc_common_app/models/provider_branches_models/profile/services.d import 'package:mc_common_app/models/provider_branches_models/provider_model.dart'; import 'package:mc_common_app/models/provider_branches_models/provider_profile_model.dart'; import 'package:mc_common_app/models/services_models/item_model.dart'; +import 'package:mc_common_app/models/services_models/service_model.dart'; abstract class BranchRepo { Future createBranch({ @@ -53,6 +54,8 @@ abstract class BranchRepo { Future fetchProviderServices(String branchID, String serviceCategoryId); + Future> fetchProviderServicesModelByCategoryIdAndBranchID(String branchID, String serviceCategoryId); + Future createNewService(List> map); Future getServiceProviderDocument(dynamic userId); @@ -188,7 +191,9 @@ class BranchRepoImp implements BranchRepo { }; String? token = AppState().getUser.data?.accessToken; debugPrint(token); - return await injector.get().getJsonForObject((json) => Document.fromJson(json), ApiConsts.fetProviderDocument, queryParameters: queryParameters, token: AppState().getUser.data!.accessToken ?? ""); + return await injector + .get() + .getJsonForObject((json) => Document.fromJson(json), ApiConsts.fetProviderDocument, queryParameters: queryParameters, token: AppState().getUser.data!.accessToken ?? ""); } @override @@ -355,6 +360,28 @@ class BranchRepoImp implements BranchRepo { return await apiClient.getJsonForObject((json) => Services.fromJson(json), ApiConsts.getProviderServices, queryParameters: postParams, token: t); } + @override + Future> fetchProviderServicesModelByCategoryIdAndBranchID(String branchID, String serviceCategoryId) async { + var queryParameters = { + "ID": branchID, + "ServiceCategoryIDs": [serviceCategoryId], + }; + String t = AppState().getUser.data!.accessToken ?? ""; + + GenericRespModel adsGenericModel = await apiClient.getJsonForObject( + (json) => GenericRespModel.fromJson(json), + ApiConsts.getAllNearBranches, + token: appState.getUser.data!.accessToken, + queryParameters: queryParameters, + ); + List nearBranches = List.generate(adsGenericModel.data.length, (index) => BranchDetailModel.fromJson(adsGenericModel.data[index])); + if (nearBranches.isNotEmpty) { + List services = nearBranches.first.branchServices ?? []; + return services; + } + return []; + } + @override Future addNewServicesInAppointment(Map map) async { String t = AppState().getUser.data!.accessToken ?? ""; @@ -409,7 +436,8 @@ class BranchRepoImp implements BranchRepo { @override Future getBranchAndServicesByProviderId(int providerId) async { var postParams = {"serviceProviderID": providerId.toString()}; - GenericRespModel adsGenericModel = await apiClient.getJsonForObject((json) => GenericRespModel.fromJson(json), ApiConsts.branchesAndServices, token: appState.getUser.data!.accessToken, queryParameters: postParams); + GenericRespModel adsGenericModel = + await apiClient.getJsonForObject((json) => GenericRespModel.fromJson(json), ApiConsts.branchesAndServices, token: appState.getUser.data!.accessToken, queryParameters: postParams); return ProviderProfileModel.fromJson(adsGenericModel.data); } diff --git a/lib/view_models/payment_view_model.dart b/lib/view_models/payment_view_model.dart index d7fee4e..a0624cc 100644 --- a/lib/view_models/payment_view_model.dart +++ b/lib/view_models/payment_view_model.dart @@ -85,11 +85,12 @@ class PaymentVM extends ChangeNotifier { ); Utils.hideLoading(context); - if (!isPaid) { - Utils.showToast(LocaleKeys.paymentFailed.tr()); - pop(context); - return; - } + // TODO: VERIFY THIS WITH ZAHOOR + // if (!isPaid) { + // Utils.showToast(LocaleKeys.paymentFailed.tr()); + // pop(context); + // return; + // } Utils.showToast(LocaleKeys.paymentSuccessful.tr()); onVerified(); } catch (e) { diff --git a/lib/view_models/requests_view_model.dart b/lib/view_models/requests_view_model.dart index 7eaa8a4..5ed5056 100644 --- a/lib/view_models/requests_view_model.dart +++ b/lib/view_models/requests_view_model.dart @@ -3,6 +3,8 @@ import 'dart:convert'; import 'dart:developer'; import 'dart:io'; + +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/cupertino.dart'; import 'package:mc_common_app/classes/app_state.dart'; import 'package:mc_common_app/classes/consts.dart'; @@ -14,10 +16,10 @@ import 'package:mc_common_app/models/advertisment_models/vehicle_details_models. import 'package:mc_common_app/models/chat_models/chat_message_model.dart'; import 'package:mc_common_app/models/general_models/enums_model.dart'; import 'package:mc_common_app/models/general_models/generic_resp_model.dart'; +import 'package:mc_common_app/models/general_models/widgets_models.dart'; import 'package:mc_common_app/models/requests_models/offers_model.dart'; import 'package:mc_common_app/models/requests_models/provider_offers_model.dart'; import 'package:mc_common_app/models/requests_models/request_model.dart'; -import 'package:mc_common_app/models/general_models/widgets_models.dart'; import 'package:mc_common_app/repositories/common_repo.dart'; import 'package:mc_common_app/repositories/request_repo.dart'; import 'package:mc_common_app/services/common_services.dart'; @@ -29,7 +31,6 @@ import 'package:mc_common_app/view_models/base_view_model.dart'; import 'package:mc_common_app/view_models/chat_view_model.dart'; import 'package:mc_common_app/widgets/dropdown/dropdow_field.dart'; import 'package:provider/provider.dart'; -import 'package:easy_localization/easy_localization.dart'; class RequestsVM extends BaseVM { final CommonAppServices commonServices; @@ -748,9 +749,6 @@ class RequestsVM extends BaseVM { } else if (vehicleCityId.selectedId == -1) { Utils.showToast(LocaleKeys.selectValidCity.tr()); isValid = false; - } else if (price.isEmpty) { - Utils.showToast(LocaleKeys.addValidPrice.tr()); - isValid = false; } else if (description.isEmpty) { Utils.showToast(LocaleKeys.addValidDescription.tr()); isValid = false; diff --git a/lib/view_models/service_view_model.dart b/lib/view_models/service_view_model.dart index 3b24fc4..0ef3af5 100644 --- a/lib/view_models/service_view_model.dart +++ b/lib/view_models/service_view_model.dart @@ -1,13 +1,13 @@ import 'dart:convert'; -import 'dart:developer'; import 'dart:io'; + +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:mc_common_app/classes/app_state.dart'; import 'package:mc_common_app/classes/consts.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/repositories/branch_repo.dart'; -import 'package:flutter/cupertino.dart'; import 'package:mc_common_app/models/provider_branches_models/branch_detail_model.dart'; import 'package:mc_common_app/models/provider_branches_models/profile/categroy.dart'; import 'package:mc_common_app/models/provider_branches_models/profile/document.dart'; @@ -18,6 +18,7 @@ import 'package:mc_common_app/models/services_models/service_model.dart'; import 'package:mc_common_app/models/user_models/branch_user.dart'; import 'package:mc_common_app/models/user_models/cities.dart'; import 'package:mc_common_app/models/user_models/country.dart'; +import 'package:mc_common_app/repositories/branch_repo.dart'; import 'package:mc_common_app/repositories/common_repo.dart'; import 'package:mc_common_app/services/common_services.dart'; import 'package:mc_common_app/utils/enums.dart'; @@ -26,7 +27,6 @@ import 'package:mc_common_app/utils/utils.dart'; import 'package:mc_common_app/view_models/ad_view_model.dart'; import 'package:mc_common_app/view_models/base_view_model.dart'; import 'package:mc_common_app/widgets/dropdown/dropdow_field.dart'; -import 'package:easy_localization/easy_localization.dart'; class ServiceVM extends BaseVM { final BranchRepo branchRepo; @@ -470,6 +470,18 @@ class ServiceVM extends BaseVM { setState(ViewState.idle); } + Future> fetchProviderServicesModelByCategoryIdAndBranchID({required String branchID, required String categoryId}) async { + setState(ViewState.busy); + try { + List services = await branchRepo.fetchProviderServicesModelByCategoryIdAndBranchID(branchID, categoryId); + setState(ViewState.idle); + return services; + } catch (e) { + setState(ViewState.idle); + return []; + } + } + Future createService(List> map) async { setState(ViewState.busy); return await branchRepo.createService(map); diff --git a/lib/views/requests/create_request_page.dart b/lib/views/requests/create_request_page.dart index 4ebe016..031fb6a 100644 --- a/lib/views/requests/create_request_page.dart +++ b/lib/views/requests/create_request_page.dart @@ -1,15 +1,14 @@ -import 'dart:developer'; - -import 'package:mc_common_app/classes/app_state.dart'; -import 'package:mc_common_app/generated/locale_keys.g.dart'; -import 'package:mc_common_app/utils/enums.dart'; -import 'package:mc_common_app/utils/navigator.dart'; -import 'package:mc_common_app/view_models/requests_view_model.dart'; +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.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/generated/locale_keys.g.dart'; import 'package:mc_common_app/models/general_models/widgets_models.dart'; +import 'package:mc_common_app/utils/enums.dart'; +import 'package:mc_common_app/utils/navigator.dart'; +import 'package:mc_common_app/view_models/requests_view_model.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/views/location_views/pick_location_page.dart'; @@ -19,7 +18,6 @@ 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'; import 'package:provider/provider.dart'; -import 'package:easy_localization/easy_localization.dart'; class CreateRequestPage extends StatelessWidget { const CreateRequestPage({super.key}); @@ -135,7 +133,8 @@ class CreateRequestPage extends StatelessWidget { return DropdownField( (DropValue value) => requestsVM.updateSelectionVehicleConditionId(SelectionModel(selectedId: value.id, selectedOption: value.value)), list: vehicleOwnerDrop, - dropdownValue: requestsVM.vehicleConditionId.selectedId != -1 ? DropValue(requestsVM.vehicleConditionId.selectedId, requestsVM.vehicleConditionId.selectedOption, "") : null, + dropdownValue: + requestsVM.vehicleConditionId.selectedId != -1 ? DropValue(requestsVM.vehicleConditionId.selectedId, requestsVM.vehicleConditionId.selectedOption, "") : null, hint: LocaleKeys.condition.tr(), errorValue: requestsVM.vehicleConditionId.errorValue, ); diff --git a/lib/views/requests/widget/request_item.dart b/lib/views/requests/widget/request_item.dart index e09ef63..b934574 100644 --- a/lib/views/requests/widget/request_item.dart +++ b/lib/views/requests/widget/request_item.dart @@ -1,26 +1,20 @@ // ignore_for_file: use_build_context_synchronously -import 'dart:developer'; - -import 'package:flutter/cupertino.dart'; -import 'package:flutter_svg/flutter_svg.dart'; -import 'package:mc_common_app/classes/consts.dart'; -import 'package:mc_common_app/generated/locale_keys.g.dart'; -import 'package:mc_common_app/main.dart'; -import 'package:mc_common_app/utils/enums.dart'; -import 'package:mc_common_app/view_models/chat_view_model.dart'; +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:mc_common_app/config/routes.dart'; import 'package:mc_common_app/extensions/int_extensions.dart'; import 'package:mc_common_app/extensions/string_extensions.dart'; +import 'package:mc_common_app/generated/locale_keys.g.dart'; import 'package:mc_common_app/models/requests_models/request_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/view_models/chat_view_model.dart'; import 'package:mc_common_app/view_models/requests_view_model.dart'; import 'package:mc_common_app/widgets/extensions/extensions_widget.dart'; import 'package:provider/provider.dart'; -import 'package:easy_localization/easy_localization.dart'; class RequestItem extends StatelessWidget { final RequestModel request; @@ -79,28 +73,28 @@ class RequestItem extends StatelessWidget { ], ), showItem("${LocaleKeys.description.tr()}:", request.description), - showItem("${LocaleKeys.priceRange.tr()}: ", ""), - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - crossAxisAlignment: CrossAxisAlignment.end, - children: [ - Row( - crossAxisAlignment: CrossAxisAlignment.end, - children: [ - request.price.toInt().toString().toText(fontSize: 19, color: MyColors.darkTextColor, isBold: true, letterSpacing: -1.16), - 2.width, - LocaleKeys.sar.tr().toText(color: MyColors.lightTextColor, fontSize: 10, letterSpacing: -0.4).paddingOnly(bottom: 3), - ], - ), - request.requestStatus == RequestStatusEnum.submitted - ? SvgPicture.asset( - MyAssets.arrowRight, - height: 9.69, - width: 13, - ) - : const SizedBox() - ], - ), + // showItem("${LocaleKeys.priceRange.tr()}: ", ""), + // Row( + // mainAxisAlignment: MainAxisAlignment.spaceBetween, + // crossAxisAlignment: CrossAxisAlignment.end, + // children: [ + // Row( + // crossAxisAlignment: CrossAxisAlignment.end, + // children: [ + // request.price.toInt().toString().toText(fontSize: 19, color: MyColors.darkTextColor, isBold: true, letterSpacing: -1.16), + // 2.width, + // LocaleKeys.sar.tr().toText(color: MyColors.lightTextColor, fontSize: 10, letterSpacing: -0.4).paddingOnly(bottom: 3), + // ], + // ), + // request.requestStatus == RequestStatusEnum.submitted + // ? SvgPicture.asset( + // MyAssets.arrowRight, + // height: 9.69, + // width: 13, + // ) + // : const SizedBox() + // ], + // ), ], ).toContainer(isShadowEnabled: true).onPress(() async { RequestsVM requestsVM = context.read();