3 Schichten Model
3 Schichten Model umgesetzt
This commit is contained in:
		@@ -2,7 +2,7 @@
 | 
			
		||||
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 | 
			
		||||
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 | 
			
		||||
             xmlns:local="clr-namespace:bib_talk"
 | 
			
		||||
             StartupUri="Login.xaml">
 | 
			
		||||
             StartupUri="UI/Login.xaml">
 | 
			
		||||
    <Application.Resources>
 | 
			
		||||
         
 | 
			
		||||
    </Application.Resources>
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								bibtalk/bib-talk/Business/readme.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								bibtalk/bib-talk/Business/readme.txt
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,2 @@
 | 
			
		||||
Alle Business Klassen sind die [name].xaml.cs Dateien.
 | 
			
		||||
Diese sind NICHT in diesem Ordner, weil wir sie von der [name].xaml Datei nicht trennen können.
 | 
			
		||||
| 
		 Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB  | 
| 
		 Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB  | 
| 
		 Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB  | 
@@ -1,238 +0,0 @@
 | 
			
		||||
using Newtonsoft.Json;
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Globalization;
 | 
			
		||||
using System.Net.Http;
 | 
			
		||||
using System.Text;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
using System.Windows;
 | 
			
		||||
using System.Windows.Controls;
 | 
			
		||||
using System.Windows.Data;
 | 
			
		||||
using System.Windows.Input;
 | 
			
		||||
using System.Windows.Media;
 | 
			
		||||
using System.Windows.Threading;
 | 
			
		||||
 | 
			
		||||
