From ff6c24ce97a42eed0b136745820d4d43794ffea0 Mon Sep 17 00:00:00 2001 From: Waldi Date: Wed, 18 Oct 2017 14:32:00 +0200 Subject: [PATCH] update neues Feature --- ChatController/ChatMainControl.xaml.cs | 92 ++++++++++---- ChatController/HauptKlassen/Chat.cs | 159 ++++++++++++++++++++++++- PrototypChat/MainWindow.xaml.cs | 1 + 3 files changed, 225 insertions(+), 27 deletions(-) diff --git a/ChatController/ChatMainControl.xaml.cs b/ChatController/ChatMainControl.xaml.cs index 9ebb344..a9a8d70 100644 --- a/ChatController/ChatMainControl.xaml.cs +++ b/ChatController/ChatMainControl.xaml.cs @@ -69,7 +69,7 @@ namespace ChatController public ChatMainControl() { - InitializeComponent(); + InitializeComponent(); } public void InitMitChatdaten(ChatDatenUebergabe cdu) @@ -85,6 +85,7 @@ namespace ChatController view.Filter = UserFilter; HorcheAlleGruppenNachrichten(); + LeseMessageInfoAusDatei(); } public AktuellerKontakt GetAktuellenKontakt() @@ -954,12 +955,12 @@ namespace ChatController Cursor = Cursors.Wait; //StartWaiting(); - if (_isDesktopVersion) - { - var doSync = _chat.DoSynchronisation(_chatDaten.ApiKey, _chatDaten.Kundennummer); + //if (_isDesktopVersion) + //{ + // var doSync = _chat.DoSynchronisation(_chatDaten.ApiKey, _chatDaten.Kundennummer); - if (doSync) - { + // if (doSync) + // { var aktuelleGruppen = _chat.GruppenAktuallisieren(); var x = _chat.GroupklassenAktuallisieren(aktuelleGruppen); @@ -969,29 +970,29 @@ namespace ChatController Clientlist.Items.Refresh(); Cursor = Cursors.Arrow; - } - else - { - Cursor = Cursors.Arrow; - // EndWaiting(); - if (OnClose != null) - { - OnClose(); - } - } - } - else - { - var aktuelleGruppen = _chat.GruppenAktuallisieren(); + //} + //else + //{ + // Cursor = Cursors.Arrow; + // // EndWaiting(); + // if (OnClose != null) + // { + // OnClose(); + // } + //} + //} + //else + //{ + // var aktuelleGruppen = _chat.GruppenAktuallisieren(); - var x = _chat.GroupklassenAktuallisieren(aktuelleGruppen); + // var x = _chat.GroupklassenAktuallisieren(aktuelleGruppen); - _kontaktlist = x; + // _kontaktlist = x; - Clientlist.Items.Refresh(); + // Clientlist.Items.Refresh(); - Cursor = Cursors.Arrow; - } + // Cursor = Cursors.Arrow; + //} } catch (Exception e) { @@ -1000,5 +1001,46 @@ namespace ChatController } #endregion + + #region speichern sowie lesen der MessageSyncDatei / stylezwecke + public void SpeichereMessageInfoInDatei() + { + List aa = new List(); + foreach (var kontakt in _kontaktlist) + { + if(kontakt.SetzeGelesen == 0 && !kontakt.ReceiveMs.Equals("")) { + aa.Add(kontakt); + } + } + + if(aa.Count>0) + _chat.SpeichereTimeStampsInDatei(aa); + } + + public void LeseMessageInfoAusDatei() + { + List aa = new List(); + foreach (var kontakt in _kontaktlist) + { + aa.Add(kontakt); + } + + var liste = _chat.PruefeTimeStampsBeiStart(aa); + + if(liste != null) { + foreach (var kon in _kontaktlist) + { + foreach (var item in liste) + { + if (kon.GroupId == item.Key) + { + kon.SetzeGelesen = 0; + } + } + } + } + } + + #endregion } } diff --git a/ChatController/HauptKlassen/Chat.cs b/ChatController/HauptKlassen/Chat.cs index de049f4..0de0aca 100644 --- a/ChatController/HauptKlassen/Chat.cs +++ b/ChatController/HauptKlassen/Chat.cs @@ -8,6 +8,7 @@ using System.Linq; using System.Linq.Expressions; using System.Net; using System.Net.Http; +using System.Reflection; using System.Text; using System.Threading; using System.Threading.Tasks; @@ -1216,8 +1217,7 @@ namespace ChatController.HauptKlassen } #endregion - - //Neu + #region Synchronisation Veranlassen für Bewoplaner OwnChat Version //sync für alles und jeden //public bool DoSync = true; @@ -1370,5 +1370,160 @@ namespace ChatController.HauptKlassen //view.Filter = UserFilter; } #endregion + + //unter konstruktion + #region pruefe letzten Konversations timestamp für design element + + public Dictionary PruefeTimeStampsBeiStart(List kontaktliste) + { + try + { + if (File.Exists(Path.Combine(GetAndCreateUserAppDataPath(), "ownChatMessageSync.txt"))) + { + Dictionary merkdaten = new Dictionary(); + + using (StreamReader sr = new StreamReader(Path.Combine(GetAndCreateUserAppDataPath(), "ownChatMessageSync.txt"), true)) + { + string line = ""; + + while ((line = sr.ReadLine()) != null) + { + var encodedTextBytes = Convert.FromBase64String(line); + + string plainText = Encoding.UTF8.GetString(encodedTextBytes); + + var plainarray = plainText.Split(';'); + + merkdaten.Add(plainarray[0], plainarray[1]); + } + } + + Dictionary rueckgabe = new Dictionary(); + + foreach (var kontakt in kontaktliste) + { + foreach (var daten in merkdaten) + { + var groupoid = Int32.Parse(daten.Key); + + if (kontakt.GroupId == groupoid) + { + var datetime = DateTime.Parse(daten.Value); + + if (kontakt.TimeStamp.Equals(datetime)) + { + rueckgabe.Add(groupoid,datetime); + } + } + } + } + + if (rueckgabe.Count > 0) + { + return rueckgabe; + } + else + { + return null; + } + } + + return null; + } + catch (Exception e) + { + return null; + } + } + + public void SpeichereTimeStampsInDatei( List kontaktliste ) + { + 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 ( + StreamWriter sw = + new StreamWriter(Path.Combine(GetAndCreateUserAppDataPath(), "ownChatMessageSync.txt"))) + { + + Encoding enc = new UTF8Encoding(); + + foreach (var kontakt in kontaktliste) + { + var text = kontakt.GroupId + ";" + kontakt.TimeStamp+";"; + var byt = enc.GetBytes(text); + var bytes = Convert.ToBase64String(byt); + + sw.WriteLine(bytes); + } + + File.SetAttributes(Path.Combine(GetAndCreateUserAppDataPath(), "ownChatMessageSync.txt"), + FileAttributes.ReadOnly); + } + } + else + { + File.SetAttributes(Path.Combine(GetAndCreateUserAppDataPath(), "ownChatMessageSync.txt"), FileAttributes.Normal); + File.Delete(Path.Combine(GetAndCreateUserAppDataPath(), "ownChatMessageSync.txt")); + + using ( + StreamWriter sw = new StreamWriter(Path.Combine(GetAndCreateUserAppDataPath(), "ownChatMessageSync.txt"))) + { + + Encoding enc = new UTF8Encoding(); + + foreach (var kontakt in kontaktliste) + { + var text = kontakt.GroupId + ";" + kontakt.TimeStamp + ";"; + var byt = enc.GetBytes(text); + var bytes = Convert.ToBase64String(byt); + + sw.WriteLine(bytes); + } + + File.SetAttributes(Path.Combine(GetAndCreateUserAppDataPath(), "ownChatMessageSync.txt"), + FileAttributes.ReadOnly); + } + } + } + catch (Exception e) + { + + } + } + + private static string GetAndCreateUserAppDataPath() + { + try + { + string localAppData = Environment.GetFolderPath( + Environment.SpecialFolder.LocalApplicationData); + string companyFilePath + = Path.Combine(localAppData, "beyondSoft"); + + if (!Directory.Exists(companyFilePath)) + Directory.CreateDirectory(companyFilePath); + + string bewoFilePath + = Path.Combine(companyFilePath, "OwnChat"); + + if (!Directory.Exists(bewoFilePath)) + Directory.CreateDirectory(bewoFilePath); + + return bewoFilePath; + } + catch (Exception ex) + { + MessageBox.Show( + "Fehler beim Anlegen des Anwendungsordners. Sie besitzen nicht die erforderlichen Rechte, bitte wenden Sie sich an Ihren Systemadministrator.\n" + + ex.Message, "BeWoPlaner", MessageBoxButton.OK, MessageBoxImage.Exclamation); + } + return Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); + } + + #endregion } } diff --git a/PrototypChat/MainWindow.xaml.cs b/PrototypChat/MainWindow.xaml.cs index ef6e548..7fedb5a 100644 --- a/PrototypChat/MainWindow.xaml.cs +++ b/PrototypChat/MainWindow.xaml.cs @@ -113,6 +113,7 @@ namespace ownChat private void MainWindow_OnClosed(object sender, EventArgs e) { _emojiView = null; + ChatMainControl.SpeichereMessageInfoInDatei(); // Environment.Exit(0); LoginMaske newLogin = new LoginMaske(); newLogin.Show();