import 'package:flutter_riverpod/flutter_riverpod.dart'; import '../models/timecard.dart'; import 'seed.dart'; class TimecardsController extends Notifier> { @override List build() => Seed.timecards(); void add(Timecard card) { state = [card, ...state]; } void approve(String id) { state = [ for (final t in state) if (t.id == id) t.copyWith(status: TimecardStatus.approved) else t, ]; } void dispute(String id, String note) { state = [ for (final t in state) if (t.id == id) t.copyWith(status: TimecardStatus.disputed, disputeNote: note) else t, ]; } Timecard? byId(String id) { for (final t in state) { if (t.id == id) return t; } return null; } } final timecardsProvider = NotifierProvider>( TimecardsController.new, ); /// Timecards still waiting on the worker to confirm or dispute. final timecardsNeedingReviewProvider = Provider>((ref) { return ref .watch(timecardsProvider) .where((t) => t.status == TimecardStatus.needsReview) .toList(); });