Files
apskel-pos-flutter-v2/lib/application/printer/print_struck/print_struck_state.dart
T

35 lines
1.1 KiB
Dart
Raw Normal View History

2025-11-07 16:29:26 +07:00
part of 'print_struck_bloc.dart';
@freezed
class PrintStruckState with _$PrintStruckState {
const PrintStruckState._();
const factory PrintStruckState({
/// Status seluruh station di job cetak terakhir, urut sesuai urutan cetak.
@Default(<PrintStationResult>[]) List<PrintStationResult> stations,
2025-11-07 16:29:26 +07:00
@Default(false) bool isPrinting,
/// Order yang sedang dicetak, disimpan supaya station yang gagal bisa
/// diulang tanpa perlu dikirim ulang dari halaman pemanggil.
Order? order,
/// Naik tiap job baru dimulai. UI memakainya untuk tahu kapan harus
/// membuka dialog progres.
@Default(0) int jobId,
2025-11-07 16:29:26 +07:00
}) = _PrintStruckState;
factory PrintStruckState.initial() => const PrintStruckState();
List<PrintStationResult> get failedStations =>
stations.where((station) => station.isFailed).toList();
bool get hasFailure => failedStations.isNotEmpty;
/// Station yang benar-benar dicetak — yang dilewati tidak ikut dihitung.
int get plannedCount =>
stations.where((station) => !station.isSkipped).length;
int get successCount =>
stations.where((station) => station.isSuccess).length;
2025-11-07 16:29:26 +07:00
}