From b30ab0618cf5d440ecb12a19752569ba106e4620 Mon Sep 17 00:00:00 2001 From: Waldi Date: Fri, 26 Aug 2016 10:36:50 +0200 Subject: [PATCH] update Chat Service --- BeWo/View/ChatView.xaml | 4 +- BeWo/View/ChatView.xaml.cs | 116 ++++++++++++++++++---------- BeWo/View/HomeDragPanelView.xaml | 2 +- BeWo/View/HomeDragPanelView.xaml.cs | 92 ++++++++++++++-------- 4 files changed, 135 insertions(+), 79 deletions(-) diff --git a/BeWo/View/ChatView.xaml b/BeWo/View/ChatView.xaml index a8f43e400..c8880c4cc 100644 --- a/BeWo/View/ChatView.xaml +++ b/BeWo/View/ChatView.xaml @@ -135,10 +135,10 @@ - + - + diff --git a/BeWo/View/ChatView.xaml.cs b/BeWo/View/ChatView.xaml.cs index e36c0a51b..1a6c1cdb6 100644 --- a/BeWo/View/ChatView.xaml.cs +++ b/BeWo/View/ChatView.xaml.cs @@ -24,6 +24,7 @@ using System.Windows.Media.Imaging; using BS.Shared; using BS.Shared.DataContracts; using BS.Shared.DataContracts.Compact; +using DevExpress.Xpf.Core; using DevExpress.XtraPrinting.Native; using DevExpress.XtraPrinting.XamlExport; using Microsoft.Office.Interop.Word; @@ -71,12 +72,18 @@ namespace BeWo.View StatusSetting.ItemsSource = data; // StatusSetting.SelectedIndex = 0; } - catch (Exception e) + catch (Exception edf) { - MessageBox.Show("Das Aufbauen der Chat-Settings ist fehlgeschlagen.", "Fehler: 2200 ", MessageBoxButton.OK); + MessageBox.Show("Das Aufbauen der Chat-Settings ist fehlgeschlagen. " + edf.Message + "\n" + edf.StackTrace, "Fehler: 2200 ", MessageBoxButton.OK); } } + public void updateTCp(TcpClient tcpClient) + { + this.tcpClient = tcpClient; + } + + private void RootGroupBox_OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e) { try @@ -144,9 +151,9 @@ namespace BeWo.View //SaveChatMessageinDB(personoid, BeWoApp.LoggedOnUser.Employee.PersonOid, text); } } - catch (Exception e) + catch (Exception edf) { - MessageBox.Show("Beim verarbeiten der Nachricht ist ein Fehler aufgetreten.", "Fehler: 2220 ", MessageBoxButton.OK); + MessageBox.Show("Beim verarbeiten der Nachricht ist ein Fehler aufgetreten. " + edf.Message + "\n" + edf.StackTrace, "Fehler: 2220 ", MessageBoxButton.OK); } } @@ -163,16 +170,21 @@ namespace BeWo.View bool wasdrin = int.TryParse(abc.Receivems, out x); if (wasdrin) - abc.Receivems = x++.ToString(); + { + //x = int.TryParse(abc.Receivems,); + x++; + abc.Receivems = x.ToString(); + //abc.Receivems = abc.Receivems++;x++.ToString(); + } else abc.Receivems = 1.ToString(); } } view.Refresh(); } - catch (Exception) + catch (Exception edf) { - MessageBox.Show("Beim Setzen der Anzahl angekommender Nachrichten ist ein Fehler aufgetreten", "Fehler 2391", MessageBoxButton.OK); + MessageBox.Show("Beim Setzen der Anzahl angekommender Nachrichten ist ein Fehler aufgetreten. " + edf.Message + "\n" + edf.StackTrace, "Fehler 2391", MessageBoxButton.OK); } } @@ -246,9 +258,9 @@ namespace BeWo.View } } } - catch (Exception) + catch (Exception edf) { - MessageBox.Show("Beim Erweitern der 'Gerade Online' liste ist ein fehler aufgetreten.", "Fehler: 2230 ", MessageBoxButton.OK); + MessageBox.Show("Beim Erweitern der 'Gerade Online' liste ist ein fehler aufgetreten. " + edf.Message + "\n" + edf.StackTrace, "Fehler: 2230 ", MessageBoxButton.OK); } } @@ -284,7 +296,7 @@ namespace BeWo.View } catch (Exception e) { - MessageBox.Show("Beim Entfernen eines Users von der 'Gerade Online' liste ist ein Fehler aufgetreten .", "Fehler: 2240 ", MessageBoxButton.OK); + MessageBox.Show("Beim Entfernen eines Users von der 'Gerade Online' liste ist ein Fehler aufgetreten. " + e.Message + "\n" + e.StackTrace, "Fehler: 2240 ", MessageBoxButton.OK); } } @@ -339,7 +351,7 @@ namespace BeWo.View } catch (Exception edf) { - MessageBox.Show("Es ist ein Fehler Aufgetreten. Bitte Ruhe Bewahren", "Fehler: 2390 ", MessageBoxButton.OK); + MessageBox.Show("Es ist ein Fehler Aufgetreten. Bitte Ruhe Bewahren. " + edf.Message + "\n" + edf.StackTrace, "Fehler: 2390 ", MessageBoxButton.OK); } } @@ -361,7 +373,7 @@ namespace BeWo.View } catch (Exception edf) { - MessageBox.Show("Das Vergleichen mit der User-Liste ist nicht möglich.", "Fehler: 2350 ", + MessageBox.Show("Das Vergleichen mit der User-Liste ist nicht möglich. " + edf.Message + "\n" + edf.StackTrace, "Fehler: 2350 ", MessageBoxButton.OK); return false; } @@ -419,7 +431,7 @@ namespace BeWo.View } catch (Exception sf) { - MessageBox.Show("Beim Senden einer Nachricht ist ein Fehler aufgetreten.", "Fehler: 2250 ", MessageBoxButton.OK); + MessageBox.Show("Beim Senden einer Nachricht ist ein Fehler aufgetreten. " + sf.Message + "\n" + sf.StackTrace, "Fehler: 2250 ", MessageBoxButton.OK); } } @@ -457,7 +469,7 @@ namespace BeWo.View } catch (Exception ed) { - MessageBox.Show("Beim Senden einer Nachricht ist ein Fehler aufgetreten.", "Fehler: 2260 ", MessageBoxButton.OK); + MessageBox.Show("Beim Senden einer Nachricht ist ein Fehler aufgetreten. " +ed.Message +"\n"+ ed.StackTrace, "Fehler: 2260 ", MessageBoxButton.OK); } } @@ -508,7 +520,7 @@ namespace BeWo.View } catch (Exception edf) { - MessageBox.Show("Beim Setzen einer Neuen Chat Einstellung ist ein Fehler aufgetreten.", "Fehler: 2270 ", MessageBoxButton.OK); + MessageBox.Show("Beim Setzen einer Neuen Chat Einstellung ist ein Fehler aufgetreten. " + edf.Message + "\n" + edf.StackTrace, "Fehler: 2270 ", MessageBoxButton.OK); } } @@ -612,7 +624,7 @@ namespace BeWo.View } catch (Exception edf) { - MessageBox.Show("Beim Aktualisieren der Kontakt Liste ist ein Fehler aufgetreten.", "Fehler: 2210 ", MessageBoxButton.OK); + MessageBox.Show("Beim Aktualisieren der Kontakt Liste ist ein Fehler aufgetreten. " + edf.Message + "\n" + edf.StackTrace, "Fehler: 2210 ", MessageBoxButton.OK); } } @@ -650,30 +662,33 @@ namespace BeWo.View { try { - //Erstelle ContextMenue und Füge Items Hinzu ContextMenu context = new ContextMenu(); MenuItem item1 = new MenuItem(); - MenuItem item2 = new MenuItem(); + //MenuItem item2 = new MenuItem(); context.Items.Add(item1); - context.Items.Add(item2); + //context.Items.Add(item2); - item1.Header = "Lese Daten aus"; + item1.Header = "Dokumentieren"; item1.Visibility = Visibility.Visible; item1.Click += new RoutedEventHandler(OnChatRightClickMenue); - - item2.Header = "Klick"; - item2.Visibility = Visibility.Visible; - + + Image icon = new Image(); + icon.Source = (ImageSource) new ImageSourceConverter().ConvertFromString("../../Ressources/Icons/ClipboardDisabled.png"); + icon.SetSize(new Size(16,16)); + item1.Icon = icon; + + //item2.Header = "Klick"; + //item2.Visibility = Visibility.Visible; Chat.ContextMenu = context; } catch (Exception edf) { - MessageBox.Show("Beim Setzen einer Neuen Chat Einstellung ist ein Fehler aufgetreten.", "Fehler: 2380 ", MessageBoxButton.OK); + MessageBox.Show("Beim Setzen einer Neuen Chat Einstellung ist ein Fehler aufgetreten. "+edf.Message+"\n"+edf.StackTrace, "Fehler: 2380 ", MessageBoxButton.OK); } } @@ -689,7 +704,7 @@ namespace BeWo.View } - private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) // Kann genutzt werden für, die Statuse Online, Offline und Beschäftigt + private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) { try { @@ -698,8 +713,13 @@ namespace BeWo.View switch (StatusSetting.SelectedIndex) { case 0: - if (!tcpClient.Connected) + if ( tcpClient == null) + { StatusSetting.SelectedIndex = 1; + }else if (!tcpClient.Connected) + { + StatusSetting.SelectedIndex = 1; + } else { //Console.WriteLine("Ich bin bei Online"); @@ -709,8 +729,14 @@ namespace BeWo.View break; case 1: - if (!tcpClient.Connected) + if (tcpClient == null) + { StatusSetting.SelectedIndex = 1; + } + else if (!tcpClient.Connected) + { + StatusSetting.SelectedIndex = 1; + } else { //Console.WriteLine("Ich bin bei Offline"); @@ -720,8 +746,14 @@ namespace BeWo.View break; case 2: - if (!tcpClient.Connected) + if (tcpClient == null) + { StatusSetting.SelectedIndex = 1; + } + else if (!tcpClient.Connected) + { + StatusSetting.SelectedIndex = 1; + } else { //Console.WriteLine("Ich bin bei Beschäftigt"); @@ -733,7 +765,7 @@ namespace BeWo.View } catch (Exception edf) { - MessageBox.Show("Beim Setzen eines neuen Statuses ist ein Fehler aufgetreten.", "Fehler: 2270 ", MessageBoxButton.OK); + MessageBox.Show("Beim Setzen eines neuen Statuses ist ein Fehler aufgetreten. " + edf.Message + "\n" + edf.StackTrace, "Fehler: 2270 ", MessageBoxButton.OK); } } @@ -782,7 +814,7 @@ namespace BeWo.View } catch (Exception edf) { - MessageBox.Show("Fehler siehe Fehlercode", "Fehler: 2370", MessageBoxButton.OK); + MessageBox.Show("Fehler siehe Fehlercode. " + edf.Message + "\n" + edf.StackTrace, "Fehler: 2370", MessageBoxButton.OK); } } @@ -819,7 +851,7 @@ namespace BeWo.View catch (Exception s) { curItem = null; - MessageBox.Show("Beim Auswählen eines Users ist ein Fehler aufgetreten.", "Fehler: 2280 ", MessageBoxButton.OK); + MessageBox.Show("Beim Auswählen eines Users ist ein Fehler aufgetreten. " + s.Message + "\n" + s.StackTrace, "Fehler: 2280 ", MessageBoxButton.OK); } } @@ -848,7 +880,7 @@ namespace BeWo.View } catch (Exception edf) { - MessageBox.Show("Beim Aufbauen der Profilbilder ist ein Fehler aufgetreten.", "Fehler: 2290 ", MessageBoxButton.OK); + MessageBox.Show("Beim Aufbauen der Profilbilder ist ein Fehler aufgetreten. " + edf.Message + "\n" + edf.StackTrace, "Fehler: 2290 ", MessageBoxButton.OK); return null; } } @@ -928,7 +960,7 @@ namespace BeWo.View catch (Exception xe) { if (tcpClient.Connected){ - MessageBox.Show("Beim Senden einer Nachricht zum Server ist ein Fehler aufgetreten.", + MessageBox.Show("Beim Senden einer Nachricht zum Server ist ein Fehler aufgetreten. " + xe.Message + "\n" + xe.StackTrace, "Fehler: 2300 ", MessageBoxButton.OK); Dispatcher.Invoke( @@ -955,7 +987,7 @@ namespace BeWo.View } catch (InvalidOperationException e) { - MessageBox.Show("Beim Speichern einer Nachricht in die Datenbank ist ein Fehler aufgetreten.", "Fehler: 2310 ", MessageBoxButton.OK); + MessageBox.Show("Beim Speichern einer Nachricht in die Datenbank ist ein Fehler aufgetreten. " + e.Message + "\n" + e.StackTrace, "Fehler: 2310 ", MessageBoxButton.OK); } } @@ -965,7 +997,6 @@ namespace BeWo.View { try { - //######################################### Funktioniert auf anhieb ################################ if (Curitem.TypeChat == ChatType.Team) { var allTeamItems = @@ -1015,7 +1046,7 @@ namespace BeWo.View { if (list.IstGelesen == 1 && (list.TeamOid == null || list.TeamOid == 0)) { - if (list.SenderPersonOid == senderoid) //<- Funktionsfähiges Original + if (list.SenderPersonOid == senderoid) { Chat.Items.Add(new KontakMessageBuilder(person[0].FirstName, list.ChatText, list.Uhrzeit.ToString(), senderoid)); @@ -1024,7 +1055,7 @@ namespace BeWo.View { Chat.Items.Add(new KontakMessageBuilder(person[1].FirstName, list.ChatText, list.Uhrzeit.ToString(), empfaengerOid)); - } //<- Funktionsfähiges Original + } } else { @@ -1053,7 +1084,7 @@ namespace BeWo.View } catch (Exception edf) { - MessageBox.Show("Beim Laden einer Nachricht aus der Datenbank ist ein Fehler aufgetreten.", "Fehler: 2320 ", MessageBoxButton.OK); + MessageBox.Show("Beim Laden einer Nachricht aus der Datenbank ist ein Fehler aufgetreten. " + edf.Message + "\n" + edf.StackTrace, "Fehler: 2320 ", MessageBoxButton.OK); } } @@ -1067,7 +1098,7 @@ namespace BeWo.View } catch (Exception edf) { - MessageBox.Show("Fehler beim Fokusieren der Nachrichten Leiste.", "Fehler: 2330 ", MessageBoxButton.OK); + MessageBox.Show("Fehler beim Fokusieren der Nachrichten Leiste. " + edf.Message + "\n" + edf.StackTrace, "Fehler: 2330 ", MessageBoxButton.OK); } } @@ -1111,8 +1142,9 @@ namespace BeWo.View public ImageSource Image { get; private set; } public long EmpfaengerOid { get; private set; } - - public string Receivems { get; set; } + + private string _receivems; + public string Receivems { get { return _receivems; } set { _receivems = value; OnPropertyChanged("Receivems"); } } public ChatType TypeChat { get; set; } public event PropertyChangedEventHandler PropertyChanged; diff --git a/BeWo/View/HomeDragPanelView.xaml b/BeWo/View/HomeDragPanelView.xaml index 77e743c77..c6cf9093f 100644 --- a/BeWo/View/HomeDragPanelView.xaml +++ b/BeWo/View/HomeDragPanelView.xaml @@ -207,7 +207,7 @@ - + diff --git a/BeWo/View/HomeDragPanelView.xaml.cs b/BeWo/View/HomeDragPanelView.xaml.cs index 554815d67..96ecea5fe 100644 --- a/BeWo/View/HomeDragPanelView.xaml.cs +++ b/BeWo/View/HomeDragPanelView.xaml.cs @@ -69,6 +69,8 @@ namespace BeWo.View protected bool threadstop = false; + protected bool berechtigt = false; + //################################################################ public HomeDragPanelView() @@ -106,12 +108,32 @@ namespace BeWo.View MessageBox.Show("Verbindung geglückt.", "Info", MessageBoxButton.OK,MessageBoxImage.Information); });*/ - asx = new Thread(ConnectWithServer); - asx.Start(); - chatpav = new ChatView("BeWo Chat", chat.Text, clientSocket); + //########## Berechtigungsabfrage #################################### + var berechtigung = ServiceFacade.DoEmployeeServiceSync(s => s.GetAllChatActiveEmployeesCompact()); + foreach (var list in berechtigung) + { + if (list.PersonOid == BeWoApp.LoggedOnUser.Employee.PersonOid) + { + berechtigt = true; + } + } - chatpav.Visibility = Visibility.Collapsed; + + if (berechtigt) + { + asx = new Thread(ConnectWithServer); //<----- Original + asx.Start(); + + chatpav = new ChatView("BeWo Chat", chat.Text, clientSocket); + + chatpav.Visibility = Visibility.Collapsed; //<----- Original + } + else + { + BewoChat.Visibility = Visibility.Hidden; + } + //######################################################################## } private void PreparePanels() @@ -1262,11 +1284,11 @@ namespace BeWo.View } } - //################################## Connection with Server ########################## + //####### Connection with Server ########### private void ConnectWithServer() { try - { + { Dispatcher.Invoke( DispatcherPriority.Normal, (ThreadStart) delegate @@ -1275,10 +1297,10 @@ namespace BeWo.View chatpav.StatusSetting.SelectedIndex = 1; }); - - var ipAdresse = BeWoApp.IpAddress; //3 |9 "192.168.1.103" + var ipAdresse = BeWoApp.IpAddress; //3 |9 || 192.168.1.103"app4.bewoplaner.de" var port = 5000; + clientSocket.Connect(ipAdresse, port); Dispatcher.Invoke( @@ -1291,7 +1313,7 @@ namespace BeWo.View if (isReconnect) { - MessageBox.Show("Die Verbindung konnte wieder Hergestellt werden. ", "", MessageBoxButton.OK); + // MessageBox.Show("Die Verbindung konnte wieder Hergestellt werden. ", "", MessageBoxButton.OK); } isReconnect = false; @@ -1356,7 +1378,6 @@ namespace BeWo.View { MessageBox.Show("Anmeldung am Server zurzeit nicht möglich.", "Fehler: 2020 ", MessageBoxButton.OK); } - } @@ -1462,10 +1483,6 @@ namespace BeWo.View } WaitForMsFromServer(); - - //#### Bei Fehlern alter Code wieder Hinzufügen - //#### und Switch/Case dann weg. - //###################################### } @@ -1586,7 +1603,7 @@ namespace BeWo.View if (team == DataIdentifier.Team && curItem.TypeChat == ChatType.Team && curItem.EmpfaengerOid.Equals(empfaenger)) { - var zugehorigkeit = ServiceFacade.DoEmployeeServiceSync(s => s.GetTeamOidsByEmployee(personoid)); + var zugehorigkeit = ServiceFacade.DoEmployeeServiceSync(s => s.GetTeamOidsByEmployee(BeWoApp.LoggedOnUser.Employee.PersonOid)); foreach (var dc in zugehorigkeit) { @@ -1598,7 +1615,7 @@ namespace BeWo.View } else if(team == DataIdentifier.Team && (!curItem.EmpfaengerOid.Equals(empfaenger))) { - var zugehorigkeit = ServiceFacade.DoEmployeeServiceSync(s => s.GetTeamOidsByEmployee(personoid)); + var zugehorigkeit = ServiceFacade.DoEmployeeServiceSync(s => s.GetTeamOidsByEmployee(BeWoApp.LoggedOnUser.Employee.PersonOid)); foreach (var dc in zugehorigkeit) { @@ -1608,11 +1625,6 @@ namespace BeWo.View } } } - /* else - { - if (curItem.EmpfaengerOid.Equals(personoid)) - chatpav.SetText(text, name, personoid); - }*/ } } }); @@ -1656,23 +1668,30 @@ namespace BeWo.View { if (clientSocket.Connected == false) { - MessageBox.Show("Die verbindung zum Server wurde seitens dem Server unterbrochen", "Info", MessageBoxButton.OK); - clientSocket.Close(); - + if (!threadstop) + { + MessageBox.Show("Die verbindung zum Server wurde seitens dem Server unterbrochen", "Info", MessageBoxButton.OK); + clientSocket.Client.Disconnect(true); + clientSocket.Client.Close(); + clientSocket = null; + clientSocket = new TcpClient(); + + this.Dispatcher.BeginInvoke( DispatcherPriority.Normal, (Action) delegate { + chatpav.updateTCp(clientSocket); chatpav.ButtonAlarmLabel.Visibility = Visibility.Visible; chatpav.SetAllUserOfflineIfNoInet(); chatpav.StatusSetting.SelectedIndex = 1; chatpav.SetServerStats("Verbindung zum Server Unterbrochen"); - }); - - if (!threadstop) + }); + ReConnectAfterLoseConnection(); - + } + break; } } @@ -1750,6 +1769,7 @@ namespace BeWo.View { if (clientSocket != null) { + threadstop = true; clientSocket.Close(); } @@ -1758,17 +1778,21 @@ namespace BeWo.View serverStream.Close(); } - if (asx.IsAlive) + if (asx != null) { - asx.Join(); - asx = null; + if (asx.IsAlive) + { + asx.Join(); + asx = null; - threadstop = true; - } + threadstop = true; + } + } + } catch (Exception edf) { - MessageBox.Show("Beim Versuch ,die verbindung mit dem Server zu trennen, ist ein Fehler unterlaufen ", "Fehler: 2100 ", MessageBoxButton.OK); + MessageBox.Show("Beim Versuch ,die verbindung mit dem Server zu trennen, ist ein Fehler unterlaufen. " + edf.Message +"\n"+edf.StackTrace, "Fehler: 2100 ", MessageBoxButton.OK); } }