using MahApps.Metro.Controls;
using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;

namespace ZKuP
{
    /// <summary>
    /// Interaktionslogik für AusgegebeneParkausweise.xaml
    /// </summary>
    public partial class AusgegebeneParkausweise : MetroWindow
    {
        public AusgegebeneParkausweise()
        {
            InitializeComponent();
            this.DataContext = this;

            Query();
        }

        private async void Query()
        {
            await Task.Run(() =>
                {
                    var list = SQL.ReadSQL($"SELECT f.Name, GROUP_CONCAT(p.parkplatznr ORDER BY p.parkplatznr SEPARATOR ', ') AS Parkplaetze, p.AusgegebenDurch, p.AusgegebenTimestamp, p.TelVerantwortlicherFirma FROM {MainWindow.table}.firmen f LEFT JOIN {MainWindow.table}.parkplaetze p ON f.idFirmen = p.firma WHERE p.parkplatznr IS NOT NULL GROUP BY f.idFirmen, f.Name, p.AusgegebenDurch, p.AusgegebenTimestamp, p.TelVerantwortlicherFirma").Result;
                    Dispatcher.Invoke(() => dgAusgegebeneParkkarten.DataContext = list);
                });
        }

        private void Zuruecknehmen_Click(object sender, RoutedEventArgs e)
        {
            var parkplaetze = (dgAusgegebeneParkkarten.SelectedItem as DataRowView).Row.ItemArray[1].ToString().Replace(" ", "").Split(',');

            ContextMenu c = new ContextMenu();
            c.Items.Add(new MenuItem() { Header = "Alle" });
            (c.Items[0] as MenuItem).Click += ZuruecknehmenMenuItem_Click;


            foreach (var parkplatz in parkplaetze)
            {
                c.Items.Add(new MenuItem() { Header = $"Parkplatz Nr. {parkplatz}" });

                var x = c.Items[c.Items.Count - 1];
                (x as MenuItem).Click += ZuruecknehmenMenuItem_Click;
            }

            c.IsOpen = true;
        }

        private async void ZuruecknehmenMenuItem_Click(object sender, RoutedEventArgs e)
        {
            if ((sender as MenuItem).Header.ToString() == "Alle")
            {
                if (MessageBoxResult.Yes == MessageBox.Show($"Möchten Sie alle Parkkarten der Firma {(dgAusgegebeneParkkarten.SelectedItem as DataRowView).Row.ItemArray[0].ToString()} sicher zurücknehmen?", "Sicher zurücknehmen?", MessageBoxButton.YesNo, MessageBoxImage.Question))
                {
                    string orString = "";

                    foreach (var parkpl in (dgAusgegebeneParkkarten.SelectedItem as DataRowView).Row.ItemArray[1].ToString().Replace(" ", "").Split(','))
                    {
                        orString += $"parkplatznr = '{parkpl}' OR ";
                    }

                    await SQL.WriteSQL($"DELETE FROM {MainWindow.table}.parkplaetze WHERE {Helper.RemoveStringAtEndOfString(orString, " OR ")}");
                    Query();
                }
            }
            else
            {
                if (MessageBoxResult.Yes == MessageBox.Show($"Möchten Sie die Parkkarte Nr. {(sender as MenuItem).Header.ToString().Split(' ').Last()} sicher zurücknehmen?", "Sicher zurücknehmen?", MessageBoxButton.YesNo, MessageBoxImage.Question))
                {
                    await SQL.WriteSQL($"DELETE FROM {MainWindow.table}.parkplaetze WHERE parkplatznr = '{(sender as MenuItem).Header.ToString().Split(' ').Last()}'");
                    Query();
                }
            }
        }
    }
}
