verify email

fatima
Fatimah Alshammari 4 years ago
parent 6631661852
commit c898ad5985

@ -9,6 +9,8 @@ import 'package:car_provider_app/models/user/role.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/models/user/verify_email.dart';
import 'package:car_provider_app/models/user/verify_email_otp.dart';
import 'package:http/http.dart';
import 'package:car_provider_app/classes/consts.dart';
import 'package:car_provider_app/models/content_info_model.dart';
@ -163,4 +165,25 @@ class UserApiClent {
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);
}
}

@ -25,6 +25,8 @@ 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";
//Profile
static String GetProviderDocument = baseUrlServices + "api/ServiceProviders/ServiceProviderDocument_Get";
static String ServiceProviderDocument_Update = baseUrlServices + "api/ServiceProviders/ServiceProviderDocument_Update";

@ -9,6 +9,7 @@ import 'package:car_provider_app/pages/user/change_mobile_page.dart';
import 'package:car_provider_app/pages/user/change_password_page.dart';
import 'package:car_provider_app/pages/user/complete_profile_page.dart';
import 'package:car_provider_app/pages/user/confirm_new_password_page.dart';
import 'package:car_provider_app/pages/user/edit_account_page.dart';
import 'package:car_provider_app/pages/user/forget_password_method_page.dart';
import 'package:car_provider_app/pages/user/forget_password_page.dart';
import 'package:car_provider_app/pages/user/login_method_selection_page.dart';
@ -45,6 +46,7 @@ class AppRoutes {
static final String forgetPasswordMethodPage = "/forgetPasswordMethodPage";
static final String changeMobilePage = "/changeMobilePage";
static final String changeEmailPage = "/changeEmailPage";
static final String editAccoundPage = "/editAccoundPage";
static final String dashboard = "/dashboard";
@ -76,6 +78,7 @@ class AppRoutes {
forgetPasswordMethodPage: (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,53 @@
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,27 @@
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;
}
}

@ -130,7 +130,9 @@ class _DashboardPageState extends State<DashboardPage> {
),
ShowFillButton(
title: "EDIT",
onPressed: () {},
onPressed: () {
navigateWithName(context, AppRoutes.editAccoundPage);
},
),
],
),
@ -157,27 +159,27 @@ class _DashboardPageState extends State<DashboardPage> {
navigateWithName(context, AppRoutes.dealershipSetting);
},
),
ListTile(
leading: SvgPicture.asset("assets/images/ic_lock.svg"),
title: "Change Password".toText12(),
onTap: (){
navigateWithName(context, AppRoutes.changePassword);
},
),
ListTile(
leading: SvgPicture.asset("assets/images/ic_mobile.svg"),
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);
},
),
// ListTile(
// leading: SvgPicture.asset("assets/images/ic_lock.svg"),
// title: "Change Password".toText12(),
// onTap: (){
// navigateWithName(context, AppRoutes.changePassword);
// },
// ),
// ListTile(
// leading: SvgPicture.asset("assets/images/ic_mobile.svg"),
// 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);
// },
// ),
ListTile(
leading: SvgPicture.asset("assets/images/ic_logout.svg"),
title: "Sign Out".toText12(),

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

@ -0,0 +1,146 @@
import 'dart:convert';
import 'package:car_provider_app/api/client/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/extensions/int_extensions.dart';
import 'package:car_provider_app/extensions/string_extensions.dart';
import 'package:car_provider_app/models/user/verify_email.dart';
import 'package:car_provider_app/models/user/verify_email_otp.dart';
import 'package:car_provider_app/utils/navigator.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/dialog/otp_dialog.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
class EditAccountPage extends StatefulWidget {
@override
State<EditAccountPage> createState() => _EditAccountPageState();
}
class _EditAccountPageState extends State<EditAccountPage> {
String userID = "";
String email = '';
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: appBar(title: "Edit Account"),
body: Container(
width: double.infinity,
height: double.infinity,
padding: EdgeInsets.all(40),
child: Column(
children: [
20.height,
ListTile(
leading: SvgPicture.asset("assets/images/ic_lock.svg"),
title: "Change Password".toText12(),
onTap: (){
navigateWithName(context, AppRoutes.changePassword);
},
),
15.height,
Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
SvgPicture.asset("assets/images/ic_mobile.svg"),
"Change Mobile".toText12(),
"Verified".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: SvgPicture.asset("assets/images/ic_mobile.svg"),
// 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 is Verified",
onClick: () {
Navigator.of(context).pushNamedAndRemoveUntil(AppRoutes.dashboard, (Route<dynamic> route) => false);
},
),
);
} else {
Utils.showToast(otpCompare.errors ?? "");
}
},
));
} else {
Utils.showToast(otpRequest.message ?? "");
}
}
}
Loading…
Cancel
Save