import 'package:flutter/material.dart'; import '../models/schedule_item.dart'; import '../theme/app_theme.dart'; class OrdersDayView extends StatefulWidget { final List items; const OrdersDayView({ super.key, required this.items, }); @override State createState() => _OrdersDayViewState(); } class _OrdersDayViewState extends State { @override Widget build(BuildContext context) { return ListView.builder( padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 16), itemCount: widget.items.length, itemBuilder: (context, index) { final item = widget.items[index]; return Padding( padding: const EdgeInsets.only(bottom: 14), child: Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ // Time Marker Column SizedBox( width: 50, child: Text( item.startTime, style: const TextStyle( fontSize: 13, fontWeight: FontWeight.bold, color: AppTheme.textPrimary, ), ), ), const SizedBox(width: 8), // Content Card Expanded( child: _buildItemCard(context, item), ), ], ), ); }, ); } Widget _buildItemCard(BuildContext context, ScheduleItem item) { switch (item.type) { case ScheduleItemType.routine: case ScheduleItemType.lunchBreak: case ScheduleItemType.feierabend: return Container( padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 14), decoration: BoxDecoration( color: const Color(0xFFE2E8F0), borderRadius: BorderRadius.circular(12), ), child: Text( item.title, style: const TextStyle( fontSize: 14, fontWeight: FontWeight.w600, color: AppTheme.textPrimary, ), ), ); case ScheduleItemType.job: return Container( decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(12), border: Border.all(color: AppTheme.cardBorder), boxShadow: const [ BoxShadow( color: Colors.black12, blurRadius: 4, offset: Offset(0, 2), ), ], ), clipBehavior: Clip.antiAlias, child: IntrinsicHeight( child: Row( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ Container( width: 5, color: AppTheme.primaryBlue, ), Expanded( child: Padding( padding: const EdgeInsets.all(14), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( item.title, style: const TextStyle( fontSize: 15, fontWeight: FontWeight.bold, color: AppTheme.textPrimary, ), ), const SizedBox(height: 8), if (item.customerName != null || item.address != null) Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ Container( padding: const EdgeInsets.all(6), decoration: BoxDecoration( color: AppTheme.lightBlueBg, borderRadius: BorderRadius.circular(6), ), child: const Icon( Icons.location_on, color: AppTheme.primaryBlue, size: 18, ), ), const SizedBox(width: 10), Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ if (item.customerName != null) Text( item.customerName!, style: const TextStyle( fontSize: 13, fontWeight: FontWeight.w600, color: AppTheme.textPrimary, ), ), if (item.address != null) Text( item.address!, style: const TextStyle( fontSize: 12, color: AppTheme.textSecondary, ), ), ], ), ), ], ), if (item.taskDescription != null) ...[ const SizedBox(height: 8), Text( item.taskDescription!, style: const TextStyle( fontSize: 13, color: AppTheme.textSecondary, ), ), ], const SizedBox(height: 12), Row( children: [ Expanded( child: ElevatedButton( onPressed: () { setState(() { item.isInProgress = true; }); ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text('Anfahrt gestartet zu ${item.customerName ?? "Kunde"}'), backgroundColor: AppTheme.primaryBlue, ), ); }, style: ElevatedButton.styleFrom( backgroundColor: AppTheme.primaryBlue, foregroundColor: Colors.white, elevation: 0, padding: const EdgeInsets.symmetric(vertical: 10), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(8), ), ), child: const Text( 'Anfahrt starten', style: TextStyle( fontSize: 13, fontWeight: FontWeight.w600, ), ), ), ), const SizedBox(width: 8), Expanded( child: ElevatedButton( onPressed: () { setState(() { item.isCompleted = true; item.isInProgress = false; }); ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text('Auftrag "${item.title}" als abgeschlossen markiert.'), backgroundColor: Colors.green[700], ), ); }, style: ElevatedButton.styleFrom( backgroundColor: item.isCompleted ? Colors.green[100] : const Color(0xFFE2E8F0), foregroundColor: item.isCompleted ? Colors.green[900] : AppTheme.textPrimary, elevation: 0, padding: const EdgeInsets.symmetric(vertical: 10), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(8), ), ), child: Text( item.isCompleted ? 'Abgeschlossen' : 'Auftrag abschließen', style: const TextStyle( fontSize: 13, fontWeight: FontWeight.w600, ), ), ), ), ], ), ], ), ), ), ], ), ), ); } } }