import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:hl_lieferservice/feature/car_selection/bloc/bloc.dart'; import 'package:hl_lieferservice/feature/car_selection/bloc/state.dart'; import 'package:hl_lieferservice/feature/cars/bloc/cars_bloc.dart'; import 'package:hl_lieferservice/feature/cars/bloc/cars_event.dart'; import 'package:hl_lieferservice/feature/cars/bloc/cars_state.dart'; import 'package:hl_lieferservice/feature/cars/presentation/car_fail_page.dart'; import 'package:hl_lieferservice/feature/cars/presentation/car_management.dart'; class CarManagementPage extends StatefulWidget { const CarManagementPage({super.key}); @override State createState() => _CarManagementPageState(); } class _CarManagementPageState extends State { @override void initState() { super.initState(); // Account-Identifizierung läuft serverseitig über den JWT — keine // teamId mehr aus dem AuthState extrahieren. context.read().add(const CarLoad()); } void _add(String plate) { context.read().add(CarAdd(plate: plate)); } Future _refresh() async { context.read().add(const CarLoad(force: true)); } void _remove(String carId) { // Schutz: wenn dieses Fahrzeug aktuell für heute ausgewählt ist, // darf es nicht deaktiviert werden. final carSelectState = context.read().state; if (carSelectState is CarSelectComplete && carSelectState.selectedCar.id == carId) { ScaffoldMessenger.of(context).showSnackBar( const SnackBar( content: Text( "Dieses Fahrzeug ist aktuell ausgewählt und kann nicht " "deaktiviert werden. Bitte wähle zuerst ein anderes Fahrzeug " "aus.", ), duration: Duration(seconds: 4), ), ); return; } // TODO Phase D: Schutz wieder einhängen, sobald TourBloc/Domain // mit UUID-Car-Ids arbeiten und prüfen, ob das Fahrzeug noch // beladene, nicht ausgelieferte Artikel hat. context.read().add(CarDeactivate(carId: carId)); } void _edit(String carId, String plate) { context.read().add(CarEdit(carId: carId, plate: plate)); } @override Widget build(BuildContext context) { return Scaffold( body: BlocBuilder( builder: (context, state) { if (state is CarsLoading || state is CarsInitial) { return const Center(child: CircularProgressIndicator()); } if (state is CarsLoaded) { return BlocBuilder( builder: (context, selectState) { final String? selectedCarId = selectState is CarSelectComplete ? selectState.selectedCar.id : null; return CarManagementOverview( cars: state.cars, selectedCarId: selectedCarId, onEdit: _edit, onAdd: _add, onDelete: _remove, onRefresh: _refresh, ); }, ); } if (state is CarsLoadingFailed) { return const CarsLoadingFailedPage(); } return const SizedBox.shrink(); }, ), ); } }