import 'package:flutter/foundation.dart'; import '../data/interface/IRepository.dart'; import '../models/worker.dart'; class WorkerProvider extends ChangeNotifier { final Repository _repository; List _workers = []; bool _isLoading = false; String? _error; WorkerProvider(this._repository); List get workers => _workers; bool get isLoading => _isLoading; String? get error => _error; Future loadWorkers() async { _isLoading = true; _error = null; notifyListeners(); try { _workers = await _repository.load(); } catch (e) { _error = e.toString(); } finally { _isLoading = false; notifyListeners(); } } Future addWorker(Worker worker) async { _isLoading = true; _error = null; notifyListeners(); try { final newWorker = await _repository.add(worker); _workers.add(newWorker); } catch (e) { _error = e.toString(); } finally { _isLoading = false; notifyListeners(); } } Future updateWorker(Worker worker) async { _isLoading = true; _error = null; notifyListeners(); try { await _repository.update(worker); final index = _workers.indexWhere((w) => w.id == worker.id); if (index != -1) { _workers[index] = worker; } } catch (e) { _error = e.toString(); } finally { _isLoading = false; notifyListeners(); } } Future deleteWorker(String? id) async { if (id == null) return; _isLoading = true; _error = null; notifyListeners(); try { await _repository.delete(id); _workers.removeWhere((worker) => worker.id == id); } catch (e) { _error = e.toString(); } finally { _isLoading = false; notifyListeners(); } } }