aamir_dev
Aamir 1 year ago
parent 671b9d9e6f
commit 2fcc2792a3

@ -744,5 +744,13 @@
"blockedByAdmin": "تم حظرها من قبل المسؤول", "blockedByAdmin": "تم حظرها من قبل المسؤول",
"active": "نشط", "active": "نشط",
"paymentType": "نوع الدفع", "paymentType": "نوع الدفع",
"searchByCreatedDate": "البحث حسب تاريخ الإنشاء" "searchByCreatedDate": "البحث حسب تاريخ الإنشاء",
"cityNameMandatory": "المدينة إلزامية",
"genderMandatory": "الجنس إلزامي",
"updateCity": "تحديث المدينة",
"userGender": "جنس",
"userMale": "ذكر",
"userFemale": "أنثى"
} }

@ -742,6 +742,11 @@
"updateUserDetails": "Update User Details", "updateUserDetails": "Update User Details",
"enterNewFirstName": "Enter First Name", "enterNewFirstName": "Enter First Name",
"enterNewLastName": "Enter Last Name", "enterNewLastName": "Enter Last Name",
"userDetailsUpdated": "User Details is Updated" "userDetailsUpdated": "User Details is Updated",
"cityNameMandatory": "City is mandatory",
"genderMandatory": "Gender is mandatory",
"updateCity": "Update City",
"userGender": "Gender",
"userMale": "Male",
"userFemale": "Female"
} }

@ -4,6 +4,7 @@ import 'package:mc_common_app/models/subscriptions_models/provider_subscription_
import 'package:mc_common_app/models/subscriptions_models/subscription_model.dart'; import 'package:mc_common_app/models/subscriptions_models/subscription_model.dart';
import 'package:mc_common_app/models/user_models/user.dart'; import 'package:mc_common_app/models/user_models/user.dart';
import 'package:mc_common_app/utils/enums.dart'; import 'package:mc_common_app/utils/enums.dart';
import 'package:mc_common_app/widgets/dropdown/dropdow_field.dart';
class AppState { class AppState {
static final AppState _instance = AppState._internal(); static final AppState _instance = AppState._internal();
@ -70,4 +71,13 @@ class AppState {
set setproviderSubscription(List<Subscription>? value) { set setproviderSubscription(List<Subscription>? value) {
_providerSubscription = value; _providerSubscription = value;
} }
DropValue? _userRegisterCountrySelection ;
DropValue get getUserRegisterCountrySelection => _userRegisterCountrySelection!;
set setUserRegisterCountrySelection(DropValue value) {
_userRegisterCountrySelection = value;
}
} }

@ -760,7 +760,13 @@ class CodegenLoader extends AssetLoader{
"blockedByAdmin": "تم حظرها من قبل المسؤول", "blockedByAdmin": "تم حظرها من قبل المسؤول",
"active": "نشط", "active": "نشط",
"paymentType": "نوع الدفع", "paymentType": "نوع الدفع",
"searchByCreatedDate": "البحث حسب تاريخ الإنشاء" "searchByCreatedDate": "البحث حسب تاريخ الإنشاء",
"cityNameMandatory": "المدينة إلزامية",
"genderMandatory": "الجنس إلزامي",
"updateCity": "تحديث المدينة",
"userGender": "جنس",
"userMale": "ذكر",
"userFemale": "أنثى"
}; };
static const Map<String,dynamic> en_US = { static const Map<String,dynamic> en_US = {
"firstTimeLogIn": "First Time Log In", "firstTimeLogIn": "First Time Log In",
@ -1506,7 +1512,13 @@ static const Map<String,dynamic> en_US = {
"updateUserDetails": "Update User Details", "updateUserDetails": "Update User Details",
"enterNewFirstName": "Enter First Name", "enterNewFirstName": "Enter First Name",
"enterNewLastName": "Enter Last Name", "enterNewLastName": "Enter Last Name",
"userDetailsUpdated": "User Details is Updated" "userDetailsUpdated": "User Details is Updated",
"cityNameMandatory": "City is mandatory",
"genderMandatory": "Gender is mandatory",
"updateCity": "Update City",
"userGender": "Gender",
"userMale": "Male",
"userFemale": "Female"
}; };
static const Map<String, Map<String,dynamic>> mapLocales = {"ar_SA": ar_SA, "en_US": en_US}; static const Map<String, Map<String,dynamic>> mapLocales = {"ar_SA": ar_SA, "en_US": en_US};
} }

