using Microsoft.Win32;
using System;
using System.Windows;
using System.Windows.Input;
using System.Windows.Threading;
using bib_talk.Business;

namespace bib_talk
{
    public partial class MainWindow : Window
    {
        MainWindowManager mwManager;

        private DispatcherTimer _timer;
        public string loggedinUser;
        private bool isFirstLoad = true;
     
        public MainWindow()
        {
            InitializeComponent();
            InitializeTimer();
            LoadData();

            mwManager = new MainWindowManager(this);
        }

        public MainWindow(string user)
        {
            loggedinUser = user;
            InitializeComponent();
            InitializeTimer();
            LoadData();

            mwManager = new MainWindowManager(this, user);

			mwManager.LoadMessages();
        }

        private void InitializeTimer()
        {
            _timer = new DispatcherTimer
            {
                Interval = TimeSpan.FromSeconds(2)
            };
            _timer.Tick += (sender, e) => { mwManager.LoadMessages(); mwManager.LoadOnlineUsers(); };
            _timer.Start();
        }
        public void LoadData()
        {
            loggedinuser.Text = "Logged in as: " + loggedinUser;
        }

        private void CloseButton_Click(object sender, RoutedEventArgs e)
        {
            mwManager.LogoutUser();
            this.Close();
        }

        private void DraggableArea_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            if (e.ButtonState == MouseButtonState.Pressed)
            {
                DragMove();
            }
        }
      
        private async void messageBOX_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.Enter)
            {
                mwManager.SendMessage();
            }
        }

        private async void send_Click(object sender, RoutedEventArgs e)
        {
            mwManager.SendMessage();
        }

        private void ChatFenster_Click(object sender, RoutedEventArgs e)
        {
            if (popup.IsOpen = true)
            {
                popup.Focus();
            }
            else
            {
                popup.IsOpen = true;
            }

        }
        private void Button1_Click(object sender, RoutedEventArgs e)
        {
            MessageBox.Show("Button 1 wurde geklickt!");
            ClosePopup();
        }

        private void Button2_Click(object sender, RoutedEventArgs e)
        {
            MessageBox.Show("Button 2 wurde geklickt!");
            ClosePopup();
        }

        private void Button3_Click(object sender, RoutedEventArgs e)
        {
            MessageBox.Show("Button 3 wurde geklickt!");
            ClosePopup();
        }

        private void Popup_LostFocus(object sender, RoutedEventArgs e)
        {
            ClosePopup();
        }

        private void ClosePopup()
        {
            popup.IsOpen = false;
        }

        private async void uploadpbclick(object sender, RoutedEventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.Filter = "Image files (*.jpg, *.jpeg, *.png, *.gif) | *.jpg; *.jpeg; *.png; *.gif";
            if (openFileDialog.ShowDialog() == true)
            {
                string filePath = openFileDialog.FileName;
                await mwManager.UploadProfileImage(filePath);
            }
        }
    }
}