verify email

fatima
Fatimah Alshammari 4 years ago
parent 3274875215
commit 184ac7859d

@ -1,4 +1,5 @@
import 'dart:async';
import 'package:car_customer_app/api/shared_prefrence.dart';
import 'package:car_customer_app/classes/app_state.dart';
import 'package:car_customer_app/models/user/change_email.dart';
import 'package:car_customer_app/models/user/change_mobile.dart';
@ -6,6 +7,7 @@ import 'package:car_customer_app/models/user/change_password.dart';
import 'package:car_customer_app/models/user/confirm_email.dart';
import 'package:car_customer_app/models/user/confirm_mobile.dart';
import 'package:car_customer_app/models/user/country.dart';
import 'package:car_customer_app/models/user/email_verify.dart';
import 'package:http/http.dart';
import 'package:car_customer_app/classes/consts.dart';
import 'package:car_customer_app/models/content_info_model.dart';
@ -13,6 +15,7 @@ import 'package:car_customer_app/models/member_model.dart';
import 'package:car_customer_app/models/surah_model.dart';
import 'package:car_customer_app/models/user/basic_otp.dart';
import 'package:car_customer_app/models/user/register_user.dart';
import 'package:car_customer_app/models/user/email_verify_otp.dart';
import 'api_client.dart';
@ -143,4 +146,27 @@ class UserApiClent {
String t = AppState().getUser.data!.accessToken ?? "";
return await ApiClient().postJsonForObject((json) => ConfirmEmail.fromJson(json), ApiConsts.ChangeEmail, postParams, token: t);
}
Future<VerifyEmail> EmailVerify(String email, String userID) async {
var postParams = {
// "email": email,
// "userID": userID,
"email": AppState().getUser.data!.userInfo!.email ?? "",
"userID": AppState().getUser.data!.userInfo!.userId ?? "",
};
String t = AppState().getUser.data!.accessToken ?? "";
return await ApiClient().postJsonForObject((json) => VerifyEmail.fromJson(json), ApiConsts.EmailVerify, postParams, token: t);
}
Future<VerifyEmailOTP> EmailVerifyOTPVerify(String userToken, String userOTP) async {
var postParams =
{"userToken": userToken,
"userOTP": userOTP};
String t = AppState().getUser.data!.accessToken ?? "";
return await ApiClient().postJsonForObject((json) => VerifyEmailOTP.fromJson(json), ApiConsts.EmailVerifyOTPVerify, postParams, token: t);
}
}

@ -23,6 +23,9 @@ class ApiConsts {
static String ChangeMobileNo = baseUrlServices + "api/Account/ChangeMobileNo";
static String ChangeEmailOTPRequest = baseUrlServices + "api/Account/ChangeEmailOTPRequest";
static String ChangeEmail = baseUrlServices + "api/Account/ChangeEmail";
static String EmailVerify = baseUrlServices + "api/Account/EmailVerify";
static String EmailVerifyOTPVerify = baseUrlServices + "api/Account/EmailVerifyOTPVerify";
}

