fatima
Fatimah Alshammari 4 years ago
parent 0ffe8a949a
commit 39b6f06ca8

@ -1,4 +1,7 @@
import 'dart:async';
import 'package:car_provider_app/models/user/confirm_password.dart';
import 'package:car_provider_app/models/user/forget_password_otp_compare.dart';
import 'package:car_provider_app/models/user/forget_password_otp_request.dart';
import 'package:http/http.dart';
import 'package:car_provider_app/classes/consts.dart';
import 'package:car_provider_app/models/content_info_model.dart';
@ -56,4 +59,31 @@ class UserApiClent {
var postParams = {"userToken": userToken, "userOTP": otp};
return await ApiClient().postJsonForResponse(ApiConsts.Login_V2_OTPVerify, postParams);
}
Future<Response> ForgetPasswordOTPRequest(String userName, int otpType) async {
var postParams = {
"userName": userName,
"otpType": 1,
};
return await ApiClient().postJsonForResponse(ApiConsts.ForgetPasswordOTPRequest, postParams);
//return await ApiClient().postJsonForObject((json) => PasswordOTPRequest.fromJson(json), ApiConsts.ForgetPasswordOTPRequest, postParams);
}
Future<Response> ForgetPasswordOTPCompare(String userToken, String otp) async {
var postParams =
{"userToken": userToken,
"userOTP": otp};
return await ApiClient().postJsonForResponse(ApiConsts.ForgetPasswordOTPCompare, postParams);
// return await ApiClient().postJsonForObject((json) => PasswordOTPCompare.fromJson(json), ApiConsts.ForgetPasswordOTPCompare, postParams);
}
Future<Response> ForgetPassword(String userToken, String newPassword) async {
var postParams = {
"userToken": userToken,
"newPassword": newPassword,
};
return await ApiClient().postJsonForResponse(ApiConsts.ForgetPassword, postParams);
//return await ApiClient().postJsonForObject((json) => ConfirmPassword.fromJson(json), ApiConsts.ForgetPassword, postParams);
}
}

@ -11,6 +11,18 @@ class ApiConsts {
static String Login_V2_OTP = baseUrlServices + "api/Account/Login_V2_OTP";
static String Login_V2_OTPVerify = baseUrlServices + "api/Account/Login_V2_OTPVerify";
static String user = baseUrlServices + "api/User/";
static String ForgetPasswordOTPRequest = baseUrlServices + "api/Account/ForgetPasswordOTPRequest";
static String ForgetPasswordOTPCompare = baseUrlServices + "api/Account/ForgetPasswordOTPCompare";
static String ForgetPassword = baseUrlServices + "api/Account/ForgetPassword";
}

