using Elwig.Helpers;
using System.Windows;
using System.Windows.Controls;

namespace Elwig.Dialogs {
    public partial class AreaComModifyDialog : Window {

        public int? YearTo { get; set; }
        public bool ModifyRetroactively { get; set; }

        public string OrigYearFrom { get; set; }
        public string OrigYearTo { get; set; }
        public string Area { get; set; }

        public AreaComModifyDialog(int? yearFrom, int? yearTo, int area, bool delete) {
            Area = $"{area:N0}";
            OrigYearFrom = $"{yearFrom}";
            OrigYearTo = $"{yearTo}";
            InitializeComponent();
            Title = delete ? "Flächenbindung löschen" : "Flächenbindung bearbeiten";
            RetroactiveInput.Content = delete ? "Rückwirkend löschen" : "Rückwirkend bearbeiten";
            if (delete) {
                QuestionBlock1.Visibility = Visibility.Hidden;
                QuestionBlock2.Visibility = Visibility.Visible;
                DescBlock1.Visibility = Visibility.Hidden;
                DescBlock2.Visibility = Visibility.Visible;
            }
            if ((yearTo.HasValue && yearTo < Utils.CurrentNextSeason) || (yearFrom.HasValue && yearFrom >= Utils.CurrentNextSeason)) {
                RetroactiveInput.IsChecked = true;
            } else {
                SeasonInput.Text = $"{Utils.CurrentNextSeason}";
            }
        }

        private void SeasonInput_TextChanged(object sender, TextChangedEventArgs evt) {
            YearTo = SeasonInput.Value! - 1;
            CancelSeason1.Text = $"{YearTo}";
            CancelSeason2.Text = $"{YearTo}";
            NewSeason1.Text = $"{YearTo + 1}";
        }

        private void RetroactiveInput_Changed(object sender, RoutedEventArgs evt) {
            if (ModifyRetroactively) {
                SeasonInput.IsEnabled = false;
                SeasonInput.Text = "";
                YearTo = null;
                DescBlock1.Visibility = Visibility.Hidden;
                DescBlock2.Visibility = Visibility.Hidden;
            } else {
                SeasonInput.IsEnabled = true;
                SeasonInput.Text = $"{Utils.CurrentNextSeason}";
                DescBlock1.Visibility = QuestionBlock1.Visibility;
                DescBlock2.Visibility = QuestionBlock2.Visibility;
            }
        }

        private void ConfirmButton_Click(object sender, RoutedEventArgs evt) {
            DialogResult = true;
            Close();
        }
    }
}
