using AquaCare.Controller;
using Avalonia.Controls;
using Avalonia.Interactivity;
using Avalonia.Markup.Xaml;
using AquaCare.Persistence;
using AquaCare.Model;
using System;

namespace AquaCare.View
{
    public partial class PflegeWindow : Window
    {
        private readonly PflegeController _controller;

        public PflegeWindow()
        {
            InitializeComponent();
            _controller = new PflegeController(new Datenbank());
        }

        private void InitializeComponent()
        {
            AvaloniaXamlLoader.Load(this);
        }

        private void SaveClick(object? sender, RoutedEventArgs e)
        {
            try
            {
                if (DatumPicker.SelectedDate.HasValue &&
                    double.TryParse(TemperaturBox.Text, out double temperatur) &&
                    double.TryParse(PhBox.Text, out double phWert) &&
                    double.TryParse(NitratBox.Text, out double nitrat) &&
                    double.TryParse(AmmoniakBox.Text, out double ammoniak))
                {
                    if (temperatur < 0 || phWert < 0 || nitrat < 0 || ammoniak < 0)
                    {
                        Console.WriteLine("Fehler: Werte dürfen nicht negativ sein.");
                        return;
                    }

                    var success = _controller.SavePflegeTask(
                        DatumPicker.SelectedDate.Value.DateTime,
                        GefuettertCheckBox.IsChecked ?? false,
                        FilterReinigenCheckBox.IsChecked ?? false,
                        WasserWechselnCheckBox.IsChecked ?? false,
                        temperatur,
                        phWert,
                        nitrat,
                        ammoniak
                    );

                    if (success)
                    {
                        Console.WriteLine("Erfolg: Werte erfolgreich gespeichert.");

                        // Eingabefelder zurücksetzen
                        DatumPicker.SelectedDate = null;
                        GefuettertCheckBox.IsChecked = false;
                        FilterReinigenCheckBox.IsChecked = false;
                        WasserWechselnCheckBox.IsChecked = false;
                        TemperaturBox.Text = string.Empty;
                        PhBox.Text = string.Empty;
                        NitratBox.Text = string.Empty;
                        AmmoniakBox.Text = string.Empty;
                    }
                    else
                    {
                        Console.WriteLine("Fehler: Werte konnten nicht gespeichert werden.");
                    }
                }
                else
                {
                    Console.WriteLine("Fehler: Bitte alle Felder korrekt ausfüllen.");
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Fehler beim Speichern der Werte: {ex.Message}");
            }
        }

        private void CancelClick(object? sender, RoutedEventArgs e)
        {
            Close();
        }
    }
}