import "dart:typed_data"; import "package:flutter/foundation.dart"; import "../models/operations/trip.dart"; import "../models/brr_metadata.dart"; import "../exporters/brr_exporter.dart"; import "../exporters/arriva_brr_exporter.dart"; import "../exporters/stagecoach_brr_exporter.dart"; enum BRROperator { arriva, stagecoach } class ExportResult { final Uint8List? bytes; final List errors; bool get isSuccess => errors.isEmpty; ExportResult.success(this.bytes) : errors = []; ExportResult.error(this.errors) : bytes = null; } class BRRExportService { final BRROperator operator; BRRExportService({this.operator = BRROperator.arriva}); BRRExporter get _exporter { switch (operator) { case BRROperator.arriva: return ArrivaBRRExporter(); case BRROperator.stagecoach: return StagecoachBRRExporter(); } } Future exportBRR( List trips, BRRMetadata metadata, ) async { try { final bytes = await _exporter.export(trips, metadata); return ExportResult.success(bytes); } catch (e, stackTrace) { debugPrint("[BRRExportService] exportBRR failed: $e"); debugPrintStack(stackTrace: stackTrace); return ExportResult.error(["Export failed: $e"]); } } }