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 CreateVisitor.xaml
    /// </summary>
    public partial class CreateVisitor : MetroWindow
    {
        public CreateVisitor()
        {
            InitializeComponent();
        }

        private async void BtnAdd_Click(object sender, RoutedEventArgs e)
        {
            if (tbAnzahl_Begleiter.Text == "") tbAnzahl_Begleiter.Text = "0";

            if (string.IsNullOrWhiteSpace(tbName.Text))
                MessageBox.Show("Name eintragen!", "Fehler");
            else if (string.IsNullOrWhiteSpace(tbVerantwortlicher_MA.Text))
                MessageBox.Show("Verantwortlichen MA eintragen!", "Fehler");
            else if (string.IsNullOrWhiteSpace(tbTel_Besucher.Text))
                MessageBox.Show("Telefonnummer Besucher eintragen!", "Fehler");
            else if (!dpBesuchstag.SelectedDate.HasValue)
                MessageBox.Show("Besuchstag eintragen!", "Fehler");
            else if (string.IsNullOrWhiteSpace(tbGrundDesBesuchs.Text))
                MessageBox.Show("'Grund des Besuchs' eintragen!", "Fehler");
            else if (string.IsNullOrWhiteSpace(tbOertlichkeit.Text))
                MessageBox.Show("'Örtlichkeit' eintragen!", "Fehler");
            else if (string.IsNullOrWhiteSpace(tbAnsprechp_Intern.Text))
                MessageBox.Show("'Ansprechpartner intern' eintragen!", "Fehler");
            else if (string.IsNullOrWhiteSpace(tbTel_Ansprechp.Text))
                MessageBox.Show("'Telefonnr. Ansprechpartner intern' eintragen!", "Fehler");
            else
            {
                if (!System.Text.RegularExpressions.Regex.IsMatch(tbAnzahl_Begleiter.Text, "^[0-9]*$"))
                    MessageBox.Show(this, "Anzahl Begleiter darf nur Zahlen enthalten", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
                else
                    await SQL.WriteSQL("REPLACE INTO besucher (Name,Verantwortlicher_MA,Tel_Nr_Besucher,Anzahl_Begleitpersonen,Besuchstag,Grund_des_Besuchs,Ansprechpartner_Intern,Tel_Nr_Ansprechpartner_Intern,Oertlichkeit,Ersteller) VALUES " +
                                                            $"('{tbName.Text}','{tbVerantwortlicher_MA.Text}','{tbTel_Besucher.Text}','{tbAnzahl_Begleiter.Text}','{dpBesuchstag.SelectedDate.Value.ToString("yyyy-MM-dd")}','{tbGrundDesBesuchs.Text}','{tbAnsprechp_Intern.Text}','{tbTel_Ansprechp.Text}','{tbOertlichkeit.Text}','{Environment.UserName}')");
            }

            if (await SQL.RowExists("besucher", "Name", tbName.Text))
            {
                MessageBox.Show("Besucher erfolgreich erstellt", "Erfolg!", MessageBoxButton.OK, MessageBoxImage.Information);

                tbName.Text = "";
                tbVerantwortlicher_MA.Text = "";
                tbTel_Besucher.Text = "";
                tbAnzahl_Begleiter.Text = "";
                tbAnsprechp_Intern.Text = "";
                tbTel_Ansprechp.Text = "";
                dpBesuchstag.SelectedDate = null;
                tbGrundDesBesuchs.Text = "";
                tbOertlichkeit.Text = "";
            }
            else MessageBox.Show("Fehler beim erstellen des Besuchers", "Fehler!", MessageBoxButton.OK, MessageBoxImage.Warning);
        }
        



        private void TbAnzahl_Begleiter_PreviewKeyDown(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.Tab)
            {
                dpBesuchstag.IsDropDownOpen = true;
                dpBesuchstag.Focus();
            }

            if (e.Key != Key.OemComma)
            {
                e.Handled = false;
                return;
            }
            else
            {
                MessageBox.Show(this, "Komma (',') ist ein nicht erlaubtes Zeichen", "Achtung", MessageBoxButton.OK, MessageBoxImage.Information);
                e.Handled = true;
            }
            return;
        }
        private void DpBesuchstag_PreviewKeyDown(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.Tab)
            {
                dpBesuchstag.IsDropDownOpen = false;
                dpBesuchstag.Focus();
            }
        }

        private void TextBoxes_PreviewKeyDown(object sender, KeyEventArgs e)
        {
            if (e.Key != Key.OemComma)
            {
                e.Handled = false;
                return;
            }
            {
                MessageBox.Show(this, "Komma (',') ist ein nicht erlaubtes Zeichen", "Achtung", MessageBoxButton.OK, MessageBoxImage.Information);
                e.Handled = true;
            }
            return;
        }


        private void tbAnzahl_Begleiter_PreviewTextInput(object sender, TextCompositionEventArgs e)
        {
            if ((sender as TextBox).Text.Length >= 2) e.Handled = true;
            if (!System.Text.RegularExpressions.Regex.IsMatch(e.Text, "^[0-9]*$")) e.Handled = true;
        }

        private void Textboxes_PreviewExecuted(object sender, ExecutedRoutedEventArgs e)
        {
            if (e.Command == ApplicationCommands.Paste)
            {
                e.Handled = true;
            }
        }

        private void btnMyVisitors_Click(object sender, RoutedEventArgs e)
        {
            CreateVisitor_List cVL = new CreateVisitor_List();
            cVL.Owner = this;
            cVL.ShowDialog();
        }

        private void dpBesuchstag_DateValidationError(object sender, DatePickerDateValidationErrorEventArgs e)
        {
            MessageBox.Show("Kein gültiges Datumsformat in Feld 'Besuchstag'", "Fehler", MessageBoxButton.OK, MessageBoxImage.Warning);
        }



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

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