// import 'dart:io'; // // import 'package:mc_common_app/classes/app_state.dart'; // import 'package:mc_common_app/models/advertisment_models/vehicle_details_models.dart'; // import 'package:mc_common_app/models/enums_model.dart'; // import 'package:mc_common_app/models/generic_resp_model.dart'; // import 'package:mc_common_app/models/requests/request_model.dart'; // import 'package:mc_common_app/models/widgets_models.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/utils.dart'; // import 'package:mc_common_app/view_models/base_view_model.dart'; // // import '../repositories/request_repo.dart'; // // class RequestsVM extends BaseVM { // final CommonAppServices commonServices; // final CommonRepo commonRepo; // final RequestRepo requestRepo; // // RequestsVM({required this.commonServices, required this.commonRepo, required this.requestRepo}); // // List requestsFilterOptions = []; // // populateRequestsFilterList() { // requestsFilterOptions.clear(); // requestsFilterOptions = [ // FilterListModel(title: "Cars", isSelected: true, id: 1), // FilterListModel(title: "Spare Parts", isSelected: false, id: 2), // ]; // notifyListeners(); // } // // applyFilterOnRequestsVM({required int index}) { // if (requestsFilterOptions.isEmpty) return; // for (var value in requestsFilterOptions) { // value.isSelected = false; // } // requestsFilterOptions[index].isSelected = true; // notifyListeners(); // } // // List pickedVehicleImages = []; // String vehicleImageError = ""; // // void removeImageFromList(String filePath) { // int index = pickedVehicleImages.indexWhere((element) => element.path == filePath); // if (index == -1) { // return; // } // pickedVehicleImages.removeAt(index); // notifyListeners(); // } // // void pickMultipleImages() async { // List Images = await commonServices.pickMultipleImages(); // pickedVehicleImages.addAll(Images); // if (pickedVehicleImages.isNotEmpty) vehicleImageError = ""; // notifyListeners(); // } // // bool isFetchingRequestType = false; // bool isFetchingVehicleType = true; // bool isFetchingVehicleDetail = false; // List requestTypes = []; // List vehicleTypes = []; // VehicleDetailsModel? vehicleDetails; // List vehicleBrands = []; // List vehicleModels = []; // List vehicleModelYears = []; // List vehicleCountries = []; // List vehicleCities = []; // // SelectionModel requestTypeId = SelectionModel(selectedOption: "", selectedId: -1, errorValue: ""); // // getRequestTypes() async { // requestTypeId.selectedId = -1; // isFetchingRequestType = true; // requestTypes = await commonRepo.getEnumTypeValues(enumTypeID: 16); //TODO: 16 is to get Request types // isFetchingRequestType = false; // notifyListeners(); // } // // void updateSelectionRequestTypeId(SelectionModel id) async { // requestTypeId = id; // getVehicleTypes(); // notifyListeners(); // } // // SelectionModel vehicleTypeId = SelectionModel(selectedOption: "", selectedId: -1, errorValue: ""); // // Future getVehicleTypes() async { // reset(); // isFetchingVehicleType = true; // vehicleTypes = await commonRepo.getVehicleTypes(); // isFetchingVehicleType = false; // notifyListeners(); // } // // reset() { // vehicleTypeId.selectedId = -1; // vehicleBrandId.selectedId = -1; // vehicleModelId.selectedId = -1; // vehicleModelYearId.selectedId = -1; // vehicleCountryId.selectedId = -1; // vehicleCityId.selectedId = -1; // } // // void updateSelectionVehicleTypeId(SelectionModel id) async { // vehicleTypeId = id; // getVehicleBrandsByVehicleTypeId(); // notifyListeners(); // } // // Future getVehicleBrandsByVehicleTypeId() async { // // if (vehicleBrandId.selectedId == -1) { // // return; // // } // isFetchingVehicleDetail = true; // notifyListeners(); // vehicleDetails = await commonRepo.getVehicleDetails(vehicleTypeId: vehicleTypeId.selectedId); // // if (vehicleDetails != null) { // vehicleBrands = vehicleDetails!.vehicleBrands!; // vehicleModels = vehicleDetails!.vehicleModels!; // vehicleModelYears = vehicleDetails!.vehicleModelYears!; // vehicleCountries = vehicleDetails!.vehicleCountries!; // } // isFetchingVehicleDetail = false; // notifyListeners(); // } // // SelectionModel vehicleBrandId = SelectionModel(selectedOption: "", selectedId: -1, errorValue: ""); // // void updateSelectionVehicleBrandId(SelectionModel id) { // vehicleBrandId = id; // vehicleModelId = SelectionModel(selectedOption: "", selectedId: -1, errorValue: ""); // vehicleModelYearId = SelectionModel(selectedOption: "", selectedId: -1, errorValue: ""); // notifyListeners(); // } // // SelectionModel vehicleModelId = SelectionModel(selectedOption: "", selectedId: -1, errorValue: ""); // // void updateSelectionVehicleModelId(SelectionModel id) { // vehicleModelId = id; // vehicleModelYearId = SelectionModel(selectedOption: "", selectedId: -1, errorValue: ""); // notifyListeners(); // } // // SelectionModel vehicleModelYearId = SelectionModel(selectedOption: "", selectedId: -1, errorValue: ""); // // void updateSelectionVehicleModelYearId(SelectionModel id) { // vehicleModelYearId = id; // notifyListeners(); // } // // bool isShippingDeliveryEnabled = false; // // void updateShippingDeliverEnabled(bool v) { // isShippingDeliveryEnabled = v; // notifyListeners(); // } // // bool isCountryFetching = false; // SelectionModel vehicleCountryId = SelectionModel(selectedOption: "", selectedId: -1, errorValue: ""); // // void updateSelectionVehicleCountryId(SelectionModel id) async { // vehicleCountryId = id; // isCountryFetching = true; // notifyListeners(); // vehicleCities = await commonRepo.getVehicleCities(countryId: vehicleCountryId.selectedId); // isCountryFetching = false; // notifyListeners(); // } // // SelectionModel vehicleCityId = SelectionModel(selectedOption: "", selectedId: -1, errorValue: ""); // // void updateSelectionVehicleCityId(SelectionModel id) { // vehicleCityId = id; // notifyListeners(); // } // // //Request Management // String price = "", description = ""; // // updatePrice(String v) { // price = v; // } // // updateDescription(String v) { // description = v; // } // // Future createRequest() async { // if (validate()) { // Map m = { // "customerID": AppState().getUser.data!.userInfo!.customerId ?? 0, // "requestType": requestTypeId.selectedId, // "vehicleTypeID": vehicleTypeId.selectedId, // "brand": vehicleBrandId.selectedOption, // "model": vehicleModelId.selectedOption, // "year": vehicleModelYearId.selectedOption, // "isNew": true, // "countryID": vehicleCountryId.selectedId, // "cityID": vehicleCityId.selectedId, // "price": price, // "description": description, // "isSpecialServiceNeeded": false, // "requestImages": [] // }; // GenericRespModel respModel = await requestRepo.createRequest(m); // return respModel; // } else { // return null; // } // } // // bool validate() { // bool isValid = true; // if (requestTypeId.selectedId == -1) { // Utils.showToast("Please select valid Request Type"); // isValid = false; // } else if (vehicleTypeId.selectedId == -1) { // Utils.showToast("Please select valid Vehicle Type"); // isValid = false; // } else if (vehicleBrandId.selectedId == -1) { // Utils.showToast("Please select valid Brand"); // isValid = false; // } else if (vehicleModelId.selectedId == -1) { // Utils.showToast("Please select valid Model"); // isValid = false; // } else if (vehicleModelYearId.selectedId == -1) { // Utils.showToast("Please select valid Year"); // isValid = false; // } else if (vehicleCountryId.selectedId == -1) { // Utils.showToast("Please select valid Country"); // isValid = false; // } else if (vehicleCityId.selectedId == -1) { // Utils.showToast("Please select valid City"); // isValid = false; // } else if (price.isEmpty) { // Utils.showToast("Please add valid Price"); // isValid = false; // } else if (description.isEmpty) { // Utils.showToast("Please add valid Description"); // isValid = false; // } // return isValid; // } // // bool isRequestLoading = true; // List requests = []; // // getRequests() async { // isRequestLoading = true; // notifyListeners(); // // int selectedRequestType; // // Find the FilterListModel with isSelected equal to true // // requests = await requestRepo.getRequests( // { // "customerID": AppState().getUser.data!.userInfo!.customerId, // "pageSize": 100, // "pageIndex": 0, // "requestType": requestsFilterOptions.firstWhere((element) => element.isSelected).id, // }, // ); // isRequestLoading = false; // notifyListeners(); // } // }