models updates & created edit add methods

localization_aamir
Aamir.Muhammad 1 year ago
parent 603fa08c42
commit 926f083e7f

@ -6,15 +6,9 @@ class AdsDurationModel {
int? countryID;
bool? isActive;
String? countryName;
bool? isSelected;
AdsDurationModel(
{this.id,
this.name,
this.days,
this.price,
this.countryID,
this.isActive,
this.countryName});
AdsDurationModel({this.id, this.name, this.days, this.price, this.countryID, this.isActive, this.countryName, this.isSelected});
AdsDurationModel.fromJson(Map<String, dynamic> json) {
id = json['id'];
@ -24,6 +18,7 @@ class AdsDurationModel {
countryID = json['countryID'];
isActive = json['isActive'];
countryName = json['countryName'];
isSelected = false;
}
Map<String, dynamic> toJson() {

@ -60,6 +60,7 @@ class VehicleTypeModel {
String? vehicleTypeNameN;
bool? isActive;
VehicleType? vehicleTypeEnum;
bool? isSelected;
VehicleTypeModel({
this.id,
@ -67,6 +68,8 @@ class VehicleTypeModel {
this.vehicleTypeNameN,
this.isActive,
this.vehicleTypeEnum = VehicleType.car,
this.isSelected,
});
VehicleTypeModel.fromJson(Map<String, dynamic> json) {
@ -75,6 +78,7 @@ class VehicleTypeModel {
vehicleTypeNameN = json['vehicleTypeNameN'];
isActive = json['isActive'];
vehicleTypeEnum = (json['id'] as int).toVehicleTypeEnum();
isSelected = false;
}
Map<String, dynamic> toJson() {
@ -450,8 +454,9 @@ class VehicleBrandsModel {
String? vehicleBrandDescription;
String? vehicleBrandDescriptionN;
bool? isActive;
bool? isSelected;
VehicleBrandsModel({this.id, this.vehicleType, this.vehicleTypeVal, this.vehicleBrandDescription, this.vehicleBrandDescriptionN, this.isActive});
VehicleBrandsModel({this.id, this.vehicleType, this.vehicleTypeVal, this.vehicleBrandDescription, this.vehicleBrandDescriptionN, this.isActive, this.isSelected});
VehicleBrandsModel.fromJson(Map<String, dynamic> json) {
id = json['id'];
@ -460,6 +465,7 @@ class VehicleBrandsModel {
vehicleBrandDescription = json['vehicleBrand_Description'];
vehicleBrandDescriptionN = json['vehicleBrand_DescriptionN'];
isActive = json['isActive'];
isSelected = false;
}
Map<String, dynamic> toJson() {

@ -6,6 +6,7 @@ import 'package:mc_common_app/classes/consts.dart';
import 'package:mc_common_app/config/dependencies.dart';
import 'package:mc_common_app/config/routes.dart';
import 'package:mc_common_app/extensions/string_extensions.dart';
import 'package:mc_common_app/main.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';
@ -69,6 +70,9 @@ class AdVM extends BaseVM {
String adReservePriceError = "";
String adPhoneNumberError = "";
// Edit Variables Amir
bool isAdEdit = false;
List<AdDetailsModel> exploreAds = [];
List<AdDetailsModel> exploreAdsFilteredList = [];
List<AdDetailsModel> myAdsFilteredList = [];
@ -1593,7 +1597,82 @@ class AdVM extends BaseVM {
applyFilterOnExploreAds(createdByRoleFilter: CreatedByRoleEnum.allAds);
setState(ViewState.idle);
}
///// Edit Work Amir
void editUpdateAd(BuildContext context, AdDetailsModel previousDetails) {
isAdEdit = true;
navigateWithName(context, AppRoutes.selectAdTypeView, arguments: AppState().currentAppType == AppType.provider ? true : false);
checkVehicleStep1(previousDetails);
checkVehicleStep2(previousDetails);
}
void clearEditValues() {
isAdEdit = false;
if (vehicleTypes.isNotEmpty) vehicleTypes.unselectAll();
if (vehicleAdsDurations.isNotEmpty) vehicleAdsDurations.unselectAll();
}
checkVehicleStep1(AdDetailsModel previousDetails) {
logger.d("Step 1");
if (vehicleTypes.isNotEmpty) {
for (var vehicle in vehicleTypes) {
if (vehicle.id == previousDetails.vehicle?.vehicleType) {
vehicle.isSelected = true;
break;
}
}
}
notifyListeners();
}
checkVehicleStep2(AdDetailsModel previousDetails) {
logger.d("Step 2");
if (vehicleAdsDurations.isNotEmpty) {
for (var adsDuration in vehicleAdsDurations) {
if (adsDuration.price == previousDetails.adsDurationPrice) {
adsDuration.isSelected = true;
break;
}
}
}
notifyListeners();
}
checkVehicleStep3(AdDetailsModel previousDetails) {
logger.d("Step 3");
if (vehicleBrands.isNotEmpty) {
for (var vBrands in vehicleBrands) {
if (vBrands.id == previousDetails.vehicle.) {
// BrandsId need to be matched here.
vBrands.isSelected = true;
break;
}
}
}
notifyListeners();
}
updateValues() {
if (isAdEdit) {
if (vehicleTypes.isNotEmpty) vehicleTypes.unselectAll();
if (vehicleAdsDurations.isNotEmpty) vehicleAdsDurations.unselectAll();
notifyListeners();
}
}
}
extension ToggleSelected on List {
void unselectAll() {
for (var element in this) {
if (element.isSelected!) {
element.isSelected = false;
}
}
}
}
// Edit Work End Amir
class VehicleDamageCard {
List<File>? partImages;

@ -70,7 +70,14 @@ class AdDurationSelectionSheetContent extends StatelessWidget {
),
),
],
).toWhiteContainer(width: double.infinity, allPading: 12, isBorderRequired: adDuration.id == adVM.vehicleAdDurationId.selectedId ? true : false),
).toWhiteContainer(
width: double.infinity,
allPading: 12,
isBorderRequired: adDuration.isSelected!
? true
: adDuration.id == adVM.vehicleAdDurationId.selectedId
? true
: false),
).onPress(() {
if (isFromExtendAd) {
adVM.updateVehicleExtendAdDurationId(
@ -89,6 +96,7 @@ class AdDurationSelectionSheetContent extends StatelessWidget {
itemPrice: adDuration.price!.toInt().toString(),
),
);
adVM.updateValues();
});
},
separatorBuilder: (BuildContext context, int index) {

@ -1,4 +1,5 @@
import 'dart:async';
import 'dart:convert';
import 'dart:developer';
import 'package:flutter/material.dart';
@ -6,6 +7,7 @@ import 'package:mc_common_app/classes/consts.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/main.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/special_service_model.dart';
@ -31,6 +33,7 @@ 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:sizer/sizer.dart';
class AdsDetailView extends StatefulWidget {
final AdDetailsModel adDetails;
@ -90,9 +93,14 @@ class _AdsDetailViewState extends State<AdsDetailView> {
);
}
void editAd() {
AdVM adVM = context.read<AdVM>();
adVM.editUpdateAd(context, widget.adDetails);
}
@override
Widget build(BuildContext context) {
log("ad: ${widget.adDetails.id}");
log("ad: ${widget.adDetails.vehicle!.image!.first.imageUrl}");
return Scaffold(
appBar: CustomAppBar(
title: "Ads",
@ -130,6 +138,7 @@ class _AdsDetailViewState extends State<AdsDetailView> {
children: [
Expanded(
child: ListView(
shrinkWrap: true,
children: [
Column(
mainAxisSize: MainAxisSize.min,
@ -259,7 +268,26 @@ class _AdsDetailViewState extends State<AdsDetailView> {
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
"Rejection Comments".toText(fontSize: 18, isBold: true),
Row(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
"Rejection Comments".toText(fontSize: 18, isBold: true, color: MyColors.lightTextColor),
Row(
children: [
Icon(
Icons.edit,
size: 15,
),
2.width,
"Edit Add".toText(fontSize: 10, isBold: true),
],
).onPress(() {
logger.i(widget.adDetails);
editAd();
}),
],
).paddingOnly(bottom: 5),
Row(
children: [
(widget.adDetails.comment ?? "").toText(

@ -34,7 +34,7 @@ class _CreateAdViewState extends State<CreateAdView> {
Widget build(BuildContext context) {
return Scaffold(
appBar: CustomAppBar(
title: "Create Ad",
title: adVM.isAdEdit ? "Update Ad": "Create Ad",
isRemoveBackButton: false,
isDrawerEnabled: false,
onBackButtonTapped: () => adVM.onBackButtonPressed(context),

@ -3,6 +3,7 @@ import 'package:mc_common_app/classes/consts.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/main.dart';
import 'package:mc_common_app/models/advertisment_models/vehicle_details_models.dart';
import 'package:mc_common_app/models/general_models/widgets_models.dart';
import 'package:mc_common_app/theme/colors.dart';
@ -38,9 +39,35 @@ class SelectAdTypeView extends StatelessWidget {
}
}
// bool checkSelection(VehicleTypeModel vtype, AdVM adVM) {
// bool value = false;
// if (adVM.vehicleTypes.isNotEmpty) {
// for (var vehicle in adVM.vehicleTypes) {
// if (vtype.id == adVM.previousADDetails?.vehicle?.vehicleType) {
// value = true;
// break;
// }
// }
// }
// return value;
// }
//
// clearAll(BuildContext context) {
// AdVM adVM = context.read<AdVM>();
// adVM.clearEditValues();
// }
@override
Widget build(BuildContext context) {
return Scaffold(
return WillPopScope(
onWillPop: () async {
logger.d("Clead All Values");
// clearAll(context);
AdVM adVM = context.read<AdVM>();
adVM.clearEditValues();
return true;
},
child: Scaffold(
appBar: CustomAppBar(
title: "Select Ad Type",
profileImageUrl: MyAssets.bnCar,
@ -60,7 +87,6 @@ class SelectAdTypeView extends StatelessWidget {
adVM.updateSelectionVehicleTypeId(
SelectionModel(selectedId: vehicleTypeModel.id!, selectedOption: vehicleTypeModel.vehicleTypeName ?? "", errorValue: ""),
);
showMyBottomSheet(context, child: const AdDurationSelectionSheetContent(isUpdateAdSelected: false, isFromExtendAd: false));
},
child: SizedBox(
@ -115,7 +141,7 @@ class SelectAdTypeView extends StatelessWidget {
),
],
),
).toWhiteContainer(width: double.infinity, pading: const EdgeInsets.symmetric(horizontal: 20, vertical: 10)),
).toWhiteContainer(width: double.infinity, isBorderRequired: vehicleTypeModel.isSelected! ? true : false, pading: const EdgeInsets.symmetric(horizontal: 20, vertical: 10)),
);
},
separatorBuilder: (BuildContext context, int index) {
@ -161,6 +187,7 @@ class SelectAdTypeView extends StatelessWidget {
]
],
),
),
);
}
}

Loading…
Cancel
Save