@ -13,6 +13,8 @@ import 'package:car_provider_app/pages/user/register_page.dart';
import 'package:car_provider_app/pages/user/register_selection_page.dart';
import 'package:car_provider_app/pages/user/splash_page.dart';
import 'package:flutter/material.dart';
import 'package:car_provider_app/pages/user/vertify_password_page.dart';
import 'package:car_provider_app/pages/user/confirm_new_password_page.dart';
class AppRoutes {
//User
@ -28,6 +30,8 @@ class AppRoutes {
static final String profile1 = "/profile1";
static final String profile2 = "/profile2";
static final String profile3 = "/profile3";
static final String vertifyPassword = "/vertifyPassword";
static final String confirmNewPasswordPage = "/confirmNewPasswordPage";
static final String dashboard = "/dashboard";
@ -47,6 +51,8 @@ class AppRoutes {
profile1: (context) => Profile1Page(),
profile2: (context) => Profile2Page(),
profile3: (context) => Profile3Page(),
vertifyPassword: (context) => VerifyPasswordPage(),
confirmNewPasswordPage: (context) => ConfirmNewPasswordPage(ModalRoute.of(context)!.settings.arguments as String),
//Home page
dashboard: (context) => DashboardPage(),

@ -0,0 +1,30 @@
import 'dart:convert';
ConfirmPassword confirmPasswordFromJson(String str) => ConfirmPassword.fromJson(json.decode(str));
String confirmPasswordToJson(ConfirmPassword data) => json.encode(data.toJson());
class ConfirmPassword {
dynamic totalItemsCount;
int? messageStatus;
String? message;
ConfirmPassword(
{this.totalItemsCount, this.messageStatus, this.message});
ConfirmPassword.fromJson(Map<String, dynamic> json) {
totalItemsCount = json['totalItemsCount'];
messageStatus = json['messageStatus'];
message = json['message'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['totalItemsCount'] = this.totalItemsCount;
data['messageStatus'] = this.messageStatus;
data['message'] = this.message;
return data;
}
}

@ -0,0 +1,50 @@
import 'dart:convert';
PasswordOTPCompare otpCompareFromJson(String str) => PasswordOTPCompare.fromJson(json.decode(str));
String otpCompareToJson(PasswordOTPCompare data) => json.encode(data.toJson());
class PasswordOTPCompare {
dynamic totalItemsCount;
Data? data;
int? messageStatus;
String? message;
PasswordOTPCompare(
{this.totalItemsCount, this.data, this.messageStatus, this.message});
PasswordOTPCompare.fromJson(Map<String, dynamic> json) {
totalItemsCount = json['totalItemsCount'];
data = json['data'] != null ? new Data.fromJson(json['data']) : null;
messageStatus = json['messageStatus'];
message = json['message'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['totalItemsCount'] = this.totalItemsCount;
if (this.data != null) {
data['data'] = this.data!.toJson();
}
data['messageStatus'] = this.messageStatus;
data['message'] = this.message;
return data;
}
}
class Data {
String? userToken;
Data({this.userToken});
Data.fromJson(Map<String, dynamic> json) {
userToken = json['userToken'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['userToken'] = this.userToken;
return data;
}
}

@ -0,0 +1,50 @@
import 'dart:convert';
PasswordOTPRequest otpRequestFromJson(String str) => PasswordOTPRequest.fromJson(json.decode(str));
String otpRequestToJson(PasswordOTPRequest data) => json.encode(data.toJson());
class PasswordOTPRequest {
dynamic totalItemsCount;
Data? data;
int? messageStatus;
String? message;
PasswordOTPRequest(
{this.totalItemsCount, this.data, this.messageStatus, this.message});
PasswordOTPRequest.fromJson(Map<String, dynamic> json) {
totalItemsCount = json['totalItemsCount'];
data = json['data'] != null ? new Data.fromJson(json['data']) : null;
messageStatus = json['messageStatus'];
message = json['message'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['totalItemsCount'] = this.totalItemsCount;
if (this.data != null) {
data['data'] = this.data!.toJson();
}
data['messageStatus'] = this.messageStatus;
data['message'] = this.message;
return data;
}
}
class Data {
String? userToken;
Data({this.userToken});
Data.fromJson(Map<String, dynamic> json) {
userToken = json['userToken'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['userToken'] = this.userToken;
return data;
}
}

@ -0,0 +1,76 @@
import 'package:car_provider_app/api/shared_prefrence.dart';
import 'package:car_provider_app/api/user_api_client.dart';
import 'package:car_provider_app/classes/utils.dart';
import 'package:car_provider_app/config/routes.dart';
import 'package:car_provider_app/models/user/confirm_password.dart';
import 'package:car_provider_app/models/user/forget_password_otp_compare.dart';
import 'package:car_provider_app/models/user/forget_password_otp_request.dart';
import 'package:car_provider_app/pages/user/vertify_password_page.dart';
import 'package:car_provider_app/utils/navigator.dart';
import 'package:car_provider_app/utils/utils.dart';
import 'package:car_provider_app/widgets/app_bar.dart';
import 'package:car_provider_app/widgets/dialog/dialogs.dart';
import 'package:car_provider_app/widgets/dialog/message_dialog.dart';
import 'package:car_provider_app/widgets/show_fill_button.dart';
import 'package:car_provider_app/extensions/string_extensions.dart';
import 'package:car_provider_app/extensions/int_extensions.dart';
import 'package:car_provider_app/widgets/txt_field.dart';
import 'package:flutter/material.dart';
import 'dart:convert';
import 'package:http/http.dart';
class ConfirmNewPasswordPage extends StatelessWidget {
String userToken;
ConfirmNewPasswordPage(this.userToken, {Key? key}) : super(key: key);
String newPassword = "";
// String userToken = "";
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: appBar(title: "Forget Password"),
body: Container(
width: double.infinity,
height: double.infinity,
padding: EdgeInsets.all(40),
child: Column(
children: [
"New Password".toText24(),
12.height,
TxtField(
hint: "Inter New Password",
value: newPassword,
onChanged: (v) {
newPassword = v;
},
),
40.height,
ShowFillButton(
title: "Confirm",
width: double.infinity,
onPressed: () {
confirmPasswordOTP(context);
},
),
],
),
),
);
}
Future<void> confirmPasswordOTP(BuildContext context) async {
Utils.showLoading(context);
Response res = await UserApiClent().ForgetPassword(userToken, newPassword);
Utils.hideLoading(context);
ConfirmPassword data = ConfirmPassword.fromJson(jsonDecode(res.body));
if (data.messageStatus == 1) {
navigateWithName(context, AppRoutes.loginWithPassword);
} else {
Utils.showToast(data.message ?? "");
}
}
}

@ -1,49 +1,170 @@
import 'package:car_provider_app/api/shared_prefrence.dart';
import 'package:car_provider_app/api/user_api_client.dart';
import 'package:car_provider_app/classes/utils.dart';
import 'package:car_provider_app/config/constants.dart';
import 'package:car_provider_app/config/routes.dart';
import 'package:car_provider_app/models/user/forget_password_otp_compare.dart';
import 'package:car_provider_app/models/user/forget_password_otp_request.dart';
import 'package:car_provider_app/pages/user/vertify_password_page.dart';
import 'package:car_provider_app/utils/navigator.dart';
import 'package:car_provider_app/utils/utils.dart';
import 'package:car_provider_app/widgets/app_bar.dart';
import 'package:car_provider_app/widgets/button/show_image_button.dart';
import 'package:car_provider_app/widgets/dialog/dialogs.dart';
import 'package:car_provider_app/widgets/dialog/message_dialog.dart';
import 'package:car_provider_app/widgets/dialog/otp_dialog.dart';
import 'package:car_provider_app/widgets/show_fill_button.dart';
import 'package:car_provider_app/extensions/string_extensions.dart';
import 'package:car_provider_app/extensions/int_extensions.dart';
import 'package:car_provider_app/extensions/widget_extensions.dart';
import 'package:car_provider_app/widgets/txt_field.dart';
import 'package:flutter/material.dart';
import 'package:car_provider_app/models/user/user.dart';
import 'dart:convert';
import 'package:http/http.dart';
class ForgetPasswordPage extends StatelessWidget {
int otpType = 1;
String userName = "";
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: appBar(title: "Forget Password"),
appBar: appBar(title: "Change Password"),
body: Container(
width: double.infinity,
height: double.infinity,
padding: EdgeInsets.all(40),
child: Column(
children: [
"Retrieve Password".toText24(),
12.height,
"Verify New Password".toText24(),
mFlex(1),
TxtField(
hint: "Phone Number",
value: userName,
onChanged: (v) {
userName = v;
},
),
TxtField(
hint: "Email",
),
40.height,
ShowFillButton(
title: "Continue",
width: double.infinity,
onPressed: () {
showMDialog(
context,
child: MessageDialog(
title: "New Password sent used",
mFlex(2),
Row(
children: [
Expanded(
child: ShowImageButton(
onClick: () {
otpType = 1;
forgetPasswordOTP(context);
// showMDialog(context, child: OtpDialog(
// onClick: (String code) {
// pop(context);
// delay(300).then(
// (value) => showMDialog(
// context,
// child: MessageDialog(
// title: "Phone Number Verified",
// onClick: () {
// otpType=1;
// navigateWithName(context, AppRoutes.confirmNewPasswordPage);
// // ForgetPasswordOTP(context);
// },
// ),
// ),
// );
// },
// ));
},
title: 'With SMS',
icon: icons + "ic_sms.png",
),
);
},
),
20.width,
Expanded(
child: ShowImageButton(
onClick: () {
otpType = 1;
forgetPasswordOTP(context);
// showMDialog(context, child: OtpDialog(
// onClick: (String code) {
// pop(context);
// delay(300).then(
// (value) => showMDialog(
// context,
// child: MessageDialog(
// title: "Phone Number Verified",
// onClick: () {
// otpType=2;
// navigateWithName(context, AppRoutes.confirmNewPasswordPage);
// // ForgetPasswordOTP(context);
// },
// ),
// ),
// );
// },
// ));
},
title: 'With Whatsapp',
icon: icons + "ic_whatsapp.png",
),
),
],
),
mFlex(10),
],
),
),
);
}
Future<void> forgetPasswordOTP(BuildContext context) async {
Utils.showLoading(context);
Response response = await UserApiClent().ForgetPasswordOTPRequest(userName, otpType);
Utils.hideLoading(context);
PasswordOTPRequest otpRequest = PasswordOTPRequest.fromJson(jsonDecode(response.body));
if (otpRequest.messageStatus == 1) {
showMDialog(context, child: OtpDialog(
onClick: (String code) async {
pop(context);
Utils.showLoading(context);
Response res = await UserApiClent().ForgetPasswordOTPCompare(otpRequest.data!.userToken??"", code);
Utils.hideLoading(context);
PasswordOTPCompare otpCompare = PasswordOTPCompare.fromJson(jsonDecode(res.body));
if (otpCompare.messageStatus == 1) {
var userToken = otpCompare.data!.userToken;
print("token is ________");
print(userToken);
navigateWithName(context, AppRoutes.confirmNewPasswordPage,arguments: userToken);
} else {
Utils.showToast(otpCompare.message??"");
}
},
));
// showMDialog(context, child: OtpDialog(
// onClick: (String code) {
// pop(context);
// delay(300).then(
// (value) => showMDialog(
// context,
// child: MessageDialog(
// title: "Phone Number Verified",
// onClick: () {
// otpType=1;
// navigateWithName(context, AppRoutes.confirmNewPasswordPage);
// // ForgetPasswordOTP(context);
// },
// ),
// ),
// );
// },
// ));
// navigateWithName(context, AppRoutes.vertifyPassword);
} else {
Utils.showToast(otpRequest.message ?? "");
}
}
}

@ -56,6 +56,15 @@ class LoginWithPassword extends StatelessWidget {
password = v;
},
),
10.height,
Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
"Forget Password".toText12(color: Colors.blue).onPress(() {
navigateWithName(context, AppRoutes.forgetPassword);
}),
],
),
50.height,
ShowFillButton(
title: "Continue",

@ -21,21 +21,22 @@ class RegisterSelectionPage extends StatelessWidget {
children: [
"Welcome Message".toText24(),
mFlex(1),
ShowFillButton(
title: "Log In With Password",
width: double.infinity,
onPressed: () {
navigateWithName(context, AppRoutes.loginWithPassword);
},
),
20.height,
ShowFillButton(
title: "Log In",
// title: "Log In With Password",
width: double.infinity,
onPressed: () {
navigateWithName(context, AppRoutes.loginVerifyAccount);
navigateWithName(context, AppRoutes.loginWithPassword);
},
),
// 20.height,
// ShowFillButton(
// title: "Log In",
// width: double.infinity,
// onPressed: () {
// navigateWithName(context, AppRoutes.loginVerifyAccount);
// },
// ),
20.height,
ShowFillButton(
title: "Sign Up",

@ -0,0 +1,162 @@
import 'package:car_provider_app/api/user_api_client.dart';
import 'package:car_provider_app/classes/utils.dart';
import 'package:car_provider_app/config/constants.dart';
import 'package:car_provider_app/config/routes.dart';
import 'package:car_provider_app/models/user/forget_password_otp_compare.dart';
import 'package:car_provider_app/models/user/forget_password_otp_request.dart';
import 'package:car_provider_app/utils/navigator.dart';
import 'package:car_provider_app/utils/utils.dart';
import 'package:car_provider_app/widgets/app_bar.dart';
import 'package:car_provider_app/widgets/button/show_image_button.dart';
import 'package:car_provider_app/extensions/int_extensions.dart';
import 'package:car_provider_app/extensions/string_extensions.dart';
import 'package:car_provider_app/extensions/widget_extensions.dart';
import 'package:car_provider_app/widgets/dialog/dialogs.dart';
import 'package:car_provider_app/widgets/dialog/message_dialog.dart';
import 'package:car_provider_app/widgets/dialog/otp_dialog.dart';
import 'package:car_provider_app/widgets/txt_field.dart';
import 'package:flutter/material.dart';
class VerifyPasswordPage extends StatelessWidget {
int otpType = 1;
String phoneNum = "";
String userName = "";
String userToken = "";
String otp = "";
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: appBar(title: "Change Password"),
body: Container(
width: double.infinity,
height: double.infinity,
padding: EdgeInsets.all(40),
child: Column(
children: [
"Verify New Password".toText24(),
mFlex(1),
TxtField(
hint: "966500000000",
value: phoneNum,
onChanged: (v) {
phoneNum = v;
},
),
mFlex(2),
Row(
children: [
Expanded(
child: ShowImageButton(
onClick: () {
otpType = 1;
// sendPasswordOTP(context);
showMDialog(context, child: OtpDialog(
onClick: (String code) {
pop(context);
delay(300).then(
(value) => showMDialog(
context,
child: MessageDialog(
title: "Phone Number Verified",
onClick: () {
otpType=1;
navigateWithName(context, AppRoutes.confirmNewPasswordPage);
// ForgetPasswordOTP(context);
},
),
),
);
},
));
},
title: 'With SMS',
icon: icons + "ic_sms.png",
),
),
20.width,
Expanded(
child: ShowImageButton(
onClick: () {
otpType = 1;
// sendPasswordOTP(context);
showMDialog(context, child: OtpDialog(
onClick: (String code) {
pop(context);
delay(300).then(
(value) => showMDialog(
context,
child: MessageDialog(
title: "Phone Number Verified",
onClick: () {
otpType=2;
navigateWithName(context, AppRoutes.confirmNewPasswordPage);
// ForgetPasswordOTP(context);
},
),
),
);
},
));
},
title: 'With Whatsapp',
icon: icons + "ic_whatsapp.png",
),
),
],
),
mFlex(10),
],
),
),
);
}
// Future<void> sendPasswordOTP(BuildContext context) async {
// Utils.showLoading(context);
// PasswordOTPCompare otpCompare = await UserApiClent().ForgetPasswordOTPCompare(userToken, otp);
// Utils.hideLoading(context);
// if (otpCompare.messageStatus == 1) {
// // navigateWithName(context, AppRoutes.confirmNewPasswordPage);
// showMDialog(context, child: OtpDialog(
// onClick: (String code) async {
// pop(context);
// Utils.showLoading(context);
// // PasswordOTPCompare otpCompare = await UserApiClent().ForgetPasswordOTPCompare(userToken, otp);
// Utils.hideLoading(context);
// },
// ));
// } else {
// Utils.showToast(otpCompare.message ?? "");
// }
// }
// User otpRequest = User.fromJson(jsonDecode(res.body));
// SharedPrefManager.setUserToken(otpRequest.data!.accessToken ?? "");
// SharedPrefManager.setUserId(otpRequest.data!.userInfo!.userId ?? "");
// showMDialog(context, child: OtpDialog(
// onClick: (String code) {
// pop(context);
// delay(300).then(
// (value) => showMDialog(
// context,
// child: MessageDialog(
// title: "Phone Number Verified",
// onClick: () {
// otpType=1;
// navigateWithName(context, AppRoutes.confirmNewPasswordPage);
// // ForgetPasswordOTP(context);
// },
// ),
// ),
// );
// },
// ));
}
Loading…
Cancel
Save