From 82defcb751c898bd1cae02298edc2ba8030480f3 Mon Sep 17 00:00:00 2001 From: Waldi Date: Tue, 24 Oct 2017 11:39:59 +0200 Subject: [PATCH] update hoffentlich jetzt alles cool --- ChatController/ChatMainControl.xaml | 4 +- ChatController/ChatMainControl.xaml.cs | 123 ++++++++++++++--------- ChatController/HauptKlassen/Chat.cs | 106 ++++++++++++------- ChatController/HauptKlassen/Login.cs | 96 ++++++++---------- ChatController/LoginControl.xaml.cs | 26 ++--- ChatController/LoginKlassen/UserDaten.cs | 8 +- 6 files changed, 204 insertions(+), 159 deletions(-) diff --git a/ChatController/ChatMainControl.xaml b/ChatController/ChatMainControl.xaml index 28588e6..14d7613 100644 --- a/ChatController/ChatMainControl.xaml +++ b/ChatController/ChatMainControl.xaml @@ -13,7 +13,7 @@ - + @@ -271,7 +271,7 @@ - + diff --git a/ChatController/ChatMainControl.xaml.cs b/ChatController/ChatMainControl.xaml.cs index 20d6ccd..8bca996 100644 --- a/ChatController/ChatMainControl.xaml.cs +++ b/ChatController/ChatMainControl.xaml.cs @@ -131,7 +131,7 @@ namespace ChatController } } - #region Styleetter für ownChatDesktop VErsion + #region Style setter für ownChatDesktop Version public void SetzteStyleAufNull() { EmojiButton.Style = null; @@ -164,8 +164,8 @@ namespace ChatController DispatcherPriority.Normal, (Action) delegate { - CollectionViewSource.GetDefaultView(Clientlist.Items).Refresh(); - //Clientlist.Items.Refresh(); + //CollectionViewSource.GetDefaultView(Clientlist.Items).Refresh(); + Clientlist.Items.Refresh(); }); Thread.Sleep(TimeSpan.FromMinutes(5)); @@ -456,7 +456,8 @@ namespace ChatController Chat.ScrollIntoView(Chat.Items.CurrentItem); _chat.SendMessage(Chatbox.Text, kontakt.GroupId); - + + //UebergebeNachrichtAnKontaktList(Chatbox.Text); Chatbox.Text = ""; if (Chatbox.Text.Equals("")) @@ -490,7 +491,6 @@ namespace ChatController } } } - } private void Chatbox_OnGotFocus(object sender, RoutedEventArgs e) @@ -524,7 +524,9 @@ namespace ChatController Chat.ScrollIntoView(Chat.Items.CurrentItem); _chat.SendMessage(Chatbox.Text, kontakt.GroupId); - + + //UebergebeNachrichtAnKontaktList(Chatbox.Text); + Chatbox.Text = ""; } @@ -546,6 +548,37 @@ namespace ChatController MessageBox.Show("Beim Senden einer Nachricht ist ein Fehler aufgetreten. " + ed.Message + "\n" + ed.StackTrace, "Fehler", MessageBoxButton.OK); } } + + private void UebergebeNachrichtAnKontaktList(string nachricht) + { + try + { + var aktuellerKontakt = (AktuellerKontakt)AktChatUser.Items[0]; + + foreach (var liste in _kontaktlist) + { + if (liste.GroupId == aktuellerKontakt.GroupId) + { + liste.ReceiveMs = nachricht; + + //var clientZone = TimeZoneInfo.Local; + + var x = DateTime.Now; + + //var timeformated = TimeZoneInfo.ConvertTimeToUtc(x); + + liste.TimeStamp = x; + + liste.SetzeGelesen = 0; + } + } + CollectionViewSource.GetDefaultView(Clientlist.Items).Refresh(); + } + catch (Exception e) + { + //einfach ignorieren + } + } #endregion #region Add Emoji To ChatBox @@ -729,15 +762,10 @@ namespace ChatController private void DoWorkAlleNachrichten() { while (true) - { - var x = _chat.SchaueNachAllenMessageCounts(); + { + var x = _chat.SchaueNachAllenMessageCounts(); - if (AlleNachrichtenCount == null) - { - AlleNachrichtenCount = x; - } - - if (x > AlleNachrichtenCount) + if (x > 0) { this.Dispatcher.BeginInvoke( DispatcherPriority.Background, @@ -745,45 +773,50 @@ namespace ChatController { var alist = _chat.NeueGroupklassenKontakte(); - var aktuellerKontakt =(AktuellerKontakt)AktChatUser.Items[0]; + AktuellerKontakt aktuellerKontakt = null; + + if (AktChatUser.HasItems) + { + aktuellerKontakt = (AktuellerKontakt) AktChatUser.Items[0]; + } foreach (var liste in _kontaktlist) - { - foreach (var neu in alist) { - if (liste.GroupId == neu.GroupId) + foreach (var neu in alist) { - if (!liste.ReceiveMs.Equals(neu.ReceiveMs)) { + if (liste.GroupId == neu.GroupId) + { + if (!liste.ReceiveMs.Equals(neu.ReceiveMs)) { - liste.ReceiveMs = neu.ReceiveMs; + liste.ReceiveMs = neu.ReceiveMs; + liste.TimeStamp = neu.TimeStamp; - if (neu.GroupId == aktuellerKontakt.GroupId) - { - liste.SetzeGelesen = 0; - } - else - { - liste.SetzeGelesen = 1; + if (aktuellerKontakt != null && neu.GroupId == aktuellerKontakt.GroupId) + { + liste.SetzeGelesen = 0; + } + else + { + liste.SetzeGelesen = 1; + } } } } } - } + - Clientlist.Items.Refresh(); + Clientlist.Items.Refresh(); + }); - - AlleNachrichtenCount = x; + } if (AlleNachrichtenThreadBool == false) { break; - } - - //Task.Delay(5000); + } - Thread.Sleep(5000); + Thread.Sleep(5000); } } @@ -929,10 +962,7 @@ namespace ChatController #region ReloadGruppen (For Stand Alone version) private void ButtonReloadGruppen_OnClick(object sender, RoutedEventArgs e) - { - //Thread newThread = new Thread(DoSynchro); - //newThread.IsBackground = true; - //newThread.Start(); + { DoSynchro(); } @@ -942,17 +972,19 @@ namespace ChatController { Cursor = Cursors.Wait; + SpeichereMessageInfoInDatei(); + var aktuelleGruppen = _chat.GruppenAktuallisieren(); var x = _chat.GroupklassenAktuallisieren(aktuelleGruppen); - CollectionViewSource.GetDefaultView(Clientlist.ItemsSource).Refresh(); - //Clientlist.Items.Refresh(); - + _kontaktlist = x; + LeseMessageInfoAusDatei(); - + + Clientlist.Items.Refresh(); + Cursor = Cursors.Arrow; - } catch (Exception e) { @@ -961,8 +993,7 @@ namespace ChatController } #endregion - - //muss erweitert werden + #region speichern sowie lesen der MessageSyncDatei / stylezwecke public void SpeichereMessageInfoInDatei() { diff --git a/ChatController/HauptKlassen/Chat.cs b/ChatController/HauptKlassen/Chat.cs index 6f1dad1..17d55e3 100644 --- a/ChatController/HauptKlassen/Chat.cs +++ b/ChatController/HauptKlassen/Chat.cs @@ -43,6 +43,7 @@ namespace ChatController.HauptKlassen public static readonly List ImageExtensions = new List { ".JPG", ".JPE", ".BMP", ".GIF", ".PNG", ".JPEG" }; public static readonly List DokumentExtension = new List { ".TXT", ".PPT", ".XLS", ".DOC" }; + private long lastTimeStamp=0; public Chat(ChatDatenUebergabe chatDaten) { @@ -52,42 +53,54 @@ namespace ChatController.HauptKlassen #region Gruppen In Kontaktliste Wandler public IOrderedEnumerable GroupklassenInChatKontakteUmwandler() { - foreach (var kontakt in ChatDaten.Groupconect.Response) + foreach (var kontakt in ChatDaten.Groupconect.Response) + { + foreach (var value in kontakt.Value) { - foreach (var value in kontakt.Value) + string message = ""; + DateTime timestamp = new DateTime(); + + var lastMS = value.LastMessage; + + DateTime timeformated = new DateTime(); + + + if (lastMS != null) { - string message = ""; - DateTime timestamp = new DateTime(); - - var lastMS = value.LastMessage; - - - if (lastMS != null) + if (lastMS.Text != null) { - if (lastMS.Text != null) - { - message = lastMS.Text; - timestamp = DateTime.Parse(lastMS.Timestamp.Date); - } - } + message = lastMS.Text; - if (message.Equals("") && value.LastMessage != null && !value.LastMessage.File.Equals("")) - { - message = Path.GetFileName(value.LastMessage.File); - } + timestamp = DateTime.Parse(lastMS.Timestamp.Date); - //null steht für employee - Kontaktliste.Add(new KontaktlistBuilder(value.Name, AvatarToImageSourceConverter(value.Avatar), - message, timestamp, value.Oid, null)); + var clientZone = TimeZoneInfo.Local; + timeformated = TimeZoneInfo.ConvertTimeFromUtc(timestamp, clientZone); + } + } + + if (message.Equals("") && value.LastMessage != null && !value.LastMessage.File.Equals("")) + { + message = Path.GetFileName(value.LastMessage.File); + } + + //null steht für employee + Kontaktliste.Add(new KontaktlistBuilder(value.Name, AvatarToImageSourceConverter(value.Avatar), + message, timeformated, value.Oid, null)); + + + TimeSpan span = (DateTime.Parse(lastMS.Timestamp.Date) - new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc)); + long unixTime = System.Convert.ToInt64(span.TotalSeconds); + + if (lastTimeStamp < unixTime) + { + lastTimeStamp = unixTime; } } + } + var sortedKontaktliste = Kontaktliste.OrderByDescending(r => r.TimeStamp); - var sortedKontaktliste = Kontaktliste.OrderByDescending(r => r.TimeStamp); - - return sortedKontaktliste; - - + return sortedKontaktliste; //Search Bereich //CollectionView view = (CollectionView)CollectionViewSource.GetDefaultView(Clientlist.ItemsSource); //view.SortDescriptions.Add(new SortDescription("TimeStamp", ListSortDirection.Descending)); @@ -591,7 +604,7 @@ namespace ChatController.HauptKlassen #region Prüfe für alle ob neue Nachrichten vorhanden sind public double SchaueNachAllenMessageCounts() - { + { TimeSpan span = (DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc)); long unixTime = System.Convert.ToInt64(span.TotalSeconds); @@ -604,7 +617,7 @@ namespace ChatController.HauptKlassen { try { - var endurl = ChatDaten.ServerUrl + "/api/ownchat/news/" + groupId + "/" + lastStamp; + var endurl = ChatDaten.ServerUrl + "/api/ownchat/news/" + groupId + "/" + lastTimeStamp; //lastStamp WebRequest request = WebRequest.Create(endurl); @@ -645,6 +658,7 @@ namespace ChatController.HauptKlassen { string message = ""; DateTime timestamp = new DateTime(); + DateTime timeformated = new DateTime(); var lastMS = value.LastMessage; @@ -654,6 +668,9 @@ namespace ChatController.HauptKlassen { message = lastMS.Text; timestamp = DateTime.Parse(lastMS.Timestamp.Date); + + var clientZone = TimeZoneInfo.Local; + timeformated = TimeZoneInfo.ConvertTimeFromUtc(timestamp, clientZone); } } @@ -664,7 +681,16 @@ namespace ChatController.HauptKlassen //null steht für employee Kontakt.Add(new KontaktlistBuilder(value.Name, AvatarToImageSourceConverter(value.Avatar), - message, timestamp, value.Oid, null)); + message, timeformated, value.Oid, null)); + + TimeSpan span = (DateTime.Parse(lastMS.Timestamp.Date) - new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc)); + long unixTime = System.Convert.ToInt64(span.TotalSeconds); + + if (lastTimeStamp < unixTime) + { + lastTimeStamp = unixTime; + } + } } @@ -729,11 +755,18 @@ namespace ChatController.HauptKlassen { try { - var ChatMessage = _userMessages.Response.Messages.Last(); - - var time =DateTime.Now; - - Messages.Add(new KontaktMessageBuilder(ChatMessage.User_Name, nachricht,time.ToString("dd MMMM yyyy HH:mm:ss"), true, time)); + string username = ""; + + foreach (var daten in ChatDaten.Userconect.Response) + { + username = daten.Value.Firstname + " " + daten.Value.Lastname; + } + + var time = DateTime.Now; + + Messages.Add(new KontaktMessageBuilder(username, nachricht, + time.ToString("dd MMMM yyyy HH:mm:ss"), true, time)); + } catch (Exception e) { @@ -1222,7 +1255,6 @@ namespace ChatController.HauptKlassen #endregion - #endregion #region Zeige Kontakt Bild / hat noch probleme -> Show Kontakt @@ -1578,8 +1610,6 @@ namespace ChatController.HauptKlassen { try { - //Hole alle aktuellen, schreibe ihre oid und den Timestamp der Aktuellen nachricht in eine Datei - if (!File.Exists(Path.Combine(GetAndCreateUserAppDataPath(), "ownChatMessageSync.txt"))) { using ( diff --git a/ChatController/HauptKlassen/Login.cs b/ChatController/HauptKlassen/Login.cs index 7b1867d..40cf60c 100644 --- a/ChatController/HauptKlassen/Login.cs +++ b/ChatController/HauptKlassen/Login.cs @@ -64,9 +64,7 @@ namespace ChatController.HauptKlassen dic.Add("chatcode",_chatCode); VerbindeMitChatServer(dic); - - - // Gruppen abfragen + if (_ownchatVerbindungsaufbauOK) { GruppenHolen(); @@ -74,8 +72,7 @@ namespace ChatController.HauptKlassen if (_gruppeholenverbindungsaufbauOK) - { - + { ChatDatenUebergabe ubergabe = new ChatDatenUebergabe(_serverconect, _userconect, _groupconect, _serverUrl, _authToken, _userid, _kundennummer,_apikey); return ubergabe; @@ -102,7 +99,7 @@ namespace ChatController.HauptKlassen } catch (Exception e) { - MessageBox.Show("Es konnte keine Verbindung aufgebaut werden.", "Fehler", MessageBoxButton.OK); + MessageBox.Show("Fehler: Es konnte keine Verbindung aufgebaut werden.", "Fehler", MessageBoxButton.OK,MessageBoxImage.Error); return false; } @@ -117,12 +114,12 @@ namespace ChatController.HauptKlassen if (jsonDatentyp.Status == 1) { - MessageBox.Show("Kundennummer unbekannt"); + MessageBox.Show("Fehler: Kundennummer unbekannt.\nBitte überprüfen Sie die Anmeldeinformationen.","Info",MessageBoxButton.OK,MessageBoxImage.Asterisk); return false; } else if (jsonDatentyp.Status == 2) { - MessageBox.Show("Diensttyp ist für angegebene Kundennummer nicht definiert"); + MessageBox.Show("Der Diensttyp ist für die angegebene Kundennummer nicht definiert.","Info",MessageBoxButton.OK,MessageBoxImage.Asterisk); return false; } else @@ -138,12 +135,12 @@ namespace ChatController.HauptKlassen if (jsonDatentyp.Status == 1) { - MessageBox.Show("Kundennummer unbekannt"); + MessageBox.Show("Fehler: Kundennummer unbekannt.\nBitte überprüfen Sie die Anmeldeinformationen.","Info",MessageBoxButton.OK,MessageBoxImage.Asterisk); return false; } else if (jsonDatentyp.Status == 2) { - MessageBox.Show("Diensttyp ist für angegebene Kundennummer nicht definiert"); + MessageBox.Show("Der Diensttyp ist für die angegebene Kundennummer nicht definiert.","Info",MessageBoxButton.OK,MessageBoxImage.Asterisk); return false; } else @@ -153,8 +150,8 @@ namespace ChatController.HauptKlassen } catch (Exception e) { - MessageBox.Show("Beim Parsen der Datei ist ein fehler aufgetreten.", "Fehler", - MessageBoxButton.OK); + MessageBox.Show("Fehler: "+e.Message,"Fehler",MessageBoxButton.OK,MessageBoxImage.Error); + } } @@ -165,13 +162,14 @@ namespace ChatController.HauptKlassen } catch (Exception e) { - MessageBox.Show("Ein nicht weiter definierter fehler ist aufgetreten: "+ e.Message,"Fehler",MessageBoxButton.OK); + MessageBox.Show("Fehler: "+ e.Message,"Fehler",MessageBoxButton.OK,MessageBoxImage.Error); return false; } } private void VerbindeMitChatServer(Dictionary postparameter) { + string fehlermeldung = ""; try { var endurl = _url + "/api/user/loginwithchatcode"; @@ -208,38 +206,36 @@ namespace ChatController.HauptKlassen string pageContent = myStreamReader.ReadToEnd(); - - //UserDaten müssen mehrere wege der initialisierung bieten if (!pageContent.Equals("")) { - //_serverCheckOK = true; - - //string[] array = responseFromServer.Split(':'); - - //Json Verarbeitungsgedöns Dictionary < string, TestKlasse> var jsonDaten = JsonConvert.DeserializeObject(pageContent); - //var serv = jsonDaten[_chatcode].ServerName; - - foreach (var datev in jsonDaten.Response) + if (jsonDaten.Success == true) { - _authToken = datev.Value.Token; - _userid = datev.Value.Oid; + foreach (var datev in jsonDaten.Response) + { + _authToken = datev.Value.Token; + _userid = datev.Value.Oid; + } + + _userconect = jsonDaten; + + _ownchatVerbindungsaufbauOK = true; + } + else + { + if (jsonDaten.Errors.chatcode_failed != null) + { + MessageBox.Show("Fehler: "+ jsonDaten.Errors.chatcode_failed[0] + "\nBitte überprüfen Sie die Anmeldeinformationen.", "Info", MessageBoxButton.OK, MessageBoxImage.Asterisk); + }else if (jsonDaten.Errors.login_failed != null) + { + MessageBox.Show("Fehler: "+ jsonDaten.Errors.login_failed[0] + "\nBitte überprüfen Sie die Anmeldeinformationen.", "Info", MessageBoxButton.OK, MessageBoxImage.Asterisk); + } + + _ownchatVerbindungsaufbauOK = false; } - - _userconect = jsonDaten; - - _ownchatVerbindungsaufbauOK = true; } - else - { - //throw fehler - // MessageBox.Show("Keine Daten Vorhanden."); - } - - - // MessageBox.Show(pageContent); - + myStreamReader.Close(); responseStream.Close(); @@ -247,7 +243,7 @@ namespace ChatController.HauptKlassen catch (Exception e) { //throw fehler - MessageBox.Show(e.Message, "Fehler", MessageBoxButton.OK); + MessageBox.Show(e.Message, "Fehler", MessageBoxButton.OK,MessageBoxImage.Error); } } @@ -262,38 +258,28 @@ namespace ChatController.HauptKlassen request.Credentials = CredentialCache.DefaultCredentials; request.Headers["Token"] = _authToken; request.Headers["CustomerID"] = _kundennummer; - - // Get the response. + WebResponse response = request.GetResponse(); // Display the status. var statusResponse = ((HttpWebResponse)response).StatusDescription; - - + string responseFromServer = ReadStream(response); - - //verarbeite hier zu json + if (!responseFromServer.Equals("")) { - //################# Deserialisierung mit Json ############################### var jsonDaten = JsonConvert.DeserializeObject(responseFromServer); _groupconect = jsonDaten; - // var serv = jsonDaten[_chatcode].ServerName; - - //MessageBox.Show(responseFromServer); + _gruppeholenverbindungsaufbauOK = true; } - else - { - // MessageBox.Show("Keine Daten Vorhanden."); - } - + response.Close(); } catch (Exception e) { - // MessageBox.Show(e.Message, "Fehler", MessageBoxButton.OK); + MessageBox.Show("Fehler: "+e.Message, "Fehler", MessageBoxButton.OK,MessageBoxImage.Error); } } diff --git a/ChatController/LoginControl.xaml.cs b/ChatController/LoginControl.xaml.cs index a3286a0..e2f7026 100644 --- a/ChatController/LoginControl.xaml.cs +++ b/ChatController/LoginControl.xaml.cs @@ -39,10 +39,6 @@ namespace ChatController public event LoginDelegate OnLogin; - //private readonly string _dateiPfad = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "ownChatX1253781.txt"; //OwnChatX1253781 - - //private readonly string _merkeDaten = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "ownChatX1253782.txt"; //OwnChatX1253782 - private string _newUrl = "https://dict.ownchat.de/api/server/resolve/1/"; private string _benutzername = ""; private string _passwort = ""; @@ -103,10 +99,11 @@ namespace ChatController OnLogin(x); } - else - { - MessageBox.Show("Fehler bei der Anmeldung. Bitte überprüfen Sie die Anmeldeinformationen.", "Info", MessageBoxButton.OK, MessageBoxImage.Asterisk); - } + //else + //{ + // Auskommentiert weil bereits abgefangen + // MessageBox.Show("Fehler bei der Anmeldung. Bitte überprüfen Sie die Anmeldeinformationen.", "Info", MessageBoxButton.OK, MessageBoxImage.Asterisk); + //} Cursor = Cursors.Arrow; } @@ -117,13 +114,10 @@ namespace ChatController } catch (Exception exception) { - //MessageBox.Show("Fehler bei der Anmeldung!\n\n" + exception.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Asterisk); - MessageBox.Show("Fehler bei der Anmeldung. Bitte überprüfen Sie die Anmeldeinformationen.", "Info", MessageBoxButton.OK, MessageBoxImage.Asterisk); - //throw; + MessageBox.Show("Fehler:"+exception.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error); Cursor = Cursors.Arrow; } - } - + } #region Speichern / Laden / Löschen der Datei @@ -331,8 +325,7 @@ namespace ChatController } #endregion - - + //Neue Region zum VErschlüsseln und entschlüsseln der Daten #region Verschlüsseln/Entschlüsseln via Link // wird ersmal nicht mehr gebraucht @@ -477,8 +470,7 @@ namespace ChatController } } #endregion - - + } diff --git a/ChatController/LoginKlassen/UserDaten.cs b/ChatController/LoginKlassen/UserDaten.cs index 36dcac7..26c0193 100644 --- a/ChatController/LoginKlassen/UserDaten.cs +++ b/ChatController/LoginKlassen/UserDaten.cs @@ -10,7 +10,7 @@ namespace ChatController.Klassen { public Dictionary Response { get; set; } public string Message { get; set; } - public string Errors { get; set; } + public Tetserror Errors { get; set; } public bool Success { get; set; } } @@ -31,4 +31,10 @@ namespace ChatController.Klassen public string Token { get; set; } } + + public class Tetserror + { + public string[] chatcode_failed{ get; set; } + public string[] login_failed { get; set; } + } }