import 'package:equatable/equatable.dart'; import 'package:flutter/material.dart'; class LogisticObject extends Equatable { final int id; final int objectId; final int type; final int version; final int? locationId; final String code; final String? remark; final String state; final String subtype; final String? origin; final bool isManual; final DateTime? lastModified; final String? typeName; final String? typeMnemonic; const LogisticObject({ required this.id, required this.objectId, required this.type, required this.version, this.locationId, required this.code, this.remark, required this.state, required this.subtype, this.origin, this.isManual = false, this.lastModified, this.typeName, this.typeMnemonic, }); LogisticObject copyWith({ int? id, int? objectId, int? type, int? version, int? locationId, String? code, String? remark, String? state, String? subtype, String? origin, bool? isManual, DateTime? lastModified, String? typeName, String? typeMnemonic, }) { return LogisticObject( id: id ?? this.id, objectId: objectId ?? this.objectId, type: type ?? this.type, version: version ?? this.version, locationId: locationId ?? this.locationId, code: code ?? this.code, remark: remark ?? this.remark, state: state ?? this.state, subtype: subtype ?? this.subtype, origin: origin ?? this.origin, isManual: isManual ?? this.isManual, lastModified: lastModified ?? this.lastModified, typeName: typeName ?? this.typeName, typeMnemonic: typeMnemonic ?? this.typeMnemonic, ); } @override List get props => [ id, objectId, type, version, locationId, code, remark, state, subtype, origin, isManual, lastModified, typeName, typeMnemonic, ]; } class ObjectMetadata extends Equatable { final int id; final int type; final int version; final String mnemonic; final String name; final String prefix; final String subtype; final String counterText; const ObjectMetadata({ required this.id, required this.type, required this.version, required this.mnemonic, required this.name, required this.prefix, required this.subtype, required this.counterText, }); @override List get props => [ id, type, version, mnemonic, name, prefix, subtype, counterText, ]; } class ObjectStateInfo { final String state; final String displayName; final int colorValue; final String iconName; const ObjectStateInfo({ required this.state, required this.displayName, required this.colorValue, required this.iconName, }); static const Map stateInfos = { 'unknown': ObjectStateInfo( state: 'unknown', displayName: 'Unbekannt', colorValue: 0xFFFFFFFF, iconName: 'help', ), 'delivery': ObjectStateInfo( state: 'delivery', displayName: 'Im Fahrzeug', colorValue: 0xFFB3B3B3, iconName: 'local_shipping', ), 'to_delivery': ObjectStateInfo( state: 'to_delivery', displayName: 'Zum Fahrzeug', colorValue: 0xFFB3B3B3, iconName: 'local_shipping_outlined', ), 'station': ObjectStateInfo( state: 'station', displayName: 'An Station', colorValue: 0xFFFFDD00, iconName: 'location_on', ), 'in_fa': ObjectStateInfo( state: 'in_fa', displayName: 'Im Fahrscheinautomat', colorValue: 0xFF9CDA7A, iconName: 'confirmation_number', ), 'in_vs': ObjectStateInfo( state: 'in_vs', displayName: 'In Versorgungsstelle', colorValue: 0xFFFAE14B, iconName: 'inventory', ), 'ret_fail': ObjectStateInfo( state: 'ret_fail', displayName: 'Fehler - zur Dienststelle', colorValue: 0xFFFF9081, iconName: 'error', ), 'ret_fail_fzg': ObjectStateInfo( state: 'ret_fail_fzg', displayName: 'Fehler - im Fahrzeug', colorValue: 0xFFFF9081, iconName: 'error_outline', ), 'ret_ds': ObjectStateInfo( state: 'ret_ds', displayName: 'Zur Dienststelle', colorValue: 0xFFAFE0ED, iconName: 'account_balance', ), 'ret_ds_fzg': ObjectStateInfo( state: 'ret_ds_fzg', displayName: 'Zur Dienststelle (Fzg)', colorValue: 0xFFAFE0ED, iconName: 'account_balance_outlined', ), 'ret_gi': ObjectStateInfo( state: 'ret_gi', displayName: 'Zum Geldinstitut', colorValue: 0xFFAFE0ED, iconName: 'account_balance_wallet', ), 'ret_gi_fzg': ObjectStateInfo( state: 'ret_gi_fzg', displayName: 'Zum Geldinstitut (Fzg)', colorValue: 0xFFAFE0ED, iconName: 'account_balance_wallet_outlined', ), 'fin_ds': ObjectStateInfo( state: 'fin_ds', displayName: 'In Dienststelle', colorValue: 0xFF29B7FB, iconName: 'check_circle', ), 'fin_gi': ObjectStateInfo( state: 'fin_gi', displayName: 'In Geldinstitut', colorValue: 0xFF25BAFC, iconName: 'check_circle_outline', ), 'hdl': ObjectStateInfo( state: 'hdl', displayName: 'Handel', colorValue: 0xFF9E9E9E, iconName: 'shopping_cart', ), 'ret_ds_empty': ObjectStateInfo( state: 'ret_ds_empty', displayName: 'Leer - zur Dienststelle', colorValue: 0xFFAFE0ED, iconName: 'remove_circle_outline', ), }; static Color getColorForState(String state) { final info = stateInfos[state]; return info != null ? Color(info.colorValue) : const Color(0xFFFFFFFF); } static String getDisplayName(String state) { final info = stateInfos[state]; return info?.displayName ?? 'Unbekannt'; } static String getIconName(String state) { final info = stateInfos[state]; return info?.iconName ?? 'help'; } }