using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Drawing.Imaging; using System.IO; using System.Linq; using System.Net; using System.Net.Http; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Web; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Forms; using System.Windows.Controls; using System.Windows.Media; using System.Windows.Media.Imaging; using ChatController.ChatKlassen; using ChatController.Klassen; using Newtonsoft.Json; using ContextMenu = System.Windows.Controls.ContextMenu; using DataFormats = System.Windows.Forms.DataFormats; using Image = System.Windows.Controls.Image; using MenuItem = System.Windows.Forms.MenuItem; using Size = System.Drawing.Size; namespace ChatController.HauptKlassen { public class Chat { private readonly List Kontaktliste = new List(); private readonly List Messages = new List(); public ChatDatenUebergabe ChatDaten; private UserMessages _userMessages; private UserMessages _weitereUserMessages; private string _nextPage = null; private bool _hasNextPage = false; public Chat(ChatDatenUebergabe chatDaten) { ChatDaten = chatDaten; } #region Gruppen In Kontaktliste Wandler public IOrderedEnumerable GroupklassenInChatKontakteUmwandler() { foreach (var kontakt in ChatDaten.Groupconect.Response) { foreach (var value in kontakt.Value) { string message = ""; DateTime timestamp = new DateTime(); var lastMS = value.LastMessage; if (lastMS != null) { if (lastMS.Text != null) { message = lastMS.Text; timestamp = DateTime.Parse(lastMS.Timestamp.Date); } } //null steht für employee Kontaktliste.Add(new KontaktlistBuilder(value.Name, AvatarToImageSourceConverter(value.Avatar), message, timestamp, value.Oid, null)); } } var sortedKontaktliste = Kontaktliste.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) { if (!avatar.Equals("")) { try { Bitmap bitmap; var request = WebRequest.Create(avatar); using (var response = request.GetResponse()) using (var stream = response.GetResponseStream()) { bitmap = new Bitmap(stream); } MemoryStream ms = new MemoryStream(); bitmap.Save(ms, ImageFormat.Png); ms.Position = 0; BitmapImage bi = new BitmapImage(); bi.BeginInit(); bi.StreamSource = ms; bi.EndInit(); return bi; } catch (Exception e) { return null; } } else { try { BitmapImage bix = new BitmapImage(); bix.BeginInit(); bix.UriSource = new Uri ("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) { //var timeformated = DateTime.Parse(ChatMessage.Timestamp.Date); var time = DateTime.Parse(ChatMessage.Timestamp.Date); var clientZone = TimeZoneInfo.Local; var timeformated = TimeZoneInfo.ConvertTimeFromUtc(time, clientZone); if (!ChatMessage.File.Equals("")) // Bilder werden Sichtbar { //bool isGif = false; //if (ChatMessage.File.Contains(".gif")) //{ // isGif = true; //} Messages.Add(new KontaktMessageBuilder(ChatMessage.User_Name, ChatMessage.Text, timeformated.ToString("dd MMMM yyyy HH:mm:ss"), true, LadeBildNach(ChatMessage.File), timeformated)); } else { Messages.Add(new KontaktMessageBuilder(ChatMessage.User_Name, ChatMessage.Text, timeformated.ToString("dd MMMM yyyy HH:mm:ss"), true, timeformated)); } } else { //var timeformated = DateTime.Parse(ChatMessage.Timestamp.Date); var time = DateTime.Parse(ChatMessage.Timestamp.Date); var clientZone = TimeZoneInfo.Local; var timeformated = TimeZoneInfo.ConvertTimeFromUtc(time, clientZone); if (!ChatMessage.File.Equals("")) // Bilder werden Sichtbar { //bool isGif = false; //if (ChatMessage.File.Contains(".gif")) //{ // isGif = true; //} Messages.Add(new KontaktMessageBuilder(ChatMessage.User_Name, ChatMessage.Text, timeformated.ToString("dd MMMM yyyy HH:mm:ss"), false, LadeBildNach(ChatMessage.File), timeformated)); } else { Messages.Add(new KontaktMessageBuilder(ChatMessage.User_Name, ChatMessage.Text, timeformated.ToString("dd MMMM yyyy HH:mm:ss"), false, timeformated)); } } } var x = Messages.OrderBy(r => r.ConvertetSendtimeString); return x; } else { return Messages.OrderBy(r => r.ConvertetSendtimeString); } } private ImageSource LadeBildNach(string link) { try { BitmapImage bix = new BitmapImage(); bix.BeginInit(); bix.UriSource = new Uri(link); bix.EndInit(); return bix; } catch (Exception edf) { return null; } } private void HoleNachrichtenVomServer(long groupId) { try { var endurl = ChatDaten.ServerUrl + "/api/chat/messages?groupid=" + groupId; WebRequest request = WebRequest.Create(endurl); request.Credentials = CredentialCache.DefaultCredentials; request.Headers["Token"] = ChatDaten.AuthToken; request.Headers["CustomerID"] = ChatDaten.Kundennummer; request.Proxy = null; // Get the response. WebResponse response = request.GetResponse(); // Display the status. var statusResponse = ((HttpWebResponse)response).StatusDescription; string responseFromServer = ReadStream(response); //verarbeite hier zu json if (!responseFromServer.Equals("")) { _userMessages = null; //################# Deserialisierung mit Json ############################### var jsonDaten = JsonConvert.DeserializeObject(responseFromServer); _userMessages = jsonDaten; if (_userMessages.Response.HasMorePages == true) { _nextPage = _userMessages.Response.NextPage; _hasNextPage = true; } else { _hasNextPage = false; } } else { // MessageBox.Show("Keine Daten Vorhanden."); } response.Close(); } 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 Verbesserung der LadeNachricht nach senden einer Nachricht //public IOrderedEnumerable LadeNeueNachrichtUndFuegeDieseHinzu(KontaktlistBuilder kontakt) //{ // if (kontakt != null) // { // var neue = HoleNachrichtFV(kontakt.GroupId); // //Messages.Clear(); // foreach (var neueMessage in neue.Response.Messages) // { // if (!_userMessages.Response.Messages.Contains(neueMessage)) // { // if (neueMessage.UserId == ChatDaten.Userid.Value) // { // var time = DateTime.Parse(neueMessage.Timestamp.Date); // var clientZone = TimeZoneInfo.Local; // var timeformated = TimeZoneInfo.ConvertTimeFromUtc(time, clientZone); // if (!neueMessage.File.Equals("")) // Bilder werden Sichtbar // { // Messages.Add(new KontaktMessageBuilder(neueMessage.User_Name, neueMessage.Text, // timeformated.ToString("dd MMMM yyyy HH:mm:ss"), true, LadeBildNach(neueMessage.File), // timeformated)); // } // else // { // Messages.Add(new KontaktMessageBuilder(neueMessage.User_Name, neueMessage.Text, // timeformated.ToString("dd MMMM yyyy HH:mm:ss"), true, timeformated)); // } // } // else // { // var time = DateTime.Parse(neueMessage.Timestamp.Date); // var clientZone = TimeZoneInfo.Local; // var timeformated = TimeZoneInfo.ConvertTimeFromUtc(time, clientZone); // if (!neueMessage.File.Equals("")) // Bilder werden Sichtbar // { // Messages.Add(new KontaktMessageBuilder(neueMessage.User_Name, neueMessage.Text, // timeformated.ToString("dd MMMM yyyy HH:mm:ss"), false, LadeBildNach(neueMessage.File), // timeformated)); // } // else // { // Messages.Add(new KontaktMessageBuilder(neueMessage.User_Name, neueMessage.Text, // timeformated.ToString("dd MMMM yyyy HH:mm:ss"), false, timeformated)); // } // } // } // } // var x = Messages.OrderBy(r => r.ConvertetSendtimeString); // return x; // } // else // { // return Messages.OrderBy(r => r.ConvertetSendtimeString); // } //} //private UserMessages HoleNachrichtFV(long groupId) //{ // try // { // var endurl = ChatDaten.ServerUrl + "/api/chat/messages?groupid=" + groupId; // WebRequest request = WebRequest.Create(endurl); // request.Credentials = CredentialCache.DefaultCredentials; // request.Headers["Token"] = ChatDaten.AuthToken; // request.Headers["CustomerID"] = ChatDaten.Kundennummer; // request.Proxy = null; // // Get the response. // WebResponse response = request.GetResponse(); // // Display the status. // var statusResponse = ((HttpWebResponse)response).StatusDescription; // string responseFromServer = ReadStream(response); // UserMessages jsonDaten = null; // //verarbeite hier zu json // if (!responseFromServer.Equals("")) // { // // _userMessages = null; // //################# Deserialisierung mit Json ############################### // jsonDaten = JsonConvert.DeserializeObject(responseFromServer); // //_userMessages = jsonDaten; // //if (_userMessages.Response.HasMorePages == true) // //{ // // _nextPage = _userMessages.Response.NextPage; // // _hasNextPage = true; // //} // //else // //{ // // _hasNextPage = false; // //} // } // else // { // // MessageBox.Show("Keine Daten Vorhanden."); // } // response.Close(); // return jsonDaten; // } // catch (Exception e) // { // return null; // } //} #endregion #region Lade Weiter Nachrichten public IOrderedEnumerable LadeWeiterNachrichten(KontaktlistBuilder kontakt) { if (_hasNextPage == true) { HoleWeitereNachrichtenVomServer(kontakt.GroupId, _nextPage); foreach (var ChatMessage in _weitereUserMessages.Response.Messages) { if (ChatMessage.UserId == ChatDaten.Userid.Value) { //var timeformated = DateTime.Parse(ChatMessage.Timestamp.Date); var time = DateTime.Parse(ChatMessage.Timestamp.Date); var clientZone = TimeZoneInfo.Local; var timeformated = TimeZoneInfo.ConvertTimeFromUtc(time, clientZone); if (!ChatMessage.File.Equals("")) // Bilder werden Sichtbar { //bool isGif = false; //if (ChatMessage.File.Contains(".gif")) //{ // isGif = true; //} Messages.Add(new KontaktMessageBuilder(ChatMessage.User_Name, ChatMessage.Text, timeformated.ToString("dd MMMM yyyy HH:mm:ss"), true, LadeBildNach(ChatMessage.File), timeformated)); } else { Messages.Add(new KontaktMessageBuilder(ChatMessage.User_Name, ChatMessage.Text, timeformated.ToString("dd MMMM yyyy HH:mm:ss"), true, timeformated)); } } else { //var timeformated = DateTime.Parse(ChatMessage.Timestamp.Date); var time = DateTime.Parse(ChatMessage.Timestamp.Date); var clientZone = TimeZoneInfo.Local; var timeformated = TimeZoneInfo.ConvertTimeFromUtc(time, clientZone); if (!ChatMessage.File.Equals("")) // Bilder werden Sichtbar { //bool isGif = false; //if (ChatMessage.File.Contains(".gif")) //{ // isGif = true; //} Messages.Add(new KontaktMessageBuilder(ChatMessage.User_Name, ChatMessage.Text, timeformated.ToString("dd MMMM yyyy HH:mm:ss"), false, LadeBildNach(ChatMessage.File), timeformated)); } else { Messages.Add(new KontaktMessageBuilder(ChatMessage.User_Name, ChatMessage.Text, timeformated.ToString("dd MMMM yyyy HH:mm:ss"), false, timeformated)); } } } } var x = Messages.OrderBy(r => r.ConvertetSendtimeString); return x; } private void HoleWeitereNachrichtenVomServer(long groupId,string page) { try { var pa = page.Split('='); var endurl = ChatDaten.ServerUrl + "/api/chat/messages?groupid=" + groupId+"&page="+pa[1]; WebRequest request = WebRequest.Create(endurl); request.Credentials = CredentialCache.DefaultCredentials; request.Headers["Token"] = ChatDaten.AuthToken; request.Headers["CustomerID"] = ChatDaten.Kundennummer; request.Proxy = null; // Get the response. WebResponse response = request.GetResponse(); // Display the status. var statusResponse = ((HttpWebResponse)response).StatusDescription; string responseFromServer = ReadStream(response); //verarbeite hier zu json if (!responseFromServer.Equals("")) { _weitereUserMessages = null; //################# Deserialisierung mit Json ############################### var jsonDaten = JsonConvert.DeserializeObject(responseFromServer); _weitereUserMessages = jsonDaten; if (_weitereUserMessages.Response.HasMorePages == true) //neu { _nextPage = _weitereUserMessages.Response.NextPage; _hasNextPage = true; } else { _hasNextPage = false; } } else { // MessageBox.Show("Keine Daten Vorhanden."); } response.Close(); } catch (Exception e) { // MessageBox.Show(e.Message, "Fehler", MessageBoxButton.OK); } } #endregion #region Prüfe ob Neue Nachrichten vorhanden sind private double? _oldMessageCount; public bool SchaueNachNeuenNachrichten(AktuellerKontakt kontakt) { TimeSpan lastTs = DateTime.UtcNow.TimeOfDay; double timespan = lastTs.TotalSeconds; if (_userMessages != null && _userMessages.Response.Messages.Length > 0) { timespan = _userMessages.Response.Messages.First().CreatetdAt; } if (kontakt != null) { var newMsCount = SendeTimestamp(kontakt.GroupId, timespan); if (_oldMessageCount == null) { _oldMessageCount = newMsCount; } if (newMsCount.Value == _oldMessageCount.Value) { return false; } else { _oldMessageCount = newMsCount; return true; } } else { return false; } } private double? SendeTimestamp(long groupId,double lastStamp) { try { var endurl = ChatDaten.ServerUrl + "/api/ownchat/news/" + groupId+"/"+lastStamp; WebRequest request = WebRequest.Create(endurl); request.Credentials = CredentialCache.DefaultCredentials; request.Headers["Token"] = ChatDaten.AuthToken; request.Headers["CustomerID"] = ChatDaten.Kundennummer; request.Proxy = null; // Get the response. WebResponse response = request.GetResponse(); // Display the status. var statusResponse = ((HttpWebResponse)response).StatusDescription; string responseFromServer = ReadStream(response); var jsonDaten = JsonConvert.DeserializeObject(responseFromServer); return jsonDaten.MessageCount; } catch (Exception e) { return null; } } #endregion #region Prüfe für alle ob neue Nachrichten vorhanden sind public double SchaueNachAllenMessageCounts() { TimeSpan lastTs = DateTime.UtcNow.TimeOfDay; double timespan = lastTs.TotalSeconds; var x = SendeTimestampForEach(0, timespan); return x; } private double SendeTimestampForEach(long groupId, double lastStamp) { try { var endurl = ChatDaten.ServerUrl + "/api/ownchat/news/" + groupId + "/" + lastStamp; WebRequest request = WebRequest.Create(endurl); request.Credentials = CredentialCache.DefaultCredentials; request.Headers["Token"] = ChatDaten.AuthToken; request.Headers["CustomerID"] = ChatDaten.Kundennummer; ((HttpWebRequest) request).KeepAlive = false; // Get the response. WebResponse response = request.GetResponse(); // Display the status. var statusResponse = ((HttpWebResponse)response).StatusDescription; string responseFromServer = ReadStream(response); var jsonDaten = JsonConvert.DeserializeObject(responseFromServer); return jsonDaten.MessageCount; } catch (Exception e) { return 0; } } public IOrderedEnumerable NeueGroupklassenKontakte() { List Kontakt = new List(); var daten = GruppenHolen(); foreach (var kontakt in daten.Response) { foreach (var value in kontakt.Value) { string message = ""; DateTime timestamp = new DateTime(); var lastMS = value.LastMessage; if (lastMS != null) { if (lastMS.Text != null) { message = lastMS.Text; timestamp = DateTime.Parse(lastMS.Timestamp.Date); } } //null steht für employee Kontakt.Add(new KontaktlistBuilder(value.Name, AvatarToImageSourceConverter(value.Avatar), message, timestamp, value.Oid, null)); } } 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; } private ChatGruppenDaten GruppenHolen() { try { var endurl = ChatDaten.ServerUrl + "/api/chat/groups"; WebRequest request = WebRequest.Create(endurl); request.Credentials = CredentialCache.DefaultCredentials; request.Headers["Token"] = ChatDaten.AuthToken; request.Headers["CustomerID"] = ChatDaten.Kundennummer; //((HttpWebRequest) request).KeepAlive = false; // Get the response. WebResponse response = request.GetResponse(); // Display the status. var statusResponse = ((HttpWebResponse)response).StatusDescription; string responseFromServer = ReadStream(response); //verarbeite hier zu json //################# Deserialisierung mit Json ############################### var jsonDaten = JsonConvert.DeserializeObject(responseFromServer); response.Close(); return jsonDaten; } catch (Exception e) { // MessageBox.Show(e.Message, "Fehler", MessageBoxButton.OK); return null; } } #endregion #region Sende Normale Message an Kontakt private HttpWebRequest requesten; public async void SendMessage(string message, long groupId) { try { var endurl = ChatDaten.ServerUrl + "/api/chat/messages/send"; Dictionary postparameter = new Dictionary(); postparameter.Add("groupid", groupId + ""); postparameter.Add("text", message); //Original //string postdaten = ""; //foreach (var key in postparameter.Keys) //{ // postdaten += HttpUtility.UrlEncode(key) + "=" + HttpUtility.UrlEncode(postparameter[key]) + "&"; //} //requesten = (HttpWebRequest)WebRequest.Create(endurl); //requesten.Method = "POST"; //requesten.Headers["Token"] = ChatDaten.AuthToken; //requesten.Headers["CustomerID"] = ChatDaten.Kundennummer; ////requesten.KeepAlive = false; //requesten.ContentType = "application/x-www-form-urlencoded"; //byte[] daten = Encoding.ASCII.GetBytes(postdaten); //requesten.ContentLength = daten.Length; //Stream requestStream = requesten.GetRequestStream(); //requestStream.Write(daten, 0, daten.Length); //requestStream.Dispose(); //requestStream.Close(); //Original ende //WebResponse myHttpWebResponse = requesten.GetResponse(); //string page = ReadStream(myHttpWebResponse); //MessageBox.Show(page); //########################## neuer versuch für bessere performance| hat geklappt ################################################# using (MultipartFormDataContent multiPartContent = new MultipartFormDataContent()) { multiPartContent.Add(new StringContent(groupId + ""), "groupid"); multiPartContent.Add(new StringContent(message), "text"); Uri requestUri = new Uri(endurl); HttpRequestMessage httpRequest = new HttpRequestMessage(); httpRequest.Method = HttpMethod.Post; httpRequest.RequestUri = requestUri; //wegen Kontent nachschauen httpRequest.Content = multiPartContent; httpRequest.Headers.Add("Token", ChatDaten.AuthToken); httpRequest.Headers.Add("CustomerID", ChatDaten.Kundennummer); HttpResponseMessage httpResponse = null; HttpClient httpClient = new HttpClient(); //httpClient.Timeout = TimeSpan.FromSeconds(300); httpResponse = await httpClient.SendAsync(httpRequest, CancellationToken.None).ConfigureAwait(false); //string antwortResponse = await httpResponse.Content.ReadAsStringAsync(); } //################################################################################################################## } catch (Exception e) { // MessageBox.Show("Fehler: " + e.Message); } } #endregion #region Sende Media Nachricht an Kontakt public void HoleUndSendeMediumAnKontakt(AktuellerKontakt kontakt) { try { OpenFileDialog openFileDialog1 = new OpenFileDialog(); //if (typ == 1) openFileDialog1.Filter = "Bilder |*.jpg;*.png;*.jpeg;*.jpe;*.gif;*.bmp"; //else // openFileDialog1.Filter = "Office Dokumente |*.doc;*.xls;*.ppt;*.txt"; DialogResult result = openFileDialog1.ShowDialog(); if (result == System.Windows.Forms.DialogResult.OK) { VerarbeiteMedia(openFileDialog1.FileName,kontakt); } } catch (Exception e) { } } private void VerarbeiteMedia(string file,AktuellerKontakt kontakt) { byte[] mdatei; using (Stream reader = File.OpenRead(file)) { mdatei = ReadFully(reader); } string filename = Path.GetFileName(file); SendMediaMessage(filename, kontakt.GroupId, mdatei); //LoadKontakt(); } private static byte[] ReadFully(Stream stream) { byte[] buffer = new byte[32768]; using (MemoryStream ms = new MemoryStream()) { while (true) { int read = stream.Read(buffer, 0, buffer.Length); if (read <= 0) { return ms.ToArray(); } ms.Write(buffer, 0, read); } } } private HttpRequestMessage httpRequest; private async void SendMediaMessage(string message, long groupId, byte[] mediaDatei) { try { #region test Multiplatform using (MultipartFormDataContent multiPartContent = new MultipartFormDataContent()) { Uri 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"); 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); HttpResponseMessage httpResponse = null; 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); } #endregion } catch (Exception e) { } } #endregion #region Context Menue Für Chat inkl. Funktionen public ContextMenu ErstelleKontextMenue() { ContextMenu context = new ContextMenu(); System.Windows.Controls.MenuItem item1 = new System.Windows.Controls.MenuItem(); System.Windows.Controls.MenuItem item2 = new System.Windows.Controls.MenuItem(); context.Items.Add(item1); context.Items.Add(item2); item1.Header = "Speichern unter"; item1.Visibility = Visibility.Visible; item2.Header = "Einfügen"; item2.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; } #region Speichere Chat Doku/MEdia aufm PC public void SpeichernUnterFunkion(KontaktMessageBuilder item) { if (item.ImageSources != null) { string filename = item.ImageSources.ToString(); SpeichernUnter(1, filename, DownloadMediaDatei(filename)); } } private byte[] DownloadMediaDatei(string pfad) { try { byte[] pic = null; using (WebClient client = new WebClient()) { pic = client.DownloadData(pfad); } return pic; } catch (Exception e) { throw new Exception(e.Message); } } private void SpeichernUnter(int filterTyp, string dateiname, byte[] datensatz) { try { SaveFileDialog saveFileDialog1 = new SaveFileDialog(); saveFileDialog1.FileName = Path.GetFileName(dateiname); if (filterTyp == 1) // Bilder { saveFileDialog1.Filter = "Bilder |*.jpg;*.png;*.jpeg;*.jpe;*.gif;*.bmp"; saveFileDialog1.Title = "Bild Speichern"; saveFileDialog1.ShowDialog(); } if (filterTyp == 2) //Office { saveFileDialog1.Filter = "Office Dokumente |*.doc;*.xls;*.ppt;*.txt"; saveFileDialog1.Title = "Dokument Speichern"; saveFileDialog1.ShowDialog(); } if (filterTyp == 3) // Audio { saveFileDialog1.Filter = "Audio Datei|*.wav;*.mp3;*.wma;*.aac;*.ogg;"; saveFileDialog1.Title = "Audio Speichern"; saveFileDialog1.ShowDialog(); } if (saveFileDialog1.FileName != "") { FileStream fs = (FileStream)saveFileDialog1.OpenFile(); fs.Write(datensatz, 0, datensatz.Length); fs.Close(); } } catch (Exception e) { //throw fehler } } #endregion #region Fuege Daten Bilder usw via DragAndDrop in den Chat / muss noch bearbeitet werden public void Einfuegen() { //var item = context.Items[2] as MenuItem; //item.Visibility = Visibility.Collapsed; //Chat.SelectionMode = SelectionMode.Single; //Chat.Focusable = true; var d = System.Windows.Forms.Clipboard.GetDataObject(); if (d.GetDataPresent(DataFormats.FileDrop)) { string[] files = (String[])d.GetData(DataFormats.FileDrop); string imgFileString = files[0]; //if (isAnImage(imgFileString)) //{ // ZeigeProgressWärendUpload(1, imgFileString); //} //else //{ // ZeigeProgressWärendUpload(2, imgFileString); //} System.Windows.Forms.Clipboard.Clear(); } else { if (d.GetDataPresent(DataFormats.Text)) { string files = (String)d.GetData(DataFormats.Text); string imgFileString = files; try { byte[] data; using (WebClient client = new WebClient()) { data = client.DownloadData(imgFileString); } string filename = Path.GetFileName(imgFileString); //string isloaded = LoadDokumentFromInet(data, filename); //if (!isloaded.IsNullOrEmpty() && isAnImage(isloaded)) //{ // //ZeigeProgressWärendUpload(1, isloaded); //} //else //{ // //ZeigeProgressWärendUpload(2, isloaded); //} System.Windows.Forms.Clipboard.Clear(); } catch (Exception s) { //MessageBox.Show("Der Chat kann den Zwischen-Speicher nicht verarbeiten.", "Fehler", // MessageBoxButton.OK); } } else { if (d.GetDataPresent(DataFormats.Bitmap)) { Bitmap pic = (Bitmap)d.GetData(DataFormats.Bitmap); var bildname = GeneriereZuffalsNamen() + ".jpg"; System.Drawing.Image img = pic; //var data = Utils.CreateByteArrayFromImage(img); //string isloaded = LoadDokumentFromInet(data, bildname); //if (!isloaded.IsNullOrEmpty() && isAnImage(isloaded)) //{ // //ZeigeProgressWärendUpload(1, isloaded); //} //else //{ // //ZeigeProgressWärendUpload(2, isloaded); //} System.Windows.Forms.Clipboard.Clear(); } else { //MessageBox.Show("Der Chat kann den Zwischen-Speicher nicht verarbeiten.", "Fehler", // MessageBoxButton.OK); } } } } private string GeneriereZuffalsNamen() { int lenght = 6; const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "abcdefghijklmnopqrstuvwxyz" + "0123456789"; var random = new Random(); String Code = new string(Enumerable.Repeat(chars, lenght) .Select(s => s[random.Next(s.Length)]).ToArray()); return Code; } #endregion #endregion #region Zeige Kontakt Bild / hat noch probleme public void ShowKontaktPicture(AktuellerKontakt curItem ) { using (Form form = new Form()) { Image imgg = new Image(); imgg.Source = curItem.Image; 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); form.StartPosition = FormStartPosition.CenterScreen; form.Size = imgbit.Size; form.FormBorderStyle = FormBorderStyle.Sizable; PictureBox pb = new PictureBox(); pb.Dock = DockStyle.Fill; pb.Image = imgbit; pb.SizeMode = PictureBoxSizeMode.StretchImage; form.Controls.Add(pb); form.ShowDialog(); } } #endregion } }