From 9d271357d9654cd7019c50eb5d0e037d82f46221 Mon Sep 17 00:00:00 2001 From: Nilo Roberto C Paim Date: Tue, 5 Sep 2023 17:52:02 -0300 Subject: [PATCH] register page completed --- lib/components/nc_form_field.dart | 6 +- lib/models/user_model.dart | 3 + lib/pages/login_page.dart | 12 ++-- lib/pages/register_page.dart | 104 ++++++++++++++++-------------- 4 files changed, 66 insertions(+), 59 deletions(-) diff --git a/lib/components/nc_form_field.dart b/lib/components/nc_form_field.dart index 4eced0e..dc72507 100644 --- a/lib/components/nc_form_field.dart +++ b/lib/components/nc_form_field.dart @@ -3,7 +3,7 @@ import 'package:flutter/services.dart'; class NCFormField extends StatelessWidget { final String label; - final String value; + final TextEditingController controller; final bool? obscureText; final void Function(String)? onChanged; final String? Function(String?)? validator; @@ -12,7 +12,7 @@ class NCFormField extends StatelessWidget { const NCFormField({ super.key, required this.label, - required this.value, + required this.controller, this.onChanged, this.validator, this.inputFormatters, @@ -24,7 +24,7 @@ class NCFormField extends StatelessWidget { height: 80, child: TextFormField( autovalidateMode: AutovalidateMode.onUserInteraction, - initialValue: value, + controller: controller, validator: validator, onChanged: onChanged, inputFormatters: inputFormatters, diff --git a/lib/models/user_model.dart b/lib/models/user_model.dart index ee826e5..360f105 100644 --- a/lib/models/user_model.dart +++ b/lib/models/user_model.dart @@ -1,5 +1,6 @@ class UserModel { int? id; + String? message; String? name; String? companyname; String? email; @@ -13,6 +14,7 @@ class UserModel { UserModel.fromJson(Map json) { id = json['id']; + message = json['message'] ?? ''; name = json['name']; companyname = json['companyname']; email = json['email']; @@ -26,6 +28,7 @@ class UserModel { Map toJson() { final Map data = {}; data['id'] = id; + data['message'] = message; data['name'] = name; data['companyname'] = companyname; data['email'] = email; diff --git a/lib/pages/login_page.dart b/lib/pages/login_page.dart index cb46abc..cc1427e 100644 --- a/lib/pages/login_page.dart +++ b/lib/pages/login_page.dart @@ -21,8 +21,8 @@ class _LoginPageState extends State { final formKey = GlobalKey(); - String email = ''; - String password = ''; + TextEditingController email = TextEditingController(); + TextEditingController password = TextEditingController(); return Container( color: const Color.fromRGBO(166, 0, 249, 1), child: Center( @@ -61,24 +61,22 @@ class _LoginPageState extends State { children: [ NCFormField( label: 'Email', - value: email, + controller: email, validator: Validatorless.multiple( [ Validatorless.email('Email inválido'), Validatorless.required('Email é obrigatório'), ], ), - onChanged: (value) => email = value, ), const SizedBox( height: 16.0, ), NCFormField( label: 'Senha', - value: password, + controller: password, obscureText: true, validator: Validatorless.required('Senha é obrigatória'), - onChanged: (value) => password = value, ), const SizedBox( height: 32.0, @@ -92,7 +90,7 @@ class _LoginPageState extends State { ), ), onPressed: () async { - var result = await processAuth(formKey, store, email, password); + var result = await processAuth(formKey, store, email.text, password.text); if (result) { switch (store.userType) { case 'A': diff --git a/lib/pages/register_page.dart b/lib/pages/register_page.dart index c0e0b95..a193e3e 100644 --- a/lib/pages/register_page.dart +++ b/lib/pages/register_page.dart @@ -6,6 +6,7 @@ import 'package:motion_toast/motion_toast.dart'; import 'package:motion_toast/resources/arrays.dart'; import 'package:pcastlivetv/components/nc_form_field.dart'; import 'package:pcastlivetv/globals.dart'; +import 'package:pcastlivetv/models/user_model.dart'; import 'package:pcastlivetv/routes.dart'; import 'package:pcastlivetv/stores/login_store.dart'; import 'package:validatorless/validatorless.dart'; @@ -25,12 +26,12 @@ class _RegisterPageState extends State { final formKey = GlobalKey(); - String name = ''; - String companyname = ''; - String email = ''; - String password = ''; - String password2 = ''; - String channel = ''; + TextEditingController name = TextEditingController(); + TextEditingController companyname = TextEditingController(); + TextEditingController email = TextEditingController(); + TextEditingController password = TextEditingController(); + TextEditingController password2 = TextEditingController(); + TextEditingController channel = TextEditingController(); return Container( color: const Color.fromRGBO(166, 0, 249, 1), @@ -69,21 +70,17 @@ class _RegisterPageState extends State { ), child: Column( children: [ - NCFormField(label: 'Nome', value: name, validator: Validatorless.required('Nome é obrigatório'), onChanged: (value) => name = value), - NCFormField(label: 'Empresa', value: companyname, validator: Validatorless.required('Nome da empresa é obrigatório'), onChanged: (value) => companyname = value), + NCFormField(label: 'Nome', controller: name, validator: Validatorless.required('Nome é obrigatório')), + NCFormField(label: 'Empresa', controller: companyname, validator: Validatorless.required('Nome da empresa é obrigatório')), + NCFormField(label: 'Email', controller: email, validator: Validatorless.multiple([Validatorless.email('Email inválido'), Validatorless.required('Email é obrigatório')])), + NCFormField(label: 'Senha', controller: password, obscureText: true, validator: Validatorless.required('Senha é obrigatória')), NCFormField( - label: 'Email', - value: email, - validator: Validatorless.multiple([Validatorless.email('Email inválido'), Validatorless.required('Email é obrigatório')]), - onChanged: (value) => email = value), - NCFormField(label: 'Senha', value: password, obscureText: true, validator: Validatorless.required('Senha é obrigatória'), onChanged: (value) => password = value), - NCFormField( - label: 'Confirme Senha', - value: password, - obscureText: true, - validator: Validatorless.required('Senha de confirmação é obrigatória'), - onChanged: (value) => password2 = value), - NCFormField(label: 'Canal', value: channel, validator: Validatorless.required('Nome do canal é obrigatório'), onChanged: (value) => channel = value), + label: 'Confirme Senha', + controller: password2, + obscureText: true, + validator: Validatorless.multiple([Validatorless.required('Senha é obrigatória'), Validatorless.compare(password, 'Senhas não conferem')]), + ), + NCFormField(label: 'Canal', controller: channel, validator: Validatorless.required('Nome do canal é obrigatório')), const SizedBox(height: 16.0), ElevatedButton( style: ElevatedButton.styleFrom( @@ -94,9 +91,9 @@ class _RegisterPageState extends State { ), ), onPressed: () async { - var result = await registerUser(name, companyname, email, password, password2, channel); + var result = await registerUser(formKey, store, name.text, companyname.text, email.text, password.text, password2.text, channel.text); if (result) { - var result = await processAuth(formKey, store, email, password); + var result = await processAuth(formKey, store, email.text, password.text); if (result) { router.go('/user'); } @@ -139,36 +136,45 @@ class _RegisterPageState extends State { ).show(context); } - Future registerUser(String name, String companyname, String email, String password, String password2, String channel) async { - var data = json.encode({ - "name": name, - "companyname": companyname, - "email": email, - "password": password, - "channel": channel, - "usertype": "U", - "blocked": "N", - "cancelled": "N", - "createdby": "Site", - }); + Future registerUser(GlobalKey formKey, LoginStore store, String name, String companyname, String email, String password, String password2, String channel) async { + if (formKey.currentState!.validate()) { + formKey.currentState!.save(); + store.email = email; + store.password = password; + var data = json.encode({ + "name": name, + "companyname": companyname, + "email": email, + "password": password, + "channel": channel, + "usertype": "U", + "blocked": "N", + "cancelled": "N", + "createdby": "Site", + }); - var dio = Dio(); + var dio = Dio(); - var response = await dio.request( - Endpoints.register, - options: Options(method: 'POST', contentType: 'application/json'), - data: data, - ); + var response = await dio.request( + Endpoints.register, + options: Options(method: 'POST', contentType: 'application/json'), + data: data, + ); - switch (response.statusCode) { - case 200: - print(json.encode(response.data)); - break; - case 406: - _displayErrorMotionToast('Usuário já cadastrado'); - break; - default: - _displayErrorMotionToast(response.statusMessage!); + switch (response.statusCode) { + case 200: + var u = UserModel.fromJson(response.data); + if (u.message != "") { + _displayErrorMotionToast(u.message!); + return false; + } + break; + case 406: + _displayErrorMotionToast('Usuário já cadastrado'); + break; + default: + _displayErrorMotionToast(response.statusMessage!); + } } return Future.value(true); }