namespace bib_talk
 | 
			
		||||
{
 | 
			
		||||
    public partial class MainWindow : Window
 | 
			
		||||
    {
 | 
			
		||||
        private DispatcherTimer _timer;
 | 
			
		||||
        public string loggedinUser;
 | 
			
		||||
        private bool isFirstLoad = true;
 | 
			
		||||
 | 
			
		||||
        public MainWindow()
 | 
			
		||||
        {
 | 
			
		||||
            InitializeComponent();
 | 
			
		||||
            InitializeTimer();
 | 
			
		||||
            LoadData();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public MainWindow(string user)
 | 
			
		||||
        {
 | 
			
		||||
            loggedinUser = user;
 | 
			
		||||
            InitializeComponent();
 | 
			
		||||
            InitializeTimer();
 | 
			
		||||
            LoadData();
 | 
			
		||||
            LoadMessages();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void InitializeTimer()
 | 
			
		||||
        {
 | 
			
		||||
            _timer = new DispatcherTimer
 | 
			
		||||
            {
 | 
			
		||||
                Interval = TimeSpan.FromSeconds(2)
 | 
			
		||||
            };
 | 
			
		||||
            _timer.Tick += (sender, e) => { LoadMessages(); LoadOnlineUsers(); };
 | 
			
		||||
            _timer.Start();
 | 
			
		||||
        }
 | 
			
		||||
        public void LoadData()
 | 
			
		||||
        {
 | 
			
		||||
            loggedinuser.Text = "Logged in as: " + loggedinUser;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void CloseButton_Click(object sender, RoutedEventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            LogoutUser();
 | 
			
		||||
            this.Close();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void DraggableArea_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            if (e.ButtonState == MouseButtonState.Pressed)
 | 
			
		||||
            {
 | 
			
		||||
                DragMove();
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private async void LoadMessages()
 | 
			
		||||
        {
 | 
			
		||||
            using (var client = new HttpClient())
 | 
			
		||||
            {
 | 
			
		||||
                var response = await client.GetAsync("http://daddypig.dns.navy:5114/api/messages/get");
 | 
			
		||||
                if (response.IsSuccessStatusCode)
 | 
			
		||||
                {
 | 
			
		||||
                    var responseContent = await response.Content.ReadAsStringAsync();
 | 
			
		||||
                    var messages = JsonConvert.DeserializeObject<List<Message>>(responseContent);
 | 
			
		||||
                    chatlistbox.ItemsSource = messages;
 | 
			
		||||
                    if (chatlistbox.Items.Count > 0)
 | 
			
		||||
                    {
 | 
			
		||||
                        var lastItem = chatlistbox.Items[chatlistbox.Items.Count - 1];
 | 
			
		||||
                        chatlistbox.ScrollIntoView(lastItem);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        private async void LogoutUser()
 | 
			
		||||
        {
 | 
			
		||||
            using (var client = new HttpClient())
 | 
			
		||||
            {
 | 
			
		||||
                var logoutData = new { Username = loggedinUser, Password = "", Email = "", Birthday = "", IsOnline = "" };
 | 
			
		||||
                var json = JsonConvert.SerializeObject(logoutData);
 | 
			
		||||
                var content = new StringContent(json, Encoding.UTF8, "application/json");
 | 
			
		||||
 | 
			
		||||
                var response = await client.PostAsync("http://daddypig.dns.navy:5114/api/users/logout", content);
 | 
			
		||||
 | 
			
		||||
                var responseContent = await response.Content.ReadAsStringAsync();
 | 
			
		||||
 | 
			
		||||
                this.Close();
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        private async void LoadOnlineUsers()
 | 
			
		||||
        {
 | 
			
		||||
            using (var client = new HttpClient())
 | 
			
		||||
            {
 | 
			
		||||
                var response = await client.GetAsync("http://daddypig.dns.navy:5114/api/users/online-users");
 | 
			
		||||
                if (response.IsSuccessStatusCode)
 | 
			
		||||
                {
 | 
			
		||||
                    var responseContent = await response.Content.ReadAsStringAsync();
 | 
			
		||||
                    var onlineUsers = JsonConvert.DeserializeObject<List<User>>(responseContent);
 | 
			
		||||
                    onlineUsersListBox.ItemsSource = onlineUsers;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private async void messageBOX_KeyDown(object sender, KeyEventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            if (e.Key == Key.Enter)
 | 
			
		||||
            {
 | 
			
		||||
                if (!string.IsNullOrEmpty(messageBOX.Text))
 | 
			
		||||
                {
 | 
			
		||||
                    var message = new MessageDto
 | 
			
		||||
                    {
 | 
			
		||||
                        Username = loggedinUser,
 | 
			
		||||
                        Message = messageBOX.Text,
 | 
			
		||||
                        Timestamp = DateTime.Now,
 | 
			
		||||
                    };
 | 
			
		||||
 | 
			
		||||
                    using (var client = new HttpClient())
 | 
			
		||||
                    {
 | 
			
		||||
                        var json = JsonConvert.SerializeObject(message);
 | 
			
		||||
                        var content = new StringContent(json, Encoding.UTF8, "application/json");
 | 
			
		||||
                        var response = await client.PostAsync("http://daddypig.dns.navy:5114/api/messages/send", content);
 | 
			
		||||
 | 
			
		||||
                        if (response.IsSuccessStatusCode)
 | 
			
		||||
                        {
 | 
			
		||||
                            messageBOX.Clear();
 | 
			
		||||
                            LoadMessages(); // Reload messages after sending
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        private async void send_Click(object sender, RoutedEventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            if (!string.IsNullOrEmpty(messageBOX.Text))
 | 
			
		||||
            {
 | 
			
		||||
                var message = new MessageDto
 | 
			
		||||
                {
 | 
			
		||||
                    Username = loggedinUser,
 | 
			
		||||
                    Message = messageBOX.Text,
 | 
			
		||||
                    Timestamp = DateTime.Now,
 | 
			
		||||
                };
 | 
			
		||||
 | 
			
		||||
                using (var client = new HttpClient())
 | 
			
		||||
                {
 | 
			
		||||
                    var json = JsonConvert.SerializeObject(message);
 | 
			
		||||
                    var content = new StringContent(json, Encoding.UTF8, "application/json");
 | 
			
		||||
                    var response = await client.PostAsync("http://daddypig.dns.navy:5114/api/messages/send", content);
 | 
			
		||||
 | 
			
		||||
                    if (response.IsSuccessStatusCode)
 | 
			
		||||
                    {
 | 
			
		||||
                        messageBOX.Clear();
 | 
			
		||||
                        LoadMessages(); // Reload messages after sending
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public class Message
 | 
			
		||||
        {
 | 
			
		||||
            public int Id { get; set; }
 | 
			
		||||
            public string Username { get; set; }
 | 
			
		||||
            public string Text { get; set; }
 | 
			
		||||
            public DateTime Timestamp { get; set; }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public class MessageDto
 | 
			
		||||
        {
 | 
			
		||||
            public string Username { get; set; }
 | 
			
		||||
            public string Message { get; set; }
 | 
			
		||||
            public DateTime Timestamp { get; set; }
 | 
			
		||||
        }
 | 
			
		||||
        public class User
 | 
			
		||||
        {
 | 
			
		||||
            public int Id { get; set; }
 | 
			
		||||
            public string Username { get; set; }
 | 
			
		||||
            public string Password { get; set; }
 | 
			
		||||
            public string Email { get; set; }
 | 
			
		||||
            public string Birthday { get; set; }
 | 
			
		||||
            public string IsOnline { get; set; }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        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 void onlineUsersListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										51
									
								
								bibtalk/bib-talk/Repository/LoginDatabase.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								bibtalk/bib-talk/Repository/LoginDatabase.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,51 @@
 | 
			
		||||
using Newtonsoft.Json;
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Net.Http;
 | 
			
		||||
using System.Text;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
using System.Windows.Controls;
 | 
			
		||||
using System.Windows;
 | 
			
		||||
 | 
			
		||||
namespace bib_talk.Repository
 | 
			
		||||
{
 | 
			
		||||
    public class LoginDatabase
 | 
			
		||||
    {
 | 
			
		||||
        Login loginWindow;
 | 
			
		||||
 | 
			
		||||
        public LoginDatabase(Login loginWindow)
 | 
			
		||||
        {
 | 
			
		||||
            this.loginWindow = loginWindow;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public async Task LoginServer()
 | 
			
		||||
        {
 | 
			
		||||
            string username = loginWindow.usernbox.Text;
 | 
			
		||||
            string password = loginWindow.passwordbox.Password;
 | 
			
		||||
            var loginData = new { Username = username, Password = password, Email = "", Birthday = "", IsOnline = "" };
 | 
			
		||||
            string json = JsonConvert.SerializeObject(loginData);
 | 
			
		||||
 | 
			
		||||
            using (var client = new HttpClient())
 | 
			
		||||
            {
 | 
			
		||||
                var content = new StringContent(json, Encoding.UTF8, "application/json");
 | 
			
		||||
                var response = await client.PostAsync("http://daddypig.dns.navy:5114/api/users/login", content);
 | 
			
		||||
 | 
			
		||||
                if (response.IsSuccessStatusCode)
 | 
			
		||||
                {
 | 
			
		||||
                    var responseContent = await response.Content.ReadAsStringAsync();
 | 
			
		||||
                    var responseData = JsonConvert.DeserializeObject<dynamic>(responseContent);
 | 
			
		||||
                    string loggedInUsername = responseData.username;
 | 
			
		||||
                    MainWindow mainWindow = new MainWindow(loggedInUsername);
 | 
			
		||||
                    mainWindow.Show();
 | 
			
		||||
                    loginWindow.Close();
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    var responseContent = await response.Content.ReadAsStringAsync();
 | 
			
		||||
                    MessageBox.Show($"Login failed: {responseContent}");
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										96
									
								
								bibtalk/bib-talk/Repository/MainWindowDatabase.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										96
									
								
								bibtalk/bib-talk/Repository/MainWindowDatabase.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,96 @@
 | 
			
		||||
using Newtonsoft.Json;
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Net.Http;
 | 
			
		||||
using System.Text;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
using System.Windows;
 | 
			
		||||
 | 
			
		||||
namespace bib_talk.Repository
 | 
			
		||||
{
 | 
			
		||||
    public class MainWindowDatabase
 | 
			
		||||
    {
 | 
			
		||||
        MainWindow mainWindow;
 | 
			
		||||
 | 
			
		||||
        public MainWindowDatabase(MainWindow mainWindow) 
 | 
			
		||||
        {
 | 
			
		||||
            this.mainWindow = mainWindow;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public async void SendMessage()
 | 
			
		||||
        {
 | 
			
		||||
            if (!string.IsNullOrEmpty(mainWindow.messageBOX.Text))
 | 
			
		||||
            {
 | 
			
		||||
                var message = new MessageDto
 | 
			
		||||
                {
 | 
			
		||||
                    Username = mainWindow.loggedinUser,
 | 
			
		||||
                    Message = mainWindow.messageBOX.Text,
 | 
			
		||||
                    Timestamp = DateTime.Now,
 | 
			
		||||
                };
 | 
			
		||||
 | 
			
		||||
                using (var client = new HttpClient())
 | 
			
		||||
                {
 | 
			
		||||
                    var json = JsonConvert.SerializeObject(message);
 | 
			
		||||
                    var content = new StringContent(json, Encoding.UTF8, "application/json");
 | 
			
		||||
                    var response = await client.PostAsync("http://daddypig.dns.navy:5114/api/messages/send", content);
 | 
			
		||||
 | 
			
		||||
                    if (response.IsSuccessStatusCode)
 | 
			
		||||
                    {
 | 
			
		||||
                        mainWindow.messageBOX.Clear();
 | 
			
		||||
                        LoadMessages(); // Reload messages after sending
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public async void LoadMessages()
 | 
			
		||||
        {
 | 
			
		||||
            using (var client = new HttpClient())
 | 
			
		||||
            {
 | 
			
		||||
                var response = await client.GetAsync("http://daddypig.dns.navy:5114/api/messages/get");
 | 
			
		||||
                if (response.IsSuccessStatusCode)
 | 
			
		||||
                {
 | 
			
		||||
                    var responseContent = await response.Content.ReadAsStringAsync();
 | 
			
		||||
                    var messages = JsonConvert.DeserializeObject<List<Message>>(responseContent);
 | 
			
		||||
                    mainWindow.chatlistbox.ItemsSource = messages;
 | 
			
		||||
                    if (mainWindow.chatlistbox.Items.Count > 0)
 | 
			
		||||
                    {
 | 
			
		||||
                        var lastItem = mainWindow.chatlistbox.Items[mainWindow.chatlistbox.Items.Count - 1];
 | 
			
		||||
                        mainWindow.chatlistbox.ScrollIntoView(lastItem);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public async void LoadOnlineUsers()
 | 
			
		||||
        {
 | 
			
		||||
            using (var client = new HttpClient())
 | 
			
		||||
            {
 | 
			
		||||
                var response = await client.GetAsync("http://daddypig.dns.navy:5114/api/users/online-users");
 | 
			
		||||
                if (response.IsSuccessStatusCode)
 | 
			
		||||
                {
 | 
			
		||||
                    var responseContent = await response.Content.ReadAsStringAsync();
 | 
			
		||||
                    var onlineUsers = JsonConvert.DeserializeObject<List<User>>(responseContent);
 | 
			
		||||
                    mainWindow.onlineUsersListBox.ItemsSource = onlineUsers;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public async void LogoutUser()
 | 
			
		||||
        {
 | 
			
		||||
            using (var client = new HttpClient())
 | 
			
		||||
            {
 | 
			
		||||
                var logoutData = new { Username = mainWindow.loggedinUser, Password = "", Email = "", Birthday = "", IsOnline = "" };
 | 
			
		||||
                var json = JsonConvert.SerializeObject(logoutData);
 | 
			
		||||
                var content = new StringContent(json, Encoding.UTF8, "application/json");
 | 
			
		||||
 | 
			
		||||
                var response = await client.PostAsync("http://daddypig.dns.navy:5114/api/users/logout", content);
 | 
			
		||||
 | 
			
		||||
                var responseContent = await response.Content.ReadAsStringAsync();
 | 
			
		||||
 | 
			
		||||
                mainWindow.Close();
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										47
									
								
								bibtalk/bib-talk/Repository/RegisterDatabase.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								bibtalk/bib-talk/Repository/RegisterDatabase.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,47 @@
 | 
			
		||||
using Newtonsoft.Json;
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Net.Http;
 | 
			
		||||
using System.Text;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
using System.Windows.Controls;
 | 
			
		||||
using System.Windows;
 | 
			
		||||
 | 
			
		||||
namespace bib_talk.Repository
 | 
			
		||||
{
 | 
			
		||||
    public class RegisterDatabase
 | 
			
		||||
    {
 | 
			
		||||
        RegisterWindow registerWindow;
 | 
			
		||||
 | 
			
		||||
        public RegisterDatabase(RegisterWindow registerWindow)
 | 
			
		||||
        {
 | 
			
		||||
            this.registerWindow = registerWindow;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public async Task RegisterServer()
 | 
			
		||||
        {
 | 
			
		||||
            string username = registerWindow.usernbox.Text;
 | 
			
		||||
            string password = registerWindow.passwordbox.Password;
 | 
			
		||||
            string email = registerWindow.emailbox.Text;
 | 
			
		||||
            string birthday = $"{registerWindow.bday1.Text}.{registerWindow.bday2.Text}.{registerWindow.bday3.Text}";
 | 
			
		||||
            var newUser = new { Username = username, Password = password, Email = email, Birthday = birthday, IsOnline = "" };
 | 
			
		||||
            string json = JsonConvert.SerializeObject(newUser);
 | 
			
		||||
 | 
			
		||||
            using (var client = new HttpClient())
 | 
			
		||||
            {
 | 
			
		||||
                var content = new StringContent(json, Encoding.UTF8, "application/json");
 | 
			
		||||
                var response = await client.PostAsync("http://daddypig.dns.navy:5114/api/users/register", content);
 | 
			
		||||
 | 
			
		||||
                if (response.IsSuccessStatusCode)
 | 
			
		||||
                {
 | 
			
		||||
                    MessageBox.Show("Registrierung erfolgreich.");
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    MessageBox.Show("Registrierung fehlgeschlagen. " + response);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -5,17 +5,23 @@ using System.Threading.Tasks;
 | 
			
		||||
using System.Windows.Input;
 | 
			
		||||
using System.Windows.Media;
 | 
			
		||||
using System.Windows;
 | 
			
		||||
using bib_talk.Repository;
 | 
			
		||||
 | 
			
		||||
namespace bib_talk
 | 
			
		||||
{
 | 
			
		||||
    public partial class Login : Window
 | 
			
		||||
    {
 | 
			
		||||
        LoginDatabase loginDatabase;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        // Field to store logged in user
 | 
			
		||||
        public static string loggedInUser;
 | 
			
		||||
 | 
			
		||||
        public Login()
 | 
			
		||||
        {
 | 
			
		||||
            InitializeComponent();
 | 
			
		||||
 | 
			
		||||
            loginDatabase = new LoginDatabase(this);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void DraggableArea_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
 | 
			
		||||
@@ -38,11 +44,12 @@ namespace bib_talk
 | 
			
		||||
            this.Close();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void WeiterButton_Click(object sender, RoutedEventArgs e)
 | 
			
		||||
        private async void WeiterButton_Click(object sender, RoutedEventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            if (usernbox.Text != "" && passwordbox.Password != "")
 | 
			
		||||
            {
 | 
			
		||||
                LoginServer();
 | 
			
		||||
 | 
			
		||||
                await loginDatabase.LoginServer();
 | 
			
		||||
               
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
@@ -69,35 +76,5 @@ namespace bib_talk
 | 
			
		||||
            register.Show();
 | 
			
		||||
            this.Close();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public async Task LoginServer()
 | 
			
		||||
        {
 | 
			
		||||
            string username = usernbox.Text;
 | 
			
		||||
            string password = passwordbox.Password;
 | 
			
		||||
            var loginData = new { Username = username, Password = password, Email = "", Birthday = "", IsOnline = ""};
 | 
			
		||||
            string json = JsonConvert.SerializeObject(loginData);
 | 
			
		||||
 | 
			
		||||
            using (var client = new HttpClient())
 | 
			
		||||
            {
 | 
			
		||||
                var content = new StringContent(json, Encoding.UTF8, "application/json");
 | 
			
		||||
                var response = await client.PostAsync("http://daddypig.dns.navy:5114/api/users/login", content);
 | 
			
		||||
 | 
			
		||||
                if (response.IsSuccessStatusCode)
 | 
			
		||||
                {
 | 
			
		||||
                    var responseContent = await response.Content.ReadAsStringAsync();
 | 
			
		||||
                    var responseData = JsonConvert.DeserializeObject<dynamic>(responseContent);
 | 
			
		||||
                    string loggedInUsername = responseData.username;
 | 
			
		||||
                    MainWindow mainWindow = new MainWindow(loggedInUsername);
 | 
			
		||||
                    mainWindow.Show();
 | 
			
		||||
                    this.Close();
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    var responseContent = await response.Content.ReadAsStringAsync();
 | 
			
		||||
                    MessageBox.Show($"Login failed: {responseContent}");
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										157
									
								
								bibtalk/bib-talk/UI/MainWindow.xaml.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										157
									
								
								bibtalk/bib-talk/UI/MainWindow.xaml.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,157 @@
 | 
			
		||||
using bib_talk.Repository;
 | 
			
		||||
using Newtonsoft.Json;
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Globalization;
 | 
			
		||||
using System.Net.Http;
 | 
			
		||||
using System.Text;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
using System.Windows;
 | 
			
		||||
using System.Windows.Controls;
 | 
			
		||||
using System.Windows.Data;
 | 
			
		||||
using System.Windows.Input;
 | 
			
		||||
using System.Windows.Media;
 | 
			
		||||
using System.Windows.Threading;
 | 
			
		||||
 | 
			
		||||
namespace bib_talk
 | 
			
		||||
{
 | 
			
		||||
    public partial class MainWindow : Window
 | 
			
		||||
    {
 | 
			
		||||
        MainWindowDatabase database;
 | 
			
		||||
 | 
			
		||||
        private DispatcherTimer _timer;
 | 
			
		||||
        public string loggedinUser;
 | 
			
		||||
        private bool isFirstLoad = true;
 | 
			
		||||
 | 
			
		||||
        public MainWindow()
 | 
			
		||||
        {
 | 
			
		||||
            InitializeComponent();
 | 
			
		||||
            InitializeTimer();
 | 
			
		||||
            LoadData();
 | 
			
		||||
 | 
			
		||||
            database = new MainWindowDatabase(this);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public MainWindow(string user)
 | 
			
		||||
        {
 | 
			
		||||
            loggedinUser = user;
 | 
			
		||||
            InitializeComponent();
 | 
			
		||||
            InitializeTimer();
 | 
			
		||||
            LoadData();
 | 
			
		||||
 | 
			
		||||
            database = new MainWindowDatabase(this);
 | 
			
		||||
 | 
			
		||||
            database.LoadMessages();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void InitializeTimer()
 | 
			
		||||
        {
 | 
			
		||||
            _timer = new DispatcherTimer
 | 
			
		||||
            {
 | 
			
		||||
                Interval = TimeSpan.FromSeconds(2)
 | 
			
		||||
            };
 | 
			
		||||
            _timer.Tick += (sender, e) => { database.LoadMessages(); database.LoadOnlineUsers(); };
 | 
			
		||||
            _timer.Start();
 | 
			
		||||
        }
 | 
			
		||||
        public void LoadData()
 | 
			
		||||
        {
 | 
			
		||||
            loggedinuser.Text = "Logged in as: " + loggedinUser;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void CloseButton_Click(object sender, RoutedEventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            database.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)
 | 
			
		||||
            {
 | 
			
		||||
                database.SendMessage();
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private async void send_Click(object sender, RoutedEventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            database.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 void onlineUsersListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public class Message
 | 
			
		||||
    {
 | 
			
		||||
        public int Id { get; set; }
 | 
			
		||||
        public string Username { get; set; }
 | 
			
		||||
        public string Text { get; set; }
 | 
			
		||||
        public DateTime Timestamp { get; set; }
 | 
			
		||||
    }
 | 
			
		||||
    public class MessageDto
 | 
			
		||||
    {
 | 
			
		||||
        public string Username { get; set; }
 | 
			
		||||
        public string Message { get; set; }
 | 
			
		||||
        public DateTime Timestamp { get; set; }
 | 
			
		||||
    }
 | 
			
		||||
    public class User
 | 
			
		||||
    {
 | 
			
		||||
        public int Id { get; set; }
 | 
			
		||||
        public string Username { get; set; }
 | 
			
		||||
        public string Password { get; set; }
 | 
			
		||||
        public string Email { get; set; }
 | 
			
		||||
        public string Birthday { get; set; }
 | 
			
		||||
        public string IsOnline { get; set; }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,4 +1,5 @@
 | 
			
		||||
using Newtonsoft.Json;
 | 
			
		||||
using bib_talk.Repository;
 | 
			
		||||
using Newtonsoft.Json;
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Diagnostics;
 | 
			
		||||
@@ -52,13 +53,15 @@ namespace bib_talk
 | 
			
		||||
            this.Close();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void WeiterButton_Click(object sender, RoutedEventArgs e)
 | 
			
		||||
        private async void WeiterButton_Click(object sender, RoutedEventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            if (checkboxAGB.IsChecked == true)
 | 
			
		||||
            {
 | 
			
		||||
                if (ValidateRegistration())
 | 
			
		||||
                {
 | 
			
		||||
                    RegisterServer();
 | 
			
		||||
                    RegisterDatabase registerDatabase = new RegisterDatabase(this);
 | 
			
		||||
 | 
			
		||||
                    await registerDatabase.RegisterServer();
 | 
			
		||||
                    Login login = new Login();
 | 
			
		||||
                    login.Show();
 | 
			
		||||
                    this.Close();
 | 
			
		||||
@@ -125,29 +128,6 @@ namespace bib_talk
 | 
			
		||||
            return true;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public async Task RegisterServer()
 | 
			
		||||
        {
 | 
			
		||||
            string username = usernbox.Text;
 | 
			
		||||
            string password = passwordbox.Password;
 | 
			
		||||
            string email = emailbox.Text;
 | 
			
		||||
            string birthday = $"{bday1.Text}.{bday2.Text}.{bday3.Text}";
 | 
			
		||||
            var newUser = new { Username = username, Password = password, Email = email, Birthday = birthday, IsOnline = "" };
 | 
			
		||||
            string json = JsonConvert.SerializeObject(newUser);
 | 
			
		||||
 | 
			
		||||
            using (var client = new HttpClient())
 | 
			
		||||
            {
 | 
			
		||||
                var content = new StringContent(json, Encoding.UTF8, "application/json");
 | 
			
		||||
                var response = await client.PostAsync("http://daddypig.dns.navy:5114/api/users/register", content);
 | 
			
		||||
 | 
			
		||||
                if (response.IsSuccessStatusCode)
 | 
			
		||||
                {
 | 
			
		||||
                    MessageBox.Show("Registrierung erfolgreich.");
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    MessageBox.Show("Registrierung fehlgeschlagen. " + response);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
@@ -19,13 +19,9 @@
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <Folder Include="Icons\" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <Resource Include="logo.png" />
 | 
			
		||||
    <Resource Include="Logo_bib-Talk.png" />
 | 
			
		||||
    <Resource Include="PICA.jpg" />
 | 
			
		||||
    <Resource Include="Icons\logo.png" />
 | 
			
		||||
    <Resource Include="Icons\Logo_bib-Talk.png" />
 | 
			
		||||
    <Resource Include="Icons\PICA.jpg" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
 | 
			
		||||
</Project>
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user