@ -684,6 +684,10 @@ abstract class LocaleKeys {
static const customerLocation = 'customerLocation'; static const customerLocation = 'customerLocation';
static const deliveryAvailable = 'deliveryAvailable'; static const deliveryAvailable = 'deliveryAvailable';
static const viewed = 'viewed'; static const viewed = 'viewed';
static const updateUserDetails = 'updateUserDetails';
static const enterNewFirstName = 'enterNewFirstName';
static const enterNewLastName = 'enterNewLastName';
static const userDetailsUpdated = 'userDetailsUpdated';
static const itemNoLongerAvailable = 'itemNoLongerAvailable'; static const itemNoLongerAvailable = 'itemNoLongerAvailable';
static const reactivateAd = 'reactivateAd'; static const reactivateAd = 'reactivateAd';
static const dealOutsideApp = 'dealOutsideApp'; static const dealOutsideApp = 'dealOutsideApp';
@ -720,9 +724,11 @@ abstract class LocaleKeys {
static const active = 'active'; static const active = 'active';
static const paymentType = 'paymentType'; static const paymentType = 'paymentType';
static const searchByCreatedDate = 'searchByCreatedDate'; static const searchByCreatedDate = 'searchByCreatedDate';
static const updateUserDetails = 'updateUserDetails'; static const cityNameMandatory = 'cityNameMandatory';
static const enterNewFirstName = 'enterNewFirstName'; static const genderMandatory = 'genderMandatory';
static const enterNewLastName = 'enterNewLastName'; static const updateCity = 'updateCity';
static const userDetailsUpdated = 'userDetailsUpdated'; static const userGender = 'userGender';
static const userMale = 'userMale';
static const userFemale = 'userFemale';
} }

