using MahApps.Metro.Controls;
using System;
using System.Collections.Generic;
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 GrantParkausweis.xaml
    /// </summary>
    public partial class GrantParkausweis : MetroWindow
    {
        public GrantParkausweis()
        {
            InitializeComponent();

            var list = SQL.ReadSQL($"SELECT * FROM {MainWindow.table}.parkausweise WHERE Genehmigt = '0'").Result;
            dgGrant.DataContext = list;
        }

        private async void btnGrant_Click(object sender, RoutedEventArgs e)
        {
            var arr = ((sender as Button).DataContext as System.Data.DataRowView).Row.ItemArray;

            if (MessageBox.Show(this, $"Möchten Sie den Parkausweis für {arr[1].ToString()} {arr[2].ToString()} sicher genehmigen?", "Sicher?", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.Yes) == MessageBoxResult.Yes)
            {
                await SQL.WriteSQL($"UPDATE {MainWindow.table}.parkausweise SET Genehmigt = '1', Genehmiger = '{Environment.UserName}' WHERE idparkausweise = '{(int)arr[0]}'");

                SendMail((int)arr[0], $"{arr[1].ToString()} {arr[2].ToString()}", arr[3].ToString(), arr[4].ToString(), arr[7].ToString(), true, Convert.ToInt16(arr[19]));

                var list = SQL.ReadSQL($"SELECT * FROM {MainWindow.table}.parkausweise WHERE Genehmigt = '0'").Result;
                dgGrant.DataContext = list;
            }
        }

        private async void btnDecline_Click(object sender, RoutedEventArgs e)
        {
            var arr = ((sender as Button).DataContext as System.Data.DataRowView).Row.ItemArray;

            if (MessageBox.Show(this, $"Möchten Sie den Parkausweis für {arr[1].ToString()} {arr[2].ToString()} sicher ablehnen?\n\nDer Antrag wird dadurch gelöscht!", "Sicher?", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.Yes) == MessageBoxResult.Yes)
            {
                await SQL.WriteSQL($"DELETE FROM {MainWindow.table}.parkausweise WHERE idparkausweise = '{(int)arr[0]}'");

                SendMail((int)arr[0], $"{arr[1].ToString()} {arr[2].ToString()}", "", arr[4].ToString(), "", false);

                var list = SQL.ReadSQL($"SELECT * FROM {MainWindow.table}.parkausweise WHERE Genehmigt = '0'").Result;
                dgGrant.DataContext = list;
            }
        }



        public void SendMail(int id, string Name, string Kennzeichen, string Email, string Firma, bool Genehmigt, int isKrad = 0)
        {
            var user = System.Text.RegularExpressions.Regex.Split(Environment.UserName, @"(?<!^)(?=[A-Z])");
            var krad = isKrad == 1 ? "Kraftrad-" : "";

            switch (Genehmigt)
            {
                case true:
                    System.Diagnostics.Process.Start($"mailto:{Email}?subject=Neue Parkkarte&body=" +
                        "Guten Tag,%0D%0A%0D%0A" +
                        $"eine neue {krad}Parkkarte wurde genehmigt%0D%0A%0D%0A" +
                        $"Parkausweis Nr.: {id}%0D%0A" +
                        $"Name: {Name}%0D%0A" +
                        $"Kennzeichen: {Kennzeichen}%0D%0A" +
                        $"E-Mail: {Email}%0D%0A" +
                        $"Firma: {Firma}%0D%0A%0D%0A" +
                        $"%0D%0A%0D%0A" +
                        $"Parkkarten können in ca. 5 Tagen im Gebäude G Raum G0006/7 abgeholt werden.%0D%0A" +
                        "Mit freundlichen Grüßen%0D%0A" +
                        $"Ihr Anlagenmanagement");
                    break;
                case false:
                    System.Diagnostics.Process.Start($"mailto:{Email}?subject=Parkkarte abgelehnt&body=" +
                        $"Guten Tag {Name},%0D%0A%0D%0A" +
                        "Ihr Antrag auf eine Parkkarte wurde abgelehnt%0D%0A%0D%0A" +
                        "Mit freundlichen Grüßen%0D%0A" +
                        $"Ihr Anlagenmanagement");
                    break;
            }
        }



        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            Helper.CheckWindowIsInScreenSpace(this);
        }

        private void Window_LocationChanged(object sender, EventArgs e)
        {
            Helper.CheckWindowIsInScreenSpace(this);
        }
    }

    //public class Grant
    //{
    //    int idparkausweise;
    //    string MA_Vorname;
    //    string MA_Name;
    //    string Kennzeichen;
    //    string Email;
    //    string Telefon;
    //    string Abteilung;
    //    string Firma;
    //    string Adresse;
    //    string PLZ;
    //    string Vorgesetzter;
    //    int Schicht;
    //    int isKrad;


    //    public static List<Grant> DataTableToGrant(System.Data.DataTable dataTable)
    //    {
    //        List<Grant> x = new List<Grant>();

    //        foreach (System.Data.DataRow dr in dataTable.Rows)
    //        {
    //            x.Add(new Grant()
    //            {
    //                idparkausweise = (int)dr[0],
    //                MA_Vorname = dr[1].ToString(),
    //                MA_Name = dr[2].ToString(),
    //                Kennzeichen = dr[3].ToString(),
    //                Email = dr[4].ToString(),
    //                Telefon = dr[5].ToString(),
    //                Abteilung = dr[6].ToString(),
    //                Firma = dr[7].ToString(),
    //                Adresse = dr[8].ToString(),
    //                PLZ = dr[9].ToString(),
    //                Vorgesetzter = dr[10].ToString(),
    //                Schicht = (int)dr[11],
    //                isKrad = (int)dr[12]
    //            });
    //        }

    //        return x;
    //    }
    //}
}
