Initial commit: Krow Worker App

This commit is contained in:
R-Bharathraj
2026-09-17 22:26:11 +05:30
commit cafffd27e0
113 changed files with 13067 additions and 0 deletions

View File

@@ -0,0 +1,49 @@
import 'package:flutter_riverpod/flutter_riverpod.dart';
import '../models/timecard.dart';
import 'seed.dart';
class TimecardsController extends Notifier<List<Timecard>> {
@override
List<Timecard> 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, List<Timecard>>(
TimecardsController.new,
);
/// Timecards still waiting on the worker to confirm or dispute.
final timecardsNeedingReviewProvider = Provider<List<Timecard>>((ref) {
return ref
.watch(timecardsProvider)
.where((t) => t.status == TimecardStatus.needsReview)
.toList();
});