@ -31,7 +31,7 @@ abstract class UserRepo {
Future<RegisterUserRespModel> basicVerify(String phoneNo, String otp, String userToken, {bool isNeedToPassToken = false}); Future<RegisterUserRespModel> basicVerify(String phoneNo, String otp, String userToken, {bool isNeedToPassToken = false});
Future<RegisterUserRespModel> basicComplete(String userId, String firstName, String lastName, String email, String password, {bool isNeedToPassToken = false}); Future<RegisterUserRespModel> basicComplete(String userId, String firstName, String lastName, String email, String password, String cityID, String genderID, {bool isNeedToPassToken = false});
Future<Response> loginV1(String phoneNo, String password); Future<Response> loginV1(String phoneNo, String password);
@ -106,12 +106,12 @@ class UserRepoImp implements UserRepo {
} }
@override @override
Future<RegisterUserRespModel> basicComplete(String userId, String firstName, String lastName, String email, String password, {bool isNeedToPassToken = false}) async { Future<RegisterUserRespModel> basicComplete(String userId, String firstName, String lastName, String email, String password, String cityID, String genderID, {bool isNeedToPassToken = false}) async {
Map<String, Object> postParams; Map<String, Object> postParams;
if (email.isEmpty) { if (email.isEmpty) {
postParams = {"userID": userId, "firstName": firstName, "lastName": lastName, "companyName": "string", "isEmailVerified": true, "password": password}; postParams = {"userID": userId, "firstName": firstName, "lastName": lastName, "companyName": "string", "isEmailVerified": true, "password": password, "cityID": cityID, "genderID": genderID};
} else { } else {
postParams = {"userID": userId, "firstName": firstName, "lastName": lastName, "email": email, "companyName": "string", "isEmailVerified": true, "password": password}; postParams = {"userID": userId, "firstName": firstName, "lastName": lastName, "email": email, "companyName": "string", "isEmailVerified": true, "password": password, "cityID": cityID, "genderID": genderID};
} }
String? t; String? t;
if (isNeedToPassToken) { if (isNeedToPassToken) {

@ -45,6 +45,7 @@ import 'package:mc_common_app/views/location_views/map_selection_widget.dart';
import 'package:mc_common_app/widgets/dialog/dialogs.dart'; import 'package:mc_common_app/widgets/dialog/dialogs.dart';
import 'package:mc_common_app/widgets/dialog/message_dialog.dart'; import 'package:mc_common_app/widgets/dialog/message_dialog.dart';
import 'package:mc_common_app/widgets/dialog/otp_dialog.dart'; import 'package:mc_common_app/widgets/dialog/otp_dialog.dart';
import 'package:mc_common_app/widgets/dropdown/dropdow_field.dart';
import 'package:mc_common_app/widgets/tab/login_email_tab.dart'; import 'package:mc_common_app/widgets/tab/login_email_tab.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
@ -198,11 +199,13 @@ class UserVM extends BaseVM {
required String email, required String email,
required String? userId, required String? userId,
bool isNeedToPassToken = false, bool isNeedToPassToken = false,
required String cityID,
required String genderID,
}) async { }) async {
if (Utils.passwordValidateStructure(password)) { if (Utils.passwordValidateStructure(password)) {
if (password == confirmPassword) { if (password == confirmPassword) {
Utils.showLoading(context); Utils.showLoading(context);
RegisterUserRespModel user = await userRepo.basicComplete(userId ?? "", firstName, lastName, email, password, isNeedToPassToken: isNeedToPassToken); RegisterUserRespModel user = await userRepo.basicComplete(userId ?? "", firstName, lastName, email, password, cityID, genderID, isNeedToPassToken: isNeedToPassToken);
Utils.hideLoading(context); Utils.hideLoading(context);
if (user.messageStatus == 1) { if (user.messageStatus == 1) {
Utils.showToast(LocaleKeys.successfullyRegistered.tr()); Utils.showToast(LocaleKeys.successfullyRegistered.tr());
@ -225,6 +228,8 @@ class UserVM extends BaseVM {
required String? firstName, required String? firstName,
required String? lastName, required String? lastName,
required String? email, required String? email,
required DropValue? city,
required DropValue? gender,
}) { }) {
bool isValid = true; bool isValid = true;
if (firstName!.isEmpty) { if (firstName!.isEmpty) {
@ -249,6 +254,13 @@ class UserVM extends BaseVM {
//("Please accept terms"); //("Please accept terms");
isValid = false; isValid = false;
} }
else if (city == null) {
Utils.showToast(LocaleKeys.cityNameMandatory.tr());
isValid = false;
} else if (gender == null) {
Utils.showToast(LocaleKeys.genderMandatory.tr());
isValid = false;
}
return isValid; return isValid;
} }

@ -1,3 +1,4 @@
import 'package:mc_common_app/classes/app_state.dart';
import 'package:mc_common_app/classes/consts.dart'; import 'package:mc_common_app/classes/consts.dart';
import 'package:mc_common_app/config/routes.dart'; import 'package:mc_common_app/config/routes.dart';
import 'package:mc_common_app/theme/colors.dart'; import 'package:mc_common_app/theme/colors.dart';
@ -9,6 +10,7 @@ import 'package:mc_common_app/utils/navigator.dart';
import 'package:mc_common_app/view_models/user_view_model.dart'; import 'package:mc_common_app/view_models/user_view_model.dart';
import 'package:mc_common_app/widgets/common_widgets/app_bar.dart'; import 'package:mc_common_app/widgets/common_widgets/app_bar.dart';
import 'package:mc_common_app/widgets/button/show_fill_button.dart'; import 'package:mc_common_app/widgets/button/show_fill_button.dart';
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/extensions/extensions_widget.dart';
import 'package:mc_common_app/widgets/txt_field.dart'; import 'package:mc_common_app/widgets/txt_field.dart';
import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.dart';
@ -25,17 +27,29 @@ class CompleteProfilePage extends StatefulWidget {
} }
class _CompleteProfilePageState extends State<CompleteProfilePage> { class _CompleteProfilePageState extends State<CompleteProfilePage> {
String? firstName = "", lastName = "", email = "", confirmPassword = ""; String? firstName = "",
lastName = "",
email = "",
confirmPassword = "";
late String password = ""; late String password = "";
bool isChecked = false; bool isChecked = false;
late UserVM userVM; late UserVM userVM;
DropValue? city;
DropValue? gender;
@override @override
void initState() { void initState() {
userVM = Provider.of<UserVM>(context, listen: false); userVM = Provider.of<UserVM>(context, listen: false);
getcities();
super.initState(); super.initState();
} }
getcities() async {
print("Country ID = " + AppState().getUserRegisterCountrySelection.id.toString());
await userVM.getAllCitiesForUser(AppState().getUserRegisterCountrySelection.id);
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
@ -53,20 +67,20 @@ class _CompleteProfilePageState extends State<CompleteProfilePage> {
children: [ children: [
6.height, 6.height,
LocaleKeys.completeProfile.tr().toText( LocaleKeys.completeProfile.tr().toText(
height: 23 / 24, height: 23 / 24,
fontSize: 24, fontSize: 24,
letterSpacing: -1.44, letterSpacing: -1.44,
), ),
12.height, 12.height,
Padding( Padding(
padding: const EdgeInsets.symmetric(horizontal: 20), padding: const EdgeInsets.symmetric(horizontal: 20),
child: LocaleKeys.profileMsg.tr().toText( child: LocaleKeys.profileMsg.tr().toText(
color: MyColors.lightTextColor, color: MyColors.lightTextColor,
textAlign: TextAlign.center, textAlign: TextAlign.center,
fontSize: 14, fontSize: 14,
height: 23 / 24, height: 23 / 24,
letterSpacing: -0.48, letterSpacing: -0.48,
), ),
), ),
12.height, 12.height,
TxtField( TxtField(
@ -85,6 +99,32 @@ class _CompleteProfilePageState extends State<CompleteProfilePage> {
}, },
), ),
12.height, 12.height,
Container(
padding: const EdgeInsets.only(right: 0, left: 0, top: 0, bottom: 0),
child: Builder(builder: (context) {
List<DropValue> userGender = [];
userGender.add(DropValue(1.toInt(), "${LocaleKeys.userMale.tr()}", "", isEnabled: true));
userGender.add(DropValue(2.toInt(), "${LocaleKeys.userFemale.tr()}", "", isEnabled: true));
// for (var element in userVM.userCities!.data!) {
// if (AppState().getUser.data != null) {
// if (AppState().getUser.data!.userInfo!.cityId == element.id) {
// city = DropValue(element.id?.toInt() ?? 0, element.cityName ?? "", "");
// }
// }
//
// }
return DropdownField(
(DropValue value) {
gender = value;
setState(() {});
},
list: userGender,
dropdownValue: gender != null && gender != -1 ? DropValue(gender!.id, gender!.value, "") : null,
hint: gender != null && gender != -1 ? gender!.value : "${LocaleKeys.userGender.tr()} *",
// errorValue: adVM.vehicleCountryId.errorValue,
);
})),
12.height,
TxtField( TxtField(
hint: LocaleKeys.email.tr(), hint: LocaleKeys.email.tr(),
value: email, value: email,
@ -95,6 +135,32 @@ class _CompleteProfilePageState extends State<CompleteProfilePage> {
}, },
), ),
12.height, 12.height,
userVM.userCities != null
? Container(
padding: const EdgeInsets.only(right: 0, left: 0, top: 0, bottom: 0),
child: Builder(builder: (context) {
List<DropValue> userCityDrop = [];
for (var element in userVM.userCities!.data!) {
if (AppState().getUser.data != null) {
if (AppState().getUser.data!.userInfo!.cityId == element.id) {
city = DropValue(element.id?.toInt() ?? 0, element.cityName ?? "", "");
}
}
userCityDrop.add(DropValue(element.id?.toInt() ?? 0, element.cityName ?? "", ""));
}
return DropdownField(
(DropValue value) {
city = value;
setState(() {});
},
list: userCityDrop,
dropdownValue: city != null && city != -1 ? DropValue(city!.id, city!.value, "") : null,
hint: city != null && city != -1 ? city!.value : "${LocaleKeys.city.tr()} *",
// errorValue: adVM.vehicleCountryId.errorValue,
);
}))
: SizedBox(),
12.height,
TxtField( TxtField(
hint: LocaleKeys.createPass.tr(), hint: LocaleKeys.createPass.tr(),
isPasswordEnabled: true, isPasswordEnabled: true,
@ -175,12 +241,12 @@ class _CompleteProfilePageState extends State<CompleteProfilePage> {
if (!userVM.completeProfilePageCheckbox) { if (!userVM.completeProfilePageCheckbox) {
return; return;
} }
bool validateStatus = userVM.dataValidation( bool validateStatus = userVM.dataValidation(password: password,
password: password, firstName: firstName,
firstName: firstName, lastName: lastName,
lastName: lastName, email: email,
email: email, city: city,
); gender: gender);
if (validateStatus) { if (validateStatus) {
userVM.performCompleteProfile( userVM.performCompleteProfile(
context, context,
@ -191,6 +257,8 @@ class _CompleteProfilePageState extends State<CompleteProfilePage> {
email: email!, email: email!,
userId: widget.user.data!.userId ?? "", userId: widget.user.data!.userId ?? "",
isNeedToPassToken: widget.user.data!.isNeedToPassToken, isNeedToPassToken: widget.user.data!.isNeedToPassToken,
cityID: city!.id.toString(),
genderID: gender!.id.toString(),
); );
} }
}); });

@ -1,5 +1,6 @@
import 'dart:developer'; import 'dart:developer';
import 'package:mc_common_app/classes/app_state.dart';
import 'package:mc_common_app/config/dependency_injection.dart'; import 'package:mc_common_app/config/dependency_injection.dart';
import 'package:mc_common_app/extensions/int_extensions.dart'; import 'package:mc_common_app/extensions/int_extensions.dart';
import 'package:mc_common_app/extensions/string_extensions.dart'; import 'package:mc_common_app/extensions/string_extensions.dart';
@ -118,8 +119,12 @@ class _RegisterPageState extends State<RegisterProviderPage> {
if (snapshot.hasData) { if (snapshot.hasData) {
List<DropValue> dropList = []; List<DropValue> dropList = [];
snapshot.data?.data?.forEach((element) { snapshot.data?.data?.forEach((element) {
dropList.add(DropValue(element.id ?? 0, dropList.add(DropValue(
EasyLocalization.of(context)?.currentLocale?.countryCode == "SA" ? "${element.countryNameN ?? ""} ${element.countryCode ?? ""}" : "${element.countryName ?? ""} ${element.countryCode ?? ""}", element.countryCode ?? "")); element.id ?? 0,
EasyLocalization.of(context)?.currentLocale?.countryCode == "SA"
? "${element.countryNameN ?? ""} ${element.countryCode ?? ""}"
: "${element.countryName ?? ""} ${element.countryCode ?? ""}",
element.countryCode ?? ""));
}); });
return Column( return Column(
children: [ children: [
@ -132,6 +137,7 @@ class _RegisterPageState extends State<RegisterProviderPage> {
DropdownField( DropdownField(
(DropValue value) { (DropValue value) {
selectedDrop = value; selectedDrop = value;
AppState().setUserRegisterCountrySelection = value;
setState(() { setState(() {
countryCode = value.subValue; countryCode = value.subValue;
countryId = value.id; countryId = value.id;

@ -35,7 +35,7 @@ class _UpdateUserCityCountryState extends State<UpdateUserCityCountry> {
return Consumer(builder: (BuildContext context, UserVM uVM, Widget? child) { return Consumer(builder: (BuildContext context, UserVM uVM, Widget? child) {
return Scaffold( return Scaffold(
appBar: CustomAppBar( appBar: CustomAppBar(
title: "Update City", title: LocaleKeys.updateCity.tr(),
), ),
body: Column( body: Column(
children: [ children: [
@ -58,7 +58,7 @@ class _UpdateUserCityCountryState extends State<UpdateUserCityCountry> {
}, },
list: userCountryDrop, list: userCountryDrop,
dropdownValue: country != null && country != -1 ? DropValue(country!.id, country!.value, "") : null, dropdownValue: country != null && country != -1 ? DropValue(country!.id, country!.value, "") : null,
hint: country != null && country != -1 ? country!.value : "Country", hint: country != null && country != -1 ? country!.value : "${LocaleKeys.country.tr()} *",
// errorValue: adVM.vehicleCountryId.errorValue, // errorValue: adVM.vehicleCountryId.errorValue,
); );
})) }))
@ -81,7 +81,7 @@ class _UpdateUserCityCountryState extends State<UpdateUserCityCountry> {
}, },
list: userCityDrop, list: userCityDrop,
dropdownValue: city != null && city != -1 ? DropValue(city!.id, city!.value, "") : null, dropdownValue: city != null && city != -1 ? DropValue(city!.id, city!.value, "") : null,
hint: city != null && city != -1 ? city!.value : "City", hint: city != null && city != -1 ? city!.value : "${LocaleKeys.city.tr()} *",
// errorValue: adVM.vehicleCountryId.errorValue, // errorValue: adVM.vehicleCountryId.errorValue,
); );
})) }))

Loading…
Cancel
Save