|
|
|
|
@ -82,6 +82,7 @@ class AdVM extends BaseVM {
|
|
|
|
|
// Edit Variables Amir
|
|
|
|
|
bool isExtendAdEditEnabled = false;
|
|
|
|
|
bool isAdEditEnabled = false;
|
|
|
|
|
bool isDraftEditEnabled = false;
|
|
|
|
|
AdDetailsModel? previousAdDetails;
|
|
|
|
|
|
|
|
|
|
List<AdDetailsModel> myDraftAds = [];
|
|
|
|
|
@ -347,15 +348,20 @@ class AdVM extends BaseVM {
|
|
|
|
|
int pageIndexForMyDrafts = 1;
|
|
|
|
|
|
|
|
|
|
Future<void> getMyDraftAds() async {
|
|
|
|
|
try {
|
|
|
|
|
pageIndexForMyAds = 1;
|
|
|
|
|
hasMoreDataForMyAds = true;
|
|
|
|
|
setState(ViewState.busy);
|
|
|
|
|
myDraftAds = await adsRepo.getMyDraftAds();
|
|
|
|
|
notifyListeners();
|
|
|
|
|
setState(ViewState.idle);
|
|
|
|
|
} catch (e) {
|
|
|
|
|
setState(ViewState.idle);
|
|
|
|
|
logger.e(e.toString());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Future<void> fetchMoreDraftAds({required AdPostStatus adsStatus}) async {
|
|
|
|
|
Future<void> fetchMoreDraftAds() async {
|
|
|
|
|
if (isLoadingMore) return;
|
|
|
|
|
hasMoreDataForMyDraftsAds = true;
|
|
|
|
|
isLoadingMore = true;
|
|
|
|
|
@ -1214,6 +1220,8 @@ class AdVM extends BaseVM {
|
|
|
|
|
void onBackButtonPressed(BuildContext context) {
|
|
|
|
|
switch (currentProgressStep) {
|
|
|
|
|
case AdCreationStepsEnum.vehicleDetails:
|
|
|
|
|
isAdEditEnabled = false;
|
|
|
|
|
isDraftEditEnabled = false;
|
|
|
|
|
resetValues();
|
|
|
|
|
pop(context);
|
|
|
|
|
break;
|
|
|
|
|
@ -1235,12 +1243,25 @@ class AdVM extends BaseVM {
|
|
|
|
|
Future<int> saveAdVehicleDetailsDraft({required bool isNew, required BuildContext context, required AdCreationStepsEnum stepNoEnum}) async {
|
|
|
|
|
AppState appState = injector.get<AppState>();
|
|
|
|
|
|
|
|
|
|
log("selectionDurationStartDate: $selectionDurationStartDate");
|
|
|
|
|
log("specialServiceCards: ${specialServiceCards.length}");
|
|
|
|
|
|
|
|
|
|
List<int> adsSelectedServices = [];
|
|
|
|
|
|
|
|
|
|
for (var value in specialServiceCards) {
|
|
|
|
|
adsSelectedServices.add(value.serviceSelectedId!.selectedId);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Utils.showLoading(context);
|
|
|
|
|
try {
|
|
|
|
|
Ads ads = Ads(
|
|
|
|
|
id: !isNew ? previousAdDetails!.id : 0,
|
|
|
|
|
adsDurationID: vehicleAdDurationId.selectedId == -1 ? 0 : vehicleAdDurationId.selectedId,
|
|
|
|
|
startDate: selectionDurationStartDate,
|
|
|
|
|
countryId: vehicleCountryId.selectedId,
|
|
|
|
|
specialServiceIDs: adsSelectedServices,
|
|
|
|
|
showContactDetail: isPhoneNumberShown,
|
|
|
|
|
isOnWhatsApp: isNumberOnWhatsApp,
|
|
|
|
|
);
|
|
|
|
|
List<VehiclePostingImages> vehicleImages = [];
|
|
|
|
|
|
|
|
|
|
@ -1248,6 +1269,22 @@ class AdVM extends BaseVM {
|
|
|
|
|
vehicleImages.add(await convertFileToVehiclePostingImages(imageModel: image));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
List<VehiclePostingDamageParts> vehicleDamageImages = [];
|
|
|
|
|
|
|
|
|
|
for (var card in vehicleDamageCards) {
|
|
|
|
|
if (card.partImages != null && card.partImages!.isNotEmpty) {
|
|
|
|
|
for (var image in card.partImages!) {
|
|
|
|
|
VehiclePostingDamageParts stringImage = await convertFileToVehiclePostingDamageParts(
|
|
|
|
|
imageModel: image,
|
|
|
|
|
damagePartId: card.partSelectedId!.selectedId,
|
|
|
|
|
commentParam: card.damagePartDescription ?? "",
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
vehicleDamageImages.add(stringImage);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
VehiclePosting vehiclePosting = VehiclePosting(
|
|
|
|
|
id: !isNew ? previousAdDetails!.vehiclePostingID : null,
|
|
|
|
|
userID: appState.getUser.data!.userInfo!.userId,
|
|
|
|
|
@ -1270,6 +1307,9 @@ class AdVM extends BaseVM {
|
|
|
|
|
warantyYears: int.parse(warrantyDuration),
|
|
|
|
|
demandAmount: int.parse(vehicleDemandAmount),
|
|
|
|
|
vehiclePostingImages: vehicleImages,
|
|
|
|
|
vehiclePostingDamageParts: vehicleDamageImages,
|
|
|
|
|
phoneNo: isPhoneNumberShown ? adPhoneNumberDialCode + adPhoneNumber : null,
|
|
|
|
|
whatsAppNo: (isPhoneNumberShown && isNumberOnWhatsApp) ? adPhoneNumberDialCode + adPhoneNumber : null,
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
AdsCreationPayloadModel adsCreationPayloadModel = AdsCreationPayloadModel(ads: ads, vehiclePosting: vehiclePosting);
|
|
|
|
|
@ -1336,6 +1376,7 @@ class AdVM extends BaseVM {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
isAdEditEnabled = false;
|
|
|
|
|
isDraftEditEnabled = false;
|
|
|
|
|
isExtendAdEditEnabled = false;
|
|
|
|
|
Utils.hideLoading(context);
|
|
|
|
|
currentProgressStep = AdCreationStepsEnum.vehicleDetails;
|
|
|
|
|
@ -1693,7 +1734,11 @@ class AdVM extends BaseVM {
|
|
|
|
|
|
|
|
|
|
log("selectionDurationStartDate: $selectionDurationStartDate");
|
|
|
|
|
Ads ads = Ads(
|
|
|
|
|
id: isAdEditEnabled ? previousAdDetails!.id : null,
|
|
|
|
|
id: isDraftEditEnabled
|
|
|
|
|
? null
|
|
|
|
|
: isAdEditEnabled
|
|
|
|
|
? previousAdDetails!.id
|
|
|
|
|
: null,
|
|
|
|
|
adsDurationID: vehicleAdDurationId.selectedId == -1 ? 0 : vehicleAdDurationId.selectedId,
|
|
|
|
|
startDate: selectionDurationStartDate,
|
|
|
|
|
countryId: vehicleCountryId.selectedId,
|
|
|
|
|
@ -1751,7 +1796,11 @@ class AdVM extends BaseVM {
|
|
|
|
|
|
|
|
|
|
AdsCreationPayloadModel adsCreationPayloadModel = AdsCreationPayloadModel(ads: ads, vehiclePosting: vehiclePosting);
|
|
|
|
|
|
|
|
|
|
GenericRespModel respModel = await adsRepo.createOrUpdateAd(adsCreationPayloadModel: adsCreationPayloadModel, isCreateNew: !isAdEditEnabled, isExtendAdEditEnabled: isExtendAdEditEnabled);
|
|
|
|
|
GenericRespModel respModel = await adsRepo.createOrUpdateAd(
|
|
|
|
|
adsCreationPayloadModel: adsCreationPayloadModel,
|
|
|
|
|
isCreateNew: isDraftEditEnabled ? true : !isAdEditEnabled,
|
|
|
|
|
isExtendAdEditEnabled: isExtendAdEditEnabled,
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
Utils.showToast(respModel.message.toString());
|
|
|
|
|
|
|
|
|
|
@ -2289,13 +2338,16 @@ class AdVM extends BaseVM {
|
|
|
|
|
return [];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void onEditUpdateAdPressed({required BuildContext context, required AdDetailsModel previousDetails, required bool isFromExtendAd}) {
|
|
|
|
|
void onEditUpdateAdPressed({required BuildContext context, required AdDetailsModel previousDetails, required bool isFromExtendAd, bool isForDraft = false}) {
|
|
|
|
|
isAdEditEnabled = true;
|
|
|
|
|
isDraftEditEnabled = true;
|
|
|
|
|
isExtendAdEditEnabled = isFromExtendAd;
|
|
|
|
|
previousAdDetails = previousDetails;
|
|
|
|
|
autoFillSelectedVehicleType();
|
|
|
|
|
autoFillSelectedVehicleAdsDuration();
|
|
|
|
|
|
|
|
|
|
if (isForDraft) {
|
|
|
|
|
autoFillSelectedVehicleAdsDetails();
|
|
|
|
|
}
|
|
|
|
|
navigateWithName(context, AppRoutes.selectAdTypeView, arguments: [AppState().currentAppType == AppType.provider, isFromExtendAd, previousDetails.id]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -2324,12 +2376,14 @@ class AdVM extends BaseVM {
|
|
|
|
|
void autoFillSelectedVehicleType() async {
|
|
|
|
|
if (vehicleTypes.isEmpty) {
|
|
|
|
|
await getVehicleTypes();
|
|
|
|
|
return;
|
|
|
|
|
// return;
|
|
|
|
|
}
|
|
|
|
|
if (vehicleTypes.isNotEmpty) {
|
|
|
|
|
for (var vehicle in vehicleTypes) {
|
|
|
|
|
vehicle.isSelected = false;
|
|
|
|
|
if (vehicle.id == previousAdDetails!.vehicle?.vehicleType) {
|
|
|
|
|
vehicle.isSelected = true;
|
|
|
|
|
log("Hi: ${vehicle.vehicleTypeName}");
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@ -2370,6 +2424,9 @@ class AdVM extends BaseVM {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void autoFillSelectedVehicleAdsDetails() async {
|
|
|
|
|
if (vehicleBrands.isEmpty) {
|
|
|
|
|
await getVehicleBrandsByVehicleTypeId();
|
|
|
|
|
}
|
|
|
|
|
int index = vehicleBrands.indexWhere((element) => element.id == previousAdDetails!.vehicle!.model!.vehicleBrandID);
|
|
|
|
|
|
|
|
|
|
if (index != -1) {
|
|
|
|
|
@ -2403,6 +2460,7 @@ class AdVM extends BaseVM {
|
|
|
|
|
for (var element in previousAdDetails!.vehicle!.image!) {
|
|
|
|
|
if (element.imageUrl != null) {
|
|
|
|
|
ImageModel imageModel = ImageModel(id: element.id, filePath: element.imageUrl, isFromNetwork: true);
|
|
|
|
|
log("running");
|
|
|
|
|
pickedPostingImages.add(imageModel);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@ -2444,12 +2502,16 @@ class AdVM extends BaseVM {
|
|
|
|
|
address: "",
|
|
|
|
|
serviceTime: "",
|
|
|
|
|
);
|
|
|
|
|
int index = ifSpecialServiceAlreadyThere(element.specialServiceID!);
|
|
|
|
|
log("Found at : $index");
|
|
|
|
|
if (index == -1) {
|
|
|
|
|
addNewSpecialServiceCard(specialServiceCard: specialServiceCard);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// selectionDurationStartDate = DateHelper.formatDateT(previousAdDetails!.startdate ?? "");
|
|
|
|
|
selectionDurationStartDate = "";
|
|
|
|
|
selectionDurationStartDate = ""; // You have to mention this each time
|
|
|
|
|
isPhoneNumberShown = previousAdDetails!.showContactDetail ?? false;
|
|
|
|
|
adPhoneNumber = previousAdDetails!.adOwnerDetails!.mobileNo ?? "";
|
|
|
|
|
|
|
|
|
|
|