From d375b9dff34aa8f698a907e665d20433ff2bbd87 Mon Sep 17 00:00:00 2001 From: Faiz Hashmi Date: Mon, 1 Apr 2024 14:52:28 +0300 Subject: [PATCH 1/2] Reservation Deal Completion WIP --- lib/classes/consts.dart | 1 + lib/extensions/string_extensions.dart | 2 ++ lib/models/advertisment_models/pdf_receipt_model.dart | 7 +++++++ lib/view_models/ad_view_model.dart | 1 + lib/views/advertisement/ads_detail_view.dart | 5 ++--- lib/views/user/login_with_password_page.dart | 1 + 6 files changed, 14 insertions(+), 3 deletions(-) create mode 100644 lib/models/advertisment_models/pdf_receipt_model.dart diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index 06438d3..f31ea59 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -111,6 +111,7 @@ class ApiConsts { static String adsPhotoOfficeAppointmentCreate = "${baseUrlServices}api/Advertisement/PhotoOfficeAppointment_Create"; static String adsMCBankAccountAdGet = "${baseUrlServices}api/Advertisement/MCBankAccountAd_Get"; static String adsReserveCreate = "${baseUrlServices}api/Advertisement/AdsReserve_Create"; + static String reserveAdPaymentOnDealDoneCreate = "${baseUrlServices}api/Advertisement/ReserveAdPaymentOnDealDone_Create"; //Subscription static String getAllSubscriptions = "${baseUrlServices}api/Common/Subscription_Get"; diff --git a/lib/extensions/string_extensions.dart b/lib/extensions/string_extensions.dart index 36172f3..da432d7 100644 --- a/lib/extensions/string_extensions.dart +++ b/lib/extensions/string_extensions.dart @@ -365,6 +365,8 @@ extension RequestTypeStatusToInt on RequestsTypeEnum { } } +// 290223243016 + extension AdPostStatusToInt on AdPostStatus { int getIdFromAdPostStatusEnum() { switch (this) { diff --git a/lib/models/advertisment_models/pdf_receipt_model.dart b/lib/models/advertisment_models/pdf_receipt_model.dart new file mode 100644 index 0000000..70bdfae --- /dev/null +++ b/lib/models/advertisment_models/pdf_receipt_model.dart @@ -0,0 +1,7 @@ +class PdfReceiptModel { + int? id; + String? pdfName; + String? pdfString; + + PdfReceiptModel({this.id, this.pdfName, this.pdfString}); +} diff --git a/lib/view_models/ad_view_model.dart b/lib/view_models/ad_view_model.dart index eba6428..a35df39 100644 --- a/lib/view_models/ad_view_model.dart +++ b/lib/view_models/ad_view_model.dart @@ -137,6 +137,7 @@ class AdVM extends BaseVM { notifyListeners(); } + } } diff --git a/lib/views/advertisement/ads_detail_view.dart b/lib/views/advertisement/ads_detail_view.dart index 0698ffa..42c01c2 100644 --- a/lib/views/advertisement/ads_detail_view.dart +++ b/lib/views/advertisement/ads_detail_view.dart @@ -44,7 +44,6 @@ class AdsDetailView extends StatefulWidget { class _AdsDetailViewState extends State { @override void initState() { - log("ad: ${widget.adDetails.adReserveStatus}"); scheduleMicrotask(() { onAdDetailsLoaded(); }); @@ -93,6 +92,7 @@ class _AdsDetailViewState extends State { @override Widget build(BuildContext context) { + log("ad: ${widget.adDetails.id}"); return Scaffold( appBar: CustomAppBar( title: "Ads", @@ -1190,9 +1190,8 @@ class BuildAdDetailsActionButtonForMyAds extends StatelessWidget { if (adVM.state == ViewState.busy) { return const CircularProgressIndicator(); } else { - reservedAdActions(context, adDetailsModel: adDetailsModel, adVM: adVM); + return reservedAdActions(context, adDetailsModel: adDetailsModel, adVM: adVM); } - break; case AdPostStatus.buyingService: case AdPostStatus.reserveCancel: case AdPostStatus.rejected: diff --git a/lib/views/user/login_with_password_page.dart b/lib/views/user/login_with_password_page.dart index dd6fcde..875703d 100644 --- a/lib/views/user/login_with_password_page.dart +++ b/lib/views/user/login_with_password_page.dart @@ -33,6 +33,7 @@ class _LoginWithPasswordState extends State { ClassType type = ClassType.EMAIL; //TODO: ONLY FOR DEVELOPMENT PURPOSE + // String phoneNum = "966504278212", password = "Fa@1234"; // String phoneNum = "966504278213", password = "Fa@1234"; String phoneNum = "966504278214", password = "Fa@1234"; String email = ""; From a71c257aabcd0aa22d30308ffd33a39ff890e46a Mon Sep 17 00:00:00 2001 From: Faiz Hashmi Date: Mon, 1 Apr 2024 14:52:54 +0300 Subject: [PATCH 2/2] Reservation Deal Completion WIP --- lib/repositories/ads_repo.dart | 38 ++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/lib/repositories/ads_repo.dart b/lib/repositories/ads_repo.dart index dcd130e..f22d5ad 100644 --- a/lib/repositories/ads_repo.dart +++ b/lib/repositories/ads_repo.dart @@ -8,6 +8,7 @@ import 'package:mc_common_app/extensions/string_extensions.dart'; import 'package:mc_common_app/models/advertisment_models/ad_details_model.dart'; import 'package:mc_common_app/models/advertisment_models/ads_bank_details_model.dart'; import 'package:mc_common_app/models/advertisment_models/ads_duration_model.dart'; +import 'package:mc_common_app/models/advertisment_models/pdf_receipt_model.dart'; import 'package:mc_common_app/models/advertisment_models/reserved_ads_models.dart'; import 'package:mc_common_app/models/advertisment_models/special_service_model.dart'; import 'package:mc_common_app/models/advertisment_models/vehicle_details_models.dart'; @@ -66,6 +67,8 @@ abstract class AdsRepo { Future cancelMyAdReservation({required int adId, required int adsReserveStatus, required String reason}); Future createReserveAd({required int adId}); + + Future uploadBankReceiptsOnReserveDealDone({required int adId, required String detailNote, required List pdfReceiptsList}); } class AdsRepoImp implements AdsRepo { @@ -415,6 +418,8 @@ class AdsRepoImp implements AdsRepo { for (int i = 0; i < vehicleAdsDetails.length; i++) { vehicleAdsDetails[i].adReserveStatus = (reservedAds[i].adsReserveStatus ?? 0).toAdRserveStatusEnum(); } + + vehicleAdsDetails.removeWhere((element) => element.adReserveStatus != AdReserveStatus.reserved); return vehicleAdsDetails; } @@ -559,4 +564,37 @@ class AdsRepoImp implements AdsRepo { return Future.value(adsGenericModel); } + + @override + Future uploadBankReceiptsOnReserveDealDone({required int adId, required String detailNote, required List pdfReceiptsList}) async { + int customerId = AppState().getUser.data!.userInfo!.customerId ?? 0; + + List receiptImages = []; + + for (var element in pdfReceiptsList) { + var pdfReceiptMap = { + "id": 0, + "imageName": element.pdfName, + "imageStr": element.pdfString, + }; + receiptImages.add(pdfReceiptMap); + } + + var postParams = { + "adsID": adId, + "customerID": customerId, + "detailNote": detailNote, + "receiptImages": receiptImages, + }; + + String token = appState.getUser.data!.accessToken ?? ""; + GenericRespModel adsGenericModel = await apiClient.postJsonForObject( + (json) => GenericRespModel.fromJson(json), + ApiConsts.adsPhotoOfficeAppointmentCreate, + postParams, + token: token, + ); + + return Future.value(adsGenericModel); + } }