fixed A & E

fatima_dev
Rand Alshammari 3 weeks ago
parent 13966f60a9
commit 87ec0f2966

@ -678,11 +678,11 @@ extension BranchServiceEnumStatusToInt on ServiceStatusEnum {
} }
extension DateTimeConversions on DateTime { extension DateTimeConversions on DateTime {
String getTimeAgo({bool numericDates = true}) { String getTimeAgo({bool numericDates = true, bool isArabic = false,}) {
final date2 = DateTime.now(); final date2 = DateTime.now();
final difference = date2.difference(this); final difference = date2.difference(this);
if ((difference.inDays / 7).floor() >= 2) { if ((difference.inDays / 7).floor() >= 2) {
return DateHelper.formatAsDayMonthYear(this); return DateHelper.formatAsDayMonthYear(this, isArabic: isArabic,);
} else if ((difference.inDays / 7).floor() >= 1) { } else if ((difference.inDays / 7).floor() >= 1) {
return (numericDates) ? '1 week ago' : 'Last week'; return (numericDates) ? '1 week ago' : 'Last week';
} else if (difference.inDays >= 2) { } else if (difference.inDays >= 2) {

@ -15,6 +15,7 @@ class AdDetailsModel {
// List<Null>? reserved; // List<Null>? reserved;
int? statusID; int? statusID;
String? statuslabel; String? statuslabel;
String? statuslabelN;
double? adsDurationPrice; double? adsDurationPrice;
double? adsDurationDiscount; double? adsDurationDiscount;
double? adsDurationDiscountPrice; double? adsDurationDiscountPrice;
@ -64,6 +65,7 @@ class AdDetailsModel {
// this.reserved, // this.reserved,
this.statusID, this.statusID,
this.statuslabel, this.statuslabel,
this.statuslabelN,
this.adsDurationPrice, this.adsDurationPrice,
this.adsDurationDiscount, this.adsDurationDiscount,
this.adsDurationDiscountPrice, this.adsDurationDiscountPrice,
@ -124,6 +126,7 @@ class AdDetailsModel {
} }
statusID = json['statusID']; statusID = json['statusID'];
statuslabel = json['statuslabel']; statuslabel = json['statuslabel'];
statuslabelN = json['statuslabelN'];
adsDurationPrice = json['adsDurationPrice']; adsDurationPrice = json['adsDurationPrice'];
adsDurationDiscount = json['adsDurationDiscount']; adsDurationDiscount = json['adsDurationDiscount'];
adsDurationDiscountPrice = json['adsDurationDiscountPrice']; adsDurationDiscountPrice = json['adsDurationDiscountPrice'];

@ -21,8 +21,13 @@ class DateHelper {
return formatter.format(date); return formatter.format(date);
} }
static String formatAsTime(DateTime date) { // static String formatAsTime(DateTime date) {
final formatter = DateFormat.jm(); // final formatter = DateFormat.jm();
// return formatter.format(date);
// }
static String formatAsTime(DateTime date, {bool isArabic = false,}) {
final formatter = DateFormat.jm(
isArabic ? 'ar' : 'en',);
return formatter.format(date); return formatter.format(date);
} }
@ -36,8 +41,15 @@ class DateHelper {
return formatter.format(date); return formatter.format(date);
} }
static String formatAsDayMonthYear(DateTime? date) { // static String formatAsDayMonthYear(DateTime? date) {
final formatter = DateFormat('d MMM, y'); // final formatter = DateFormat('d MMM, y');
// return date != null ? formatter.format(date) : "N/A";
// }
static String formatAsDayMonthYear(DateTime? date,
{ bool isArabic = false,}) {
final formatter = DateFormat('d MMM, y',
isArabic ? 'ar' : 'en',
);
return date != null ? formatter.format(date) : "N/A"; return date != null ? formatter.format(date) : "N/A";
} }

@ -193,19 +193,20 @@ class AdVM extends BaseVM {
exploreAdsFilterOptions.clear(); exploreAdsFilterOptions.clear();
myAdsFilterOptions.clear(); myAdsFilterOptions.clear();
for (int i = 0; i < myAdsStatusEnums.length; i++) { for (int i = 0; i < myAdsStatusEnums.length; i++) {
myAdsFilterOptions.add(FilterListModel(title: myAdsStatusEnums[i].enumValueStr, isSelected: false, id: myAdsStatusEnums[i].enumValue)); myAdsFilterOptions.add(FilterListModel(title: myAdsStatusEnums[i].enumValueStr, titleN: myAdsStatusEnums[i].enumValueStrN, isSelected: false, id: myAdsStatusEnums[i].enumValue));
} }
myAdsFilterOptions.insert(0, FilterListModel(title: "All Ads", isSelected: true, id: 0)); myAdsFilterOptions.insert(0, FilterListModel(title: "All Ads", titleN: "جميع الاعلانات", isSelected: true, id: 0));
for (int i = 0; i < vehicleBrandsForFilters.length; i++) { for (int i = 0; i < vehicleBrandsForFilters.length; i++) {
exploreAdsFilterOptions.add(FilterListModel( exploreAdsFilterOptions.add(FilterListModel(
id: vehicleBrandsForFilters[i].id!, id: vehicleBrandsForFilters[i].id!,
title: "${vehicleBrandsForFilters[i].vehicleBrandDescription}", title: "${vehicleBrandsForFilters[i].vehicleBrandDescription}",
titleN: "${vehicleBrandsForFilters[i].vehicleBrandDescriptionN}",
iconUrl: vehicleBrandsForFilters[i].imageUrl ?? "", iconUrl: vehicleBrandsForFilters[i].imageUrl ?? "",
isSelected: false, isSelected: false,
)); ));
} }
exploreAdsFilterOptions.insert(0, FilterListModel(title: "All Ads", isSelected: true, id: 0)); exploreAdsFilterOptions.insert(0, FilterListModel(title: "All Ads", titleN: "جميع الاعلانات", isSelected: true, id: 0));
notifyListeners(); notifyListeners();
} }

@ -130,7 +130,9 @@ class _AdsDetailViewState extends State<AdsDetailView> {
"${widget.adDetails.vehicle!.mileage!.mileageEnd} ${LocaleKeys.km.tr()}".toText(fontSize: 12), "${widget.adDetails.vehicle!.mileage!.mileageEnd} ${LocaleKeys.km.tr()}".toText(fontSize: 12),
], ],
), ),
widget.adDetails.createdOn != null ? DateTime.parse(widget.adDetails.createdOn!).getTimeAgo().toText(fontSize: 10, color: MyColors.lightTextColor) : const SizedBox(), widget.adDetails.createdOn != null
? DateTime.parse(widget.adDetails.createdOn!).getTimeAgo(isArabic: isArabic).toText(fontSize: 10,color: MyColors.lightTextColor,): const SizedBox(),
//widget.adDetails.createdOn != null ? DateTime.parse(widget.adDetails.createdOn!).getTimeAgo().toText(fontSize: 10, color: MyColors.lightTextColor) : const SizedBox(),
], ],
), ),
Row( Row(
@ -366,12 +368,26 @@ class _AdsDetailViewState extends State<AdsDetailView> {
Widget buildAdStartEndDates() { Widget buildAdStartEndDates() {
String startDate = ""; String startDate = "";
String endDate = ""; String endDate = "";
bool isArabic = AppState().isArabic(context);
final atText = isArabic ? "الساعة" : "at";
if (widget.adDetails.startdate != null) { // if (widget.adDetails.startdate != null) {
startDate = "${DateHelper.formatAsDayMonthYear(DateTime.parse(widget.adDetails.startdate!))} at ${DateHelper.formatAsTime(DateTime.parse(widget.adDetails.startdate!))}"; // startDate = "${DateHelper.formatAsDayMonthYear(DateTime.parse(widget.adDetails.startdate!))} at ${DateHelper.formatAsTime(DateTime.parse(widget.adDetails.startdate!))}";
// }
// if (widget.adDetails.enddate != null) {
// endDate = "${DateHelper.formatAsDayMonthYear(DateTime.parse(widget.adDetails.enddate!))} at ${DateHelper.formatAsTime(DateTime.parse(widget.adDetails.enddate!))}";
// }
if (widget.adDetails.startdate != null) {startDate = "${DateHelper.formatAsDayMonthYear(DateTime.parse(widget.adDetails.startdate!),
isArabic: isArabic,)} $atText ${DateHelper.formatAsTime(
DateTime.parse(widget.adDetails.startdate!),
isArabic: isArabic,
)}";
} }
if (widget.adDetails.enddate != null) { if (widget.adDetails.enddate != null) {endDate = "${DateHelper.formatAsDayMonthYear(DateTime.parse(widget.adDetails.enddate!),
endDate = "${DateHelper.formatAsDayMonthYear(DateTime.parse(widget.adDetails.enddate!))} at ${DateHelper.formatAsTime(DateTime.parse(widget.adDetails.enddate!))}"; isArabic: isArabic,)} $atText ${DateHelper.formatAsTime(
DateTime.parse(widget.adDetails.enddate!),
isArabic: isArabic,
)}";
} }
return Column( return Column(
children: [ children: [

@ -153,10 +153,31 @@ class AdCard extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
children: [ children: [
if (isAdsFragment && adDetails.adPostStatus! == AdPostStatus.sold && adDetails.statuslabel != null && adDetails.statuslabel!.isNotEmpty) ...[ // if (isAdsFragment && adDetails.adPostStatus! == AdPostStatus.sold && adDetails.statuslabel != null && adDetails.statuslabel!.isNotEmpty) ...[
Utils.statusContainerChip(text: adDetails.statuslabel ?? "", chipColor: Utils.getChipColorByAdStatus(adDetails.adPostStatus!)), // Utils.statusContainerChip(text: adDetails.statuslabel ?? "", chipColor: Utils.getChipColorByAdStatus(adDetails.adPostStatus!)),
] else if (isAdsFragment && !context.read<AdVM>().isExploreAdsTapped && adDetails.statuslabel != null && adDetails.statuslabel!.isNotEmpty) ...[ // ] else if (isAdsFragment && !context.read<AdVM>().isExploreAdsTapped && adDetails.statuslabel != null && adDetails.statuslabel!.isNotEmpty) ...[
Utils.statusContainerChip(text: adDetails.statuslabel ?? "", chipColor: Utils.getChipColorByAdStatus(adDetails.adPostStatus!)), // Utils.statusContainerChip(text: adDetails.statuslabel ?? "", chipColor: Utils.getChipColorByAdStatus(adDetails.adPostStatus!)),
// ],
if (isAdsFragment &&
adDetails.adPostStatus! == AdPostStatus.sold &&
adDetails.statuslabel != null &&
adDetails.statuslabel!.isNotEmpty) ...[
Utils.statusContainerChip(
text: isArabic
? (adDetails.statuslabelN ?? "")
: (adDetails.statuslabel ?? ""),
chipColor: Utils.getChipColorByAdStatus(adDetails.adPostStatus!),
),
] else if (isAdsFragment &&
!context.read<AdVM>().isExploreAdsTapped &&
adDetails.statuslabel != null &&
adDetails.statuslabel!.isNotEmpty) ...[
Utils.statusContainerChip(
text: isArabic
? (adDetails.statuslabelN ?? "")
: (adDetails.statuslabel ?? ""),
chipColor: Utils.getChipColorByAdStatus(adDetails.adPostStatus!),
),
], ],
(adDetails.vehicle!.vehicleTitle ?? "").toText( (adDetails.vehicle!.vehicleTitle ?? "").toText(
fontSize: 16, fontSize: 16,
@ -203,7 +224,9 @@ class AdCard extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
children: [ children: [
(adDetails.vehicle!.cityName ?? "").toText(color: MyColors.lightTextColor), (adDetails.vehicle!.cityName ?? "").toText(color: MyColors.lightTextColor),
adDetails.createdOn != null ? DateTime.parse(adDetails.createdOn!).getTimeAgo().toText(color: MyColors.lightTextColor) : const SizedBox(), // adDetails.createdOn != null ? DateTime.parse(adDetails.createdOn!).getTimeAgo().toText(color: MyColors.lightTextColor) : const SizedBox(),
adDetails.createdOn != null
? DateTime.parse(adDetails.createdOn!).getTimeAgo(isArabic: isArabic).toText(color: MyColors.lightTextColor) : const SizedBox(),
], ],
), ),
], ],

@ -70,15 +70,16 @@ class SelectAdTypeView extends StatelessWidget {
children: [ children: [
Expanded( Expanded(
child: Consumer(builder: (BuildContext context, AdVM adVM, Widget? child) { child: Consumer(builder: (BuildContext context, AdVM adVM, Widget? child) {
final isArabic = AppState().isArabic(context);
return ListView.separated( return ListView.separated(
itemCount: adVM.vehicleTypes.length, itemCount: adVM.vehicleTypes.length,
itemBuilder: (BuildContext context, int index) { itemBuilder: (BuildContext context, int index) {
VehicleTypeModel vehicleTypeModel = adVM.vehicleTypes[index]; VehicleTypeModel vehicleTypeModel = adVM.vehicleTypes[index];
return InkWell( return InkWell(
onTap: () async { onTap: () async {
adVM.updateSelectionVehicleTypeId(SelectionModel(selectedId: vehicleTypeModel.id!, selectedOption: vehicleTypeModel.vehicleTypeName ?? "", errorValue: "")); adVM.updateSelectionVehicleTypeId(SelectionModel(selectedId: vehicleTypeModel.id!, selectedOption: isArabic ? vehicleTypeModel.vehicleTypeNameN ?? "" : vehicleTypeModel.vehicleTypeName ?? "", errorValue: ""));
if (adVM.isAdEditEnabled) { if (adVM.isAdEditEnabled) {
adVM.autoFillSelectedVehicleAdsDetails(); adVM.autoFillSelectedVehicleAdsDetails(context);
} }
if (AppState().currentAppType == AppType.provider) { if (AppState().currentAppType == AppType.provider) {
if (isFromExtendAd && !adVM.isAdEditEnabled) { if (isFromExtendAd && !adVM.isAdEditEnabled) {
@ -113,7 +114,9 @@ class SelectAdTypeView extends StatelessWidget {
Row( Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
vehicleTypeModel.vehicleTypeName.toString().toText(fontSize: 18), isArabic ? vehicleTypeModel.vehicleTypeNameN.toString().toText(fontSize: 18)
: vehicleTypeModel.vehicleTypeName.toString().toText(fontSize: 18),
// vehicleTypeModel.vehicleTypeName.toString().toText(fontSize: 18),
getVehicleAdTypeIcon(vehicleTypeModel.vehicleTypeEnum!), getVehicleAdTypeIcon(vehicleTypeModel.vehicleTypeEnum!),
], ],
), ),

@ -15,6 +15,8 @@ import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../../classes/app_state.dart';
class ForgetPasswordPage extends StatefulWidget { class ForgetPasswordPage extends StatefulWidget {
const ForgetPasswordPage({Key? key}) : super(key: key); const ForgetPasswordPage({Key? key}) : super(key: key);
@ -133,11 +135,19 @@ class _ForgetPasswordPageState extends State<ForgetPasswordPage> {
} }
Widget getCountry() { Widget getCountry() {
bool isArabic = AppState().isArabic(context);
if (_country != null) { if (_country != null) {
List<DropValue> dropList = []; List<DropValue> dropList = [];
_country!.data?.forEach( _country!.data?.forEach(
(element) { (element) {
dropList.add(DropValue(element.id ?? 0, "${element.countryName ?? ""} ${element.countryCode ?? ""}", element.countryCode ?? "")); // dropList.add(DropValue(element.id ?? 0, "${element.countryName ?? ""} ${element.countryCode ?? ""}", element.countryCode ?? ""));
dropList.add(
DropValue(
element.id ?? 0,
"${isArabic ? (element.countryNameN ?? element.countryName ?? "") : (element.countryName ?? "")} ${element.countryCode ?? ""}",
element.countryCode ?? "",
),
);
}, },
); );
return Padding( return Padding(

@ -179,15 +179,48 @@ class _LoginWithPasswordState extends State<LoginWithPassword> {
); );
} }
// Widget getCountry(BuildContext context) {
// if (_country != null) {
// List<DropValue> dropList = [];
// _country!.data?.forEach((element) {
// dropList.add(DropValue(element.id ?? 0, "${element.countryName ?? ""} ${element.countryCode ?? ""}", element.countryCode ?? ""));
// });
// return DropdownField(
// dropdownValue: tempCountry,
// (DropValue value) {
// countryCode = value.subValue;
// tempCountry = value;
// setState(() {});
// },
// list: dropList,
// hint: LocaleKeys.selectCountryCode.tr(),
// );
// } else {
// return const Center(
// child: CircularProgressIndicator(),
// );
// }
// }
Widget getCountry(BuildContext context) { Widget getCountry(BuildContext context) {
bool isArabic = AppState().isArabic(context);
if (_country != null) { if (_country != null) {
List<DropValue> dropList = []; List<DropValue> dropList = [];
_country!.data?.forEach((element) { _country!.data?.forEach((element) {
dropList.add(DropValue(element.id ?? 0, "${element.countryName ?? ""} ${element.countryCode ?? ""}", element.countryCode ?? "")); dropList.add(
DropValue(
element.id ?? 0,
"${isArabic ? (element.countryNameN ?? element.countryName ?? "") : (element.countryName ?? "")} ${element.countryCode ?? ""}",
element.countryCode ?? "",
),
);
}); });
return DropdownField( return DropdownField(
dropdownValue: tempCountry, dropdownValue: tempCountry,
(DropValue value) { (DropValue value) {
countryCode = value.subValue; countryCode = value.subValue;
tempCountry = value; tempCountry = value;
setState(() {}); setState(() {});

Loading…
Cancel
Save