using System;
using System.Windows.Forms;

namespace PolyTraderSharp.Ui
{
    /// <summary>
    /// Sicherheitsabfrage vor dem Herunterfahren. Die Beenden-Schaltfläche ist erst nach Ablauf eines
    /// kurzen Timers klickbar (verhindert versehentliches Beenden, z.B. während auf eine API-Antwort
    /// gewartet wird); „Abbrechen" ist jederzeit möglich. Bei Bestätigung liefert der Dialog
    /// <see cref="DialogResult.OK"/> – das eigentliche geordnete Herunterfahren übernimmt der Aufrufer.
    /// </summary>
    public partial class ShutdownConfirmDialog : Form
    {
        private int _remaining;

        /// <param name="delaySeconds">Sekunden, bis „Beenden" freigeschaltet wird (Standard 10).</param>
        public ShutdownConfirmDialog(int delaySeconds = 10)
        {
            InitializeComponent();
            _remaining = Math.Max(0, delaySeconds);
            UpdateCountdownUi();
        }

        protected override void OnShown(EventArgs e)
        {
            base.OnShown(e);
            if (_remaining <= 0)
            {
                EnableConfirm();
                return;
            }
            countdownTimer.Start();
        }

        private void CountdownTimer_Tick(object? sender, EventArgs e)
        {
            _remaining--;
            if (_remaining <= 0)
            {
                countdownTimer.Stop();
                EnableConfirm();
                return;
            }
            UpdateCountdownUi();
        }

        private void UpdateCountdownUi()
        {
            lblCountdown.Text = $"Beenden möglich in {_remaining} s …";
            btnConfirm.Text = $"Beenden ({_remaining} s)";
        }

        private void EnableConfirm()
        {
            btnConfirm.Enabled = true;
            btnConfirm.Text = "Jetzt beenden";
            lblCountdown.Text = "PolyTrader kann jetzt beendet werden.";
            lblCountdown.ForeColor = System.Drawing.Color.ForestGreen;
            btnConfirm.Focus();
        }
    }
}
