import 'package:mobile_monitoring/data/models/service_result.dart'; import 'package:mobile_monitoring/data/services/auth_service.dart'; import 'package:mobile_monitoring/data/services/register_service.dart'; import 'package:mobile_monitoring/logic/controllers/base_controller.dart'; class AuthController extends BaseController { AuthController({AuthService? authService, RegisterService? registerService}) : _authService = authService ?? AuthService(), _registerService = registerService ?? RegisterService(); final AuthService _authService; final RegisterService _registerService; bool _isLoading = false; String? _lastMessage; bool get isLoading => _isLoading; String? get lastMessage => _lastMessage; String? get currentUserId => _authService.currentUser?.uid; Future> login({ required String email, required String password, }) async { _setLoading(true); final result = await _authService.signInWithEmailAndPassword( email: email.trim(), password: password, ); _setLoading(false); _lastMessage = result.message; notifyListeners(); if (!result.success) { return ServiceResult.failure( message: result.message, errorCode: result.errorCode, ); } return ServiceResult.success(message: result.message); } Future> register({ required String name, required String email, required String password, required String confirmPassword, }) async { _setLoading(true); final result = await _registerService.register( RegisterRequest( name: name, email: email, password: password, confirmPassword: confirmPassword, ), ); _setLoading(false); _lastMessage = result.message; notifyListeners(); return result; } Future> forgotPassword(String email) async { _setLoading(true); final result = await _authService.resetPassword(email.trim()); _setLoading(false); _lastMessage = result.message; notifyListeners(); return result; } Future> logout() async { _setLoading(true); final result = await _authService.signOut(); _setLoading(false); _lastMessage = result.message; notifyListeners(); return result; } void _setLoading(bool value) { _isLoading = value; notifyListeners(); } }