Phase 2 du MVP Flutter : vérification PIN locale, application des règles par famille, suivi des mouvements et correction avec plancher à 0. Co-authored-by: Cursor <cursoragent@cursor.com>
31 lines
751 B
Dart
31 lines
751 B
Dart
import 'package:bcrypt/bcrypt.dart';
|
|
|
|
import '../database/app_database.dart';
|
|
import '../models/movement_detail.dart';
|
|
|
|
class ParentRepository {
|
|
ParentRepository(this._db);
|
|
|
|
final AppDatabase _db;
|
|
|
|
Future<bool> verifyPin(String pin) async {
|
|
final hash = await _db.getPinHash();
|
|
if (hash == null) return false;
|
|
return BCrypt.checkpw(pin, hash);
|
|
}
|
|
|
|
Future<List<Regle>> listRules() => _db.listActiveRules();
|
|
|
|
Future<List<MovementDetail>> listMovements({int limit = 30}) {
|
|
return _db.listRecentMovements(limit: limit);
|
|
}
|
|
|
|
Future<Enfant?> applyRule(int childId, int ruleId) {
|
|
return _db.applyRule(childId, ruleId);
|
|
}
|
|
|
|
Future<Enfant?> cancelMovement(int movementId) {
|
|
return _db.cancelMovement(movementId);
|
|
}
|
|
}
|