Avance de la aplicacion
This commit is contained in:
@@ -5,11 +5,13 @@ import '../database/db_helper.dart';
|
||||
|
||||
class AuthService extends ChangeNotifier {
|
||||
UserModel? _user;
|
||||
DomicilioModel? _domicilio;
|
||||
DomicilioModel? _primaryDomicilio;
|
||||
List<DomicilioModel> _allDomicilios = [];
|
||||
bool _loading = true;
|
||||
|
||||
UserModel? get currentUser => _user;
|
||||
DomicilioModel? get primaryDomicilio => _domicilio;
|
||||
DomicilioModel? get primaryDomicilio => _primaryDomicilio;
|
||||
List<DomicilioModel> get allDomicilios => _allDomicilios;
|
||||
bool get isLoggedIn => _user != null;
|
||||
bool get loading => _loading;
|
||||
String get rol => _user?.rol ?? '';
|
||||
@@ -21,22 +23,28 @@ class AuthService extends ChangeNotifier {
|
||||
final id = p.getInt('user_id');
|
||||
if (id != null) {
|
||||
_user = await DbHelper.getUserById(id);
|
||||
if (_user?.rol == 'CIUDADANO') {
|
||||
_domicilio = await DbHelper.getPrimaryDomicilio(id);
|
||||
}
|
||||
if (_user?.rol == 'CIUDADANO') await reloadDomicilios();
|
||||
}
|
||||
_loading = false;
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
Future<void> reloadDomicilios() async {
|
||||
if (_user == null) return;
|
||||
_allDomicilios = await DbHelper.getDomiciliosByUser(_user!.id!);
|
||||
_primaryDomicilio = _allDomicilios.isNotEmpty
|
||||
? _allDomicilios.firstWhere((d) => d.isPrimary,
|
||||
orElse: () => _allDomicilios.first)
|
||||
: null;
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
Future<String?> login(String email, String password) async {
|
||||
final user = await DbHelper.getUserByEmail(email.trim().toLowerCase());
|
||||
if (user == null) return 'Correo no registrado';
|
||||
if (user.password != password) return 'Contraseña incorrecta';
|
||||
_user = user;
|
||||
if (user.rol == 'CIUDADANO') {
|
||||
_domicilio = await DbHelper.getPrimaryDomicilio(user.id!);
|
||||
}
|
||||
if (user.rol == 'CIUDADANO') await reloadDomicilios();
|
||||
final p = await SharedPreferences.getInstance();
|
||||
await p.setInt('user_id', user.id!);
|
||||
notifyListeners();
|
||||
@@ -51,10 +59,11 @@ class AuthService extends ChangeNotifier {
|
||||
final user = UserModel(nombre:nombre.trim(),
|
||||
email:email.trim().toLowerCase(), password:password, rol:'CIUDADANO');
|
||||
final uid = await DbHelper.insertUser(user);
|
||||
await DbHelper.insertDomicilio(DomicilioModel(userId:uid, calle:calle.trim(),
|
||||
colonia:colonia, routeId:routeId, horarioEstimado:horarioEstimado));
|
||||
await DbHelper.insertDomicilio(DomicilioModel(userId:uid, alias:'Casa',
|
||||
calle:calle.trim(), colonia:colonia, routeId:routeId,
|
||||
horarioEstimado:horarioEstimado, isPrimary:true));
|
||||
_user = await DbHelper.getUserById(uid);
|
||||
_domicilio = await DbHelper.getPrimaryDomicilio(uid);
|
||||
await reloadDomicilios();
|
||||
final p = await SharedPreferences.getInstance();
|
||||
await p.setInt('user_id', uid);
|
||||
notifyListeners();
|
||||
@@ -62,7 +71,7 @@ class AuthService extends ChangeNotifier {
|
||||
}
|
||||
|
||||
Future<void> logout() async {
|
||||
_user = null; _domicilio = null;
|
||||
_user = null; _primaryDomicilio = null; _allDomicilios = [];
|
||||
final p = await SharedPreferences.getInstance();
|
||||
await p.remove('user_id');
|
||||
notifyListeners();
|
||||
|
||||
Reference in New Issue
Block a user