Commit c2e95add by art

update

parents a73af0d6 4f2a7a1b
...@@ -3,10 +3,7 @@ class LoginModel { ...@@ -3,10 +3,7 @@ class LoginModel {
int expires; int expires;
User user; User user;
LoginModel({this.token, LoginModel({this.token, this.expires, this.user});
this.expires,
this.user
});
LoginModel.fromJson(Map<String, dynamic> json) { LoginModel.fromJson(Map<String, dynamic> json) {
token = json['token']; token = json['token'];
...@@ -27,17 +24,17 @@ class LoginModel { ...@@ -27,17 +24,17 @@ class LoginModel {
class User { class User {
int id; int id;
String roleId; Null roleId;
String name; String name;
String email; String email;
String avatar; String avatar;
String emailVerifiedAt; Null emailVerifiedAt;
int status; int status;
int fvRoleId; int fvRoleId;
String settings; Null settings;
String createdAt; Null createdAt;
String updatedAt; Null updatedAt;
String customerInfo; CustomerInfo customerInfo;
User( User(
{this.id, {this.id,
...@@ -65,23 +62,112 @@ class User { ...@@ -65,23 +62,112 @@ class User {
settings = json['settings']; settings = json['settings'];
createdAt = json['created_at']; createdAt = json['created_at'];
updatedAt = json['updated_at']; updatedAt = json['updated_at'];
customerInfo = json['customer_info']; customerInfo = json['customer_info'] != null
? new CustomerInfo.fromJson(json['customer_info'])
: null;
} }
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>(); final Map<String, dynamic> data = new Map<String, dynamic>();
data['id']= this.id; data['id'] = this.id;
data['role_id']==null?[]: data['role_id'] = this.roleId; data['role_id'] = this.roleId;
data['name'] = this.name; data['name'] = this.name;
data['email'] = this.email; data['email'] = this.email;
data['avatar'] = this.avatar; data['avatar'] = this.avatar;
data['email_verified_at']==null?[]: data['email_verified_at'] = this.emailVerifiedAt; data['email_verified_at'] = this.emailVerifiedAt;
data['status'] = this.status; data['status'] = this.status;
data['fv_role_id'] = this.fvRoleId; data['fv_role_id'] = this.fvRoleId;
data['settings']==null?[]: data['settings'] = this.settings; data['settings'] = this.settings;
data['created_at']==null?[]: data['created_at'] = this.createdAt; data['created_at'] = this.createdAt;
data['updated_at']==null?[]: data['updated_at'] = this.updatedAt; data['updated_at'] = this.updatedAt;
data['customer_info']==null?[]: data['customer_info'] = this.customerInfo; if (this.customerInfo != null) {
data['customer_info'] = this.customerInfo.toJson();
}
return data;
}
}
class CustomerInfo {
int id;
String prefix;
String name;
String lastname;
String displayName;
String image;
String email;
String age;
String sex;
String phone;
String address;
String socialRegister;
String socialType;
String status;
String approved;
String createdAt;
String updatedAt;
int userId;
CustomerInfo(
{this.id,
this.prefix,
this.name,
this.lastname,
this.displayName,
this.image,
this.email,
this.age,
this.sex,
this.phone,
this.address,
this.socialRegister,
this.socialType,
this.status,
this.approved,
this.createdAt,
this.updatedAt,
this.userId});
CustomerInfo.fromJson(Map<String, dynamic> json) {
id = json['id'];
prefix = json['prefix'];
name = json['name'];
lastname = json['lastname'];
displayName = json['display_name'];
image = json['image'];
email = json['email'];
age = json['age'];
sex = json['sex'];
phone = json['phone'];
address = json['address'];
socialRegister = json['social_register'];
socialType = json['social_type'];
status = json['status'];
approved = json['approved'];
createdAt = json['created_at'];
updatedAt = json['updated_at'];
userId = json['user_id'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['id'] = this.id;
data['prefix'] = this.prefix;
data['name'] = this.name;
data['lastname'] = this.lastname;
data['display_name'] = this.displayName;
data['image'] = this.image;
data['email'] = this.email;
data['age'] = this.age;
data['sex'] = this.sex;
data['phone'] = this.phone;
data['address'] = this.address;
data['social_register'] = this.socialRegister;
data['social_type'] = this.socialType;
data['status'] = this.status;
data['approved'] = this.approved;
data['created_at'] = this.createdAt;
data['updated_at'] = this.updatedAt;
data['user_id'] = this.userId;
return data; return data;
} }
} }
class RegisterModel {
String message;
RegisterModel({this.message});
RegisterModel.fromJson(Map<String, dynamic> json) {
message = json['message'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['message'] = this.message;
return data;
}
}
...@@ -2,6 +2,7 @@ import 'dart:convert'; ...@@ -2,6 +2,7 @@ import 'dart:convert';
import 'package:feelverapp/model/Login/login_model.dart'; import 'package:feelverapp/model/Login/login_model.dart';
import 'package:feelverapp/model/base/base.dart'; import 'package:feelverapp/model/base/base.dart';
import 'package:feelverapp/model/register/register_model.dart';
import 'package:http/http.dart' as http; import 'package:http/http.dart' as http;
...@@ -40,6 +41,27 @@ class Api<T>{ ...@@ -40,6 +41,27 @@ class Api<T>{
} }
Future<Response<T>> register(Object body) async {
var _model;
var _fail;
var result;
// (body as Map)['lang'] = allTranslations.currentLanguage;
await _httpConnection(
"${this._baseApi}/register", this._headerApi, body)
.then((response) {
print("ผลลัพ เท่ากับบบบ "+"${response.body}");
if (response.statusCode == 200 ) {
_model = RegisterModel.fromJson(json.decode(response.body));
} else {
_fail = FailModel.fromJson(json.decode(response.body));
}
result = new Response<T>(_model, _fail);
});
return result;
}
///api environment ///api environment
Future<http.Response> _httpConnection( Future<http.Response> _httpConnection(
......
import 'package:feelverapp/ui/home/home.dart'; import 'package:feelverapp/ui/home/home.dart';
import 'package:feelverapp/ui/login/login_presenter.dart'; import 'package:feelverapp/ui/login/login_presenter.dart';
//import 'package:feelverapp/ui/login/login_presenter.dart';
import 'package:feelverapp/ui/register/register_email.dart'; import 'package:feelverapp/ui/register/register_email.dart';
//import 'package:feelverapp/ui/login/login_presenter.dart';
import 'package:feelverapp/util/SizeConfig.dart'; import 'package:feelverapp/util/SizeConfig.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
...@@ -421,13 +422,13 @@ class _LoginPageState extends State<LoginPage> with TickerProviderStateMixin { ...@@ -421,13 +422,13 @@ class _LoginPageState extends State<LoginPage> with TickerProviderStateMixin {
size: 20, size: 20,
), ),
), ),
Text(
'Login with Facebook', // Text(
style: TextStyle( // 'Login with Facebook',
fontSize: SizeConfig.getFontSize(12), // style: TextStyle(fontSize: SizeConfig.getFontSize(12)),
), // textAlign: TextAlign.center,
textAlign: TextAlign.center, // ),
),
], ],
), ),
), ),
...@@ -476,9 +477,11 @@ class _LoginPageState extends State<LoginPage> with TickerProviderStateMixin { ...@@ -476,9 +477,11 @@ class _LoginPageState extends State<LoginPage> with TickerProviderStateMixin {
alignment: Alignment.centerRight, alignment: Alignment.centerRight,
child: GestureDetector( child: GestureDetector(
onTap: () { onTap: () {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute(builder: (context) => RegisterPage()), MaterialPageRoute(builder: (context) => Registerpage()),
); );
}, },
child: Text( child: Text(
......
import 'package:feelverapp/ui/home/home.dart'; import 'package:feelverapp/ui/home/home.dart';
import 'package:feelverapp/ui/login/login.dart'; import 'package:feelverapp/ui/login/login_presenter.dart';
//import 'package:feelverapp/ui/login/login_presenter.dart';
import 'package:feelverapp/ui/register/register_email.dart';
import 'package:feelverapp/ui/register/register_presenter.dart';
import 'package:feelverapp/util/SizeConfig.dart'; import 'package:feelverapp/util/SizeConfig.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
class RegisterPage extends StatefulWidget { class Registerpage extends StatefulWidget {
@override @override
_RegisterPageState createState() => _RegisterPageState(); _RegisterpageState createState() => _RegisterpageState();
} }
class _RegisterPageState extends State<RegisterPage> with TickerProviderStateMixin { class _RegisterpageState extends State<Registerpage> with TickerProviderStateMixin {
@override
TabController _tabController; TabController _tabController;
RegisterPresenter presenter;
@override @override
void initState() { void initState() {
// TODO: implement initState // TODO: implement initState
super.initState(); super.initState();
presenter = RegisterPresenter(this);
_tabController = TabController(length: 2, vsync: this); _tabController = TabController(length: 2, vsync: this);
_tabController.addListener(_handleTabSelection);
// registerBloc = RegisterBloc(this); // registerBloc = RegisterBloc(this);
// loginBloc = LoginBloc(this); // loginBloc = LoginBloc(this);
} }
void _handleTabSelection() {
setState(() {});
}
@override
void dispose() {
super.dispose();
_tabController.dispose();
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
SizeConfig(context);
return Scaffold( return Scaffold(
body: _setupView(), body: _setupView(),
); );
} }
_setupView() { _setupView() {
return SingleChildScrollView( return Container(
child: Column( child: Column(
children: <Widget>[ children: <Widget>[
Container( Container(
...@@ -72,14 +90,37 @@ class _RegisterPageState extends State<RegisterPage> with TickerProviderStateMix ...@@ -72,14 +90,37 @@ class _RegisterPageState extends State<RegisterPage> with TickerProviderStateMix
], ],
), ),
SizedBox(height: SizeConfig.getWidth(30)), SizedBox(height: SizeConfig.getWidth(30)),
Expanded(
child: new Container(
// height: double.maxFinite,
child: new TabBarView(
controller: _tabController,
children: <Widget>[
_formLogin(), _formLogin(),
_phoneregis()
// Container(
// color: Colors.red,
// ),
// Container(
// color: Colors.green,
// ),
],
),
),
),
// _phoneLogin(),
], ],
), ),
); );
} }
Widget _formLogin() { Widget _formLogin() {
return Container( print("index = " +"${_tabController.index}");
return SingleChildScrollView(
child: Form( child: Form(
child: Column( child: Column(
children: <Widget>[ children: <Widget>[
...@@ -107,7 +148,8 @@ class _RegisterPageState extends State<RegisterPage> with TickerProviderStateMix ...@@ -107,7 +148,8 @@ class _RegisterPageState extends State<RegisterPage> with TickerProviderStateMix
), ),
), ),
child: TextFormField( child: TextFormField(
// controller: loginBloc.emailCtrl,
controller: presenter.emailCtrl,
// validator: loginBloc.validateField, // validator: loginBloc.validateField,
decoration: InputDecoration( decoration: InputDecoration(
contentPadding: EdgeInsets.symmetric( contentPadding: EdgeInsets.symmetric(
...@@ -146,7 +188,7 @@ class _RegisterPageState extends State<RegisterPage> with TickerProviderStateMix ...@@ -146,7 +188,7 @@ class _RegisterPageState extends State<RegisterPage> with TickerProviderStateMix
BorderRadius.circular(SizeConfig.getPadding(50.0)), BorderRadius.circular(SizeConfig.getPadding(50.0)),
), ),
child: TextFormField( child: TextFormField(
// controller: loginBloc.passCtrl, controller: presenter.passCtrl,
// validator: loginBloc.validateField, // validator: loginBloc.validateField,
decoration: InputDecoration( decoration: InputDecoration(
contentPadding: EdgeInsets.symmetric( contentPadding: EdgeInsets.symmetric(
...@@ -176,16 +218,14 @@ class _RegisterPageState extends State<RegisterPage> with TickerProviderStateMix ...@@ -176,16 +218,14 @@ class _RegisterPageState extends State<RegisterPage> with TickerProviderStateMix
Padding( Padding(
padding: EdgeInsets.symmetric( padding: EdgeInsets.symmetric(
vertical: SizeConfig.getPadding(8.0), vertical: SizeConfig.getPadding(8.0),
horizontal: SizeConfig.getPadding(24), horizontal: SizeConfig.getPadding(24)),
),
child: Card( child: Card(
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular( borderRadius:
SizeConfig.getPadding(50.0), BorderRadius.circular(SizeConfig.getPadding(50.0)),
),
), ),
child: TextFormField( child: TextFormField(
// controller: loginBloc.emailCtrl, controller: presenter.firstnameCtrl,
// validator: loginBloc.validateField, // validator: loginBloc.validateField,
decoration: InputDecoration( decoration: InputDecoration(
contentPadding: EdgeInsets.symmetric( contentPadding: EdgeInsets.symmetric(
...@@ -193,15 +233,14 @@ class _RegisterPageState extends State<RegisterPage> with TickerProviderStateMix ...@@ -193,15 +233,14 @@ class _RegisterPageState extends State<RegisterPage> with TickerProviderStateMix
horizontal: SizeConfig.getPadding(16), horizontal: SizeConfig.getPadding(16),
), ),
// hintText: // hintText:
// allTranslations.text(key2: 'email', key: 'login') + // allTranslations.text(key2: 'password', key: 'login'),
// ' / ' +
// allTranslations.text(
// key2: 'tel_number', key: 'register'),
border: OutlineInputBorder(borderSide: BorderSide.none), border: OutlineInputBorder(borderSide: BorderSide.none),
), ),
),
), ),
), ),
), Container( Container(
alignment: Alignment.topLeft, alignment: Alignment.topLeft,
padding: EdgeInsets.only(left: SizeConfig.getPadding(30)), padding: EdgeInsets.only(left: SizeConfig.getPadding(30)),
child: Text( child: Text(
...@@ -216,16 +255,14 @@ class _RegisterPageState extends State<RegisterPage> with TickerProviderStateMix ...@@ -216,16 +255,14 @@ class _RegisterPageState extends State<RegisterPage> with TickerProviderStateMix
Padding( Padding(
padding: EdgeInsets.symmetric( padding: EdgeInsets.symmetric(
vertical: SizeConfig.getPadding(8.0), vertical: SizeConfig.getPadding(8.0),
horizontal: SizeConfig.getPadding(24), horizontal: SizeConfig.getPadding(24)),
),
child: Card( child: Card(
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular( borderRadius:
SizeConfig.getPadding(50.0), BorderRadius.circular(SizeConfig.getPadding(50.0)),
),
), ),
child: TextFormField( child: TextFormField(
// controller: loginBloc.emailCtrl, controller: presenter.lastnameCtrl,
// validator: loginBloc.validateField, // validator: loginBloc.validateField,
decoration: InputDecoration( decoration: InputDecoration(
contentPadding: EdgeInsets.symmetric( contentPadding: EdgeInsets.symmetric(
...@@ -233,199 +270,159 @@ class _RegisterPageState extends State<RegisterPage> with TickerProviderStateMix ...@@ -233,199 +270,159 @@ class _RegisterPageState extends State<RegisterPage> with TickerProviderStateMix
horizontal: SizeConfig.getPadding(16), horizontal: SizeConfig.getPadding(16),
), ),
// hintText: // hintText:
// allTranslations.text(key2: 'email', key: 'login') + // allTranslations.text(key2: 'password', key: 'login'),
// ' / ' +
// allTranslations.text(
// key2: 'tel_number', key: 'register'),
border: OutlineInputBorder(borderSide: BorderSide.none), border: OutlineInputBorder(borderSide: BorderSide.none),
), ),
), ),
), ),
), ),
SizedBox( SizedBox(
height: SizeConfig.getWidth(24), height: SizeConfig.getWidth(24),
), ),
_submitLoginButton(), _submitLoginButton(),
_policyText(),
SizedBox(
height: SizeConfig.getWidth(20),
),
_facebookLoginButton(),
], ],
), ),
), ),
); );
} }
_submitLoginButton() { Widget _phoneregis() {
return Padding( print("index = " +"${_tabController.index}");
padding: EdgeInsets.symmetric( return SingleChildScrollView(
vertical: SizeConfig.getPadding(10.0), child: Form(
horizontal: SizeConfig.getPadding(32)), child: Column(
child: Container( children: <Widget>[
height: SizeConfig.getWidth(55), Container(
child: CupertinoButton( alignment: Alignment.topLeft,
color: Color.fromRGBO(106, 179, 170, 1), padding: EdgeInsets.only(left: SizeConfig.getPadding(30)),
padding: EdgeInsets.all(0),
borderRadius: BorderRadius.all(Radius.circular(50)),
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => LoginPage()),
);
// if (loginBloc.formKey.currentState.validate()) {
// loginBloc.getLogin();
// }
},
child: Center(
child: Text( child: Text(
'สมัครสมาชิก', 'เบอร์โทร',
style: TextStyle(color: Colors.white), style: TextStyle(
), color: Colors.black,
), fontSize: SizeConfig.getFontSize(20),
), fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
), ),
);
}
Widget _facebookLoginButton() {
return Padding(
padding: EdgeInsets.symmetric(
vertical: SizeConfig.getPadding(16.0),
horizontal: SizeConfig.getPadding(32)),
child: Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(SizeConfig.getPadding(50)),
color: Color(0xff3b5998),
), ),
height: SizeConfig.getWidth(55),
child: CupertinoButton(
color: Color(0xff3b5998),
padding: EdgeInsets.all(0),
// onPressed: loginBloc.getFacebookLogin,
child: Center(
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Padding( Padding(
padding: EdgeInsets.symmetric( padding: EdgeInsets.symmetric(
horizontal: SizeConfig.getPadding(8.0)), vertical: SizeConfig.getPadding(8.0),
child: ImageIcon( horizontal: SizeConfig.getPadding(24),
AssetImage('assets/images/facebook-icon.png'),
size: 20,
),
),
Text(
'Login with Facebook',
style: TextStyle(fontSize: SizeConfig.getFontSize(12)),
textAlign: TextAlign.center,
), ),
], child: Card(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(
SizeConfig.getPadding(50.0),
), ),
), ),
child: TextFormField(
controller: presenter.phonenumberCtrl,
// validator: loginBloc.validateField,
decoration: InputDecoration(
contentPadding: EdgeInsets.symmetric(
vertical: SizeConfig.getPadding(20),
horizontal: SizeConfig.getPadding(16),
), ),
// hintText:
// allTranslations.text(key2: 'email', key: 'login') +
// ' / ' +
// allTranslations.text(
// key2: 'tel_number', key: 'register'),
border: OutlineInputBorder(borderSide: BorderSide.none),
), ),
);
}
Widget _policyText() {
return Column(
children: <Widget>[
Stack(
children: <Widget>[
Container(
padding: EdgeInsets.only(
left: SizeConfig.getPadding(30),
right: SizeConfig.getPadding(30),
top: SizeConfig.getPadding(30)),
child: Center(
child: Text(
'คุณยอมรับ ข้อกำหนดการใช้งาน และ นโยบายความเป็นส่วนตัว ของอโกด้าเมื่อดำเนินการต่อ',
style: TextStyle(fontSize: SizeConfig.getFontSize(12)),
textAlign: TextAlign.center,
), ),
), ),
), ),
Container( Container(
margin: EdgeInsets.only( alignment: Alignment.topLeft,
right: SizeConfig.getPadding(34), padding: EdgeInsets.only(left: SizeConfig.getPadding(30)),
top: SizeConfig.getPadding(47)),
alignment: Alignment.centerRight,
child: GestureDetector(
onTap: () {
// Navigator.push(
// context,
// MaterialPageRoute(builder: (context) => RegisterPage()),
// );
},
child: Text( child: Text(
'สมัครสมาชิก', 'รหัสผ่าน',
style: TextStyle( style: TextStyle(
color: Colors.orange, color: Colors.black,
fontSize: SizeConfig.getFontSize(12), fontSize: SizeConfig.getFontSize(20),
fontFamily: "SF_Pro_Text", fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w600, fontWeight: FontWeight.w500),
decoration: TextDecoration.underline,
),
textAlign: TextAlign.right,
),
),
)
],
),
Container(
padding: EdgeInsets.all(SizeConfig.getPadding(24)),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Expanded(
flex: 2,
child: Container(
decoration: BoxDecoration(
border: Border(
bottom: BorderSide(width: 1, color: Color(0xFFE6E6E6)),
),
), ),
), ),
Padding(
padding: EdgeInsets.symmetric(
vertical: SizeConfig.getPadding(8.0),
horizontal: SizeConfig.getPadding(24)),
child: Card(
shape: RoundedRectangleBorder(
borderRadius:
BorderRadius.circular(SizeConfig.getPadding(50.0)),
), ),
Expanded( child: TextFormField(
flex: 1, controller: presenter.passCtrl,
child: Text( // validator: loginBloc.validateField,
'หรือ', decoration: InputDecoration(
style: TextStyle(fontSize: SizeConfig.getFontSize(12)), contentPadding: EdgeInsets.symmetric(
textAlign: TextAlign.center, vertical: SizeConfig.getPadding(20),
horizontal: SizeConfig.getPadding(16),
), ),
// hintText:
// allTranslations.text(key2: 'password', key: 'login'),
border: OutlineInputBorder(borderSide: BorderSide.none),
), ),
Expanded( obscureText: true,
flex: 2,
child: Container(
decoration: BoxDecoration(
border: Border(
bottom: BorderSide(width: 1, color: Color(0xFFE6E6E6)),
), ),
), ),
), ),
SizedBox(
height: SizeConfig.getWidth(24),
), ),
_submitLoginButton(),
], ],
), ),
), ),
Stack( );
children: <Widget>[ }
Container(
padding: EdgeInsets.only( _submitLoginButton() {
left: SizeConfig.getPadding(60), return Padding(
right: SizeConfig.getPadding(60)), padding: EdgeInsets.symmetric(
vertical: SizeConfig.getPadding(20.0),
horizontal: SizeConfig.getPadding(32)),
child: Container(
height: SizeConfig.getWidth(55),
child: CupertinoButton(
color: Color.fromRGBO(106, 179, 170, 1),
padding: EdgeInsets.all(0),
borderRadius: BorderRadius.all(Radius.circular(50)),
onPressed: () {
if (_tabController.index==0){
presenter.letCheckData();}
else{
presenter.letCheckData_phone();
}
// Navigator.push(
// context,
// MaterialPageRoute(builder: (context) => HomePage()),
// );
// if (loginBloc.formKey.currentState.validate()) {
// loginBloc.getLogin();
// }
},
child: Center( child: Center(
child: Text( child: Text(
'สะดวกสุดๆ แค่ใช้ Facebook เข้าสู่ระบบ ก็ไม่ต้องจำรหัสผ่านอีกต่อไป คลิกปุ่มด้านล่างได้เลย', 'สมัครสมาชิก',
style: TextStyle(fontSize: SizeConfig.getFontSize(12)), style: TextStyle(color: Colors.white),
textAlign: TextAlign.center,
), ),
), ),
), ),
],
), ),
],
); );
} }
} }
import 'dart:async';
import 'dart:developer';
import 'package:feelverapp/model/Login/login_model.dart';
import 'package:feelverapp/model/register/register_model.dart';
import 'package:feelverapp/service/Loading.dart';
import 'package:feelverapp/service/api.dart';
import 'package:feelverapp/service/base_presenter.dart';
import 'package:feelverapp/ui/home/home.dart';
import 'package:feelverapp/ui/login/login.dart';
import 'package:feelverapp/ui/register/register_email.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:rflutter_alert/rflutter_alert.dart';
class RegisterPresenter extends BasePresenter<Registerpage> {
Api _api;
Timer _timer;
final formKey = GlobalKey<FormState>();
TextEditingController emailCtrl = TextEditingController();
TextEditingController passCtrl = TextEditingController();
TextEditingController firstnameCtrl = TextEditingController();
TextEditingController lastnameCtrl = TextEditingController();
TextEditingController phonenumberCtrl = TextEditingController();
RegisterPresenter(State<Registerpage> state) : super(state);
/////email Login/////////
letCheckData() async {
try {
if (emailCtrl.text.isEmpty ) throw ('กรุณากรอก\nอีเมล์');
else if (passCtrl.text.isEmpty ) throw('กรุณากรอก\nรหัสผ่าน');
else if(firstnameCtrl.text.isEmpty) throw('กรุณากรอกชื่อ');
else if(lastnameCtrl.text.isEmpty) throw('กรุณากรอกนามสกุล');
Pattern pattern =
r"^[a-zA-Z0-9.a-zA-Z0-9.!#$%&'*+-/=?^_`{|}~]+@[a-zA-Z0-9]+\.[a-zA-Z]+";
RegExp regex = new RegExp(pattern);
if (!regex.hasMatch(emailCtrl.text))
throw ('รูปแบบอีเมล์\nไม่ถูกต้อง');
Pattern pattern2 =
r'^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9]).{8,}$';
RegExp regex2 = new RegExp(pattern2);
if (!regex2.hasMatch(passCtrl.text))
throw ('รหัสผ่านต้องมีความยาวอย่าง น้อย 8 ตัวอักษร และต้องประกอบด้วยอักขระ ดังต่อไปนี้\n- ตัวอักษรภาษาอังกฤษ ตัวพิมพ์เล็ก (a-z) \n- ตัวอักษรภาษาอังกฤษ ตัวพิมพ์ใหญ่ (A-Z) \n- ตัวเลข (0-9)');
else {
await letregis();
print("completeee");
}
} catch (e) {
Alert(
style: AlertStyle(
animationType: AnimationType.fromTop,
isCloseButton: false,
),
context: state.context,
title: '$e',
content: Icon(Icons.warning,color: Colors.orange,size: 80,),
buttons: [
DialogButton(
color: Color.fromRGBO(106, 179, 170, 1),
onPressed: () => Navigator.pop(state.context),
child: Text(
"ตกลง",
style: TextStyle(color: Colors.white, fontSize: 20),
),
)
]).show();
}
}
letregis() async {
LoadingView(state.context).show();
_api = Api<RegisterModel>();
var res = await _api.register({
"access_type":"mobile",
"name":firstnameCtrl.text,
"last_name":lastnameCtrl.text,
"email": emailCtrl.text,
'password':passCtrl.text
});
LoadingView(state.context).hide();
if (res.fail == null) {
Alert(
style: AlertStyle(
animationType: AnimationType.fromTop,
isCloseButton: false,
),
context: state.context,
title: "สมัครสมาชิกสำเร็จ",
content: Icon(Icons.check_circle,color: Color.fromRGBO(106, 179, 170, 1),size: 80,),
buttons: [
DialogButton(
color: Color.fromRGBO(106, 179, 170, 1),
onPressed: () =>
Navigator.pushReplacement(state.context, CupertinoPageRoute(builder: (_) => LoginPage())),
child: Text(
"ตกลง",
style: TextStyle(color: Colors.white, fontSize: 20),
),
)
]).show();
RegisterModel model = res.success;
// print("Username ="+"${model.user}");
print("Regist message ="+"${model.message}");
} else {
Alert(
style: AlertStyle(
animationType: AnimationType.fromTop,
isCloseButton: false,
),
context: state.context,
title: "อีเมล์\nมีการลงทะเบียนแล้ว",
content: Icon(Icons.warning,color: Colors.orange,size: 80,),
buttons: [
DialogButton(
color: Color.fromRGBO(106, 179, 170, 1),
onPressed: () => Navigator.pop(state.context),
child: Text(
"ลองอีกครั้ง",
style: TextStyle(color: Colors.white, fontSize: 20),
),
)
]).show();
}
}
///////phone log in////////////////
letregis_phone() async {
LoadingView(state.context).show();
_api = Api<RegisterModel>();
var res = await _api.register({
"access_type":"mobile",
"phone_number": phonenumberCtrl.text,
'password':passCtrl.text
});
LoadingView(state.context).hide();
if (res.fail == null) {
Alert(
style: AlertStyle(
animationType: AnimationType.fromTop,
isCloseButton: false,
),
context: state.context,
title: "สมัครสมาชิกสำเร็จ",
content: Icon(Icons.check_circle,color: Color.fromRGBO(106, 179, 170, 1),size: 80,),
buttons: [
DialogButton(
color: Color.fromRGBO(106, 179, 170, 1),
onPressed: () =>
Navigator.pushReplacement(state.context, CupertinoPageRoute(builder: (_) => LoginPage())),
child: Text(
"ตกลง",
style: TextStyle(color: Colors.white, fontSize: 20),
),
)
]).show();
RegisterModel model = res.success;
// print("Username ="+"${model.user}");
print("Regist message ="+"${model.message}");
} else {
Alert(
style: AlertStyle(
animationType: AnimationType.fromTop,
isCloseButton: false,
),
context: state.context,
title: "เบอร์โทรศัพท์ของท่าน\nมีการลงทะเบียนแล้ว",
content: Icon(Icons.warning,color: Colors.orange,size: 80,),
buttons: [
DialogButton(
color: Color.fromRGBO(106, 179, 170, 1),
onPressed: () => Navigator.pop(state.context),
child: Text(
"ลองอีกครั้ง",
style: TextStyle(color: Colors.white, fontSize: 20),
),
)
]).show();
}
}
letCheckData_phone() async {
// if(!verifyPhoneState){
// throw(allTranslations.text(key: 'please_verify_phone'));
// }
try {
if (phonenumberCtrl.text.isEmpty ) throw ('กรุณากรอก\nเบอร์โทรศัพท์มือถือ');
else if (passCtrl.text.isEmpty ) throw('กรุณากรอก\nรหัสผ่าน');
Pattern pattern =
r'(^(?:[+0]9)?[0-9]{10,12}$)';
RegExp regex = new RegExp(pattern);
if (!regex.hasMatch(phonenumberCtrl.text))
throw ('รูปแบบเบอร์โทรศัพท์\nไม่ถูกต้อง');
Pattern pattern2 =
r'^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9]).{8,}$';
RegExp regex2 = new RegExp(pattern2);
if (!regex2.hasMatch(passCtrl.text))
throw ('รหัสผ่านต้องมีความยาวอย่าง น้อย 8 ตัวอักษร และต้องประกอบด้วยอักขระ ดังต่อไปนี้\n- ตัวอักษรภาษาอังกฤษ ตัวพิมพ์เล็ก (a-z) \n- ตัวอักษรภาษาอังกฤษ ตัวพิมพ์ใหญ่ (A-Z) \n- ตัวเลข (0-9)');
else {
await letregis_phone();
print("complete");
}
} catch (e) {
Alert(
style: AlertStyle(
animationType: AnimationType.fromTop,
isCloseButton: false,
),
context: state.context,
title: '$e',
content: Icon(Icons.warning,color: Colors.orange,size: 80,),
buttons: [
DialogButton(
color: Color.fromRGBO(106, 179, 170, 1),
onPressed: () => Navigator.pop(state.context),
child: Text(
"ตกลง",
style: TextStyle(color: Colors.white, fontSize: 20),
),
)
]).show();
}
}
// facebookLogin() async {
// try {
// await _facebookLogin.logIn(['email']).then((result) async {
// var fbData = await Api().getFacebookInfo(result.accessToken.token);
// print(fbData);
// await _letSocialSignIn(result.accessToken.userId, 'facebook')
// .then((value) {
// if (value) {
// Navigator.popUntil(state.context, (route) => route.isFirst);
// Navigator.pushReplacement(state.context, CupertinoPageRoute(builder: (_) =>
// NavigatorPage(),
// ));
// } else {
// Navigator.push(
// state.context,
// CupertinoPageRoute(
// builder: (_) => SignUpEmail(
// socialType: SocialType.facebook,
// socialData: new RegisterSocialDataModel(
// socialId: result.accessToken.userId,
// token: result.accessToken.token,
// email: fbData['email'],
// firstName: fbData['first_name'],
// lastName: fbData['last_name'],
// ),
// )));
// }
// });
// });
// } catch (e) {
// print(e);
// }
// }
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment