diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index dd79fde..6b4b846 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -129,6 +129,7 @@ class ApiConsts { //Requests static String createRequest = "${baseUrlServices}api/RequestManagement/Request_Create"; static String getRequest = "${baseUrlServices}api/RequestManagement/Request_Get"; + static String getRequestOffers = "${baseUrlServices}api/RequestManagement/ReqOffer_Get"; static List closingUrls = ["PayFortResponse"]; } diff --git a/lib/config/routes.dart b/lib/config/routes.dart index 8b2fdb1..36573a5 100644 --- a/lib/config/routes.dart +++ b/lib/config/routes.dart @@ -71,6 +71,10 @@ class AppRoutes { static const String createRequestPage = "/createRequestPage"; static const String offersListPage = "/offersListPage"; + + //Chat + static const String chatView = "/chatView"; + static const String initialRoute = splash; static final Map routes = { diff --git a/lib/extensions/string_extensions.dart b/lib/extensions/string_extensions.dart index 6ee9788..b000882 100644 --- a/lib/extensions/string_extensions.dart +++ b/lib/extensions/string_extensions.dart @@ -198,7 +198,7 @@ extension AdPostEnum on int { return AdPostStatus.buyingService; } else if (this == 11) { return AdPostStatus.reserveCancel; - } else if (this == -1) { + } else if (this == 0) { return AdPostStatus.allAds; } else { return AdPostStatus.pendingForPost; @@ -216,12 +216,25 @@ extension AppointmentEnum on int { return AppointmentStatusEnum.arrived; } else if (this == 4) { return AppointmentStatusEnum.cancelled; + } else if (this == 5) { + return AppointmentStatusEnum.rescheduled; } else { return AppointmentStatusEnum.allAppointments; } } } +extension RequestTypeTypeEnum on int { + RequestsTypeEnum toRequestTypeStatusEnum() { + if (this == 1) { + return RequestsTypeEnum.specialCarRequest; + } else if (this == 2) { + return RequestsTypeEnum.serviceRequest; + } + return RequestsTypeEnum.specialCarRequest; + } +} + extension AdPostStatusToInt on AdPostStatus { int getIdFromAdPostStatusEnum() { switch (this) { @@ -257,7 +270,7 @@ extension AdPostStatusToInt on AdPostStatus { case AdPostStatus.reserveCancel: return 11; default: - return -1; + return 0; } } } @@ -291,6 +304,7 @@ extension AppointmentStatusToInt on AppointmentStatusEnum { switch (this) { case AppointmentStatusEnum.booked: return 1; + case AppointmentStatusEnum.confirmed: return 2; @@ -300,8 +314,26 @@ extension AppointmentStatusToInt on AppointmentStatusEnum { case AppointmentStatusEnum.cancelled: return 4; + case AppointmentStatusEnum.rescheduled: + return 5; + default: - return -1; + return 0; + } + } +} + +extension RequestTypeStatusToInt on RequestsTypeEnum { + int getIdFromRequestTypeStatusEnum() { + switch (this) { + case RequestsTypeEnum.specialCarRequest: + return 1; + + case RequestsTypeEnum.serviceRequest: + return 2; + + default: + return 0; } } } @@ -316,7 +348,7 @@ extension CreatedByRoleEnumToInt on CreatedByRoleEnum { case CreatedByRoleEnum.provider: return 3; case CreatedByRoleEnum.allAds: - return -1; + return 0; default: return 1; } @@ -341,7 +373,7 @@ extension AdReserveStatusEnum on int { extension AdOwnerEnum on int { CreatedByRoleEnum toCreatedByRoleEnum() { - if (this == -1) { + if (this == 0) { return CreatedByRoleEnum.allAds; } else if (this == 1) { return CreatedByRoleEnum.admin; diff --git a/lib/models/enums.dart b/lib/models/enums_model.dart similarity index 69% rename from lib/models/enums.dart rename to lib/models/enums_model.dart index 6b07f3e..e8fa217 100644 --- a/lib/models/enums.dart +++ b/lib/models/enums_model.dart @@ -1,11 +1,11 @@ -class Enums { +class EnumsModel { int id; int enumTypeId; String enumValueStr; int enumValue; bool isActive; - Enums({ + EnumsModel({ required this.id, required this.enumTypeId, required this.enumValueStr, @@ -13,7 +13,7 @@ class Enums { required this.isActive, }); - factory Enums.fromJson(Map json) => Enums( + factory EnumsModel.fromJson(Map json) => EnumsModel( id: json["id"], enumTypeId: json["enumTypeID"], enumValueStr: json["enumValueStr"], @@ -21,6 +21,11 @@ class Enums { isActive: json["isActive"], ); + @override + String toString() { + return 'EnumsModel{id: $id, enumTypeId: $enumTypeId, enumValueStr: $enumValueStr, enumValue: $enumValue, isActive: $isActive}'; + } + Map toJson() => { "id": id, "enumTypeID": enumTypeId, diff --git a/lib/models/generic_resp_model.dart b/lib/models/generic_resp_model.dart index 1887848..a221dc4 100644 --- a/lib/models/generic_resp_model.dart +++ b/lib/models/generic_resp_model.dart @@ -279,6 +279,29 @@ class VehiclePostingImages { } } +class RequestPostingImages { + int? id; + String? requestImage; + int? requestID; + + RequestPostingImages({this.id, this.requestImage, this.requestID}); + + RequestPostingImages.fromJson(Map json) { + id = json['id']; + requestImage = json['requestImage']; + requestID = json['requestID']; + } + + Map toJson() { + final Map data = {}; + data['id'] = id; + data['requestImage'] = requestImage; + data['requestID'] = requestID; + return data; + } +} + + class VehiclePostingDamageParts { int? id; String? comment; diff --git a/lib/models/requests/offers_model.dart b/lib/models/requests/offers_model.dart new file mode 100644 index 0000000..349fa78 --- /dev/null +++ b/lib/models/requests/offers_model.dart @@ -0,0 +1,169 @@ +class OffersModel { + int? id; + int? requestID; + int? serviceProviderID; + ServiceProvider? serviceProvider; + int? offerStatus; + String? offerStatusText; + String? comment; + double? price; + + OffersModel( + {this.id, + this.requestID, + this.serviceProviderID, + this.serviceProvider, + this.offerStatus, + this.offerStatusText, + this.comment, + this.price}); + + OffersModel.fromJson(Map json) { + id = json['id']; + requestID = json['requestID']; + serviceProviderID = json['serviceProviderID']; + serviceProvider = json['serviceProvider'] != null + ? ServiceProvider.fromJson(json['serviceProvider']) + : null; + offerStatus = json['offerStatus']; + offerStatusText = json['offerStatusText']; + comment = json['comment']; + price = json['price']; + } + + Map toJson() { + final Map data = {}; + data['id'] = id; + data['requestID'] = requestID; + data['serviceProviderID'] = serviceProviderID; + if (serviceProvider != null) { + data['serviceProvider'] = serviceProvider!.toJson(); + } + data['offerStatus'] = offerStatus; + data['offerStatusText'] = offerStatusText; + data['comment'] = comment; + data['price'] = price; + return data; + } +} + +class ServiceProvider { + int? providerId; + String? providerGUID; + String? firstName; + String? lastName; + String? name; + int? gender; + String? genderName; + String? mobileNo; + String? email; + bool? isEmailVerfied; + bool? isCompleted; + int? city; + String? cityName; + int? country; + String? countryName; + int? accountStatus; + String? accountStatusText; + int? activityStatus; + String? activityStatusText; + String? bankName; + String? iBanNo; + bool? isActive; + String? subscriptionDate; + String? companyName; + String? currency; + String? branch; + dynamic requestOffer; + + ServiceProvider( + {this.providerId, + this.providerGUID, + this.firstName, + this.lastName, + this.name, + this.gender, + this.genderName, + this.mobileNo, + this.email, + this.isEmailVerfied, + this.isCompleted, + this.city, + this.cityName, + this.country, + this.countryName, + this.accountStatus, + this.accountStatusText, + this.activityStatus, + this.activityStatusText, + this.bankName, + this.iBanNo, + this.isActive, + this.subscriptionDate, + this.companyName, + this.currency, + this.branch, + this.requestOffer}); + + ServiceProvider.fromJson(Map json) { + providerId = json['providerId']; + providerGUID = json['providerGUID']; + firstName = json['firstName']; + lastName = json['lastName']; + name = json['name']; + gender = json['gender']; + genderName = json['genderName']; + mobileNo = json['mobileNo']; + email = json['email']; + isEmailVerfied = json['isEmailVerfied']; + isCompleted = json['isCompleted']; + city = json['city']; + cityName = json['cityName']; + country = json['country']; + countryName = json['countryName']; + accountStatus = json['accountStatus']; + accountStatusText = json['accountStatusText']; + activityStatus = json['activityStatus']; + activityStatusText = json['activityStatusText']; + bankName = json['bankName']; + iBanNo = json['iBanNo']; + isActive = json['isActive']; + subscriptionDate = json['subscriptionDate']; + companyName = json['companyName']; + currency = json['currency']; + branch = json['branch']; + requestOffer = json['requestOffer']; + } + + Map toJson() { + final Map data = {}; + data['providerId'] = providerId; + data['providerGUID'] = providerGUID; + data['firstName'] = firstName; + data['lastName'] = lastName; + data['name'] = name; + data['gender'] = gender; + data['genderName'] = genderName; + data['mobileNo'] = mobileNo; + data['email'] = email; + data['isEmailVerfied'] = isEmailVerfied; + data['isCompleted'] = isCompleted; + data['city'] = city; + data['cityName'] = cityName; + data['country'] = country; + data['countryName'] = countryName; + data['accountStatus'] = accountStatus; + data['accountStatusText'] = accountStatusText; + data['activityStatus'] = activityStatus; + data['activityStatusText'] = activityStatusText; + data['bankName'] = bankName; + data['iBanNo'] = iBanNo; + data['isActive'] = isActive; + data['subscriptionDate'] = subscriptionDate; + data['companyName'] = companyName; + data['currency'] = currency; + data['branch'] = branch; + data['requestOffer'] = requestOffer; + return data; + } +} diff --git a/lib/repositories/common_repo.dart b/lib/repositories/common_repo.dart index 0ed494b..439fa21 100644 --- a/lib/repositories/common_repo.dart +++ b/lib/repositories/common_repo.dart @@ -11,7 +11,7 @@ import 'package:mc_common_app/models/user/country.dart'; import 'package:mc_common_app/models/user/role.dart'; import '../models/advertisment_models/vehicle_details_models.dart'; -import '../models/enums.dart'; +import '../models/enums_model.dart'; abstract class CommonRepo { Future getAllCountries(); @@ -38,7 +38,7 @@ abstract class CommonRepo { //TODO: Needs to remove common methods from AD's repo and delete all repeated methods. Future getVehicleDetails({int? vehicleTypeId, int? vehicleBrandId}); - Future> getEnumTypeValues({int? enumTypeID, String? enumTypeName}); + Future> getEnumTypeValues({int? enumTypeID, String? enumTypeName}); } class CommonRepoImp implements CommonRepo { @@ -159,7 +159,7 @@ class CommonRepoImp implements CommonRepo { } @override - Future> getEnumTypeValues({int? enumTypeID, String? enumTypeName}) async { + Future> getEnumTypeValues({int? enumTypeID, String? enumTypeName}) async { var postParams = {"enumTypeID": (enumTypeID ?? 0).toString(), "enumTypeName": enumTypeName ?? ""}; GenericRespModel enumGenericModel = await apiClient.postJsonForObject( (json) => GenericRespModel.fromJson(json), @@ -168,7 +168,7 @@ class CommonRepoImp implements CommonRepo { token: appState.getUser.data!.accessToken, ); - List vehicleCities = List.generate(enumGenericModel.data.length, (index) => Enums.fromJson(enumGenericModel.data[index])); + List vehicleCities = List.generate(enumGenericModel.data.length, (index) => EnumsModel.fromJson(enumGenericModel.data[index])); return vehicleCities; } // diff --git a/lib/theme/colors.dart b/lib/theme/colors.dart index 7234075..af4dd81 100644 --- a/lib/theme/colors.dart +++ b/lib/theme/colors.dart @@ -37,6 +37,7 @@ class MyColors { static const Color green = Color(0xffffffff); static const Color borderColor = Color(0xffE8E8E8); static const Color greyAddBorderColor = Color(0xffEEEEEE); + static const Color lightGreyBgColor = Color(0xffFDFDFD); //AdStatusColors: static const Color adActiveStatusColor = Color(0xff5FC16A); diff --git a/lib/utils/enums.dart b/lib/utils/enums.dart index 2f2addb..6ef655b 100644 --- a/lib/utils/enums.dart +++ b/lib/utils/enums.dart @@ -147,5 +147,11 @@ enum AppointmentStatusEnum { confirmed, arrived, cancelled, + rescheduled, allAppointments, } + +enum RequestsTypeEnum { + specialCarRequest, + serviceRequest, +} diff --git a/lib/utils/utils.dart b/lib/utils/utils.dart index b116951..22e88cb 100644 --- a/lib/utils/utils.dart +++ b/lib/utils/utils.dart @@ -223,6 +223,33 @@ class Utils { } } + static Color getChipColorByRequestStatus(RequestStatus requestStatus) { + switch (requestStatus) { + case RequestStatus.pending: + return MyColors.adPendingStatusColor; + case RequestStatus.submitted: + return MyColors.lightTextColor; + + case RequestStatus.inProgress: + return MyColors.lightTextColor; + + case RequestStatus.completed: + return MyColors.greenColor; + + case RequestStatus.cancelled: + return MyColors.redColor; + + case RequestStatus.paid: + return MyColors.greenColor; + + case RequestStatus.expired: + return MyColors.redColor; + + case RequestStatus.shipping: + return MyColors.greenColor; + } + } + static statusContainerChip({required String text, EdgeInsetsGeometry padding = const EdgeInsets.symmetric(vertical: 3, horizontal: 6), Color chipColor = MyColors.greenColor}) { return Container( decoration: BoxDecoration( diff --git a/lib/view_models/ad_view_model.dart b/lib/view_models/ad_view_model.dart index 1386dcb..38f5634 100644 --- a/lib/view_models/ad_view_model.dart +++ b/lib/view_models/ad_view_model.dart @@ -14,6 +14,7 @@ import 'package:mc_common_app/models/advertisment_models/special_service_model.d import 'package:mc_common_app/models/advertisment_models/ss_car_check_schedule_model.dart'; import 'package:mc_common_app/models/advertisment_models/ss_photo_schedule_model.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/widgets_models.dart'; import 'package:mc_common_app/repositories/ads_repo.dart'; @@ -150,30 +151,29 @@ class AdVM extends BaseVM { notifyListeners(); } + List exploreAdsEnums = []; + + List myAdsEnums = []; + List exploreAdsFilterOptions = []; List myAdsFilterOptions = []; - populateAdsFilterList() { + populateAdsFilterList() async { + myAdsEnums = await commonRepo.getEnumTypeValues(enumTypeID: 18); //TODO: 18 is to get My Ad Filter Enums + exploreAdsEnums = await commonRepo.getEnumTypeValues(enumTypeID: 23); //TODO: 23 is to get Explore Ad Filter Enums + exploreAdsFilterOptions.clear(); - exploreAdsFilterOptions = [ - FilterListModel(title: "All Ads", isSelected: true, id: -1), - FilterListModel(title: "Mowater Ads", isSelected: false, id: 1), - FilterListModel(title: "Customer Ads", isSelected: false, id: 2), - FilterListModel(title: "Provider Ads", isSelected: false, id: 3), - ]; - - myAdsFilterOptions = [ - FilterListModel(title: "All Ads", isSelected: true, id: -1), - FilterListModel(title: "Active", isSelected: false, id: 6), - FilterListModel(title: "Pending For Review", isSelected: false, id: 1), - FilterListModel(title: "Pending For Payment", isSelected: false, id: 2), - FilterListModel(title: "Sold", isSelected: false, id: 8), - FilterListModel(title: "Deactivated", isSelected: false, id: 4), - FilterListModel(title: "Reserved", isSelected: false, id: 9), - FilterListModel(title: "Expired", isSelected: false, id: 7), - FilterListModel(title: "Rejected", isSelected: false, id: 3), - FilterListModel(title: "Pending For Post", isSelected: false, id: 5), - ]; + myAdsFilterOptions.clear(); + for (int i = 0; i < myAdsEnums.length; i++) { + myAdsFilterOptions.add(FilterListModel(title: myAdsEnums[i].enumValueStr, isSelected: false, id: myAdsEnums[i].enumValue)); + } + myAdsFilterOptions.insert(0, FilterListModel(title: "All Ads", isSelected: true, id: 0)); + + for (int i = 0; i < exploreAdsEnums.length; i++) { + exploreAdsFilterOptions.add(FilterListModel(title: "${exploreAdsEnums[i].enumValueStr} Ads", isSelected: false, id: exploreAdsEnums[i].enumValue)); + } + exploreAdsFilterOptions.insert(0, FilterListModel(title: "All Ads", isSelected: true, id: 0)); + notifyListeners(); } @@ -203,7 +203,7 @@ class AdVM extends BaseVM { } myAdsFilterOptions[index].isSelected = true; - if (adPostStatusEnum.getIdFromAdPostStatusEnum() == -1) { + if (adPostStatusEnum.getIdFromAdPostStatusEnum() == 0) { myAdsFilteredList = myAds; notifyListeners(); return; diff --git a/lib/view_models/requests_view_model.dart b/lib/view_models/requests_view_model.dart index 5094264..8b1177c 100644 --- a/lib/view_models/requests_view_model.dart +++ b/lib/view_models/requests_view_model.dart @@ -1,272 +1,272 @@ -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.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(); - } -} +// 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(); +// } +// } diff --git a/lib/views/advertisement/ads_filter_view.dart b/lib/views/advertisement/ads_filter_view.dart index eb1d6e7..5f3eace 100644 --- a/lib/views/advertisement/ads_filter_view.dart +++ b/lib/views/advertisement/ads_filter_view.dart @@ -10,13 +10,10 @@ import 'package:mc_common_app/widgets/common_widgets/search_entity_widget.dart'; 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:sizer/sizer.dart'; class AdsFilterView extends StatelessWidget { const AdsFilterView({super.key}); - // - @override Widget build(BuildContext context) { return Scaffold(