From b82821d0c4858c36e51fe692f6b7a863a6dfffd8 Mon Sep 17 00:00:00 2001 From: Lyndon Date: Thu, 4 Apr 2019 13:00:10 +0200 Subject: [PATCH] Code verbessert --- ChatController/ChatController.csproj | 15 +- .../ChatKlassen/AktuellerKontakt.cs | 26 +- ChatController/ChatKlassen/Contact.cs | 252 +-- ChatController/ChatMainControl.xaml.cs | 96 +- ChatController/Data/OwnChatApi.cs | 95 +- ChatController/HauptKlassen/Chat.cs | 1716 ++++++----------- ChatController/HauptKlassen/Login.cs | 313 ++- ChatController/LoginControl.xaml.cs | 49 +- ...zierungsDaten.cs => AuthenticationData.cs} | 14 +- .../LoginKlassen/ChatDatenUebergabe.cs | 148 +- .../LoginKlassen/ChatGruppenDaten.cs | 19 +- ChatController/LoginKlassen/UserDaten.cs | 8 +- ChatController/LoginKlassen/UserMessages.cs | 10 +- ChatController/Utilities/Constants.cs | 2 + ChatController/Utilities/Utils.cs | 3 + PrototypChat/LoginMaske.xaml.cs | 2 +- PrototypChat/MainWindow.xaml.cs | 3 +- 17 files changed, 921 insertions(+), 1850 deletions(-) rename ChatController/LoginKlassen/{AuthentifizierungsDaten.cs => AuthenticationData.cs} (56%) diff --git a/ChatController/ChatController.csproj b/ChatController/ChatController.csproj index 89f6433..91cc4b1 100644 --- a/ChatController/ChatController.csproj +++ b/ChatController/ChatController.csproj @@ -62,7 +62,7 @@ - + @@ -84,6 +84,11 @@ ChatControlWaitLayer.xaml + + True + True + Resource.resx + @@ -127,9 +132,17 @@ + + + + + PublicResXFileCodeGenerator + Resource.Designer.cs + + \ No newline at end of file diff --git a/ChatController/ChatKlassen/AktuellerKontakt.cs b/ChatController/ChatKlassen/AktuellerKontakt.cs index 124c65a..9e169c7 100644 --- a/ChatController/ChatKlassen/AktuellerKontakt.cs +++ b/ChatController/ChatKlassen/AktuellerKontakt.cs @@ -1,32 +1,28 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Windows.Media; namespace ChatController.ChatKlassen { public class AktuellerKontakt { - public KontaktlistBuilder Kontakt { get; set; } + public Contact Contact { get; set; } - public string Name { get; private set; } - public ImageSource Image { get; private set; } + public string Name { get; } + public ImageSource Image { get; } public DateTime TimeStamp { get; set; } public long GroupId { get; set; } public long? CustomerOid { get; set; } - public AktuellerKontakt(KontaktlistBuilder kontakt) + public AktuellerKontakt(Contact pContact) { - if(kontakt != null) { - Kontakt = kontakt; - Image = kontakt.Image; - TimeStamp = kontakt.TimeStamp; - Name = kontakt.Name; - CustomerOid = kontakt.CustomerOid; - GroupId = kontakt.GroupId; + if(pContact != null) { + Contact = pContact; + Image = pContact.Image; + TimeStamp = pContact.TimeStamp; + Name = pContact.Name; + CustomerOid = pContact.CustomerOid; + GroupId = pContact.GroupId; } } } diff --git a/ChatController/ChatKlassen/Contact.cs b/ChatController/ChatKlassen/Contact.cs index e73fe44..0b46d0b 100644 --- a/ChatController/ChatKlassen/Contact.cs +++ b/ChatController/ChatKlassen/Contact.cs @@ -1,78 +1,56 @@ using System; -using System.Collections.Generic; using System.ComponentModel; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Windows.Media; +using static System.String; namespace ChatController.ChatKlassen { - public class KontaktlistBuilder + public class Contact { + public string Name { get; } - public string Name { get; private set; } - - private string _receiveMs; - public string ReceiveMs + private string _ReceivedMessage; + public string ReceivedMessage { get { - if (!String.IsNullOrEmpty(_receiveMs) && _receiveMs.Length > 25) + if (!IsNullOrEmpty(_ReceivedMessage) && _ReceivedMessage.Length > 25) { - return _receiveMs.Substring(0, 25) + "..."; + return _ReceivedMessage.Substring(0, 25) + "..."; } - return _receiveMs; - //var WordsArray = _receiveMs.Split(); - - ////var verkuerzterText = _receiveMs.Substring(0,10); - //if (WordsArray.Length > 4) - //{ - // string Items = WordsArray[0] + " " + WordsArray[1] + " " + WordsArray[2] + " " + WordsArray[3] + "..."; - - // return Items; - //} - //else - //{ - // //if(_receiveMs.Length > 15) - // return _receiveMs; - //} + return _ReceivedMessage; } set { - _receiveMs = value; - OnPropertyChanged("ReceiveMs"); + _ReceivedMessage = value; + OnPropertyChanged(nameof(ReceivedMessage)); } } private Brush _color; public Brush Color { - get - { - return _color; - } + get => _color; + set { - _color = value; - - OnPropertyChanged("Color"); + OnPropertyChanged(nameof(Color)); } } - private int _setzeGelesen; - public int SetzeGelesen + private int _NumberOfReadMessages; + public int NumberOfReadMessages { - get { return _setzeGelesen; } + get => _NumberOfReadMessages; set { - _setzeGelesen = value; + _NumberOfReadMessages = value; - if (_setzeGelesen == 1) + if (_NumberOfReadMessages == 1) { _color = new BrushConverter().ConvertFromString("#ff5e00") as SolidColorBrush; } @@ -81,207 +59,59 @@ namespace ChatController.ChatKlassen _color = new SolidColorBrush(Colors.Gray); } - OnPropertyChanged("SetzeGelesen"); - OnPropertyChanged("Color"); + OnPropertyChanged(nameof(NumberOfReadMessages)); + OnPropertyChanged(nameof(Color)); } } - private Brush _kontaktChatColor; - public Brush KontaktChatColor + private Brush _ContactChatColor; + public Brush ContactChatColor { - get - { - return _kontaktChatColor; - } + get => _ContactChatColor; set { - _kontaktChatColor = value; - - OnPropertyChanged("KontaktChatColor"); + _ContactChatColor = value; + OnPropertyChanged(nameof(ContactChatColor)); } } - public ImageSource Image { get; private set; } + public ImageSource Image { get; } public DateTime TimeStamp { get; set; } public long GroupId { get; set; } public long UserId { get; set; } public long? CustomerOid { get; set; } - public KontaktlistBuilder(string name, ImageSource image, string lastMs, DateTime timestamp, long groupid,long? customerOid, bool onlyEmployee, int userCount) + public Contact(string pName, ImageSource pImage, string pLastMessageText, DateTime pTimeStamp, long pGroupId,long? pCustomerOid, bool pOnlyEmployees, int pUserCount) { - -#if DEBUG - //lastMs = - // "aas dgfal Dies ist ein laaaaaanger Text !Q!!! adg asgl sadlg jasg jas,g ans,g nasgd., a ag fdgg agsd g"; - //name = "Hans Hubert Christopherus Maximilian Schumacherus"; -#endif - - Name = name; - ReceiveMs = lastMs; - Image = image; - TimeStamp = timestamp; - GroupId = groupid; - CustomerOid = customerOid; - SetzeGelesen = 1; - - - - - + Name = pName; + ReceivedMessage = pLastMessageText; + Image = pImage; + TimeStamp = pTimeStamp; + GroupId = pGroupId; + CustomerOid = pCustomerOid; + NumberOfReadMessages = 1; + if (CustomerOid != null) { - _kontaktChatColor = new BrushConverter().ConvertFromString("#3B7799") as SolidColorBrush; - }else if (onlyEmployee && userCount > 2) + _ContactChatColor = new BrushConverter().ConvertFromString("#3B7799") as SolidColorBrush; + } + else if (pOnlyEmployees && pUserCount > 2) { - - //Alle gruppen werden grün - _kontaktChatColor = new BrushConverter().ConvertFromString("#45993B") as SolidColorBrush; - + _ContactChatColor = new BrushConverter().ConvertFromString("#45993B") as SolidColorBrush; } else { - //Alles bleibt wie es war also schwarz - _kontaktChatColor = new BrushConverter().ConvertFromString("#000000") as SolidColorBrush; - + _ContactChatColor = new BrushConverter().ConvertFromString("#000000") as SolidColorBrush; } - - } - //public KontaktlistBuilder(string name, StatusType statustyp, ImageSource image, long empfaengerid, ChatType typeChat, CompactCustomerDC customer) - //{ - // this.Customer = customer; - // this.Name = name; - // this.StatusTyp = statustyp; - // this.Image = image; - // this.EmpfaengerOid = empfaengerid; - - // Receivems = ""; - // TypeChat = typeChat; - - // if (statustyp == StatusType.Online) - // { - // this.Color = new BrushConverter().ConvertFromString("#00ae00") as SolidColorBrush; - // } - // else if (statustyp == StatusType.Offline) - // { - // this.Color = new SolidColorBrush(Colors.Red); - // } - // else - // { - // this.Color = new SolidColorBrush(Colors.Orange); - // } - - // if (typeChat == ChatType.Team) - // { - // _colorType = new SolidColorBrush(Colors.DarkViolet); - // } - // else if (typeChat == ChatType.Klienten) - // { - // _colorType = new SolidColorBrush(Colors.Blue); - // } - // else - // { - // _colorType = new SolidColorBrush(Colors.Green); - // } - //} - - //public string Name { get; private set; } - - //private StatusType _statustyp; - //public StatusType StatusTyp - //{ - // get { return _statustyp; } - // set - // { - // _statustyp = value; - - // if (_statustyp == StatusType.Online) - // { - // _color = new BrushConverter().ConvertFromString("#00ae00") as SolidColorBrush; - // } - // else if (_statustyp == StatusType.Offline) - // { - // _color = new SolidColorBrush(Colors.Red); - // } - // else - // { - // _color = new SolidColorBrush(Colors.Orange); - // } - - // OnPropertyChanged("Lastms"); - // } - //} - - //public ImageSource Image { get; private set; } - - //public long EmpfaengerOid { get; private set; } - - //private string _receivems; - //public string Receivems { get { return _receivems; } set { _receivems = value; OnPropertyChanged("Receivems"); } } - - //public ChatType TypeChat { get; set; } - - //private Brush _color; - //public Brush Color - //{ - // get - // { - // return _color; - // } - // set - // { - // if (StatusTyp == StatusType.Online) - // { - // _color = new BrushConverter().ConvertFromString("#00ae00") as SolidColorBrush; - // } - // else if (StatusTyp == StatusType.Offline) - // { - // _color = new SolidColorBrush(Colors.Red); - // } - // else - // { - // _color = new SolidColorBrush(Colors.Orange); - // } - - // OnPropertyChanged("Color"); - // } - //} - - //private Brush _colorType; - //public Brush ColorType - //{ - // get - // { - // return _colorType; - // } - // set - // { - // if (TypeChat == ChatType.Team) - // { - // _colorType = new SolidColorBrush(Colors.DarkViolet); - // } - // else if (TypeChat == ChatType.Klienten) - // { - // _colorType = new SolidColorBrush(Colors.Blue); - // } - // else - // { - // _colorType = new SolidColorBrush(Colors.Green); - // } - - // OnPropertyChanged("ColorType"); - // } - //} - //public CompactCustomerDC Customer { get; set; } - public event PropertyChangedEventHandler PropertyChanged; protected virtual void OnPropertyChanged(string propertyName) { var handler = PropertyChanged; - if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName)); + handler?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } } } diff --git a/ChatController/ChatMainControl.xaml.cs b/ChatController/ChatMainControl.xaml.cs index b647ace..e16c958 100644 --- a/ChatController/ChatMainControl.xaml.cs +++ b/ChatController/ChatMainControl.xaml.cs @@ -7,8 +7,8 @@ using System.Net; using System.Threading; using System.Windows; using System.Windows.Controls; -using System.Windows.Controls.Primitives; using System.Windows.Data; +using System.Windows.Forms; using System.Windows.Input; using System.Windows.Media; using System.Windows.Navigation; @@ -17,8 +17,18 @@ using System.Windows.Threading; using ChatController.ChatKlassen; using ChatController.HauptKlassen; using ChatController.Klassen; - +using ChatController.LoginKlassen; +using ChatController.Utilities; +using Button = System.Windows.Controls.Button; +using Cursors = System.Windows.Input.Cursors; +using DataFormats = System.Windows.DataFormats; +using KeyEventArgs = System.Windows.Input.KeyEventArgs; +using MenuItem = System.Windows.Controls.MenuItem; +using MessageBox = System.Windows.MessageBox; +using Orientation = System.Windows.Controls.Orientation; +using Panel = System.Windows.Controls.Panel; using Path = System.IO.Path; +using ScrollBar = System.Windows.Controls.Primitives.ScrollBar; namespace ChatController { @@ -33,7 +43,7 @@ namespace ChatController private ChatEmojiiControl _EmojiView; private IOrderedEnumerable _OrderedMessages; - private IOrderedEnumerable _ContactList; + private IOrderedEnumerable _ContactList; private bool _ScrollPrueferAktivieren; @@ -110,7 +120,7 @@ namespace ChatController #region Lade KontaktDaten und Lade sie in den Chat private void AktChatUser_OnMouseDoubleClick(object sender, MouseButtonEventArgs e) { - _Chat.ShowKontaktPicture(_AktuellerKontakt); + _Chat.ShowProfilePicture(_AktuellerKontakt); } private void Clientlist_OnSelectionChanged(object sender, SelectionChangedEventArgs e) @@ -124,10 +134,10 @@ namespace ChatController AktChatUserList.Items.Clear(); - var kontakt = (KontaktlistBuilder)Clientlist.SelectedItem; + var kontakt = (Contact)Clientlist.SelectedItem; - if(kontakt.SetzeGelesen == 1) { - kontakt.SetzeGelesen = 0; + if(kontakt.NumberOfReadMessages == 1) { + kontakt.NumberOfReadMessages = 0; Clientlist.Items.Refresh(); } @@ -538,7 +548,7 @@ namespace ChatController ChatListBox.ItemsSource = null; - var kontakt = (KontaktlistBuilder)Clientlist.SelectedItem; + var kontakt = (Contact)Clientlist.SelectedItem; var xy = _Chat.LadeWeiterNachrichten(kontakt); @@ -596,57 +606,47 @@ namespace ChatController _NewThread = null; } - var kontakt = (AktuellerKontakt)AktChatUserList.Items[0]; + var kontakt = (AktuellerKontakt) AktChatUserList.Items[0]; - //thred besser verwalten - _NewThread = new Thread(DoWork); - _NewThread.IsBackground = true; + _NewThread = new Thread(DoWork) {IsBackground = true}; _NewThread.Start(kontakt); - } private void DoWork(object o) { - bool _schaueNachMs = false; - - var kontakt = (AktuellerKontakt) o; + var currentContact = (AktuellerKontakt) o; + while (true) { Thread.Sleep(2000); if (!disableKontaktNachrichtenThread) { - _schaueNachMs = _Chat.SchaueNachNeuenNachrichten(kontakt); + var hasNewMessages = _Chat.CheckIfNewMessagesExist(currentContact); - if (_schaueNachMs == true) + if (hasNewMessages) { - - this.Dispatcher.BeginInvoke( - DispatcherPriority.Background, + Utils.NotifyIcon.ShowBalloonTip(Constants.NotificationTimeout, "ownChat", $"Hat neue Nachrichten: {currentContact.Name}({currentContact.Contact.Name})", ToolTipIcon.None); + + Dispatcher.BeginInvoke(DispatcherPriority.Background, (Action) delegate { - if (kontakt != null) - { + + + _Chat.LadeChatNachrichtenVomKontakt(currentContact); - var x = _Chat.LadeChatNachrichtenVomKontakt(kontakt); + CollectionViewSource.GetDefaultView(ChatListBox.ItemsSource).Refresh(); - CollectionViewSource.GetDefaultView(ChatListBox.ItemsSource).Refresh(); - - ChatListBox.Items.MoveCurrentToLast(); - ChatListBox.ScrollIntoView(ChatListBox.Items.CurrentItem); - - } + ChatListBox.Items.MoveCurrentToLast(); + ChatListBox.ScrollIntoView(ChatListBox.Items.CurrentItem); }); - } } else { break; } - } - } #endregion @@ -686,18 +686,18 @@ namespace ChatController { if (liste.GroupId == neu.GroupId) { - if (!liste.ReceiveMs.Equals(neu.ReceiveMs)) { + if (!liste.ReceivedMessage.Equals(neu.ReceivedMessage)) { - liste.ReceiveMs = neu.ReceiveMs; + liste.ReceivedMessage = neu.ReceivedMessage; liste.TimeStamp = neu.TimeStamp; if (aktuellerKontakt != null && neu.GroupId == aktuellerKontakt.GroupId) { - liste.SetzeGelesen = 0; + liste.NumberOfReadMessages = 0; } else { - liste.SetzeGelesen = 1; + liste.NumberOfReadMessages = 1; } } } @@ -746,7 +746,7 @@ namespace ChatController if (String.IsNullOrEmpty(Suche.Text)) return true; else - return ((item as KontaktlistBuilder).Name.IndexOf(Suche.Text, StringComparison.OrdinalIgnoreCase) >= 0); + return ((item as Contact).Name.IndexOf(Suche.Text, StringComparison.OrdinalIgnoreCase) >= 0); } #endregion @@ -933,10 +933,10 @@ namespace ChatController #region speichern sowie lesen der MessageSyncDatei / stylezwecke (OwnChat only) public void SpeichereMessageInfoInDatei() { - List aa = new List(); + List aa = new List(); foreach (var kontakt in _ContactList) { - if(kontakt.SetzeGelesen == 0 && !kontakt.ReceiveMs.Equals("")) { + if(kontakt.NumberOfReadMessages == 0 && !kontakt.ReceivedMessage.Equals("")) { aa.Add(kontakt); } } @@ -947,7 +947,7 @@ namespace ChatController public void LeseMessageInfoAusDatei() { - List aa = new List(); + List aa = new List(); foreach (var kontakt in _ContactList) { aa.Add(kontakt); @@ -962,7 +962,7 @@ namespace ChatController { if (kon.GroupId == item.Key) { - kon.SetzeGelesen = 0; + kon.NumberOfReadMessages = 0; } } } @@ -972,17 +972,17 @@ namespace ChatController #region Speichern Und LEsen Der MesageSyncDatei (Bewoplaner only) - public List UebergebeMessageInfoDatenFuerDb() + public List UebergebeMessageInfoDatenFuerDb() { - List < KontaktlistBuilder > aa = new List(); + List < Contact > aa = new List(); Clientlist.Items.Refresh(); foreach (var item in Clientlist.Items) { - var kontakt = item as KontaktlistBuilder; + var kontakt = item as Contact; - if (kontakt != null && kontakt.SetzeGelesen == 0 && !kontakt.ReceiveMs.Equals("")) + if (kontakt != null && kontakt.NumberOfReadMessages == 0 && !kontakt.ReceivedMessage.Equals("")) { aa.Add(kontakt); } @@ -1001,7 +1001,7 @@ namespace ChatController { if (kon.GroupId == item.Key) { - kon.SetzeGelesen = 0; + kon.NumberOfReadMessages = 0; } } } @@ -1017,7 +1017,9 @@ namespace ChatController try { if (File.Exists(file)) + { File.Delete(file); + } } catch (Exception e) { diff --git a/ChatController/Data/OwnChatApi.cs b/ChatController/Data/OwnChatApi.cs index 2d01e50..349c00a 100644 --- a/ChatController/Data/OwnChatApi.cs +++ b/ChatController/Data/OwnChatApi.cs @@ -1,36 +1,32 @@ using System; -using System.Collections.Generic; using System.IO; -using System.Linq; using System.Net; -using System.Text; -using System.Threading.Tasks; -using System.Windows; -using ChatController.Klassen; +using ChatController.LoginKlassen; +using ChatController.Utilities; using Newtonsoft.Json; namespace ChatController.Data { public class OwnChatApi { - private static String serverUrl; - private static String apiKey; - private static String tenant; + public static string ServerUrl { get; set; } + public static string ApiKey { get; set; } + public static string Tenant { get; set; } - public static long GetMaximumAllowedFileUploadSize(string apikey, string customerid) + public static long GetMaximumAllowedFileUploadSize(string pApiKey, string pCustomerId) { - var endurl = serverUrl + "/api/ownchat/uploadmaxsize";// + apikey + "/" + customerid; + var url = ServerUrl + Constants.MaxUploadFileSizeUrl; - WebRequest request = WebRequest.Create(endurl); - request.Headers["Token"] = apikey; - request.Headers["CustomerID"] = customerid; + var webRequest = WebRequest.Create(url); + webRequest.Headers[Constants.Token] = pApiKey; + webRequest.Headers[Constants.CustomerId] = pCustomerId; - request.Credentials = CredentialCache.DefaultCredentials; - request.Proxy = null; + webRequest.Credentials = CredentialCache.DefaultCredentials; + webRequest.Proxy = null; - using (WebResponse response = request.GetResponse()) + using (var response = webRequest.GetResponse()) { - string responseFromServer = ReadStream(response); + var responseFromServer = ReadStream(response); var definiti = new {file_upload_max_size = ""}; @@ -38,71 +34,72 @@ namespace ChatController.Data return Convert.ToInt64(jsonDatentyp.file_upload_max_size); } - } - private UserMessages GetMessages(long groupId) + public static UserMessages GetMessages(long pGroupId) { - var endurl = serverUrl + "/api/chat/messages?groupid=" + groupId; + var url = ServerUrl + Constants.LoadMessagesForGroupUrl + pGroupId; - WebRequest request = WebRequest.Create(endurl); + var webRequest = WebRequest.Create(url); - request.Credentials = CredentialCache.DefaultCredentials; - request.Headers["Token"] = apiKey; - request.Headers["CustomerID"] = tenant; + webRequest.Credentials = CredentialCache.DefaultCredentials; + webRequest.Headers[Constants.Token] = ApiKey; + webRequest.Headers[Constants.CustomerId] = Tenant; - using (WebResponse response = request.GetResponse()) + using (var response = webRequest.GetResponse()) { - - string responseFromServer = ReadStream(response); + var serverResponse = ReadStream(response); - if (!String.IsNullOrEmpty(responseFromServer)) + if (!string.IsNullOrEmpty(serverResponse)) { - var jsonDaten = JsonConvert.DeserializeObject(responseFromServer); - return jsonDaten; - + return JsonConvert.DeserializeObject(serverResponse); } - } return null; } - private ChatGruppenDaten GetAllChatGroups() + public ChatGruppenDaten GetAllChatGroups() { - var endurl = serverUrl + "/api/chat/groups"; + var endurl = ServerUrl + Constants.GetChatGroupsUrl; - WebRequest request = WebRequest.Create(endurl); + var webRequest = WebRequest.Create(endurl); - request.Credentials = CredentialCache.DefaultCredentials; - request.Headers["Token"] = apiKey; - request.Headers["CustomerID"] = tenant; + webRequest.Credentials = CredentialCache.DefaultCredentials; + webRequest.Headers[Constants.Token] = ApiKey; + webRequest.Headers[Constants.CustomerId] = Tenant; - using (WebResponse response = request.GetResponse()) + using (var response = webRequest.GetResponse()) { - string responseFromServer = ReadStream(response); - return JsonConvert.DeserializeObject(responseFromServer); + var serverResponse = ReadStream(response); + return JsonConvert.DeserializeObject(serverResponse); } } - private static string ReadStream(WebResponse response) + public static string ReadStream(WebResponse response) { try { - using (Stream dataStream = response.GetResponseStream()) + var serverResponse = Empty; + + using (var dataStream = response.GetResponseStream()) { - using (StreamReader reader = new StreamReader(dataStream)) + if(dataStream == null) { - string responseFromServer = reader.ReadToEnd(); + return serverResponse; + } + + using (var reader = new StreamReader(dataStream)) + { + serverResponse = reader.ReadToEnd(); - return responseFromServer; + return serverResponse; } } } - catch (Exception e) + catch (Exception exception) { - // MessageBox.Show(e.Message); return null; } } diff --git a/ChatController/HauptKlassen/Chat.cs b/ChatController/HauptKlassen/Chat.cs index b6240e4..df51cdf 100644 --- a/ChatController/HauptKlassen/Chat.cs +++ b/ChatController/HauptKlassen/Chat.cs @@ -1,10 +1,10 @@ using ChatController.ChatKlassen; using ChatController.Klassen; + using Newtonsoft.Json; + using System; using System.Collections.Generic; -using System.ComponentModel; -using System.Diagnostics; using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Imaging; @@ -20,6 +20,10 @@ using System.Windows.Data; using System.Windows.Forms; using System.Windows.Media; using System.Windows.Media.Imaging; + +using ChatController.LoginKlassen; +using ChatController.Utilities; + using Application = System.Windows.Forms.Application; using Clipboard = System.Windows.Forms.Clipboard; using Color = System.Drawing.Color; @@ -33,307 +37,141 @@ namespace ChatController.HauptKlassen { public class Chat { - private readonly List Kontaktliste = new List(); - private readonly List Messages = new List(); + private readonly List _Contacts = new List(); + private readonly List _Messages = new List(); - public ChatDatenUebergabe ChatDaten; + public ChatDatenUebergabe ChatDaten { get; set; } - private UserMessages _userMessages; - private UserMessages _weitereUserMessages; + private UserMessages _UserMessages; + private UserMessages _AdditionalUserMessages; - private string _nextPage = null; - private bool _hasNextPage = false; + private string _NextPage; + private bool _HasNextPage; - public static readonly List ImageExtensions = new List { ".JPG", ".JPE", ".BMP", ".GIF", ".PNG", ".JPEG" }; - public static readonly List DokumentExtension = new List { ".TXT", ".PPT", ".XLS", ".DOC",".PDF" }; - - private long lastTimeStamp=0; + private long _LastTimeStamp; public Chat(ChatDatenUebergabe chatDaten) { ChatDaten = chatDaten; } - #region Gruppen In Kontaktliste Wandler - public IOrderedEnumerable GroupklassenInChatKontakteUmwandler() + public IOrderedEnumerable GroupklassenInChatKontakteUmwandler() { foreach (var kontakt in ChatDaten.AlleGruppen.Response) { foreach (var value in kontakt.Value) { - string message = ""; - DateTime timestamp = new DateTime(); + var message = ""; - var lastMS = value.LastMessage; + var lastMessage = value.LastMessage; - DateTime timeformated = new DateTime(); + var timeformated = new DateTime(); - - if (lastMS != null) + if(lastMessage?.Text != null) { - if (lastMS.Text != null) - { - message = lastMS.Text; - - - } + message = lastMessage.Text; } - if( value.LastMessage != null) { - timestamp = DateTime.Parse(lastMS.Timestamp.Date); + if(value.LastMessage != null) { + var timestamp = DateTime.Parse(lastMessage.Timestamp.Date); var clientZone = TimeZoneInfo.Local; timeformated = TimeZoneInfo.ConvertTimeFromUtc(timestamp, clientZone); } - - if (message.Equals("") && value.LastMessage != null && !value.LastMessage.File.Equals("")) + if(string.IsNullOrEmpty(message) && !string.IsNullOrEmpty(value.LastMessage?.File)) { message = Path.GetFileName(value.LastMessage.File); } long? customerOid = null; - bool isC = false; - bool isE = false; - foreach (var user in value.Users) + var isEmployee = false; + + foreach(var user in value.Users) { - //oid des - if (user.Oid != ChatDaten.Userid) + if(user.Oid != ChatDaten.Userid) { - if (!user.Is_Employee && !String.IsNullOrEmpty(user.Userid_Manage)) + if(!user.Is_Employee && !string.IsNullOrEmpty(user.Userid_Manage)) { - - customerOid = Int64.Parse(user.Userid_Manage.Substring(1)); - isC = true; + customerOid = long.Parse(user.Userid_Manage.Substring(1)); } } } - if (value.Onlyemployees && value.Users.Length == 2) + if(value.OnlyEmployees && value.Users.Length == 2) { - isE = true; + isEmployee = true; } - //null steht für employee - Kontaktliste.Add(new KontaktlistBuilder(value.Name, AvatarToImageSourceConverter(value.Avatar,isE,isC), - message, timeformated, value.Oid, customerOid, value.Onlyemployees,value.Users.Length)); + _Contacts.Add(new Contact(value.Name, Utils.AvatarToImageSourceConverter(value.Avatar, isEmployee), message, timeformated, value.Oid, customerOid, value.OnlyEmployees, value.Users.Length)); - if(lastMS != null && lastMS.Timestamp != null && lastMS.Timestamp.Date != 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(lastMessage?.Timestamp?.Date != null) { + var span = DateTime.Parse(lastMessage.Timestamp.Date) - new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); + var unixTime = Convert.ToInt64(span.TotalSeconds); - if (lastTimeStamp < unixTime) + if (_LastTimeStamp < unixTime) { - lastTimeStamp = unixTime; + _LastTimeStamp = unixTime; } } } } - var sortedKontaktliste = Kontaktliste.OrderByDescending(r => r.TimeStamp); + var sortedKontaktliste = _Contacts.OrderByDescending(r => r.TimeStamp); return sortedKontaktliste; - //Search Bereich - //CollectionView view = (CollectionView)CollectionViewSource.GetDefaultView(Clientlist.ItemsSource); - //view.SortDescriptions.Add(new SortDescription("TimeStamp", ListSortDirection.Descending)); - //// view.SortDescriptions.Add(new SortDescription("StatusType", ListSortDirection.Descending)); - //view.Filter = UserFilter; } - private ImageSource AvatarToImageSourceConverter(string avatar,bool isEmployee, bool isCustomer) + public IOrderedEnumerable LadeChatNachrichtenVomKontakt(AktuellerKontakt pContact) { - if (!avatar.Equals("")) + if (pContact != null) { - try + HoleNachrichtenVomServer(pContact.GroupId); + _Messages.Clear(); + + foreach (var message in _UserMessages.Response.Messages) { - Bitmap bitmap; - var request = WebRequest.Create(avatar); - using (var response = request.GetResponse()) - using (var stream = response.GetResponseStream()) + var time = DateTime.Parse(message.Timestamp.Date); + var clientTimeZone = TimeZoneInfo.Local; + var formattedTime = TimeZoneInfo.ConvertTimeFromUtc(time, clientTimeZone); + var isMyOwnMessage = message.UserId == ChatDaten.Userid.Value; + var textMessage = message.Text ?? string.Empty; + + if(string.IsNullOrEmpty(textMessage)) { - bitmap = new Bitmap(stream); + textMessage = message.Original_Filename; } - MemoryStream ms = new MemoryStream(); - bitmap.Save(ms, ImageFormat.Png); - ms.Position = 0; - BitmapImage bi = new BitmapImage(); - bi.BeginInit(); - bi.CacheOption = BitmapCacheOption.OnLoad; - bi.StreamSource = ms; - bi.EndInit(); - ms.Dispose(); - ms.Close(); - - return bi; - } - catch (Exception e) - { - return null; - } - } - else - { - //team default png - string defImage = "pack://application:,,,/ChatController;component/Ressourcen/team_default.png"; - - if (isEmployee == true)//original true - { - //employee default png - defImage = "pack://application:,,,/ChatController;component/Ressourcen/employee_default.png"; - } - - if (isCustomer == true) - { - //client default png - defImage = "pack://application:,,,/ChatController;component/Ressourcen/client_default.png"; - } - - try - { - BitmapImage bix = new BitmapImage(); - bix.BeginInit(); - bix.UriSource = new Uri (defImage);//"pack://application:,,,/ChatController;component/Ressourcen/mitarbeiter-avatar.png" - bix.EndInit(); - return bix; - } - catch (Exception e) - { - return null; - } - } - } - #endregion - - #region Lade Nachrichten vom Kontakt in den Chat - public IOrderedEnumerable LadeChatNachrichtenVomKontakt(AktuellerKontakt kontakt) - { - if (kontakt != null) - { - HoleNachrichtenVomServer(kontakt.GroupId); - Messages.Clear(); - - foreach (var ChatMessage in _userMessages.Response.Messages) - { - if (ChatMessage.UserId == ChatDaten.Userid.Value) + if (!string.IsNullOrEmpty(message.File)) { - //var timeformated = DateTime.Parse(ChatMessage2.Timestamp.Date); - - var time = DateTime.Parse(ChatMessage.Timestamp.Date); - var clientZone = TimeZoneInfo.Local; - var timeformated = TimeZoneInfo.ConvertTimeFromUtc(time, clientZone); - - - if (!ChatMessage.File.Equals("")) - { - string textn = ""; - - if (ChatMessage.Text != null) - textn = ChatMessage.Text; - - if (textn.Equals("")) - textn = ChatMessage.Original_Filename; - - if (ImageExtensions.Contains(Path.GetExtension(ChatMessage.File).ToUpperInvariant())) - { - //string textn = ""; - - //if (ChatMessage2.Text != null) - // textn = ChatMessage2.Text; - - //if (textn.Equals("")) - // textn = ChatMessage2.Original_Filename; - - Messages.Add(new ChatMessage(ChatMessage.User_Name, textn, - timeformated, true, LadeBildNach(ChatMessage.Smaller_Image), - ChatMessage.File, ChatMessage.Original_Filename)); - } - else - if (DokumentExtension.Contains(Path.GetExtension(ChatMessage.File).ToUpperInvariant())) - { - Messages.Add(new ChatMessage(ChatMessage.User_Name, textn, timeformated, ChatMessage.Smaller_Image, true, ChatMessage.File)); - } - else - { - //MP4 und gifs und so unbehandelten dreck - Messages.Add(new ChatMessage(ChatMessage.User_Name, textn, timeformated, ChatMessage.Smaller_Image, true,ChatMessage.File)); - } - } - else - { - Messages.Add(new ChatMessage(ChatMessage.User_Name, ChatMessage.Text, - timeformated, true)); //dd MMMM yyyy HH:mm:ss - } + _Messages.Add(Constants.ImageFileExtensions.Contains(Path.GetExtension(message.File).ToUpperInvariant()) ? + new ChatMessage(message.User_Name, textMessage, formattedTime, isMyOwnMessage, DownloadImage(message.Smaller_Image), message.File, message.Original_Filename) : + new ChatMessage(message.User_Name, textMessage, formattedTime, message.Smaller_Image, isMyOwnMessage, message.File)); } else { - //var timeformated = DateTime.Parse(ChatMessage2.Timestamp.Date); - - var time = DateTime.Parse(ChatMessage.Timestamp.Date); - var clientZone = TimeZoneInfo.Local; - var timeformated = TimeZoneInfo.ConvertTimeFromUtc(time, clientZone); - - if (!ChatMessage.File.Equals("")) - { - string textn = ""; - - if (ChatMessage.Text != null) - textn = ChatMessage.Text; - - if (textn.Equals("")) - textn = ChatMessage.Original_Filename; - - if (ImageExtensions.Contains(Path.GetExtension(ChatMessage.File).ToUpperInvariant())) - { - - Messages.Add(new ChatMessage(ChatMessage.User_Name, textn, - timeformated, false, LadeBildNach(ChatMessage.Smaller_Image), - ChatMessage.File, ChatMessage.Original_Filename)); - } - else - if (DokumentExtension.Contains(Path.GetExtension(ChatMessage.File).ToUpperInvariant())) - { - //Dokument - Messages.Add(new ChatMessage(ChatMessage.User_Name,textn, timeformated, ChatMessage.Smaller_Image, false, ChatMessage.File)); - } - else - { - //ALLERLEI UNBEHANDELTER KRAM - Messages.Add(new ChatMessage(ChatMessage.User_Name, textn, timeformated, ChatMessage.Smaller_Image, false, ChatMessage.File)); - } - } - else - { - //Message - Messages.Add(new ChatMessage(ChatMessage.User_Name, ChatMessage.Text, timeformated, false)); - } + _Messages.Add(new ChatMessage(message.User_Name, message.Text, formattedTime, isMyOwnMessage)); } } - - - var x = Messages.OrderBy(r => r.SendTime); - - return x; - } - else - { - return Messages.OrderBy(r => r.SendTime); } + + return _Messages.OrderBy(r => r.SendTime); } - private ImageSource LadeBildNach(string link) + private static ImageSource DownloadImage(string pUri) { try { - BitmapImage bix = new BitmapImage(); - bix.BeginInit(); - bix.UriSource = new Uri(link); - bix.CacheOption = BitmapCacheOption.OnDemand; - bix.EndInit(); + var bitmapImage = new BitmapImage(); - return bix; + bitmapImage.BeginInit(); + bitmapImage.UriSource = new Uri(pUri); + bitmapImage.CacheOption = BitmapCacheOption.OnDemand; + bitmapImage.EndInit(); + + return bitmapImage; } - catch (Exception edf) + catch (Exception exception) { return null; } @@ -345,231 +183,118 @@ namespace ChatController.HauptKlassen { var endurl = ChatDaten.ServerUrl + "/api/chat/messages?groupid=" + groupId; - WebRequest request = WebRequest.Create(endurl); + var webRequest = WebRequest.Create(endurl); - request.Credentials = CredentialCache.DefaultCredentials; - request.Headers["Token"] = ChatDaten.AuthToken; - request.Headers["CustomerID"] = ChatDaten.Kundennummer; + webRequest.Credentials = CredentialCache.DefaultCredentials; + webRequest.Headers[Constants.Token] = ChatDaten.AuthToken; + webRequest.Headers[Constants.CustomerId] = ChatDaten.Kundennummer; - // Get the response. - using (WebResponse response = request.GetResponse()) + using (var response = webRequest.GetResponse()) { - // Display the status. - var statusResponse = ((HttpWebResponse) response).StatusDescription; + var responseFromServer = Utils.ReadStream(response); - - string responseFromServer = ReadStream(response); - - //verarbeite hier zu json if (!responseFromServer.Equals("")) { - _userMessages = null; - //################# Deserialisierung mit Json ############################### + _UserMessages = null; + var jsonDaten = JsonConvert.DeserializeObject(responseFromServer); - _userMessages = jsonDaten; - - if (_userMessages.Response.HasMorePages == true) + _UserMessages = jsonDaten; + + if (_UserMessages.Response.HasMorePages) { - _nextPage = _userMessages.Response.NextPage; - _hasNextPage = true; + _NextPage = _UserMessages.Response.NextPage; + _HasNextPage = true; } else { - _hasNextPage = false; + _HasNextPage = false; } } - else - { - // MessageBox.Show("Keine Daten Vorhanden."); - } } } catch (Exception e) { MessageBox.Show(e.Message, "Fehler", MessageBoxButton.OK); } - - } - - private string ReadStream(WebResponse response) - { - try - { - Stream dataStream = response.GetResponseStream(); - - StreamReader reader = new StreamReader(dataStream); - - string responseFromServer = reader.ReadToEnd(); - - - dataStream.Dispose(); - reader.Dispose(); - - dataStream.Close(); - reader.Close(); - - return responseFromServer; - } - catch (Exception e) - { - // MessageBox.Show(e.Message); - return null; - } } - #endregion - - #region Lade Weiter Nachrichten - - public IOrderedEnumerable LadeWeiterNachrichten(KontaktlistBuilder kontakt) + public IOrderedEnumerable LadeWeiterNachrichten(Contact kontakt) { - if (_hasNextPage == true) + if (_HasNextPage) { - HoleWeitereNachrichtenVomServer(kontakt.GroupId, _nextPage); + HoleWeitereNachrichtenVomServer(kontakt.GroupId, _NextPage); - foreach (var ChatMessage in _weitereUserMessages.Response.Messages) + foreach (var ChatMessage in _AdditionalUserMessages.Response.Messages) { - if (ChatMessage.UserId == ChatDaten.Userid.Value) + var time = DateTime.Parse(ChatMessage.Timestamp.Date); + var clientZone = TimeZoneInfo.Local; + var timeformated = TimeZoneInfo.ConvertTimeFromUtc(time, clientZone); + + var isLoggedInUsersMessage = ChatMessage.UserId == ChatDaten.Userid.Value; + + if (!string.IsNullOrEmpty(ChatMessage.File)) { - //var timeformated = DateTime.Parse(ChatMessage2.Timestamp.Date); + var messageText = ""; - var time = DateTime.Parse(ChatMessage.Timestamp.Date); - var clientZone = TimeZoneInfo.Local; - var timeformated = TimeZoneInfo.ConvertTimeFromUtc(time, clientZone); - - - if (!ChatMessage.File.Equals("")) // Bilder werden Sichtbar + if (ChatMessage.Text != null) { - string textn = ""; - - if (ChatMessage.Text != null) - textn = ChatMessage.Text; - - if (textn.Equals("")) - textn = ChatMessage.Original_Filename; - - - if (ImageExtensions.Contains(Path.GetExtension(ChatMessage.File).ToUpperInvariant())) - { - Messages.Add(new ChatMessage(ChatMessage.User_Name,textn, - timeformated, true, LadeBildNach(ChatMessage.Smaller_Image), - ChatMessage.File,ChatMessage.Original_Filename)); - } - else - if (DokumentExtension.Contains(Path.GetExtension(ChatMessage.File).ToUpperInvariant())) - { - Messages.Add(new ChatMessage(ChatMessage.User_Name,textn, timeformated, ChatMessage.Smaller_Image, true, ChatMessage.File)); - } - else - { - // Der Ganze Unbehndelte Kram - Messages.Add(new ChatMessage(ChatMessage.User_Name,textn, timeformated, ChatMessage.Smaller_Image, true, ChatMessage.File)); - } + messageText = ChatMessage.Text; } - else + + if (string.IsNullOrEmpty(messageText)) { - Messages.Add(new ChatMessage(ChatMessage.User_Name, ChatMessage.Text, - timeformated, true)); + messageText = ChatMessage.Original_Filename; } + + _Messages.Add(Constants.ImageFileExtensions.Contains(Path.GetExtension(ChatMessage.File).ToUpperInvariant()) ? + new ChatMessage(ChatMessage.User_Name, messageText, timeformated, isLoggedInUsersMessage, DownloadImage(ChatMessage.Smaller_Image), ChatMessage.File, ChatMessage.Original_Filename) : + new ChatMessage(ChatMessage.User_Name, messageText, timeformated, ChatMessage.Smaller_Image, isLoggedInUsersMessage, ChatMessage.File)); } else { - //var timeformated = DateTime.Parse(ChatMessage2.Timestamp.Date); - - var time = DateTime.Parse(ChatMessage.Timestamp.Date); - var clientZone = TimeZoneInfo.Local; - var timeformated = TimeZoneInfo.ConvertTimeFromUtc(time, clientZone); - - if (!ChatMessage.File.Equals("")) - { - //image - string textn = ""; - - if (ChatMessage.Text != null) - textn = ChatMessage.Text; - - if (textn.Equals("")) - textn = ChatMessage.Original_Filename; - - if (ImageExtensions.Contains(Path.GetExtension(ChatMessage.File).ToUpperInvariant())) - { - Messages.Add(new ChatMessage(ChatMessage.User_Name, textn, - timeformated, false, LadeBildNach(ChatMessage.Smaller_Image), - ChatMessage.File,ChatMessage.Original_Filename)); - } - else - if (DokumentExtension.Contains(Path.GetExtension(ChatMessage.File).ToUpperInvariant())) - { - //Dokument - Messages.Add(new ChatMessage(ChatMessage.User_Name, textn, timeformated, ChatMessage.Smaller_Image, false, ChatMessage.File)); - } - else - { - //Der Ganze Unbehandelte Kram MP4 und So - Messages.Add(new ChatMessage(ChatMessage.User_Name,textn, timeformated, ChatMessage.Smaller_Image, false, ChatMessage.File)); - } - } - else - { - Messages.Add(new ChatMessage(ChatMessage.User_Name, ChatMessage.Text, - timeformated, false)); - } + _Messages.Add(new ChatMessage(ChatMessage.User_Name, ChatMessage.Text, timeformated, true)); } } } - - var x = Messages.OrderBy(r => r.SendTime); - - return x; + return _Messages.OrderBy(r => r.SendTime); } - private void HoleWeitereNachrichtenVomServer(long groupId,string page) + private void HoleWeitereNachrichtenVomServer(long pGroupId, string pPage) { try { - var pa = page.Split('='); - var endurl = ChatDaten.ServerUrl + "/api/chat/messages?groupid=" + groupId+"&page="+pa[1]; + var page = pPage.Split('='); + var endurl = ChatDaten.ServerUrl + "/api/chat/messages?groupid=" + pGroupId + "&page=" + page[1]; - WebRequest request = WebRequest.Create(endurl); + var request = WebRequest.Create(endurl); request.Credentials = CredentialCache.DefaultCredentials; - request.Headers["Token"] = ChatDaten.AuthToken; - request.Headers["CustomerID"] = ChatDaten.Kundennummer; + request.Headers[Constants.Token] = ChatDaten.AuthToken; + request.Headers[Constants.CustomerId] = ChatDaten.Kundennummer; - // Get the response. - WebResponse response = request.GetResponse(); + var response = request.GetResponse(); - // Display the status. - var statusResponse = ((HttpWebResponse)response).StatusDescription; + var responseFromServer = Utils.ReadStream(response); - - string responseFromServer = ReadStream(response); - - //verarbeite hier zu json - if (!responseFromServer.Equals("")) + if (!string.IsNullOrEmpty(responseFromServer)) { - _weitereUserMessages = null; - //################# Deserialisierung mit Json ############################### - var jsonDaten = JsonConvert.DeserializeObject(responseFromServer); + _AdditionalUserMessages = null; + + var userMessages = JsonConvert.DeserializeObject(responseFromServer); - _weitereUserMessages = jsonDaten; + _AdditionalUserMessages = userMessages; - if (_weitereUserMessages.Response.HasMorePages == true) //neu + if (_AdditionalUserMessages.Response.HasMorePages) { - _nextPage = _weitereUserMessages.Response.NextPage; - _hasNextPage = true; + _NextPage = _AdditionalUserMessages.Response.NextPage; + _HasNextPage = true; } else { - _hasNextPage = false; + _HasNextPage = false; } - - } - else - { - // MessageBox.Show("Keine Daten Vorhanden."); } response.Close(); @@ -580,47 +305,38 @@ namespace ChatController.HauptKlassen } } - #endregion + private double? _FormerMessagesCount; - #region Prüfe ob Neue Nachrichten vorhanden sind - - private double? _oldMessageCount; - - public bool SchaueNachNeuenNachrichten(AktuellerKontakt kontakt) + public bool CheckIfNewMessagesExist(AktuellerKontakt pCurrentContact) { - TimeSpan span = (DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc)); - long timespan = System.Convert.ToInt64(span.TotalSeconds); - //long timespan = //lastTs.TotalSeconds; + var span = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); + var timespan = Convert.ToInt64(span.TotalSeconds); - //Debug.Print(String.Format("Kontakt: {0}, Anzahl: {1}", kontakt.Name, _userMessages.Response.Messages.Length)); - if (_userMessages != null && _userMessages.Response.Messages.Length > 0) + if (_UserMessages != null && _UserMessages.Response.Messages.Length > 0) { - timespan = _userMessages.Response.Messages.First().Created_At; + timespan = _UserMessages.Response.Messages.First().Created_At; } - if (kontakt != null) + if (pCurrentContact != null) { - var newMsCount = SendOwnChatNewsRequest(kontakt.GroupId, timespan); + var currentMessagesCount = SendOwnChatNewsRequest(pCurrentContact.GroupId, timespan); - if (_oldMessageCount == null) + if (_FormerMessagesCount == null) { - _oldMessageCount = newMsCount; + _FormerMessagesCount = currentMessagesCount; } - if (newMsCount.Value == _oldMessageCount.Value) + if (currentMessagesCount != null && _FormerMessagesCount != null && currentMessagesCount.Equals(_FormerMessagesCount)) { return false; } - else - { - _oldMessageCount = newMsCount; - return true; - } - } - else - { - return false; + + _FormerMessagesCount = currentMessagesCount; + + return true; } + + return false; } private double? SendOwnChatNewsRequest(long groupId, long lastStamp) @@ -629,25 +345,19 @@ namespace ChatController.HauptKlassen { var endurl = ChatDaten.ServerUrl + "/api/ownchat/news/" + groupId+"/"+lastStamp; - WebRequest request = WebRequest.Create(endurl); + var request = WebRequest.Create(endurl); request.Credentials = CredentialCache.DefaultCredentials; - request.Headers["Token"] = ChatDaten.AuthToken; - request.Headers["CustomerID"] = ChatDaten.Kundennummer; + request.Headers[Constants.Token] = ChatDaten.AuthToken; + request.Headers[Constants.CustomerId] = ChatDaten.Kundennummer; - // Get the response. - WebResponse response = request.GetResponse(); + var response = request.GetResponse(); - // Display the status. - var statusResponse = ((HttpWebResponse)response).StatusDescription; - - - string responseFromServer = ReadStream(response); + var responseFromServer = Utils.ReadStream(response); var jsonDaten = JsonConvert.DeserializeObject(responseFromServer); return jsonDaten.MessageCount; - } catch (Exception e) { @@ -655,44 +365,37 @@ namespace ChatController.HauptKlassen } } - #endregion - - #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); + var span = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); + var unixTime = Convert.ToInt64(span.TotalSeconds); - var x = SendeTimestampForEach(0, unixTime); + var x = SendeTimestampForEach(0); + if (x > 0) { - lastTimeStamp = unixTime; + _LastTimeStamp = unixTime; } + return x; } - private double SendeTimestampForEach(long groupId, long lastStamp) + private double SendeTimestampForEach(long groupId) { try { - var endurl = ChatDaten.ServerUrl + "/api/ownchat/news/" + groupId + "/" + lastTimeStamp; //lastStamp + var endurl = ChatDaten.ServerUrl + "/api/ownchat/news/" + groupId + "/" + _LastTimeStamp; - WebRequest request = WebRequest.Create(endurl); + var request = WebRequest.Create(endurl); request.Credentials = CredentialCache.DefaultCredentials; - request.Headers["Token"] = ChatDaten.AuthToken; - request.Headers["CustomerID"] = ChatDaten.Kundennummer; + request.Headers[Constants.Token] = ChatDaten.AuthToken; + request.Headers[Constants.CustomerId] = ChatDaten.Kundennummer; ((HttpWebRequest) request).KeepAlive = false; - // Get the response. - WebResponse response = request.GetResponse(); + var response = request.GetResponse(); - // Display the status. - var statusResponse = ((HttpWebResponse)response).StatusDescription; - - - string responseFromServer = ReadStream(response); + var responseFromServer = Utils.ReadStream(response); var jsonDaten = JsonConvert.DeserializeObject(responseFromServer); @@ -705,150 +408,115 @@ namespace ChatController.HauptKlassen } } - public IOrderedEnumerable NeueGroupklassenKontakte() + public IOrderedEnumerable NeueGroupklassenKontakte() { - List Kontakt = new List(); + var contacts = new List(); - var daten = GruppenHolen(); + var groupData = GruppenHolen(); - foreach (var kontakt in daten.Response) + foreach (var contact in groupData.Response) { - foreach (var value in kontakt.Value) + foreach (var value in contact.Value) { - string message = ""; - DateTime timestamp = new DateTime(); - DateTime timeformated = new DateTime(); + var message = ""; + var timeformated = new DateTime(); - var lastMS = value.LastMessage; + var lastMessage = value.LastMessage; - if (lastMS != null) + if (lastMessage?.Text != null) { - if (lastMS.Text != null) - { - message = lastMS.Text; - timestamp = DateTime.Parse(lastMS.Timestamp.Date); + message = lastMessage.Text; + var timestamp = DateTime.Parse(lastMessage.Timestamp.Date); - var clientZone = TimeZoneInfo.Local; - timeformated = TimeZoneInfo.ConvertTimeFromUtc(timestamp, clientZone); - } + var clientZone = TimeZoneInfo.Local; + timeformated = TimeZoneInfo.ConvertTimeFromUtc(timestamp, clientZone); } - if (message.Equals("") && value.LastMessage != null && !value.LastMessage.File.Equals("")) + if (string.IsNullOrEmpty(message) && !string.IsNullOrEmpty(value.LastMessage?.File)) { message = Path.GetFileName(value.LastMessage.File); } long? customerOid = null; - bool isC = false; - bool isE = false; + var isEmployee = false; + foreach (var user in value.Users) { - //oid des if (user.Oid != ChatDaten.Userid) { - if (!user.Is_Employee && !String.IsNullOrEmpty(user.Userid_Manage)) + if (!user.Is_Employee && !string.IsNullOrEmpty(user.Userid_Manage)) { - customerOid = Int64.Parse(user.Userid_Manage.Substring(1)); - isC = true; + customerOid = long.Parse(user.Userid_Manage.Substring(1)); } - } } - if (value.Onlyemployees && value.Users.Length == 2) + if (value.OnlyEmployees && value.Users.Length == 2) { - isE = true; + isEmployee = true; } - - //null steht für employee - Kontakt.Add(new KontaktlistBuilder(value.Name, AvatarToImageSourceConverter(value.Avatar,isE,isC), - message, timeformated, value.Oid, customerOid, value.Onlyemployees, value.Users.Length)); + contacts.Add(new Contact(value.Name, Utils.AvatarToImageSourceConverter(value.Avatar, isEmployee), message, timeformated, value.Oid, customerOid, value.OnlyEmployees, value.Users.Length)); - if (lastMS != null && lastMS.Timestamp != null && lastMS.Timestamp.Date != 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 (lastMessage?.Timestamp?.Date != null) { + var span = DateTime.Parse(lastMessage.Timestamp.Date) - new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); + var unixTime = Convert.ToInt64(span.TotalSeconds); - if (lastTimeStamp < unixTime) + if (_LastTimeStamp < unixTime) { - lastTimeStamp = unixTime; + _LastTimeStamp = unixTime; } } - } } - - var sortedKontaktliste = Kontakt.OrderByDescending(r => r.TimeStamp); - - return sortedKontaktliste; - - - //Search Bereich - //CollectionView view = (CollectionView)CollectionViewSource.GetDefaultView(Clientlist.ItemsSource); - //view.SortDescriptions.Add(new SortDescription("TimeStamp", ListSortDirection.Descending)); - //// view.SortDescriptions.Add(new SortDescription("StatusType", ListSortDirection.Descending)); - //view.Filter = UserFilter; + return contacts.OrderByDescending(r => r.TimeStamp); } private ChatGruppenDaten GruppenHolen() { try { - var endurl = ChatDaten.ServerUrl + "/api/chat/groups"; + var url = ChatDaten.ServerUrl + Constants.GetChatGroupsUrl; - WebRequest request = WebRequest.Create(endurl); + var request = WebRequest.Create(url); request.Credentials = CredentialCache.DefaultCredentials; - request.Headers["Token"] = ChatDaten.AuthToken; - request.Headers["CustomerID"] = ChatDaten.Kundennummer; + request.Headers[Constants.Token] = ChatDaten.AuthToken; + request.Headers[Constants.CustomerId] = ChatDaten.Kundennummer; - // Get the response. - WebResponse response = request.GetResponse(); + var response = request.GetResponse(); - // Display the status. - var statusResponse = ((HttpWebResponse)response).StatusDescription; - - - string responseFromServer = ReadStream(response); - - //verarbeite hier zu json - //################# Deserialisierung mit Json ############################### + var responseFromServer = Utils.ReadStream(response); var jsonDaten = JsonConvert.DeserializeObject(responseFromServer); - response.Close(); - return jsonDaten; } catch (Exception e) { - MessageBox.Show(e.Message, "Fehler", MessageBoxButton.OK); + MessageBox.Show(e.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error); return null; } - } - #endregion - - #region Sende Normale Message an Kontakt - public void AddeNachrichtDerView(string nachricht) + public void AddeNachrichtDerView(string pMessage) { try { - string username = ""; + var username = ""; - foreach (var daten in ChatDaten.AngemeldeterUser.Response) + var user = ChatDaten.AngemeldeterUser.Response.Values.FirstOrDefault(); + if(user != null) { - username = daten.Value.Firstname + " " + daten.Value.Lastname; + username = $"{user.Firstname} {user.Lastname}"; } - + var time = DateTime.Now; - Messages.Add(new ChatMessage(username, nachricht, - time, true)); + _Messages.Add(new ChatMessage(username, pMessage, time, true)); } catch (Exception e) @@ -903,31 +571,15 @@ namespace ChatController.HauptKlassen } } - #endregion - - #region Sende Media Nachricht an Kontakt - public string HoleMedium() { try { - OpenFileDialog openFileDialog1 = new OpenFileDialog(); + var openFileDialog = new OpenFileDialog {Filter = Resource.OpenFileDialogFilter_DocumentsAndImages}; - //if (typ == 1) - openFileDialog1.Filter = "Office Dokumente |*.doc;*.xls;*.ppt;*.txt;*.pdf|Bilder |*.jpg;*.png;*.jpeg;*.jpe;*.gif;*.bmp"; - //else - // openFileDialog1.Filter = "Office Dokumente |*.doc;*.xls;*.ppt;*.txt"; - - DialogResult result = openFileDialog1.ShowDialog(); + var result = openFileDialog.ShowDialog(); - if (result == System.Windows.Forms.DialogResult.OK) - { - return openFileDialog1.FileName; - } - else - { - return null; - } + return result == DialogResult.OK ? openFileDialog.FileName : null; } catch (Exception e) { @@ -936,83 +588,77 @@ namespace ChatController.HauptKlassen } } - public void AddeMediumDerNachrichtView(string file,string originalFilePath) + public void AddeMediumDerNachrichtView(string pFile, string pOriginalFilePath) { try { - var ChatMessage = _userMessages.Response.Messages.Last(); - - var timeformated = DateTime.Now; - - if (ImageExtensions.Contains(Path.GetExtension(file).ToUpperInvariant())) + if(string.IsNullOrEmpty(pFile) || string.IsNullOrEmpty(pOriginalFilePath)) { - byte[] mdatei; - using (Stream reader = File.OpenRead(file)) + return; + } + + var message = _UserMessages.Response.Messages.Last(); + + var sendTime = DateTime.Now; + + if (Constants.ImageFileExtensions.Contains(Path.GetExtension(pFile).ToUpperInvariant())) + { + byte[] mediaFile; + using (Stream reader = File.OpenRead(pFile)) { - mdatei = ReadFully(reader); + mediaFile = ReadFully(reader); } - MemoryStream mss = new MemoryStream(mdatei); - System.Drawing.Image Img = System.Drawing.Image.FromStream(mss); + var memoryStream = new MemoryStream(mediaFile); + var image = System.Drawing.Image.FromStream(memoryStream); - - using (System.Drawing.Bitmap dImg = new System.Drawing.Bitmap(Img)) + using (var bitmap = new Bitmap(image)) { - using (MemoryStream ms = new MemoryStream()) + using (var stream = new MemoryStream()) { short orient = 0; - int orientationId = 0x0112; + const int orientationId = 0x0112; - if (Img.PropertyIdList.Contains(orientationId)) + if (image.PropertyIdList.Contains(orientationId)) { - PropertyItem item = Img.GetPropertyItem(orientationId); - + var item = image.GetPropertyItem(orientationId); orient = BitConverter.ToInt16(item.Value, 0); - dImg.SetPropertyItem(item); + bitmap.SetPropertyItem(item); } + var flipType = OrientationToFlipType(orient.ToString()); - var x = OrientationToFlipType(orient.ToString()); + bitmap.RotateFlip(flipType); - dImg.RotateFlip(x); - - dImg.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); + bitmap.Save(stream, ImageFormat.Jpeg); - System.Windows.Media.Imaging.BitmapImage bImg = new System.Windows.Media.Imaging.BitmapImage(); + var bitmapImage = new BitmapImage(); - bImg.BeginInit(); - bImg.StreamSource = new MemoryStream(ms.ToArray()); - bImg.EndInit(); + bitmapImage.BeginInit(); + bitmapImage.StreamSource = new MemoryStream(stream.ToArray()); + bitmapImage.EndInit(); - System.Windows.Controls.Image img = new System.Windows.Controls.Image(); - img.Source = bImg; - - //original image - string filename = Path.GetFileName(originalFilePath).ToLower(); + var filename = Path.GetFileName(pOriginalFilePath).ToLower(); filename = filename.Replace(".bmp", ".jpg"); - - //Path.GetFileName(file) - Messages.Add(new ChatMessage(ChatMessage.User_Name, filename , - timeformated, true, bImg, - file, filename)); + + _Messages.Add(new ChatMessage(message.User_Name, filename, sendTime, true, bitmapImage, pFile, filename)); } } - mss.Dispose(); - mss.Close(); + memoryStream.Dispose(); + memoryStream.Close(); } - else if (DokumentExtension.Contains(Path.GetExtension(file).ToUpperInvariant())) + else if (Constants.DocumentFileExtension.Contains(Path.GetExtension(pFile).ToUpperInvariant())) { - Messages.Add(new ChatMessage(ChatMessage.User_Name, Path.GetFileName(file), timeformated, ChatMessage.Smaller_Image, true,file)); + _Messages.Add(new ChatMessage(message.User_Name, Path.GetFileName(pFile), sendTime, message.Smaller_Image, true, pFile)); } else { - //MP4 und gifs und so unbehandelten dreck - Messages.Add(new ChatMessage(ChatMessage.User_Name, Path.GetFileName(file), timeformated, ChatMessage.Smaller_Image, true, file)); + _Messages.Add(new ChatMessage(message.User_Name, Path.GetFileName(pFile), sendTime, message.Smaller_Image, true, pFile)); } } @@ -1022,29 +668,34 @@ namespace ChatController.HauptKlassen } } - public void AddMediumContextDerNachrichtView(byte[] datei,string filename) + public void AddMediumContextDerNachrichtView(byte[] pFile, string pFileName) { - var ChatMessage = _userMessages.Response.Messages.Last(); - - var timeformated = DateTime.Now; - - if (ImageExtensions.Contains(Path.GetExtension(filename).ToUpperInvariant())) + if(string.IsNullOrEmpty(pFileName)) { - BitmapImage biImg = new BitmapImage(); - MemoryStream ms = new MemoryStream(datei); - biImg.BeginInit(); - biImg.StreamSource = ms; - biImg.EndInit(); + return; + } + + var message = _UserMessages.Response.Messages.Last(); - ms.Close(); - ImageSource logo = biImg; + var sendtime = DateTime.Now; - Messages.Add(new ChatMessage(ChatMessage.User_Name, Path.GetFileName(filename), - timeformated, true, logo, filename, Path.GetFileName(filename))); + if (Constants.ImageFileExtensions.Contains(Path.GetExtension(pFileName).ToUpperInvariant())) + { + var bitmapImage = new BitmapImage(); + var memoryStream = new MemoryStream(pFile); + + bitmapImage.BeginInit(); + bitmapImage.StreamSource = memoryStream; + bitmapImage.EndInit(); + + memoryStream.Close(); + ImageSource logo = bitmapImage; + + _Messages.Add(new ChatMessage(message.User_Name, Path.GetFileName(pFileName), sendtime, true, logo, pFileName, Path.GetFileName(pFileName))); } else { - Messages.Add(new ChatMessage(ChatMessage.User_Name, Path.GetFileName(filename), timeformated, ChatMessage.Smaller_Image, true, filename)); + _Messages.Add(new ChatMessage(message.User_Name, Path.GetFileName(pFileName), sendtime, message.Smaller_Image, true, pFileName)); } } @@ -1060,161 +711,146 @@ namespace ChatController.HauptKlassen } } - private void VerarbeiteMedia(string file,AktuellerKontakt kontakt, string originalFilePath) + private void VerarbeiteMedia(string pFile, AktuellerKontakt pContact, string pOriginalFilePath) { - byte[] mdatei; - using (Stream reader = File.OpenRead(file)) + if(string.IsNullOrEmpty(pOriginalFilePath)) { - mdatei = ReadFully(reader); + return; } - string filename = Path.GetFileName(originalFilePath).ToLower(); + byte[] mediaFile; + using (Stream reader = File.OpenRead(pFile)) + { + mediaFile = ReadFully(reader); + } + + var fileName = Path.GetFileName(pOriginalFilePath).ToLower(); - //Medium auflösung auf 80 % vom original setzen - //Image x = (Bitmap)((new ImageConverter()).ConvertFrom(mdatei)); - - // image wieder in byte[] umwandeln und übergeben - if (ImageExtensions.Contains(Path.GetExtension(filename).ToUpperInvariant())){ + if (Constants.ImageFileExtensions.Contains(Path.GetExtension(fileName).ToUpperInvariant())){ - filename = filename.Replace(".bmp", ".jpg"); + fileName = fileName.Replace(".bmp", ".jpg"); - SendMediaMessage(filename, kontakt.GroupId, mdatei); + SendMediaMessage(fileName, pContact.GroupId, mediaFile); } else { - SendMediaMessage(filename, kontakt.GroupId, mdatei); + SendMediaMessage(fileName, pContact.GroupId, mediaFile); } - } - public string ScaleImage(string file,string format) + public string ScaleImage(string pFile, string pFormat) { try { - byte[] mdatei; - using (Stream reader = File.OpenRead(file)) + byte[] mediaFile; + using (Stream reader = File.OpenRead(pFile)) { - mdatei = ReadFully(reader); + mediaFile = ReadFully(reader); } - - MemoryStream ms = new MemoryStream(mdatei); - System.Drawing.Image Image = System.Drawing.Image.FromStream(ms); + var memoryStream = new MemoryStream(mediaFile); + var image = System.Drawing.Image.FromStream(memoryStream); - float width = 0; - float height = 0; - //Querformat - if (Image.Height < Image.Width ) + float width, height; + + if (image.Height < image.Width ) { - - if (Image.Height > 1080) + if (image.Height > 1080) { - float factor = (float)Image.Height / 1080; + var factor = (float)image.Height / 1080; height = 1080; - width = Image.Width / factor; + width = image.Width / factor; } else { - return file; + return pFile; } } - else if(Image.Height < 1080 && Image.Width < 1080 ) + else if(image.Height < 1080 && image.Width < 1080 ) { - return file; + return pFile; } - else // Hochformat + else { - if (Image.Width > 1080) + if (image.Width > 1080) { - float factor = (float)Image.Width / 1080; + var factor = (float)image.Width / 1080; width = 1080; - height = Image.Height / factor; + height = image.Height / factor; } else { - return file; + return pFile; } } - - - System.Drawing.Bitmap bmpScaled = new System.Drawing.Bitmap(Image,new Size((int)width,(int)height)); - int orientationId = 0x0112; + var scaledBitmap = new Bitmap(image, new Size((int) width, (int) height)); + + const int orientationId = 0x0112; - if (Image.PropertyIdList.Contains(orientationId)) { - PropertyItem item = Image.GetPropertyItem(orientationId); + if (image.PropertyIdList.Contains(orientationId)) { + var item = image.GetPropertyItem(orientationId); - bmpScaled.SetPropertyItem(item); + scaledBitmap.SetPropertyItem(item); } - using (Graphics gr = Graphics.FromImage(Image)) + using (var graphics = Graphics.FromImage(image)) { - gr.Clear(Color.Transparent); + graphics.Clear(Color.Transparent); - // falls jemand mekert, muss die intergedönse erhöht werden - gr.InterpolationMode = InterpolationMode.Low; // InterpolationMode.HighQualityBicubic; + graphics.InterpolationMode = InterpolationMode.Low; - - gr.DrawImage(bmpScaled, (int)width, (int)height); - //bitMap = gr.GetHdc(); + graphics.DrawImage(scaledBitmap, (int) width, (int) height); } - ImageConverter converter = new ImageConverter(); + var imageConverter = new ImageConverter(); - byte[] imageData = (byte[])converter.ConvertTo(bmpScaled, typeof(byte[])); - - - string filePath = System.IO.Path.GetTempPath() + Guid.NewGuid().ToString() + format; + var imageData = (byte[])imageConverter.ConvertTo(scaledBitmap, typeof(byte[])); + var filePath = Path.GetTempPath() + Guid.NewGuid() + pFormat; - //".JPG", ".JPE", ".BMP", ".GIF", ".PNG", ".JPEG" - if (format.Equals(".JPG") || format.Equals(".JPE") || format.Equals(".JPEG") || format.Equals(".BMP")) + if (pFormat.Equals(".JPG") || pFormat.Equals(".JPE") || pFormat.Equals(".JPEG") || pFormat.Equals(".BMP")) { - bmpScaled.Save(filePath, ImageFormat.Jpeg); - }else if (format.Equals(".PNG")) - { - bmpScaled.Save(filePath, ImageFormat.Png); + scaledBitmap.Save(filePath, ImageFormat.Jpeg); } - else if (format.Equals(".GIF")) + else if (pFormat.Equals(".PNG")) { - bmpScaled.Save(filePath, ImageFormat.Gif); + scaledBitmap.Save(filePath, ImageFormat.Png); + } + else if (pFormat.Equals(".GIF")) + { + scaledBitmap.Save(filePath, ImageFormat.Gif); } if (File.Exists(filePath)) { - FileInfo f = new FileInfo(filePath); - long s1 = f.Length; + var fileInfo = new FileInfo(filePath); + var fileInfoLength = fileInfo.Length; - if (ChatDaten.MaxUploadSize < s1) + if (ChatDaten.MaxUploadSize < fileInfoLength) { File.Delete(filePath); - return ""; + return string.Empty; } } else { - return ""; + return string.Empty; } - //byte[] datei; - //using (Stream reader = File.OpenRead(filePath)) - //{ - // datei = ReadFully(reader); - //} - ms.Dispose(); - ms.Close(); + memoryStream.Dispose(); + memoryStream.Close(); return filePath; } catch (Exception e) { - //MessageBox.Show(e.Message, "Fehler"); - return file; + return pFile; } } @@ -1224,86 +860,62 @@ namespace ChatController.HauptKlassen { case 1: return RotateFlipType.RotateNoneFlipNone; - break; case 2: return RotateFlipType.RotateNoneFlipX; - break; case 3: return RotateFlipType.Rotate180FlipNone; - break; case 4: return RotateFlipType.Rotate180FlipX; - break; case 5: return RotateFlipType.Rotate90FlipX; - break; case 6: return RotateFlipType.Rotate90FlipNone; - break; case 7: return RotateFlipType.Rotate270FlipX; - break; case 8: return RotateFlipType.Rotate270FlipNone; - break; default: return RotateFlipType.RotateNoneFlipNone; } } - private static byte[] ReadFully(Stream stream) + private static byte[] ReadFully(Stream pStream) { - byte[] buffer = new byte[32768]; - using (MemoryStream ms = new MemoryStream()) + using(var memStream = new MemoryStream()) { - while (true) - { - int read = stream.Read(buffer, 0, buffer.Length); - if (read <= 0) - { - return ms.ToArray(); - } - - ms.Write(buffer, 0, read); - } + pStream.CopyTo(memStream); + return memStream.ToArray(); } } - private HttpRequestMessage httpRequest; + private HttpRequestMessage _HttpRequest; - private async void SendMediaMessage(string message, long groupId, byte[] mediaDatei) + private async void SendMediaMessage(string pMessage, long pGroupId, byte[] pMediaFile) { try { - #region test Multiplatform - using (MultipartFormDataContent multiPartContent = new MultipartFormDataContent()) + using (var multiPartContent = new MultipartFormDataContent()) { - Uri requestUri = new Uri(ChatDaten.ServerUrl + "/api/chat/messages/send"); + var requestUri = new Uri(ChatDaten.ServerUrl + "/api/chat/messages/send"); - multiPartContent.Add(new ByteArrayContent(mediaDatei, 0, mediaDatei.Count()), "file", message); - multiPartContent.Add(new StringContent(groupId + ""), "groupid"); + multiPartContent.Add(new ByteArrayContent(pMediaFile, 0, pMediaFile.Length), "file", pMessage); + multiPartContent.Add(new StringContent(pGroupId.ToString()), "groupid"); - httpRequest = new HttpRequestMessage(); - httpRequest.Method = HttpMethod.Post; - httpRequest.RequestUri = requestUri; - httpRequest.Content = multiPartContent; - - httpRequest.Headers.Add("Token", ChatDaten.AuthToken); - httpRequest.Headers.Add("CustomerID", ChatDaten.Kundennummer); + _HttpRequest = new HttpRequestMessage + { + Method = HttpMethod.Post, + RequestUri = requestUri, + Content = multiPartContent + }; + _HttpRequest.Headers.Add(Constants.Token, ChatDaten.AuthToken); + _HttpRequest.Headers.Add(Constants.CustomerId, ChatDaten.Kundennummer); - HttpResponseMessage httpResponse = null; + var httpClient = new HttpClient(); + var httpResponse = await httpClient.SendAsync(_HttpRequest, CancellationToken.None).ConfigureAwait(false); - HttpClient httpClient = new HttpClient(); - //httpClient.Timeout = TimeSpan.FromSeconds(300); - httpResponse = await httpClient.SendAsync(httpRequest, CancellationToken.None).ConfigureAwait(false); - - - string antwortResponse = await httpResponse.Content.ReadAsStringAsync(); - - //MessageBox.Show(antwortResponse); + var antwortResponse = await httpResponse.Content.ReadAsStringAsync(); } - #endregion } catch (Exception e) { @@ -1311,20 +923,17 @@ namespace ChatController.HauptKlassen } } - #endregion - - #region Context Menue Für Chat inkl. Funktionen public ContextMenu ErstelleKontextMenue() { - ContextMenu context = new ContextMenu(); + var contextMenu = new ContextMenu(); - System.Windows.Controls.MenuItem item1 = new System.Windows.Controls.MenuItem(); // jeweils umbenenen Speichern unter - System.Windows.Controls.MenuItem item2 = new System.Windows.Controls.MenuItem(); // Einfügen - System.Windows.Controls.MenuItem item3 = new System.Windows.Controls.MenuItem(); // Kopieren + System.Windows.Controls.MenuItem item1 = new System.Windows.Controls.MenuItem(); + System.Windows.Controls.MenuItem item2 = new System.Windows.Controls.MenuItem(); + System.Windows.Controls.MenuItem item3 = new System.Windows.Controls.MenuItem(); - context.Items.Add(item1); - context.Items.Add(item2); - context.Items.Add(item3); + contextMenu.Items.Add(item1); + contextMenu.Items.Add(item2); + contextMenu.Items.Add(item3); item1.Header = "Speichern unter"; @@ -1336,83 +945,70 @@ namespace ChatController.HauptKlassen item3.Header = "Kopieren"; item3.Visibility = Visibility.Visible; - //Image icon = new Image(); - //icon.Source = new BitmapImage(new Uri(@"..\..\Ressource\ClipboardDisabled.png", UriKind.Relative)); - //icon.Height = 16; - //icon.Width = 16;//(new Size(16, 16)); - //item1.Icon = icon; - - return context; + return contextMenu; } - #region Speichere Chat Doku / Media aufm PC - public void SpeichernUnterFunkion(ChatMessage item) + public void SpeichernUnterFunkion(ChatMessage pChatMessage) { - if (item.ImageSources != null) + if (pChatMessage.ImageSources != null) { - - SpeichernUnter(1, Path.GetFileName(item.OriginalImage), - DownloadMediaDatei(item.OriginalImage)); + SpeichernUnter(1, Path.GetFileName(pChatMessage.OriginalImage), DownloadMediaDatei(pChatMessage.OriginalImage)); } } - private byte[] DownloadMediaDatei(string pfad) + private static byte[] DownloadMediaDatei(string pFilePath) { + byte[] mediaFile = null; + try { - byte[] pic = null; - - using (WebClient client = new WebClient()) + using(var webClient = new WebClient()) { - pic = client.DownloadData(pfad); + mediaFile = webClient.DownloadData(pFilePath); } - return pic; + return mediaFile; } - catch (Exception e) + catch(Exception e) { - //throw new Exception(e.Message); MessageBox.Show("Fehler: " + e.Message, "Fehler", MessageBoxButton.OK); - return null; } + + return mediaFile; } - private void SpeichernUnter(int filterTyp, string dateiname, byte[] datensatz) + private static void SpeichernUnter(int pFilterType, string pFileName, byte[] pMediaFile) { try { - SaveFileDialog saveFileDialog1 = new SaveFileDialog(); + var saveFileDialog = new SaveFileDialog {FileName = Path.GetFileName(pFileName)}; - saveFileDialog1.FileName = Path.GetFileName(dateiname); - - if (filterTyp == 1) // Bilder + switch(pFilterType) { - saveFileDialog1.Filter = "Bilder |*.jpg;*.png;*.jpeg;*.jpe;*.gif;*.bmp"; - saveFileDialog1.Title = "Bild Speichern"; - saveFileDialog1.ShowDialog(); + case 1: + saveFileDialog.Filter = Resource.SaveFileDialogFilter_Images; + saveFileDialog.Title = Resource.SaveFIleDialogTitle_Images; + saveFileDialog.ShowDialog(); + break; + case 2: + saveFileDialog.Filter = Resource.SaveFileDialogFilter_Documents; + saveFileDialog.Title = Resource.SaveFIleDialogTitle_Documents; + saveFileDialog.ShowDialog(); + break; + case 3: + saveFileDialog.Filter = Resource.SaveFileDialogFilter_Audio; + saveFileDialog.Title = Resource.SaveFIleDialogTitle_Audio; + saveFileDialog.ShowDialog(); + break; } - if (filterTyp == 2) //Office + if (!string.IsNullOrEmpty(saveFileDialog.FileName)) { - saveFileDialog1.Filter = "Office Dokumente |*.doc;*.xls;*.ppt;*.txt"; - saveFileDialog1.Title = "Dokument Speichern"; - saveFileDialog1.ShowDialog(); - } + var fileStream = (FileStream)saveFileDialog.OpenFile(); - if (filterTyp == 3) // Audio - { - saveFileDialog1.Filter = "Audio Datei|*.wav;*.mp3;*.wma;*.aac;*.ogg;"; - saveFileDialog1.Title = "Audio Speichern"; - saveFileDialog1.ShowDialog(); - } + fileStream.Write(pMediaFile, 0, pMediaFile.Length); - if (saveFileDialog1.FileName != "") - { - FileStream fs = (FileStream)saveFileDialog1.OpenFile(); - - fs.Write(datensatz, 0, datensatz.Length); - - fs.Close(); + fileStream.Close(); } } catch (Exception e) @@ -1421,40 +1017,35 @@ namespace ChatController.HauptKlassen } } - #endregion - - #region Fuege Daten Bilder usw via DragAndDrop in den Chat - public void Einfuegen(long groupOid, ChatMainControl chatMainControl) + public void Einfuegen(long pGroupOid, ChatMainControl pChatMainControl) { - var d = System.Windows.Forms.Clipboard.GetDataObject(); + var dataObject = Clipboard.GetDataObject(); - if (d.GetDataPresent(DataFormats.FileDrop)) + if(dataObject == null) + { + return; + } + + if (dataObject.GetDataPresent(DataFormats.FileDrop)) { try { - string[] fileList = d.GetData(DataFormats.FileDrop) as string[]; - - string filename = ""; - - FileStream file = null; - - if (fileList != null) + if (dataObject.GetData(DataFormats.FileDrop) is string[] fileList) { if (File.Exists(fileList[0])) { - filename = Path.GetFileName(fileList[0]); + var fileName = Path.GetFileName(fileList[0]); - byte[] myBinary = File.ReadAllBytes(fileList[0]); + var mediaFile = File.ReadAllBytes(fileList[0]); + + AddMediumContextDerNachrichtView(mediaFile, fileName); - AddMediumContextDerNachrichtView(myBinary,filename); - - CollectionViewSource.GetDefaultView(chatMainControl.ChatListBox.ItemsSource).Refresh(); + CollectionViewSource.GetDefaultView(pChatMainControl.ChatListBox.ItemsSource).Refresh(); - chatMainControl.ChatListBox.Items.MoveCurrentToLast(); - chatMainControl.ChatListBox.ScrollIntoView(chatMainControl.ChatListBox.Items.CurrentItem); + pChatMainControl.ChatListBox.Items.MoveCurrentToLast(); + pChatMainControl.ChatListBox.ScrollIntoView(pChatMainControl.ChatListBox.Items.CurrentItem); - - SendMediaMessage(filename, groupOid, myBinary); + SendMediaMessage(fileName, pGroupOid, mediaFile); } } } @@ -1463,52 +1054,53 @@ namespace ChatController.HauptKlassen MessageBox.Show("Fehler: " + e.Message, "Fehler", MessageBoxButton.OK); } } - else - if (d.GetDataPresent(DataFormats.Text)) + else + { + if (dataObject.GetDataPresent(DataFormats.Text)) { - string text = (string)d.GetData(DataFormats.StringFormat); + var text = (string) dataObject.GetData(DataFormats.StringFormat); AddeNachrichtDerView(text); - CollectionViewSource.GetDefaultView(chatMainControl.ChatListBox.ItemsSource).Refresh(); + CollectionViewSource.GetDefaultView(pChatMainControl.ChatListBox.ItemsSource).Refresh(); - chatMainControl.ChatListBox.Items.MoveCurrentToLast(); - chatMainControl.ChatListBox.ScrollIntoView(chatMainControl.ChatListBox.Items.CurrentItem); + pChatMainControl.ChatListBox.Items.MoveCurrentToLast(); + pChatMainControl.ChatListBox.ScrollIntoView(pChatMainControl.ChatListBox.Items.CurrentItem); - SendMessage(text, groupOid); + SendMessage(text, pGroupOid); } - else - if (d.GetDataPresent(DataFormats.Bitmap)) - { - Bitmap pic = (Bitmap)d.GetData(DataFormats.Bitmap); + else if (dataObject.GetDataPresent(DataFormats.Bitmap)) + { + var bitmap = (Bitmap) dataObject.GetData(DataFormats.Bitmap); - var bildname = GeneriereZuffalsNamen() + ".jpg"; + var imageName = GenerateTempName() + ".jpg"; - System.Drawing.Image img = pic; - - AddMediumContextDerNachrichtView(ImageToByteArray(img),bildname); + System.Drawing.Image image = bitmap; + + AddMediumContextDerNachrichtView(ImageToByteArray(image), imageName); - CollectionViewSource.GetDefaultView(chatMainControl.ChatListBox.ItemsSource).Refresh(); + CollectionViewSource.GetDefaultView(pChatMainControl.ChatListBox.ItemsSource).Refresh(); - chatMainControl.ChatListBox.Items.MoveCurrentToLast(); - chatMainControl.ChatListBox.ScrollIntoView(chatMainControl.ChatListBox.Items.CurrentItem); + pChatMainControl.ChatListBox.Items.MoveCurrentToLast(); + pChatMainControl.ChatListBox.ScrollIntoView(pChatMainControl.ChatListBox.Items.CurrentItem); - SendMediaMessage(bildname,groupOid, ImageToByteArray(img)); - } - else - { - MessageBox.Show("Der Zwischen-Speicher kann nicht verarbeitet werden.", "Fehler", MessageBoxButton.OK); - } + SendMediaMessage(imageName, pGroupOid, ImageToByteArray(image)); + } + else + { + MessageBox.Show("Der Zwischen-Speicher kann nicht verarbeitet werden.", "Fehler", MessageBoxButton.OK); + } + } } - public static byte[] ImageToByteArray(System.Drawing.Image image) + public static byte[] ImageToByteArray(System.Drawing.Image pImage) { try { - using (var ms = new MemoryStream()) + using (var memoryStream = new MemoryStream()) { - image.Save(ms, ImageFormat.Bmp); - return ms.ToArray(); + pImage.Save(memoryStream, ImageFormat.Bmp); + return memoryStream.ToArray(); } } catch (Exception e) @@ -1518,72 +1110,58 @@ namespace ChatController.HauptKlassen } } - private string GeneriereZuffalsNamen() + private static string GenerateTempName() { - int lenght = 6; - const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + - "abcdefghijklmnopqrstuvwxyz" + - "0123456789"; + const int length = 6; + const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; var random = new Random(); - String Code = new string(Enumerable.Repeat(chars, lenght) - .Select(s => s[random.Next(s.Length)]).ToArray()); + + var tempName = new string(Enumerable.Repeat(chars, length).Select(s => s[random.Next(s.Length)]).ToArray()); - return Code; + return tempName; } - #endregion - #region Kopierne der Dinger im Chat für Alle Bereiche - - public void Kopieren(object data, int typ) + public void Kopieren(object pData, int pDataType) { - if (typ == 1) // Text - { - Clipboard.SetData(DataFormats.Text, data); - } - - if (typ == 2) // Bild + switch(pDataType) { - Clipboard.SetData(DataFormats.Bitmap, data); - } - - if (typ == 3) //Dokument - { - Clipboard.SetData(DataFormats.FileDrop, data); + case 1: + Clipboard.SetData(DataFormats.Text, pData); + break; + case 2: + Clipboard.SetData(DataFormats.Bitmap, pData); + break; + case 3: + Clipboard.SetData(DataFormats.FileDrop, pData); + break; } } - #endregion - - #endregion - - #region Zeige Kontakt Bild - - public void ShowKontaktPicture(AktuellerKontakt curItem ) + public void ShowProfilePicture(AktuellerKontakt pCurrentContact) { try { - using (Form form = new Form()) + using (var form = new Form()) { - Image imgg = new Image(); + var image = new Image {Source = pCurrentContact.Image}; - imgg.Source = curItem.Image; + var encoder = new BmpBitmapEncoder(); + var memoryStream = new MemoryStream(); + + encoder.Frames.Add(BitmapFrame.Create((BitmapSource) image.Source)); + encoder.Save(memoryStream); + + var imageFromStream = System.Drawing.Image.FromStream(memoryStream); - BmpBitmapEncoder encoder = new BmpBitmapEncoder(); - MemoryStream ms = new MemoryStream(); - encoder.Frames.Add(BitmapFrame.Create((BitmapSource) imgg.Source)); - encoder.Save(ms); - System.Drawing.Image img = System.Drawing.Image.FromStream(ms); - - Bitmap imgbit = new Bitmap(img); + var bitmap = new Bitmap(imageFromStream); form.StartPosition = FormStartPosition.CenterScreen; - form.Size = imgbit.Size; + form.Size = bitmap.Size; form.Height += 60; form.MinimumSize = new Size(150,150); - var width = (int)Math.Round(System.Windows.SystemParameters.PrimaryScreenWidth / 1.25); - var height = (int)Math.Round(System.Windows.SystemParameters.PrimaryScreenWidth / 2); - + var width = (int) Math.Round(SystemParameters.PrimaryScreenWidth / 1.25); + var height = (int) Math.Round(SystemParameters.PrimaryScreenWidth / 2); form.MaximumSize = new Size(width,height); form.FormBorderStyle = FormBorderStyle.Sizable; @@ -1591,23 +1169,23 @@ namespace ChatController.HauptKlassen form.MaximizeBox = false; form.Text = "ownChat"; - form.Icon = Icon.ExtractAssociatedIcon(Application.ExecutablePath); - - PictureBox pb = new PictureBox(); - pb.Dock = DockStyle.Fill; - pb.Image = imgbit; + form.Icon = Icon.ExtractAssociatedIcon(Application.ExecutablePath); - pb.SizeMode = PictureBoxSizeMode.CenterImage; + var pictureBox = new PictureBox + { + Dock = DockStyle.Fill, + Image = bitmap, + SizeMode = PictureBoxSizeMode.CenterImage, + MaximumSize = new Size(500, 500) + }; - pb.MaximumSize = new Size(500,500); - - form.Controls.Add(pb); + form.Controls.Add(pictureBox); form.ShowDialog(); } } catch (Exception e) { - MessageBox.Show("Fehler: "+e.Message,"Fehler",MessageBoxButton.OK); + MessageBox.Show("Fehler: " + e.Message, "Fehler" , MessageBoxButton.OK); } } @@ -1615,261 +1193,140 @@ namespace ChatController.HauptKlassen { try { - var webClient = new WebClient(); webClient.DownloadDataCompleted += (s, e) => { try { - - using (Form form = new Form()) + using (var form = new Form()) { using (var ms = new MemoryStream(e.Result)) { - System.Drawing.Image Img = System.Drawing.Image.FromStream(ms); + var image = System.Drawing.Image.FromStream(ms); - using (System.Drawing.Bitmap dImg = new System.Drawing.Bitmap(Img)) + using (var bitmap = new Bitmap(image)) { - using (MemoryStream mss = new MemoryStream()) + short orient = 0; + const int orientationId = 0x0112; + + if (image.PropertyIdList.Contains(orientationId)) { - short orient = 0; - int orientationId = 0x0112; + var item = image.GetPropertyItem(orientationId); - if (Img.PropertyIdList.Contains(orientationId)) - { - PropertyItem item = Img.GetPropertyItem(orientationId); + orient = BitConverter.ToInt16(item.Value, 0); - orient = BitConverter.ToInt16(item.Value, 0); + bitmap.SetPropertyItem(item); + } - dImg.SetPropertyItem(item); + var flipType = OrientationToFlipType(orient.ToString()); - } + bitmap.RotateFlip(flipType); + form.StartPosition = FormStartPosition.CenterScreen; + form.ClientSize = bitmap.Size; + form.FormBorderStyle = FormBorderStyle.Sizable; + form.Icon = Icon.ExtractAssociatedIcon(Application.ExecutablePath); + + using (var pictureBox = new PictureBox()) + { + pictureBox.Dock = DockStyle.Fill; + pictureBox.Image = bitmap; - var x = OrientationToFlipType(orient.ToString()); + pictureBox.SizeMode = PictureBoxSizeMode.Zoom; - dImg.RotateFlip(x); + form.Controls.Add(pictureBox); - form.StartPosition = FormStartPosition.CenterScreen; - form.ClientSize = dImg.Size; - //form.MinimumSize = new Size(180, 180); - form.FormBorderStyle = FormBorderStyle.Sizable; - form.Icon = Icon.ExtractAssociatedIcon(Application.ExecutablePath); - using (var pb = new PictureBox()) - { - pb.Dock = DockStyle.Fill; - pb.Image = dImg; + downloadCompletedCallback?.Invoke(); - pb.SizeMode = PictureBoxSizeMode.Zoom; - - form.Controls.Add(pb); - - downloadCompletedCallback?.Invoke(); - - form.ShowDialog(); - - } - - //form.Size = dImg.Size; //imgbit - //form.MinimumSize = new Size(180, 180); - - //#region Screen Size-ing - - //int width = 0; - //int height = 0; - //int targetwidth = - // (int) Math.Round(System.Windows.SystemParameters.PrimaryScreenWidth / 1.25); - - - ////Querformat - //if (dImg.Height < dImg.Width) - //{ - - // float factor = (float) dImg.Height / targetwidth; - - // height = targetwidth; - - // width = (int) Math.Round(dImg.Width / factor); - - //} - //else // Hochformat - //{ - // float factor = (float) dImg.Width / targetwidth; - - // width = targetwidth; - - // height = (int) Math.Round(dImg.Height / factor); - - //} - - //if (dImg.Width < targetwidth) - //{ - // width = dImg.Width; - // height = dImg.Height; - //} - - - //int targetheight = - // (int) Math.Round(System.Windows.SystemParameters.PrimaryScreenHeight / 1.25); - - - ////Querformat - //if (dImg.Height < dImg.Width) - //{ - - // float factor = (float) dImg.Width / targetheight; - - // width = targetheight; - - // height = (int) Math.Round(dImg.Height / factor); - - //} - //else // Hochformat - //{ - // float factor = (float) dImg.Height / targetheight; - - // height = targetheight; - - // width = (int) Math.Round(dImg.Width / factor); - - //} - - //if (dImg.Height < targetheight) - //{ - // width = dImg.Width; - // height = dImg.Height; - //} - - - //if (width < 150 || height < 150) - //{ - // width = 150; - // height = 150; - //} - - //#endregion - - //form.MaximumSize = new Size(width, height); - - - //form.FormBorderStyle = FormBorderStyle.Sizable; - - //form.MaximizeBox = false; - - //form.Text = "ownChat"; - //form.Icon = Icon.ExtractAssociatedIcon(Application.ExecutablePath); - - //PictureBox pb = new PictureBox(); - //pb.Dock = DockStyle.Fill; - //pb.Image = dImg; //imgbit - - //pb.SizeMode = PictureBoxSizeMode.CenterImage; - - //form.Controls.Add(pb); - //form.ShowDialog(); + form.ShowDialog(); } } } - } } catch (Exception edf) { - MessageBox.Show("Fehler: " + edf.Message, "Fehler", MessageBoxButton.OK); + MessageBox.Show("Fehler: " + edf.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error); } }; - webClient.DownloadDataAsync(new Uri(curItem.OriginalImage)); + webClient.DownloadDataAsync(new Uri(curItem.OriginalImage)); } catch (Exception e) { - MessageBox.Show("Fehler: " + e.Message, "Fehler", MessageBoxButton.OK); + MessageBox.Show("Fehler: " + e.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error); } } - #endregion - - #region Synchronisation Veranlassen für Bewoplaner OwnChat Version - //sync für alles und jeden - //public bool DoSync = true; - - public bool DoSynchronisation( string apikey, string customerid) + public bool DoSynchronisation(string pApiKey, string pCustomerId) { try { - var endurl = ChatDaten.ServerUrl + "/api/ownchat/sync/schedule/"+apikey+"/" +customerid; + var endurl = ChatDaten.ServerUrl + "/api/ownchat/sync/schedule/"+pApiKey+"/" +pCustomerId; - WebRequest request = WebRequest.Create(endurl); + var request = WebRequest.Create(endurl); request.Credentials = CredentialCache.DefaultCredentials; request.Proxy = null; - WebResponse response = request.GetResponse(); + var response = request.GetResponse(); - // Display the status. - var statusResponse = ((HttpWebResponse)response).StatusDescription; - - string responseFromServer = ReadStream(response); + var serverResponse = Utils.ReadStream(response); var definiti = new { result = "" }; - var jsonDatentyp = JsonConvert.DeserializeAnonymousType(responseFromServer, definiti); - + var jsonDatentyp = JsonConvert.DeserializeAnonymousType(serverResponse, definiti); switch (jsonDatentyp.result) { - case "0": /*MessageBox.Show("Syncanforderung wurde für fünf Minuten in der Zukunft hinterlegt.", "Info", MessageBoxButton.OK);*/ return true;// gebe grünes licht für Aktualieserung des Chattes / Bei Invalid access ChatMaincontroll Schließen - break; - case "11": MessageBox.Show("Kundennummer unbekannt.\nDer Chat wird jetzt geschlossen", "Fehler", MessageBoxButton.OK); return false; //rausschmeißen ?! - break; - case "12": MessageBox.Show("Der API-Key ist falsch -> Auth-Error.\nDer Chat wird jetzt geschlossen", "Fehler", MessageBoxButton.OK); return false;//rausschmeißen ?! - break; - case "13": MessageBox.Show("Es existiert kein API-Key für die angegebene Kundennummer.\nDer Chat wird jetzt geschlossen", "Fehler", MessageBoxButton.OK); return false;//rausschmeißen ?! - break; - case "x": MessageBox.Show("MySQL Error.\nDer Chat wird jetzt geschlossen", "Fehler",MessageBoxButton.OK); return false;//rausschmeißen ?! - break; + case "0": + return true; + case "11": + MessageBox.Show("Kundennummer unbekannt.\nDer Chat wird jetzt geschlossen", "Fehler", MessageBoxButton.OK); + return false; + case "12": + MessageBox.Show("Der API-Key ist falsch -> Auth-Error.\nDer Chat wird jetzt geschlossen", "Fehler", MessageBoxButton.OK); + return false; + case "13": + MessageBox.Show("Es existiert kein API-Key für die angegebene Kundennummer.\nDer Chat wird jetzt geschlossen", "Fehler", MessageBoxButton.OK); + return false; + case "x": + MessageBox.Show("MySQL Error.\nDer Chat wird jetzt geschlossen", "Fehler",MessageBoxButton.OK); + return false; + default: + return false; } - - return false; } catch (Exception e) { - MessageBox.Show("Die verbindung konnte nicht aufgebaut werden.", "Fehler ", MessageBoxButton.OK); + MessageBox.Show("Die Verbindung konnte nicht aufgebaut werden.", "Fehler ", MessageBoxButton.OK); return false; } } - #endregion - - #region Maximal erlaubte File Größe - - public long GetMaiximumAllowedFileUploadSize(string apikey,string customerid) + public long GetMaiximumAllowedFileUploadSize(string pToken, string pCustomerId) { try { - var endurl = ChatDaten.ServerUrl + "/api/ownchat/uploadmaxsize";// + apikey + "/" + customerid; + var endurl = ChatDaten.ServerUrl + "/api/ownchat/uploadmaxsize"; - WebRequest request = WebRequest.Create(endurl); - request.Headers["Token"] = apikey; - request.Headers["CustomerID"] = customerid; + var request = WebRequest.Create(endurl); + request.Headers[Constants.Token] = pToken; + request.Headers[Constants.CustomerId] = pCustomerId; request.Credentials = CredentialCache.DefaultCredentials; request.Proxy = null; - WebResponse response = request.GetResponse(); + var response = request.GetResponse(); - // Display the status. - var statusResponse = ((HttpWebResponse)response).StatusDescription; - - string responseFromServer = ReadStream(response); + var responseFromServer = Utils.ReadStream(response); var definiti = new { file_upload_max_size = "" }; var jsonDatentyp = JsonConvert.DeserializeAnonymousType(responseFromServer, definiti); - return Convert.ToInt64(jsonDatentyp.file_upload_max_size); } catch (Exception e) @@ -1878,45 +1335,28 @@ namespace ChatController.HauptKlassen } } - - #endregion - - #region Neue Gruppen Holen für OwnChatDesktop public ChatGruppenDaten GruppenAktuallisieren() { try { var endurl = ChatDaten.ServerUrl + "/api/chat/groups"; - WebRequest request = WebRequest.Create(endurl); + var request = WebRequest.Create(endurl); request.Credentials = CredentialCache.DefaultCredentials; - request.Headers["Token"] = ChatDaten.AuthToken; - request.Headers["CustomerID"] = ChatDaten.Kundennummer; + request.Headers[Constants.Token] = ChatDaten.AuthToken; + request.Headers[Constants.CustomerId] = ChatDaten.Kundennummer; - // Get the response. - WebResponse response = request.GetResponse(); - - // Display the status. - var statusResponse = ((HttpWebResponse)response).StatusDescription; - - - string responseFromServer = ReadStream(response); + var response = request.GetResponse(); + var serverResponse = Utils.ReadStream(response); response.Close(); - //verarbeite hier zu json - if (!responseFromServer.Equals("")) + + if (!string.IsNullOrEmpty(serverResponse)) { - //################# Deserialisierung mit Json ############################### - var jsonDaten = JsonConvert.DeserializeObject(responseFromServer); + var jsonDaten = JsonConvert.DeserializeObject(serverResponse); - //_groupconect = jsonDaten; - //// var serv = jsonDaten[_chatcode].ServerName; - - ////MessageBox.Show(responseFromServer); - //_gruppeholenverbindungsaufbauOK = true; - return jsonDaten; } return null; @@ -1928,94 +1368,64 @@ namespace ChatController.HauptKlassen } } - public IOrderedEnumerable GroupklassenAktuallisieren(ChatGruppenDaten chatDaten) + public IOrderedEnumerable GroupklassenAktuallisieren(ChatGruppenDaten chatDaten) { try { - Kontaktliste.Clear(); - foreach (var kontakt in chatDaten.Response) + _Contacts.Clear(); + foreach (var contact in chatDaten.Response) { - - foreach (var value in kontakt.Value) + foreach (var value in contact.Value) { - //var val = Kontaktliste.Find(item => item.GroupId == value.Oid); + var message = ""; + var timestamp = new DateTime(); - //if (val == null) //was tun wenn der nicht merh drinne ist ?? dann ist das ja auch null - //{ - string message = ""; - DateTime timestamp = new DateTime(); + var lastMessage = value.LastMessage; - var lastMS = value.LastMessage; - - - if (lastMS != null) + if (lastMessage?.Text != null) { - if (lastMS.Text != null) - { - message = lastMS.Text; - timestamp = DateTime.Parse(lastMS.Timestamp.Date); - } + message = lastMessage.Text; + timestamp = DateTime.Parse(lastMessage.Timestamp.Date); } - if (message.Equals("") && value.LastMessage != null && !value.LastMessage.File.Equals("")) + if (string.IsNullOrEmpty(message) && value.LastMessage != null && !string.IsNullOrEmpty(value.LastMessage.File)) { message = Path.GetFileName(value.LastMessage.File); } long? customerOid = null; - bool isC = false; - bool isE = false; + var isEmployee = false; + foreach (var user in value.Users) { - if (user.Oid != ChatDaten.Userid && !String.IsNullOrEmpty(user.Userid_Manage)) + if (user.Oid != ChatDaten.Userid && !string.IsNullOrEmpty(user.Userid_Manage)) { if (!user.Is_Employee) { - customerOid = Int64.Parse(user.Userid_Manage.Substring(1)); - isC = true; + customerOid = long.Parse(user.Userid_Manage.Substring(1)); } } } - if (value.Onlyemployees && value.Users.Length == 2) + if (value.OnlyEmployees && value.Users.Length == 2) { - isE = true; + isEmployee = true; } - - Kontaktliste.Add(new KontaktlistBuilder(value.Name, - AvatarToImageSourceConverter(value.Avatar,isE,isC), - message, timestamp, value.Oid, customerOid, value.Onlyemployees, value.Users.Length)); - //} - //else - //{ - // //Item Bereits vorhanden - //} + + _Contacts.Add(new Contact(value.Name, Utils.AvatarToImageSourceConverter(value.Avatar, isEmployee), message, timestamp, value.Oid, customerOid, value.OnlyEmployees, value.Users.Length)); } } - - var sortedKontaktliste = Kontaktliste.OrderByDescending(r => r.TimeStamp); - - return sortedKontaktliste; + return _Contacts.OrderByDescending(r => r.TimeStamp); } catch (Exception e) { - MessageBox.Show("Bein sortieren der Aktualisierten Kontakte ist ein Fehler aufgetreten.\nFehler:\n", - "Fehler", MessageBoxButton.OK); + MessageBox.Show("Beim Sortieren der aktualisierten Kontakte ist ein Fehler aufgetreten.", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error); return null; } - - //Search Bereich - //CollectionView view = (CollectionView)CollectionViewSource.GetDefaultView(Clientlist.ItemsSource); - //view.SortDescriptions.Add(new SortDescription("TimeStamp", ListSortDirection.Descending)); - //// view.SortDescriptions.Add(new SortDescription("StatusType", ListSortDirection.Descending)); - //view.Filter = UserFilter; } - #endregion - #region pruefe letzten Konversations timestamp für design element - - public Dictionary PruefeTimeStampsBeiStart(List kontaktliste) + public Dictionary PruefeTimeStampsBeiStart(List kontaktliste) { try { @@ -2077,7 +1487,7 @@ namespace ChatController.HauptKlassen } } - public void SpeichereTimeStampsInDatei( List kontaktliste ) + public void SpeichereTimeStampsInDatei( List kontaktliste ) { try { @@ -2162,7 +1572,5 @@ namespace ChatController.HauptKlassen } return Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); } - - #endregion } } diff --git a/ChatController/HauptKlassen/Login.cs b/ChatController/HauptKlassen/Login.cs index 5620746..3f9d882 100644 --- a/ChatController/HauptKlassen/Login.cs +++ b/ChatController/HauptKlassen/Login.cs @@ -1,66 +1,68 @@ using System; using System.Collections.Generic; using System.IO; -using System.Linq; using System.Net; using System.Text; -using System.Threading.Tasks; using System.Web; using System.Windows; + using ChatController.Klassen; +using ChatController.LoginKlassen; +using ChatController.Utilities; + using Newtonsoft.Json; namespace ChatController.HauptKlassen { public class Login { - private string _url = ""; //"https://bewoplaner.beyondsoft.de/voucher_check.php"; // alt + private string _Url = ""; - private string _newUrl = "https://dict.ownchat.de/api/server/resolve/1/"; //https://dict.ownchat.de/api/server/resolve/{type}/{customerid} //type = Diensttyp(1,2,oder 3), customerid = Kudennummer des Kunden + private readonly string _NewUrl = "https://dict.ownchat.de/api/server/resolve/1/"; - public string _serverUrl = ""; - private string _authToken = ""; + public string ServerUrl { get; set; } = ""; + private string _AuthToken = ""; - private readonly string _benutzername; - private readonly string _passwort; - private readonly string _kundennummer; - private readonly string _chatCode; - private readonly string _apikey; + private readonly string _UserName; + private readonly string _Password; + private readonly string _Tenant; + private readonly string _ChatCode; + private readonly string _ApiKey; - private long? _userid; + private long? _UserId; - private bool _verbindungsaufbauOK = false; - private bool _ownchatVerbindungsaufbauOK = false; - private bool _gruppeholenverbindungsaufbauOK = false; + private bool _ownchatVerbindungsaufbauOK; + private bool _gruppeholenverbindungsaufbauOK; private AuthentifizierungsDaten _serverconect; - private UserDaten _angemeldeterUser; - private ChatGruppenDaten _alleGruppen; + private UserDaten _LoggedInUser; + private ChatGruppenDaten _AllGroups; - private bool showMessageBox = true; + private readonly bool _ShouldShowMessageBox = true; - public Login(string kundennummer, string chatCode,string benutzername,string passwort) + public Login(string pTenant, string pChatCode, string pUserName, string pPassword) { - _kundennummer = kundennummer; - _chatCode = chatCode; - _benutzername = benutzername; - _passwort = passwort; - _apikey = "0000";//default damit nichts kaput geht + _Tenant = pTenant; + _ChatCode = pChatCode; + _UserName = pUserName; + _Password = pPassword; + _ApiKey = "0000";//default damit nichts kaput geht } - public Login(string kundennummer, string chatCode, string benutzername, string passwort,string apikey) + + public Login(string pTenant, string pChatCode, string pUserName, string pPassword,string pApiKey) { - _kundennummer = kundennummer; - _chatCode = chatCode; - _benutzername = benutzername; - _passwort = passwort; - _apikey = apikey; + _Tenant = pTenant; + _ChatCode = pChatCode; + _UserName = pUserName; + _Password = pPassword; + _ApiKey = pApiKey; } // - public Login(string kundennummer) + public Login(string pTenant) { - _kundennummer = kundennummer; - showMessageBox = false; + _Tenant = pTenant; + _ShouldShowMessageBox = false; ServerErmittlung(); } @@ -69,24 +71,24 @@ namespace ChatController.HauptKlassen if(ServerErmittlung()){ Dictionary dic = new Dictionary(); - dic.Add("username", _benutzername); - dic.Add("password", _passwort); - dic.Add("chatcode",_chatCode); + dic.Add("username", _UserName); + dic.Add("password", _Password); + dic.Add("chatcode",_ChatCode); VerbindeMitChatServer(dic); if (_ownchatVerbindungsaufbauOK) { - GruppenHolen(); + GetGroups(); } if (_gruppeholenverbindungsaufbauOK) { - long maxUploadSize = GetMaiximumAllowedFileUploadSize(_authToken,_kundennummer); + long maxUploadSize = GetMaiximumAllowedFileUploadSize(_AuthToken,_Tenant); - ChatDatenUebergabe ubergabe = new ChatDatenUebergabe(_serverconect, _angemeldeterUser, _alleGruppen, _serverUrl, _authToken, _userid, _kundennummer,_apikey, maxUploadSize); + ChatDatenUebergabe ubergabe = new ChatDatenUebergabe(_serverconect, _LoggedInUser, _AllGroups, ServerUrl, _AuthToken, _UserId, _Tenant,_ApiKey, maxUploadSize); return ubergabe; } @@ -96,14 +98,13 @@ namespace ChatController.HauptKlassen public bool ServerErmittlung() { - if (_serverUrl.Equals("")) + if (string.IsNullOrEmpty(ServerUrl)) { try { + var serverURl = _NewUrl + _Tenant; - string serverURl = _newUrl + _kundennummer; - - WebRequest request = WebRequest.Create(serverURl); + var request = WebRequest.Create(serverURl); request.Credentials = CredentialCache.DefaultCredentials; @@ -115,165 +116,145 @@ namespace ChatController.HauptKlassen } catch (Exception e) { - if (showMessageBox) + if (_ShouldShowMessageBox) { - MessageBox.Show("Fehler: Es konnte keine Verbindung aufgebaut werden.", "ownChat Fehler", - MessageBoxButton.OK, MessageBoxImage.Error); + MessageBox.Show("Fehler: Es konnte keine Verbindung aufgebaut werden.", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error); } + return false; } - // Display the status. - var statusResponse = ((HttpWebResponse) response).StatusDescription; - - string responseFromServer = Utilities.Utils.ReadStream(response); + var responseFromServer = Utils.ReadStream(response); try { - var jsonDatentyp = - JsonConvert.DeserializeObject(responseFromServer); + var jsonDatentyp = JsonConvert.DeserializeObject(responseFromServer); - if (jsonDatentyp.Status == 1) + switch(jsonDatentyp.Status) { - if (showMessageBox) - { - MessageBox.Show( - "Fehler: Kundennummer unbekannt.\nBitte überprüfen Sie die Anmeldeinformationen.", - "ownChat Info", MessageBoxButton.OK, MessageBoxImage.Asterisk); - } - return false; - } - else if (jsonDatentyp.Status == 2) - { - if (showMessageBox) - { - MessageBox.Show("Der Diensttyp ist für die angegebene Kundennummer nicht definiert.", - "ownChat Info", - MessageBoxButton.OK, MessageBoxImage.Asterisk); - } - return false; - } - else - { - _url = jsonDatentyp.URL; + case 1: + if (_ShouldShowMessageBox) + { + MessageBox.Show("Fehler: Kundennummer unbekannt.\nBitte überprüfen Sie die Anmeldeinformationen.", "ownChat Info", MessageBoxButton.OK, MessageBoxImage.Asterisk); + } + + return false; + case 2: + if (_ShouldShowMessageBox) + { + MessageBox.Show("Der Diensttyp ist für die angegebene Kundennummer nicht definiert.", "ownChat Info", MessageBoxButton.OK, MessageBoxImage.Asterisk); + } + + return false; } + + _Url = jsonDatentyp.Url; } catch (Exception eds) { try { - var jsonDatentyp = - JsonConvert.DeserializeObject(responseFromServer); + var jsonDatentyp = JsonConvert.DeserializeObject(responseFromServer); - if (jsonDatentyp.Status == 1) + switch(jsonDatentyp.Status) { - if (showMessageBox) - { - MessageBox.Show( - "Fehler: Kundennummer unbekannt.\nBitte überprüfen Sie die Anmeldeinformationen.", - "ownChat Info", MessageBoxButton.OK, MessageBoxImage.Asterisk); - } - return false; - } - else if (jsonDatentyp.Status == 2) - { - if (showMessageBox) - { - MessageBox.Show( - "Der Diensttyp ist für die angegebene Kundennummer nicht definiert.", - "ownChat Info", MessageBoxButton.OK, MessageBoxImage.Asterisk); - } - return false; - } - else - { - _url = jsonDatentyp.URL; + case 1: + if (_ShouldShowMessageBox) + { + MessageBox.Show("Fehler: Kundennummer unbekannt.\nBitte überprüfen Sie die Anmeldeinformationen.", "ownChat Info", MessageBoxButton.OK, MessageBoxImage.Asterisk); + } + + return false; + case 2: + if (_ShouldShowMessageBox) + { + MessageBox.Show("Der Diensttyp ist für die angegebene Kundennummer nicht definiert.", "ownChat Info", MessageBoxButton.OK, MessageBoxImage.Asterisk); + } + + return false; } + + _Url = jsonDatentyp.Url; } catch (Exception e) { - if (showMessageBox) + if (_ShouldShowMessageBox) { - MessageBox.Show("Fehler: " + e.Message, "ownChat Fehler", MessageBoxButton.OK, - MessageBoxImage.Error); + MessageBox.Show("Fehler: " + e.Message, "ownChat Fehler", MessageBoxButton.OK, MessageBoxImage.Error); } - } } response.Close(); - _serverUrl = _url; + ServerUrl = _Url; return true; } catch (Exception e) { - if (showMessageBox) + if (_ShouldShowMessageBox) { - MessageBox.Show("Fehler: " + e.Message, "ownChat Fehler", MessageBoxButton.OK, - MessageBoxImage.Error); + MessageBox.Show("Fehler: " + e.Message, "ownChat Fehler", MessageBoxButton.OK, MessageBoxImage.Error); } + return false; } } - else - { - return true; - } + + return true; } private void VerbindeMitChatServer(Dictionary postparameter) { - string fehlermeldung = ""; try { - var endurl = _url + "/api/user/loginwithchatcode"; + var endurl = _Url + "/api/user/loginwithchatcode"; - string postdaten = ""; + var postdaten = ""; - int i = 0; + var i = 0; foreach (var key in postparameter.Keys) { postdaten += HttpUtility.UrlEncode(key) + "=" + HttpUtility.UrlEncode(postparameter[key]) + "&"; } - WebRequest requesten = WebRequest.Create(endurl); + var webRequest = WebRequest.Create(endurl); - requesten.Method = "POST"; - requesten.ContentType = "application/x-www-form-urlencoded"; - requesten.Headers["CustomerID"] = _kundennummer; + webRequest.Method = "POST"; + webRequest.ContentType = "application/x-www-form-urlencoded"; + webRequest.Headers[Constants.CustomerId] = _Tenant; - byte[] daten = Encoding.ASCII.GetBytes(postdaten); + var daten = Encoding.ASCII.GetBytes(postdaten); - requesten.ContentLength = daten.Length; + webRequest.ContentLength = daten.Length; - Stream requestStream = requesten.GetRequestStream(); + var requestStream = webRequest.GetRequestStream(); requestStream.Write(daten, 0, daten.Length); requestStream.Close(); - HttpWebResponse myHttpWebResponse = (HttpWebResponse)requesten.GetResponse(); + var myHttpWebResponse = (HttpWebResponse)webRequest.GetResponse(); - Stream responseStream = myHttpWebResponse.GetResponseStream(); + var responseStream = myHttpWebResponse.GetResponseStream(); - StreamReader myStreamReader = new StreamReader(responseStream, Encoding.Default); + var myStreamReader = new StreamReader(responseStream, Encoding.Default); - string pageContent = myStreamReader.ReadToEnd(); + var pageContent = myStreamReader.ReadToEnd(); - if (!pageContent.Equals("")) + if (!string.IsNullOrEmpty(pageContent)) { var jsonDaten = JsonConvert.DeserializeObject(pageContent); - if (jsonDaten.Success == true) + if (jsonDaten.Success) { foreach (var datev in jsonDaten.Response) { - _authToken = datev.Value.Token; - _userid = datev.Value.Oid; + _AuthToken = datev.Value.Token; + _UserId = datev.Value.Oid; } - _angemeldeterUser = jsonDaten; + _LoggedInUser = jsonDaten; _ownchatVerbindungsaufbauOK = true; } @@ -281,21 +262,15 @@ namespace ChatController.HauptKlassen { if (jsonDaten.Errors.chatcode_failed != null) { - if (showMessageBox) + if (_ShouldShowMessageBox) { - MessageBox.Show( - "Fehler: " + jsonDaten.Errors.chatcode_failed[0] + - "\nBitte überprüfen Sie die Anmeldeinformationen.", "Info", MessageBoxButton.OK, - MessageBoxImage.Asterisk); + MessageBox.Show("Fehler: " + jsonDaten.Errors.chatcode_failed[0] + "\nBitte überprüfen Sie die Anmeldeinformationen.", "Info", MessageBoxButton.OK, MessageBoxImage.Error); } }else if (jsonDaten.Errors.login_failed != null) { - if (showMessageBox) + if (_ShouldShowMessageBox) { - MessageBox.Show( - "Fehler: " + jsonDaten.Errors.login_failed[0] + - "\nBitte überprüfen Sie die Anmeldeinformationen.", "Info", MessageBoxButton.OK, - MessageBoxImage.Asterisk); + MessageBox.Show("Fehler: " + jsonDaten.Errors.login_failed[0] + "\nBitte überprüfen Sie die Anmeldeinformationen.", "Info", MessageBoxButton.OK, MessageBoxImage.Error); } } @@ -309,95 +284,83 @@ namespace ChatController.HauptKlassen } catch (Exception e) { - if (showMessageBox) + if (_ShouldShowMessageBox) { MessageBox.Show("Fehler:" + e.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error); } } } - private void GruppenHolen() + private void GetGroups() { try { - var endurl = _url + "/api/chat/groups"; + var endurl = _Url + Constants.GetChatGroupsUrl; - WebRequest request = WebRequest.Create(endurl); + var request = WebRequest.Create(endurl); request.Credentials = CredentialCache.DefaultCredentials; - request.Headers["Token"] = _authToken; - request.Headers["CustomerID"] = _kundennummer; + request.Headers[Constants.Token] = _AuthToken; + request.Headers[Constants.CustomerId] = _Tenant; - using (WebResponse response = request.GetResponse()) + using (var response = request.GetResponse()) { + var serverResponse = Utils.ReadStream(response); - // Display the status. - var statusResponse = ((HttpWebResponse) response).StatusDescription; - - string responseFromServer = Utilities.Utils.ReadStream(response); - - if (!responseFromServer.Equals("")) + if (!string.IsNullOrEmpty(serverResponse)) { - var jsonDaten = JsonConvert.DeserializeObject(responseFromServer); + var jsonDaten = JsonConvert.DeserializeObject(serverResponse); - _alleGruppen = jsonDaten; + _AllGroups = jsonDaten; _gruppeholenverbindungsaufbauOK = true; } - } } catch (Exception e) { - if (showMessageBox) + if (_ShouldShowMessageBox) { MessageBox.Show("Fehler: " + e.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error); } } - } #region Maximal erlaubte File Größe - public long GetMaiximumAllowedFileUploadSize(string token, string customerid) + public long GetMaiximumAllowedFileUploadSize(string pToken, string pCustomerId) { - long maxsize = 0; + long maximumFileSize; + try { - var endurl = _serverUrl + "/api/ownchat/uploadmaxsize";// + apikey + "/" + customerid; + var endurl = ServerUrl + Constants.MaxUploadFileSizeUrl; - WebRequest request = WebRequest.Create(endurl); - request.Headers["Token"] = token; - request.Headers["CustomerID"] = customerid; + var request = WebRequest.Create(endurl); + request.Headers[Constants.Token] = pToken; + request.Headers[Constants.CustomerId] = pCustomerId; request.Credentials = CredentialCache.DefaultCredentials; request.Proxy = null; - using (WebResponse response = request.GetResponse()) + using (var response = request.GetResponse()) { - - // Display the status. - var statusResponse = ((HttpWebResponse) response).StatusDescription; - - string responseFromServer = Utilities.Utils.ReadStream(response); + var responseFromServer = Utils.ReadStream(response); var definiti = new {file_upload_max_size = ""}; var jsonDatentyp = JsonConvert.DeserializeAnonymousType(responseFromServer, definiti); - maxsize = Convert.ToInt64(jsonDatentyp.file_upload_max_size); - + maximumFileSize = Convert.ToInt64(jsonDatentyp.file_upload_max_size); } - } catch (Exception e) { return 0; } - return maxsize; + return maximumFileSize; } #endregion - } } diff --git a/ChatController/LoginControl.xaml.cs b/ChatController/LoginControl.xaml.cs index 59aee19..e981a6d 100644 --- a/ChatController/LoginControl.xaml.cs +++ b/ChatController/LoginControl.xaml.cs @@ -1,39 +1,26 @@ using System; using System.Collections.Generic; using System.IO; -using System.Linq; using System.Net; -using System.Net.Http; using System.Reflection; -using System.Runtime.InteropServices; using System.Text; -using System.Threading; -using System.Threading.Tasks; using System.Web; using System.Windows; -using System.Windows.Data; -using System.Windows.Documents; -using System.Windows.Forms; using System.Windows.Input; -using System.Windows.Media; -using System.Windows.Media.Imaging; -using System.Windows.Navigation; -using System.Windows.Shapes; + using ChatController.HauptKlassen; using ChatController.Klassen; +using ChatController.LoginKlassen; using Newtonsoft.Json; + using Cursors = System.Windows.Input.Cursors; using KeyEventArgs = System.Windows.Input.KeyEventArgs; using MessageBox = System.Windows.MessageBox; using Path = System.IO.Path; -using UserControl = System.Windows.Controls.UserControl; namespace ChatController { - /// - /// Interaktionslogik für Login.xaml - /// - public partial class LoginControl : UserControl + public partial class LoginControl { public delegate void LoginDelegate(ChatDatenUebergabe cdu); @@ -55,11 +42,11 @@ namespace ChatController LeseDateiFallsVorhanden(); //var version = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version; - lblVersion.Content = String.Format("Version: {0}", _version); + lblVersion.Content = $"Version: {_version}"; #if DEBUG - TextBoxBenutzerName.Text = "JettenL"; - TextBoxPasswort.Password = "Blubb123"; + TextBoxBenutzerName.Text = "MuellerL"; + TextBoxPasswort.Password = "12345"; #endif } @@ -80,35 +67,21 @@ namespace ChatController { try { - //TODO Abfrage einführen die prüft ob eine verbindung ueberhaupt hergestellt werde kann | FehlerMeldungen Genauer Definieren - if (!TextBoxKundennummer.Text.Equals("") && !TextBoxChatCode.Text.Equals("") && - !TextBoxBenutzerName.Text.Equals("") && !TextBoxPasswort.Password.Equals("")) + //TODO Abfrage einführen, die prüft, ob eine Verbindung überhaupt hergestellt werden kann | Fehlermeldungen genauer definieren + if (!TextBoxKundennummer.Text.Equals("") && !TextBoxChatCode.Text.Equals("") && !TextBoxBenutzerName.Text.Equals("") && !TextBoxPasswort.Password.Equals("")) { Cursor = Cursors.Wait; - Login _login = new Login(TextBoxKundennummer.Text, TextBoxChatCode.Text, TextBoxBenutzerName.Text, TextBoxPasswort.Password); + var _login = new Login(TextBoxKundennummer.Text, TextBoxChatCode.Text, TextBoxBenutzerName.Text, TextBoxPasswort.Password); var x = _login.AnmeldevorgangDurchFuehren(); if (OnLogin != null && x != null) { AutosetDaten(); - //if (Merken.IsChecked == true) - //{ - // SpeichereDatenInDatei(); - //} - //else - //{ - // LoescheGespeicherteDatei(); - //} - OnLogin(x); + OnLogin?.Invoke(x); } - //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; } diff --git a/ChatController/LoginKlassen/AuthentifizierungsDaten.cs b/ChatController/LoginKlassen/AuthenticationData.cs similarity index 56% rename from ChatController/LoginKlassen/AuthentifizierungsDaten.cs rename to ChatController/LoginKlassen/AuthenticationData.cs index a7c9dc2..69bd617 100644 --- a/ChatController/LoginKlassen/AuthentifizierungsDaten.cs +++ b/ChatController/LoginKlassen/AuthenticationData.cs @@ -1,10 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace ChatController.Klassen +namespace ChatController.LoginKlassen { public class AuthentifizierungsDaten { @@ -15,13 +9,13 @@ namespace ChatController.Klassen public class NewAuthentifizierungsDatenTyp1 { public int Status { get; set; } - public string URL { get; set; } + public string Url { get; set; } } public class NewAuthentifizierungsDatenTyp2 { public int Status { get; set; } - public string URL { get; set; } - public int SYNCTYPE { get; set; } + public string Url { get; set; } + public int SyncType { get; set; } } } diff --git a/ChatController/LoginKlassen/ChatDatenUebergabe.cs b/ChatController/LoginKlassen/ChatDatenUebergabe.cs index 43eccd4..1c6b06f 100644 --- a/ChatController/LoginKlassen/ChatDatenUebergabe.cs +++ b/ChatController/LoginKlassen/ChatDatenUebergabe.cs @@ -1,23 +1,17 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace ChatController.Klassen +namespace ChatController.LoginKlassen { public class ChatDatenUebergabe { - private AuthentifizierungsDaten _serverconect { get; set; } - private UserDaten _angemeldeterUser { get; set; } - private ChatGruppenDaten _alleGruppen { get; set; } + private AuthentifizierungsDaten _serverconect { get; } + private UserDaten _angemeldeterUser { get; } + private ChatGruppenDaten _alleGruppen { get; } - private string _serverUrl { get; set; } - private string _authToken { get; set; } - private long? _userid { get; set; } - private string _kundennummer { get; set; } - private string _apikey { get; set; } - private long _maxUploadSize { get; set; } + private string _ServerUrl { get; } + private string _AuthToken { get; } + private long? _Userid { get; } + private string _Tenant { get; } + private string _ApiKey { get; } + private long _MaxUploadSize { get; } public ChatDatenUebergabe(AuthentifizierungsDaten serverConect, UserDaten angemeldeterUser, ChatGruppenDaten alleGruppen, string serverUrl, string authToken, long? userid, string kundennummer, string apikey,long maxUploadSize) { @@ -25,120 +19,30 @@ namespace ChatController.Klassen _angemeldeterUser = angemeldeterUser; _alleGruppen = alleGruppen; - _serverUrl = serverUrl; - _authToken = authToken; - _userid = userid; - _kundennummer = kundennummer; - _apikey = apikey; - _maxUploadSize = maxUploadSize; + _ServerUrl = serverUrl; + _AuthToken = authToken; + _Userid = userid; + _Tenant = kundennummer; + _ApiKey = apikey; + _MaxUploadSize = maxUploadSize; } - public AuthentifizierungsDaten Serverconect - { - get - { - return _serverconect; - } - private set - { - _serverconect = value; - } - } + public AuthentifizierungsDaten Serverconect => _serverconect; - public UserDaten AngemeldeterUser - { - get - { - return _angemeldeterUser; - } - private set - { - _angemeldeterUser = value; - } - } + public UserDaten AngemeldeterUser => _angemeldeterUser; - public ChatGruppenDaten AlleGruppen - { - get - { - return _alleGruppen; - } - private set - { - _alleGruppen = value; - } - } + public ChatGruppenDaten AlleGruppen => _alleGruppen; - public string ServerUrl - { - get - { - return _serverUrl; - } - private set - { - _serverUrl = value; - } - } + public string ServerUrl => _ServerUrl; - public string AuthToken - { - get - { - return _authToken; - } - private set - { - _authToken = value; - } - } + public string AuthToken => _AuthToken; - public long? Userid - { - get - { - return _userid; - } - private set - { - _userid = value; - } - } + public long? Userid => _Userid; + + public string Kundennummer => _Tenant; - public string Kundennummer - { - get - { - return _kundennummer; - } - private set - { - _kundennummer = value; - } - } + public string ApiKey => _ApiKey; - public string ApiKey - { - get - { - return _apikey; - } - private set - { - _apikey = value; - } - } - - public long MaxUploadSize - { - get - { - return _maxUploadSize; - } - private set - { - _maxUploadSize = value; - } - } + public long MaxUploadSize => _MaxUploadSize; } } diff --git a/ChatController/LoginKlassen/ChatGruppenDaten.cs b/ChatController/LoginKlassen/ChatGruppenDaten.cs index e35c329..ec51124 100644 --- a/ChatController/LoginKlassen/ChatGruppenDaten.cs +++ b/ChatController/LoginKlassen/ChatGruppenDaten.cs @@ -1,10 +1,6 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using System.Collections.Generic; -namespace ChatController.Klassen +namespace ChatController.LoginKlassen { public class ChatGruppenDaten { @@ -14,19 +10,18 @@ namespace ChatController.Klassen public bool Success { get; set; } } - public class GroupInput { public long Oid { get; set; } public string Name { get; set; } public string Avatar { get; set; } public string Mobile { get; set; } - public GroupLastMessage LastMessage { get; set; } + public GroupLatestMessage LastMessage { get; set; } public GroupUsers[] Users { get; set; } - public bool Onlyemployees { get; set; } + public bool OnlyEmployees { get; set; } } - public class GroupLastMessage + public class GroupLatestMessage { public long Id { get; set; } public string Text { get; set; } @@ -56,7 +51,7 @@ namespace ChatController.Klassen public class LastMessageTimeStamp { public string Date { get; set; } - public int TimezoneType { get; set; } - public string Timezone { get; set; } + public int TimeZoneType { get; set; } + public string TimeZone { get; set; } } } diff --git a/ChatController/LoginKlassen/UserDaten.cs b/ChatController/LoginKlassen/UserDaten.cs index 26c0193..97946aa 100644 --- a/ChatController/LoginKlassen/UserDaten.cs +++ b/ChatController/LoginKlassen/UserDaten.cs @@ -1,10 +1,6 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using System.Collections.Generic; -namespace ChatController.Klassen +namespace ChatController.LoginKlassen { public class UserDaten { diff --git a/ChatController/LoginKlassen/UserMessages.cs b/ChatController/LoginKlassen/UserMessages.cs index 7620d69..6fc873b 100644 --- a/ChatController/LoginKlassen/UserMessages.cs +++ b/ChatController/LoginKlassen/UserMessages.cs @@ -1,12 +1,6 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace ChatController.Klassen +namespace ChatController.LoginKlassen { - class UserMessages + public class UserMessages { public UserMessageInput Response { get; set; } public string Message { get; set; } diff --git a/ChatController/Utilities/Constants.cs b/ChatController/Utilities/Constants.cs index 5831077..0e3453b 100644 --- a/ChatController/Utilities/Constants.cs +++ b/ChatController/Utilities/Constants.cs @@ -26,5 +26,7 @@ namespace ChatController.Utilities public static readonly string ConfigFile = "ownChat.txt"; public static readonly string CompanyName = "beyondSoft"; public static readonly string ApplicationFolderName = "OwnChat"; + + public static readonly int NotificationTimeout = 1500; } } diff --git a/ChatController/Utilities/Utils.cs b/ChatController/Utilities/Utils.cs index 23bdd59..322a7ed 100644 --- a/ChatController/Utilities/Utils.cs +++ b/ChatController/Utilities/Utils.cs @@ -3,6 +3,7 @@ using System.Drawing; using System.Drawing.Imaging; using System.IO; using System.Net; +using System.Windows.Forms; using System.Windows.Media; using System.Windows.Media.Imaging; @@ -10,6 +11,8 @@ namespace ChatController.Utilities { public class Utils { + public static NotifyIcon NotifyIcon = new NotifyIcon {Icon = Resource.ownchat_favicon, Visible = true}; + public static ImageSource AvatarToImageSourceConverter(string pAvatarPath, bool pIsEmployee) { return CreateImageSourceFromPath(pAvatarPath, false, pIsEmployee); diff --git a/PrototypChat/LoginMaske.xaml.cs b/PrototypChat/LoginMaske.xaml.cs index 07e68bb..f31d2a6 100644 --- a/PrototypChat/LoginMaske.xaml.cs +++ b/PrototypChat/LoginMaske.xaml.cs @@ -1,4 +1,4 @@ -using ChatController.Klassen; +using ChatController.LoginKlassen; namespace ownChat { diff --git a/PrototypChat/MainWindow.xaml.cs b/PrototypChat/MainWindow.xaml.cs index 8a173c8..23de1fe 100644 --- a/PrototypChat/MainWindow.xaml.cs +++ b/PrototypChat/MainWindow.xaml.cs @@ -1,6 +1,7 @@ using System; using System.Windows; -using ChatController.Klassen; + +using ChatController.LoginKlassen; using Point = System.Windows.Point;