import 'package:flutter/material.dart';

class AddCustomTimetableEventDialog extends StatefulWidget {
  const AddCustomTimetableEventDialog({super.key});

  @override
  State<AddCustomTimetableEventDialog> createState() => _AddCustomTimetableEventDialogState();
}

class _AddCustomTimetableEventDialogState extends State<AddCustomTimetableEventDialog> {
  DateTime _selectedDate = DateTime.now();
  TimeOfDay _selectedStartTime = TimeOfDay.now();
  TimeOfDay _selectedEndTime = TimeOfDay.now();
  final TextEditingController _eventNameController = TextEditingController();
  bool _isRecurring = false;
  String _recurringFrequency = 'Wöchentlich';

  @override
  Widget build(BuildContext context) {
    return AlertDialog(
      title: const Text('Termin hinzufügen'),
      content: SingleChildScrollView(
        child: Column(
          mainAxisSize: MainAxisSize.min,
          children: <Widget>[
            ListTile(
              title: const Text('Startdatum:'),
              subtitle: Text('${_selectedDate.day}/${_selectedDate.month}/${_selectedDate.year}'),
              onTap: () async {
                final DateTime? pickedDate = await showDatePicker(
                  context: context,
                  initialDate: _selectedDate,
                  firstDate: DateTime.now(),
                  lastDate: DateTime(2101),
                );
                if (pickedDate != null && pickedDate != _selectedDate) {
                  setState(() {
                    _selectedDate = pickedDate;
                  });
                }
              },
            ),
            ListTile(
              title: const Text('Startzeit:'),
              subtitle: Text('${_selectedStartTime.hour}:${_selectedStartTime.minute}'),
              onTap: () async {
                final TimeOfDay? pickedTime = await showTimePicker(
                  context: context,
                  initialTime: _selectedStartTime,
                );
                if (pickedTime != null && pickedTime != _selectedStartTime) {
                  setState(() {
                    _selectedStartTime = pickedTime;
                  });
                }
              },
            ),
            ListTile(
              title: const Text('Endzeit:'),
              subtitle: Text('${_selectedEndTime.hour}:${_selectedEndTime.minute}'),
              onTap: () async {
                final TimeOfDay? pickedTime = await showTimePicker(
                  context: context,
                  initialTime: _selectedEndTime,
                );
                if (pickedTime != null && pickedTime != _selectedEndTime) {
                  setState(() {
                    _selectedEndTime = pickedTime;
                  });
                }
              },
            ),
            TextField(
              controller: _eventNameController,
              decoration: const InputDecoration(labelText: 'Terminname'),
            ),
            CheckboxListTile(
              title: const Text('Wiederholend'),
              value: _isRecurring,
              onChanged: (bool? value) {
                setState(() {
                  _isRecurring = value!;
                });
              },
            ),
            if (_isRecurring) ...[
              DropdownButtonFormField<String>(
                value: _recurringFrequency,
                items: ['Wöchentlich', 'Täglich', 'Monatlich'].map((String value) {
                  return DropdownMenuItem<String>(
                    value: value,
                    child: Text(value),
                  );
                }).toList(),
                onChanged: (String? value) {
                  setState(() {
                    _recurringFrequency = value ?? "";
                  });
                },
              ),
              // Hier könntest du weitere Felder für die Wiederholungseigenschaften hinzufügen
            ],
          ],
        ),
      ),
      actions: <Widget>[
        TextButton(
          onPressed: () {
            Navigator.of(context).pop();
          },
          child: const Text('Abbrechen'),
        ),
        TextButton(
          onPressed: () {
            // Hier kannst du die Eingaben verwenden
            String startDate = '${_selectedDate.day}/${_selectedDate.month}/${_selectedDate.year}';
            String startTime = '${_selectedStartTime.hour}:${_selectedStartTime.minute}';
            String endTime = '${_selectedEndTime.hour}:${_selectedEndTime.minute}';
            String eventName = _eventNameController.text;
            bool isRecurring = _isRecurring;
            String recurringFrequency = _recurringFrequency;

            // Hier kannst du die Daten speichern oder weiterverarbeiten
            print('Startdatum: $startDate');
            print('Startzeit: $startTime');
            print('Endzeit: $endTime');
            print('Terminname: $eventName');
            print('Wiederholend: $isRecurring');
            if (_isRecurring) {
              print('Wiederholungs-Frequenz: $recurringFrequency');
            }

            // Hier könntest du die Termindaten weiterverarbeiten, z.B. speichern und den Dialog schließen
            Navigator.of(context).pop();
          },
          child: const Text('Hinzufügen'),
        ),
      ],
    );
  }
}