Initial commit: Krow Worker App
This commit is contained in:
57
lib/models/worker.dart
Normal file
57
lib/models/worker.dart
Normal file
@@ -0,0 +1,57 @@
|
||||
class Worker {
|
||||
const Worker({
|
||||
required this.name,
|
||||
required this.role,
|
||||
required this.city,
|
||||
required this.phone,
|
||||
this.shiftsWorked = 0,
|
||||
this.rating = 5.0,
|
||||
this.onTimePercent = 100,
|
||||
this.noShows = 0,
|
||||
this.cancellations = 0,
|
||||
});
|
||||
|
||||
final String name;
|
||||
final String role;
|
||||
final String city;
|
||||
final String phone;
|
||||
final int shiftsWorked;
|
||||
final double rating;
|
||||
final int onTimePercent;
|
||||
final int noShows;
|
||||
final int cancellations;
|
||||
|
||||
/// Stay above 45% to keep picking up shifts. On-time arrivals move it most.
|
||||
int get trustIndex {
|
||||
final base = 40 + onTimePercent ~/ 2 - noShows * 15 - cancellations * 5;
|
||||
return base.clamp(0, 100);
|
||||
}
|
||||
|
||||
String get initials => name
|
||||
.split(' ')
|
||||
.where((p) => p.isNotEmpty)
|
||||
.map((p) => p[0].toUpperCase())
|
||||
.take(2)
|
||||
.join();
|
||||
|
||||
Worker copyWith({
|
||||
String? name,
|
||||
String? role,
|
||||
String? city,
|
||||
String? phone,
|
||||
int? shiftsWorked,
|
||||
int? onTimePercent,
|
||||
int? noShows,
|
||||
int? cancellations,
|
||||
}) => Worker(
|
||||
name: name ?? this.name,
|
||||
role: role ?? this.role,
|
||||
city: city ?? this.city,
|
||||
phone: phone ?? this.phone,
|
||||
shiftsWorked: shiftsWorked ?? this.shiftsWorked,
|
||||
rating: rating,
|
||||
onTimePercent: onTimePercent ?? this.onTimePercent,
|
||||
noShows: noShows ?? this.noShows,
|
||||
cancellations: cancellations ?? this.cancellations,
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user