@ -4,6 +4,7 @@ import 'package:car_customer_app/pages/user/change_email_page.dart';
import 'package:car_customer_app/pages/user/change_mobile_page.dart';
import 'package:car_customer_app/pages/user/change_password_page.dart';
import 'package:car_customer_app/pages/user/complete_profile_page.dart';
import 'package:car_customer_app/pages/user/edit_account_page.dart';
import 'package:car_customer_app/pages/user/forget_password_page.dart';
import 'package:car_customer_app/pages/user/login_method_selection_page.dart';
import 'package:car_customer_app/pages/user/login_verification_page.dart';
@ -33,6 +34,7 @@ class AppRoutes {
static final String forgetPasswordMethodSPage = "/forgetPasswordMethodPage";
static final String changeMobilePage = "/changeMobilePage";
static final String changeEmailPage = "/changeEmailPage";
static final String editAccoundPage = "/editAccoundPage";
static final String dashboard = "/dashboard";
@ -54,6 +56,7 @@ class AppRoutes {
forgetPasswordMethodSPage : (context) => ForgetPasswordMethodPage(ModalRoute.of(context)!.settings.arguments as String),
changeMobilePage: (context) => ChangeMobilePage(),
changeEmailPage : (context) => ChangeEmailPage(),
editAccoundPage : (context) => EditAccountPage(),
//Home page
dashboard: (context) => DashboardPage(),

@ -0,0 +1,52 @@
import 'dart:convert';
VerifyEmail verifyEmailFromJson(String str) => VerifyEmail.fromJson(json.decode(str));
String verifyEmailToJson(VerifyEmail data) => json.encode(data.toJson());
class VerifyEmail {
Null? totalItemsCount;
Data? data;
int? messageStatus;
String? message;
VerifyEmail(
{this.totalItemsCount, this.data, this.messageStatus, this.message});
VerifyEmail.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,26 @@
import 'dart:convert';
VerifyEmailOTP verifyEmailOTPFromJson(String str) => VerifyEmailOTP.fromJson(json.decode(str));
String verifyEmailOTPToJson(VerifyEmailOTP data) => json.encode(data.toJson());
class VerifyEmailOTP {
bool? success;
Null? errors;
VerifyEmailOTP({this.success, this.errors});
VerifyEmailOTP.fromJson(Map<String, dynamic> json) {
success = json['success'];
errors = json['errors'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['success'] = this.success;
data['errors'] = this.errors;
return data;
}
}

@ -107,7 +107,7 @@ class _DashboardPageState extends State<DashboardPage> {
ShowFillButton(
title: "EDIT",
onPressed: () {
navigateWithName(context, AppRoutes.editAccoundPage);
},
),
],
@ -125,27 +125,27 @@ class _DashboardPageState extends State<DashboardPage> {
leading: Icon(Icons.person),
title: "Account".toText12(),
),
ListTile(
leading: Icon(Icons.password),
title: "Change Password".toText12(),
onTap: () {
navigateWithName(context, AppRoutes.changePasswordPage);
},
),
ListTile(
leading: Icon(Icons.phone_android_sharp),
title: "Change Mobile".toText12(),
onTap: () {
navigateWithName(context, AppRoutes.changeMobilePage);
},
),
ListTile(
leading: Icon(Icons.email_outlined),
title: "Change Email".toText12(),
onTap: () {
navigateWithName(context, AppRoutes.changeEmailPage);
},
),
// ListTile(
// leading: Icon(Icons.password),
// title: "Change Password".toText12(),
// onTap: () {
// navigateWithName(context, AppRoutes.changePasswordPage);
// },
// ),
// ListTile(
// leading: Icon(Icons.phone_android_sharp),
// title: "Change Mobile".toText12(),
// onTap: () {
// navigateWithName(context, AppRoutes.changeMobilePage);
// },
// ),
// ListTile(
// leading: Icon(Icons.email_outlined),
// title: "Change Email".toText12(),
// onTap: () {
// navigateWithName(context, AppRoutes.changeEmailPage);
// },
// ),
ListTile(
leading: Icon(Icons.logout),
title: "Sign Out".toText12(),

@ -99,7 +99,7 @@ class _ChangeEmailPageState extends State<ChangeEmailPage> {
showMDialog(
context,
child: MessageDialog(
title: "Email Verified",
title: "Email Changed Successfully",
onClick: () {
Navigator.of(context).pushNamedAndRemoveUntil(AppRoutes.loginWithPassword, (Route<dynamic> route) => false);
},

@ -0,0 +1,149 @@
import 'dart:convert';
import 'package:car_customer_app/api/shared_prefrence.dart';
import 'package:car_customer_app/api/user_api_client.dart';
import 'package:car_customer_app/classes/utils.dart';
import 'package:car_customer_app/config/routes.dart';
import 'package:car_customer_app/extensions/string_extensions.dart';
import 'package:car_customer_app/models/user/email_verify.dart';
import 'package:car_customer_app/models/user/email_verify_otp.dart';
import 'package:car_customer_app/utils/navigator.dart';
import 'package:car_customer_app/utils/utils.dart';
import 'package:car_customer_app/widgets/app_bar.dart';
import 'package:car_customer_app/extensions/int_extensions.dart';
import 'package:car_customer_app/widgets/dialog/dialogs.dart';
import 'package:car_customer_app/widgets/dialog/message_dialog.dart';
import 'package:car_customer_app/widgets/dialog/otp_dialog.dart';
import 'package:flutter/material.dart';
class EditAccountPage extends StatefulWidget {
@override
State<EditAccountPage> createState() => _EditAccountPageState();
}
class _EditAccountPageState extends State<EditAccountPage> {
String userID = "";
String email = '';
bool isVerified = false;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: appBar(title: "Edit Account"),
body: Container(
width: double.infinity,
height: double.infinity,
padding: EdgeInsets.all(20),
child: Column(
children: [
ListTile(
leading: Icon(Icons.lock, color: Colors.blue,),
title: "Change Password".toText12(),
onTap: () {
navigateWithName(context, AppRoutes.changePasswordPage);
},
),
15.height,
Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
Icon(Icons.phone_android_sharp, color: Colors.blue,),
"Change Mobile".toText12(),
"Verify".toText12(),
RaisedButton(
onPressed: (){
navigateWithName(context, AppRoutes.changeMobilePage);
},
child: Text("Change",
style: TextStyle(fontSize: 14,
fontWeight: FontWeight.w600,),),color:Colors.blue,
textColor: Colors.white,
padding: EdgeInsets.symmetric(horizontal: 8, vertical: 8)
)
],
),
20.height,
Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
Icon(Icons.email, color: Colors.blue,),
"Change Email".toText12(),
InkWell(
child: "Verify".toText12(),
onTap:() {
verifyEmail(context);
},
),
RaisedButton(
onPressed: (){
navigateWithName(context, AppRoutes.changeEmailPage);
},
child: Text("Change",
style: TextStyle(fontSize: 14,
fontWeight: FontWeight.w600,),),color:Colors.blue,
textColor: Colors.white,
padding: EdgeInsets.symmetric(horizontal: 8, vertical: 8)
)
],
)
// ListTile(
// leading: Icon(Icons.phone_android_sharp, color: Colors.blue,),
// title: "Change Mobile".toText12(),
// onTap: () {
// navigateWithName(context, AppRoutes.changeMobilePage);
// },
// ),
// ListTile(
// leading: Icon(Icons.email_outlined, color: Colors.blue,),
// title: "Change Email".toText12(),
// onTap: () {
// navigateWithName(context, AppRoutes.changeEmailPage);
// },
// ),
],
),
),
);
}
Future<void> verifyEmail(BuildContext context) async {
Utils.showLoading(context);
VerifyEmail otpRequest = await UserApiClent().EmailVerify(email, userID);
Utils.hideLoading(context);
if (otpRequest.messageStatus == 1) {
showMDialog(context, child: OtpDialog(
onClick: (String code) async {
pop(context);
Utils.showLoading(context);
VerifyEmailOTP otpCompare = await UserApiClent().EmailVerifyOTPVerify(otpRequest.data!.userToken ?? "", code);
Utils.hideLoading(context);
if (otpCompare.success == true) {
showMDialog(
context,
child: MessageDialog(
title: "Email Verified",
onClick: () {
// !isVerified;
pop(context);
// Navigator.of(context).pushNamedAndRemoveUntil(AppRoutes.dashboard, (Route<dynamic> route) => false);
},
),
);
} else {
Utils.showToast(otpCompare.errors ?? "");
}
},
));
} else {
Utils.showToast(otpRequest.message ?? "");
}
}
}
Loading…
Cancel
Save