import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; import 'package:insparkspokalen_ui/services/backend/activityService.dart'; import 'package:insparkspokalen_ui/models/activityModel.dart'; class Calendar extends StatefulWidget { const Calendar({super.key}); @override State createState() => _CalendarState(); } class _CalendarState extends State { List aktiviteter = []; @override void initState() { super.initState(); _fetchActivities(); } void _fetchActivities() async { try { List fetchedActivities = await ActivityService().fetchActivities(); fetchedActivities.sort( (a, b) => a.date.compareTo(b.date), ); // Sortering: nyaste först setState(() { aktiviteter = fetchedActivities; }); } catch (e) { print("Error fetching activities: $e"); } } @override Widget build(BuildContext context) { return ListView.builder( itemCount: aktiviteter.length, itemBuilder: (context, index) { final aktivitet = aktiviteter[index]; final datumStr = DateFormat('yyyy-MM-dd').format(aktivitet.date); final startTidStr = aktivitet.startTime; final slutTidStr = aktivitet.endTime ?? "Sent"; return Card( margin: const EdgeInsets.symmetric(vertical: 8, horizontal: 16), child: ListTile( leading: const Icon(Icons.event, color: Color(0xFFDAA520)), title: Text(aktivitet.name), subtitle: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( children: [ const Icon(Icons.location_on, color: Colors.grey), const SizedBox(width: 4), Text( aktivitet.place, style: const TextStyle(color: Colors.grey), ), ], ), Row( children: [ const Icon(Icons.calendar_today, color: Colors.grey), const SizedBox(width: 4), Text( "$datumStr · $startTidStr - $slutTidStr", style: const TextStyle(color: Colors.grey), ), ], ), if (aktivitet.description != null) const Text( "Tryck för beskrivning", style: TextStyle( color: Colors.blue, fontStyle: FontStyle.italic, ), ), ], ), onTap: () { if (aktivitet.description != null) { showDialog( context: context, builder: (context) => AlertDialog( title: Text(aktivitet.name), content: Text(aktivitet.description!), actions: [ TextButton( onPressed: () => Navigator.pop(context), child: const Text("Stäng"), ), ], ), ); } }, ), ); }, ); } }