Files
Chat/ChatController/HauptKlassen/Chat.cs

1553 lines
58 KiB
C#
Raw Normal View History

2017-09-12 14:32:34 +02:00
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
2017-10-06 12:08:05 +02:00
using System.Linq.Expressions;
2017-09-12 14:32:34 +02:00
using System.Net;
using System.Net.Http;
2017-10-18 14:32:00 +02:00
using System.Reflection;
2017-09-12 14:32:34 +02:00
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;
2017-10-20 07:34:26 +02:00
using Application = System.Windows.Forms.Application;
using Clipboard = System.Windows.Forms.Clipboard;
2017-09-12 14:32:34 +02:00
using ContextMenu = System.Windows.Controls.ContextMenu;
2017-10-06 12:08:05 +02:00
using Cursor = System.Windows.Input.Cursor;
2017-09-12 14:32:34 +02:00
using DataFormats = System.Windows.Forms.DataFormats;
using Image = System.Windows.Controls.Image;
using MenuItem = System.Windows.Forms.MenuItem;
2017-09-14 12:36:48 +02:00
using MessageBox = System.Windows.MessageBox;
2017-09-12 14:32:34 +02:00
using Size = System.Drawing.Size;
namespace ChatController.HauptKlassen
{
public class Chat
{
private readonly List<KontaktlistBuilder> Kontaktliste = new List<KontaktlistBuilder>();
private readonly List<KontaktMessageBuilder> Messages = new List<KontaktMessageBuilder>();
public ChatDatenUebergabe ChatDaten;
private UserMessages _userMessages;
private UserMessages _weitereUserMessages;
private string _nextPage = null;
private bool _hasNextPage = false;
2017-09-14 12:36:48 +02:00
public static readonly List<string> ImageExtensions = new List<string> { ".JPG", ".JPE", ".BMP", ".GIF", ".PNG", ".JPEG" };
public static readonly List<string> DokumentExtension = new List<string> { ".TXT", ".PPT", ".XLS", ".DOC" };
2017-09-12 14:32:34 +02:00
public Chat(ChatDatenUebergabe chatDaten)
{
ChatDaten = chatDaten;
}
#region Gruppen In Kontaktliste Wandler
public IOrderedEnumerable<KontaktlistBuilder> GroupklassenInChatKontakteUmwandler()
{
foreach (var kontakt in ChatDaten.Groupconect.Response)
{
foreach (var value in kontakt.Value)
{
string message = "";
DateTime timestamp = new DateTime();
var lastMS = value.LastMessage;
2017-09-12 14:32:34 +02:00
if (lastMS != null)
{
if (lastMS.Text != null)
{
message = lastMS.Text;
timestamp = DateTime.Parse(lastMS.Timestamp.Date);
}
}
if (message.Equals("") && value.LastMessage != null && !value.LastMessage.File.Equals(""))
{
message = Path.GetFileName(value.LastMessage.File);
}
2017-09-12 14:32:34 +02:00
//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
2017-09-14 12:36:48 +02:00
2017-09-12 14:32:34 +02:00
#region Lade Nachrichten vom Kontakt in den Chat
public IOrderedEnumerable<KontaktMessageBuilder> 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);
2017-10-06 12:08:05 +02:00
if (!ChatMessage.File.Equals(""))
2017-09-12 14:32:34 +02:00
{
2017-09-14 12:36:48 +02:00
if (ImageExtensions.Contains(Path.GetExtension(ChatMessage.File).ToUpperInvariant()))
{
Messages.Add(new KontaktMessageBuilder(ChatMessage.User_Name, ChatMessage.Text,
2017-10-06 12:08:05 +02:00
timeformated.ToString("dd MMMM yyyy HH:mm:ss"), true, LadeBildNach(ChatMessage.Smaller_Image),
timeformated,ChatMessage.File));
2017-09-14 12:36:48 +02:00
}
2017-10-06 12:08:05 +02:00
else
if (DokumentExtension.Contains(Path.GetExtension(ChatMessage.File).ToUpperInvariant()))
{
Messages.Add(new KontaktMessageBuilder(ChatMessage.User_Name, Path.GetFileName(ChatMessage.File),
timeformated.ToString("dd MMMM yyyy HH:mm:ss"), true,ChatMessage.File,
timeformated));
}
else
{
//MP4 und gifs und so unbehandelten dreck
Messages.Add(new KontaktMessageBuilder(ChatMessage.User_Name, Path.GetFileName(ChatMessage.File),
timeformated.ToString("dd MMMM yyyy HH:mm:ss"), true,ChatMessage.File,
timeformated));
}
2017-09-12 14:32:34 +02:00
}
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);
2017-09-14 12:36:48 +02:00
if (!ChatMessage.File.Equals(""))
2017-09-12 14:32:34 +02:00
{
2017-09-14 12:36:48 +02:00
if (ImageExtensions.Contains(Path.GetExtension(ChatMessage.File).ToUpperInvariant()))
{
//image
Messages.Add(new KontaktMessageBuilder(ChatMessage.User_Name, ChatMessage.Text,
2017-10-06 12:08:05 +02:00
timeformated.ToString("dd MMMM yyyy HH:mm:ss"), false, LadeBildNach(ChatMessage.Smaller_Image),
timeformated,ChatMessage.File));
2017-09-14 12:36:48 +02:00
}
2017-10-06 12:08:05 +02:00
else
if (DokumentExtension.Contains(Path.GetExtension(ChatMessage.File).ToUpperInvariant()))
{
//Dokument
Messages.Add(new KontaktMessageBuilder(ChatMessage.User_Name,
Path.GetFileName(ChatMessage.File),
timeformated.ToString("dd MMMM yyyy HH:mm:ss"), false, ChatMessage.File,
timeformated));
}
else
{
//ALLERLEI UNBEHANDELTER KRAM
Messages.Add(new KontaktMessageBuilder(ChatMessage.User_Name,
Path.GetFileName(ChatMessage.File),
timeformated.ToString("dd MMMM yyyy HH:mm:ss"), false, ChatMessage.File,
timeformated));
}
2017-09-12 14:32:34 +02:00
}
else
{
2017-09-14 12:36:48 +02:00
//Message
2017-09-12 14:32:34 +02:00
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();
2017-10-06 12:08:05 +02:00
2017-09-12 14:32:34 +02:00
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<UserMessages>(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)
{
2017-10-06 12:08:05 +02:00
MessageBox.Show(e.Message, "Fehler", MessageBoxButton.OK);
2017-09-12 14:32:34 +02:00
}
}
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<KontaktMessageBuilder> 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
{
2017-10-06 12:08:05 +02:00
if (ImageExtensions.Contains(Path.GetExtension(ChatMessage.File).ToUpperInvariant()))
{
Messages.Add(new KontaktMessageBuilder(ChatMessage.User_Name, ChatMessage.Text,
timeformated.ToString("dd MMMM yyyy HH:mm:ss"), true, LadeBildNach(ChatMessage.Smaller_Image),
timeformated, ChatMessage.File));
}
else
if (DokumentExtension.Contains(Path.GetExtension(ChatMessage.File).ToUpperInvariant()))
{
Messages.Add(new KontaktMessageBuilder(ChatMessage.User_Name,
Path.GetFileName(ChatMessage.File),
timeformated.ToString("dd MMMM yyyy HH:mm:ss"), true, ChatMessage.File,
timeformated));
}
else
{
// Der Ganze Unbehndelte Kram
Messages.Add(new KontaktMessageBuilder(ChatMessage.User_Name,
Path.GetFileName(ChatMessage.File),
timeformated.ToString("dd MMMM yyyy HH:mm:ss"), true, ChatMessage.File,
timeformated));
}
//Messages.Add(new KontaktMessageBuilder(ChatMessage.User_Name, ChatMessage.Text,
// timeformated.ToString("dd MMMM yyyy HH:mm:ss"), true, LadeBildNach(ChatMessage.File), timeformated));
2017-09-12 14:32:34 +02:00
}
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);
2017-10-06 12:08:05 +02:00
if (!ChatMessage.File.Equals(""))
2017-09-12 14:32:34 +02:00
{
2017-10-06 12:08:05 +02:00
if (ImageExtensions.Contains(Path.GetExtension(ChatMessage.File).ToUpperInvariant()))
{
//image
Messages.Add(new KontaktMessageBuilder(ChatMessage.User_Name, ChatMessage.Text,
timeformated.ToString("dd MMMM yyyy HH:mm:ss"), false, LadeBildNach(ChatMessage.Smaller_Image),
timeformated, ChatMessage.File));
}
else
if (DokumentExtension.Contains(Path.GetExtension(ChatMessage.File).ToUpperInvariant()))
{
//Dokument
Messages.Add(new KontaktMessageBuilder(ChatMessage.User_Name,
Path.GetFileName(ChatMessage.File),
timeformated.ToString("dd MMMM yyyy HH:mm:ss"), false, ChatMessage.File,
timeformated));
}
else
{
//Der Ganze Unbehandelte Kram MP4 und So
Messages.Add(new KontaktMessageBuilder(ChatMessage.User_Name,
Path.GetFileName(ChatMessage.File),
timeformated.ToString("dd MMMM yyyy HH:mm:ss"), false, ChatMessage.File,
timeformated));
}
//Messages.Add(new KontaktMessageBuilder(ChatMessage.User_Name, ChatMessage.Text,
//timeformated.ToString("dd MMMM yyyy HH:mm:ss"), false, LadeBildNach(ChatMessage.File), timeformated));
2017-09-12 14:32:34 +02:00
}
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<UserMessages>(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)
{
2017-10-06 12:08:05 +02:00
MessageBox.Show(e.Message, "Fehler", MessageBoxButton.OK);
2017-09-12 14:32:34 +02:00
}
}
#endregion
#region Prüfe ob Neue Nachrichten vorhanden sind
private double? _oldMessageCount;
public bool SchaueNachNeuenNachrichten(AktuellerKontakt kontakt)
{
TimeSpan lastTs = DateTime.UtcNow.TimeOfDay;
2017-10-20 07:34:26 +02:00
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;
2017-09-12 14:32:34 +02:00
if (_userMessages != null && _userMessages.Response.Messages.Length > 0)
{
2017-10-20 07:34:26 +02:00
timespan = _userMessages.Response.Messages.First().Created_At;
2017-09-12 14:32:34 +02:00
}
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;
}
}
2017-10-20 07:34:26 +02:00
private double? SendeTimestamp(long groupId,long lastStamp)
2017-09-12 14:32:34 +02:00
{
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<MessageCounter>(responseFromServer);
return jsonDaten.MessageCount;
}
catch (Exception e)
{
return null;
}
}
#endregion
#region Prüfe für alle ob neue Nachrichten vorhanden sind
public double SchaueNachAllenMessageCounts()
2017-10-20 07:34:26 +02:00
{
TimeSpan span = (DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc));
long unixTime = System.Convert.ToInt64(span.TotalSeconds);
2017-09-12 14:32:34 +02:00
2017-10-20 07:34:26 +02:00
var x = SendeTimestampForEach(0, unixTime);
2017-09-12 14:32:34 +02:00
return x;
}
2017-10-20 07:34:26 +02:00
private double SendeTimestampForEach(long groupId, long lastStamp)
2017-09-12 14:32:34 +02:00
{
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<MessageCounter>(responseFromServer);
return jsonDaten.MessageCount;
}
catch (Exception e)
{
return 0;
2017-10-06 12:08:05 +02:00
}
2017-09-12 14:32:34 +02:00
}
public IOrderedEnumerable<KontaktlistBuilder> NeueGroupklassenKontakte()
{
List<KontaktlistBuilder> Kontakt = new List<KontaktlistBuilder>();
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);
}
}
2017-09-15 11:23:03 +02:00
if (message.Equals("") && value.LastMessage != null && !value.LastMessage.File.Equals(""))
{
message = Path.GetFileName(value.LastMessage.File);
}
2017-09-12 14:32:34 +02:00
//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<ChatGruppenDaten>(responseFromServer);
response.Close();
return jsonDaten;
}
catch (Exception e)
{
2017-10-06 12:08:05 +02:00
MessageBox.Show(e.Message, "Fehler", MessageBoxButton.OK);
2017-09-12 14:32:34 +02:00
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<string, string> postparameter = new Dictionary<string, string>();
postparameter.Add("groupid", groupId + "");
postparameter.Add("text", message);
2017-10-06 12:08:05 +02:00
2017-09-12 14:32:34 +02:00
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();
}
2017-10-06 12:08:05 +02:00
2017-09-12 14:32:34 +02:00
}
catch (Exception e)
{
2017-10-06 12:08:05 +02:00
MessageBox.Show("Fehler: " + e.Message,"Fehler",MessageBoxButton.OK);
2017-09-12 14:32:34 +02:00
}
}
#endregion
#region Sende Media Nachricht an Kontakt
public void HoleUndSendeMediumAnKontakt(AktuellerKontakt kontakt)
{
try
{
OpenFileDialog openFileDialog1 = new OpenFileDialog();
//if (typ == 1)
2017-09-14 12:36:48 +02:00
openFileDialog1.Filter = "Office Dokumente |*.doc;*.xls;*.ppt;*.txt|Bilder |*.jpg;*.png;*.jpeg;*.jpe;*.gif;*.bmp";
2017-09-12 14:32:34 +02:00
//else
2017-09-14 12:36:48 +02:00
// openFileDialog1.Filter = "Office Dokumente |*.doc;*.xls;*.ppt;*.txt";
2017-09-12 14:32:34 +02:00
DialogResult result = openFileDialog1.ShowDialog();
if (result == System.Windows.Forms.DialogResult.OK)
{
VerarbeiteMedia(openFileDialog1.FileName,kontakt);
}
}
catch (Exception e)
{
2017-10-06 12:08:05 +02:00
MessageBox.Show("Fehler: " + e.Message, "Fehler", MessageBoxButton.OK);
2017-09-12 14:32:34 +02:00
}
}
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)
{
2017-10-06 12:08:05 +02:00
MessageBox.Show("Fehler: " + e.Message, "Fehler", MessageBoxButton.OK);
2017-09-12 14:32:34 +02:00
}
}
#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(); // 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
2017-09-12 14:32:34 +02:00
context.Items.Add(item1);
context.Items.Add(item2);
context.Items.Add(item3);
2017-09-12 14:32:34 +02:00
item1.Header = "Speichern unter";
item1.Visibility = Visibility.Visible;
item2.Header = "Einfügen";
item2.Visibility = Visibility.Visible;
item3.Header = "Kopieren";
item3.Visibility = Visibility.Visible;
2017-09-12 14:32:34 +02:00
//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;
2017-09-12 14:32:34 +02:00
return context;
}
#region Speichere Chat Doku/MEdia aufm PC
public void SpeichernUnterFunkion(KontaktMessageBuilder item)
{
if (item.ImageSources != null)
{
2017-10-06 12:08:05 +02:00
SpeichernUnter(1, Path.GetFileName(item.OriginalImage),
DownloadMediaDatei(item.OriginalImage));
2017-09-12 14:32:34 +02:00
}
}
private byte[] DownloadMediaDatei(string pfad)
{
try
{
byte[] pic = null;
using (WebClient client = new WebClient())
{
pic = client.DownloadData(pfad);
}
return pic;
}
catch (Exception e)
{
2017-10-06 12:08:05 +02:00
//throw new Exception(e.Message);
MessageBox.Show("Fehler: " + e.Message, "Fehler", MessageBoxButton.OK);
return null;
2017-09-12 14:32:34 +02:00
}
}
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)
{
2017-10-06 12:08:05 +02:00
MessageBox.Show("Fehler: "+e.Message,"Fehler",MessageBoxButton.OK);
2017-09-12 14:32:34 +02:00
}
}
#endregion
#region Fuege Daten Bilder usw via DragAndDrop in den Chat / muss noch bearbeitet werden
2017-09-14 12:36:48 +02:00
public void Einfuegen(long groupOid)
{
2017-09-12 14:32:34 +02:00
var d = System.Windows.Forms.Clipboard.GetDataObject();
if (d.GetDataPresent(DataFormats.FileDrop))
{
2017-09-14 12:36:48 +02:00
try
2017-09-12 14:32:34 +02:00
{
2017-09-14 12:36:48 +02:00
string[] fileList = d.GetData(DataFormats.FileDrop) as string[];
string filename = "";
2017-09-12 14:32:34 +02:00
2017-09-14 12:36:48 +02:00
FileStream file = null;
2017-09-12 14:32:34 +02:00
2017-09-14 12:36:48 +02:00
if (fileList != null)
2017-09-12 14:32:34 +02:00
{
2017-09-14 12:36:48 +02:00
if (File.Exists(fileList[0]))
2017-09-12 14:32:34 +02:00
{
2017-09-14 12:36:48 +02:00
filename = Path.GetFileName(fileList[0]);
2017-09-12 14:32:34 +02:00
2017-09-14 12:36:48 +02:00
//file = File.OpenRead(fileList[0]);
byte[] myBinary = File.ReadAllBytes(fileList[0]);
2017-09-12 14:32:34 +02:00
2017-09-14 12:36:48 +02:00
SendMediaMessage(filename, groupOid, myBinary);
}
2017-09-12 14:32:34 +02:00
}
}
2017-09-14 12:36:48 +02:00
catch (Exception e)
2017-09-12 14:32:34 +02:00
{
2017-09-14 12:36:48 +02:00
MessageBox.Show("Fehler: " + e.Message, "Fehler", MessageBoxButton.OK);
}
}
else
if (d.GetDataPresent(DataFormats.Text))
{
string text = (string)d.GetData(DataFormats.StringFormat);
2017-09-14 12:36:48 +02:00
SendMessage(text, groupOid);
}
else
2017-09-12 14:32:34 +02:00
if (d.GetDataPresent(DataFormats.Bitmap))
{
Bitmap pic = (Bitmap)d.GetData(DataFormats.Bitmap);
var bildname = GeneriereZuffalsNamen() + ".jpg";
System.Drawing.Image img = pic;
2017-09-14 12:36:48 +02:00
SendMediaMessage(bildname,groupOid, ImageToByteArray(img));
2017-09-12 14:32:34 +02:00
}
else
{
2017-09-14 12:36:48 +02:00
MessageBox.Show("Der Zwischen-Speicher kann nicht verarbeitet werden.", "Fehler", MessageBoxButton.OK);
}
}
public static byte[] ImageToByteArray(System.Drawing.Image image)
{
2017-10-06 12:08:05 +02:00
try
2017-09-14 12:36:48 +02:00
{
2017-10-06 12:08:05 +02:00
using (var ms = new MemoryStream())
{
image.Save(ms, ImageFormat.Bmp);
return ms.ToArray();
}
}
catch (Exception e)
{
MessageBox.Show("Fehler: " + e.Message, "Fehler", MessageBoxButton.OK);
return null;
2017-09-12 14:32:34 +02:00
}
}
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
#region Kopierne der Dinger im Chat für Alle Bereiche
public void Kopieren(object data, int typ)
{
if (typ == 1) // Text
{
Clipboard.SetData(DataFormats.Text, data);
}
if (typ == 2) // Bild
{
Clipboard.SetData(DataFormats.Bitmap, data);
}
if (typ == 3) //Dokument
{
Clipboard.SetData(DataFormats.FileDrop, data);
}
}
#endregion
2017-09-12 14:32:34 +02:00
#endregion
2017-09-14 12:36:48 +02:00
#region Zeige Kontakt Bild / hat noch probleme -> Show Kontakt
2017-09-12 14:32:34 +02:00
public void ShowKontaktPicture(AktuellerKontakt curItem )
{
2017-10-06 12:08:05 +02:00
try
2017-09-12 14:32:34 +02:00
{
2017-10-06 12:08:05 +02:00
using (Form form = new Form())
{
Image imgg = new Image();
2017-09-12 14:32:34 +02:00
2017-10-06 12:08:05 +02:00
imgg.Source = curItem.Image;
2017-09-12 14:32:34 +02:00
2017-10-06 12:08:05 +02:00
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);
2017-09-12 14:32:34 +02:00
2017-10-06 12:08:05 +02:00
Bitmap imgbit = new Bitmap(img);
2017-09-12 14:32:34 +02:00
2017-10-06 12:08:05 +02:00
form.StartPosition = FormStartPosition.CenterScreen;
form.Size = imgbit.Size;
2017-10-18 10:09:20 +02:00
form.MinimumSize = new Size(150,150);
form.MaximumSize = new Size(500,500);
2017-10-06 12:08:05 +02:00
form.FormBorderStyle = FormBorderStyle.Sizable;
2017-09-12 14:32:34 +02:00
2017-10-20 07:34:26 +02:00
form.MaximizeBox = false;
form.Text = "ownChat Bild Voschau";
form.Icon = Icon.ExtractAssociatedIcon(Application.ExecutablePath);
2017-10-06 12:08:05 +02:00
PictureBox pb = new PictureBox();
pb.Dock = DockStyle.Fill;
pb.Image = imgbit;
2017-09-12 14:32:34 +02:00
2017-10-06 12:08:05 +02:00
pb.SizeMode = PictureBoxSizeMode.StretchImage;
2017-09-12 14:32:34 +02:00
2017-10-18 10:09:20 +02:00
pb.MaximumSize = new Size(500,500);
2017-09-12 14:32:34 +02:00
2017-10-06 12:08:05 +02:00
form.Controls.Add(pb);
form.ShowDialog();
}
}
catch (Exception e)
{
MessageBox.Show("Fehler: "+e.Message,"Fehler",MessageBoxButton.OK);
2017-09-12 14:32:34 +02:00
}
}
2017-09-14 12:36:48 +02:00
public void ShowPicture(KontaktMessageBuilder curItem)
{
2017-10-06 12:08:05 +02:00
try
{
var webClient = new WebClient();
webClient.DownloadDataCompleted += DownoaldKomplett;
webClient.DownloadDataAsync(new Uri(curItem.OriginalImage));
}
catch (Exception e)
2017-09-14 12:36:48 +02:00
{
2017-10-06 12:08:05 +02:00
MessageBox.Show("Fehler: " + e.Message, "Fehler", MessageBoxButton.OK);
}
}
2017-09-14 12:36:48 +02:00
2017-10-06 12:08:05 +02:00
private void DownoaldKomplett(object sender, DownloadDataCompletedEventArgs e)
{
try
{
using (Form form = new Form())
{
Image imgg = new Image();
2017-09-14 12:36:48 +02:00
2017-10-06 12:08:05 +02:00
BitmapImage bix = new BitmapImage();
using (var stream = new MemoryStream(e.Result))
{
bix.BeginInit();
bix.CacheOption = BitmapCacheOption.OnLoad;
bix.StreamSource = stream;
bix.EndInit();
}
imgg.Source = bix;
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);
2017-09-14 12:36:48 +02:00
2017-10-06 12:08:05 +02:00
Bitmap imgbit = new Bitmap(img);
2017-09-14 12:36:48 +02:00
2017-10-06 12:08:05 +02:00
form.StartPosition = FormStartPosition.CenterScreen;
form.Size = imgbit.Size;
2017-10-18 10:09:20 +02:00
form.MinimumSize = new Size(150,150);
form.MaximumSize = new Size(500,500);
2017-10-06 12:08:05 +02:00
form.FormBorderStyle = FormBorderStyle.Sizable;
2017-09-14 12:36:48 +02:00
2017-10-20 07:34:26 +02:00
form.MaximizeBox = false;
form.Text = "ownChat Bild Voschau";
form.Icon = Icon.ExtractAssociatedIcon(Application.ExecutablePath);
2017-10-06 12:08:05 +02:00
PictureBox pb = new PictureBox();
pb.Dock = DockStyle.Fill;
pb.Image = imgbit;
2017-09-14 12:36:48 +02:00
2017-10-06 12:08:05 +02:00
pb.SizeMode = PictureBoxSizeMode.StretchImage;
2017-10-18 10:09:20 +02:00
//pb.MaximumSize = new Size(500,500);
2017-09-14 12:36:48 +02:00
2017-10-06 12:08:05 +02:00
form.Controls.Add(pb);
form.ShowDialog();
}
}
catch (Exception edf)
{
MessageBox.Show("Fehler: " + edf.Message, "Fehler", MessageBoxButton.OK);
2017-09-14 12:36:48 +02:00
}
}
2017-09-12 14:32:34 +02:00
#endregion
2017-10-18 14:32:00 +02:00
2017-10-18 10:09:20 +02:00
#region Synchronisation Veranlassen für Bewoplaner OwnChat Version
2017-10-06 12:08:05 +02:00
//sync für alles und jeden
//public bool DoSync = true;
2017-09-12 14:32:34 +02:00
2017-10-06 12:08:05 +02:00
public bool DoSynchronisation( string apikey, string customerid)
{
try
{
var endurl = ChatDaten.ServerUrl + "/api/ownchat/sync/schedule/"+apikey+"/" +customerid;
WebRequest request = WebRequest.Create(endurl);
2017-09-12 14:32:34 +02:00
2017-10-06 12:08:05 +02:00
request.Credentials = CredentialCache.DefaultCredentials;
request.Proxy = null;
WebResponse response = request.GetResponse();
// Display the status.
var statusResponse = ((HttpWebResponse)response).StatusDescription;
string responseFromServer = ReadStream(response);
var definiti = new { result = "" };
var jsonDatentyp = JsonConvert.DeserializeAnonymousType(responseFromServer, definiti);
switch (jsonDatentyp.result)
{
case "0": MessageBox.Show("Syncanforderung wurde für fünf Minuten in der Zukunft hinterlegt.", "Fehler", 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;
}
return false;
}
catch (Exception e)
{
MessageBox.Show("Die verbindung konnte nicht aufgebaut werden.", "Fehler ", MessageBoxButton.OK);
return false;
}
}
#endregion
2017-10-18 10:09:20 +02:00
#region Neue Gruppen Holen für OwnChatDesktop
2017-10-06 12:08:05 +02:00
public ChatGruppenDaten GruppenAktuallisieren()
{
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;
// Get the response.
WebResponse response = request.GetResponse();
// Display the status.
var statusResponse = ((HttpWebResponse)response).StatusDescription;
string responseFromServer = ReadStream(response);
response.Close();
//verarbeite hier zu json
if (!responseFromServer.Equals(""))
{
//################# Deserialisierung mit Json ###############################
var jsonDaten = JsonConvert.DeserializeObject<ChatGruppenDaten>(responseFromServer);
//_groupconect = jsonDaten;
//// var serv = jsonDaten[_chatcode].ServerName;
////MessageBox.Show(responseFromServer);
//_gruppeholenverbindungsaufbauOK = true;
return jsonDaten;
}
return null;
}
catch (Exception e)
{
MessageBox.Show("Beim Aktualisieren der Kontaktliste ist ein Fehler aufgetreten.\nFehler:\n"+e.Message, "Fehler", MessageBoxButton.OK);
return null;
}
}
public IOrderedEnumerable<KontaktlistBuilder> GroupklassenAktuallisieren(ChatGruppenDaten chatDaten)
{
try
{
2017-10-20 07:34:26 +02:00
Kontaktliste.Clear();
2017-10-06 12:08:05 +02:00
foreach (var kontakt in chatDaten.Response)
{
2017-10-20 07:34:26 +02:00
2017-10-06 12:08:05 +02:00
foreach (var value in kontakt.Value)
{
2017-10-20 07:34:26 +02:00
//var val = Kontaktliste.Find(item => item.GroupId == value.Oid);
2017-10-06 12:08:05 +02:00
2017-10-20 07:34:26 +02:00
//if (val == null) //was tun wenn der nicht merh drinne ist ?? dann ist das ja auch null
//{
string message = "";
DateTime timestamp = new DateTime();
2017-10-06 12:08:05 +02:00
2017-10-20 07:34:26 +02:00
var lastMS = value.LastMessage;
2017-10-06 12:08:05 +02:00
2017-10-20 07:34:26 +02:00
if (lastMS != null)
2017-10-06 12:08:05 +02:00
{
2017-10-20 07:34:26 +02:00
if (lastMS.Text != null)
{
message = lastMS.Text;
timestamp = DateTime.Parse(lastMS.Timestamp.Date);
}
2017-10-06 12:08:05 +02:00
}
2017-10-20 07:34:26 +02:00
if (message.Equals("") && value.LastMessage != null && !value.LastMessage.File.Equals(""))
{
message = Path.GetFileName(value.LastMessage.File);
}
2017-10-06 12:08:05 +02:00
2017-10-20 07:34:26 +02:00
//null steht für employee
Kontaktliste.Add(new KontaktlistBuilder(value.Name,
AvatarToImageSourceConverter(value.Avatar),
message, timestamp, value.Oid, null));
//}
//else
//{
// //Item Bereits vorhanden
//}
2017-10-06 12:08:05 +02:00
}
}
var sortedKontaktliste = Kontaktliste.OrderByDescending(r => r.TimeStamp);
return sortedKontaktliste;
}
catch (Exception e)
{
MessageBox.Show("Bein sortieren der Aktualisierten Kontakte ist ein Fehler aufgetreten.\nFehler:\n",
"Fehler", MessageBoxButton.OK);
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
2017-10-18 14:32:00 +02:00
//unter konstruktion
#region pruefe letzten Konversations timestamp für design element
public Dictionary<int, DateTime> PruefeTimeStampsBeiStart(List<KontaktlistBuilder> kontaktliste)
{
try
{
if (File.Exists(Path.Combine(GetAndCreateUserAppDataPath(), "ownChatMessageSync.txt")))
{
Dictionary<string,string> merkdaten = new Dictionary<string, string>();
using (StreamReader sr = new StreamReader(Path.Combine(GetAndCreateUserAppDataPath(), "ownChatMessageSync.txt"), true))
{
string line = "";
while ((line = sr.ReadLine()) != null)
{
var encodedTextBytes = Convert.FromBase64String(line);
string plainText = Encoding.UTF8.GetString(encodedTextBytes);
var plainarray = plainText.Split(';');
merkdaten.Add(plainarray[0], plainarray[1]);
}
}
Dictionary<int, DateTime> rueckgabe = new Dictionary<int, DateTime>();
foreach (var kontakt in kontaktliste)
{
foreach (var daten in merkdaten)
{
var groupoid = Int32.Parse(daten.Key);
if (kontakt.GroupId == groupoid)
{
var datetime = DateTime.Parse(daten.Value);
if (kontakt.TimeStamp.Equals(datetime))
{
rueckgabe.Add(groupoid,datetime);
}
}
}
}
if (rueckgabe.Count > 0)
{
return rueckgabe;
}
else
{
return null;
}
}
return null;
}
catch (Exception e)
{
return null;
}
}
public void SpeichereTimeStampsInDatei( List<KontaktlistBuilder> kontaktliste )
{
try
{
//Hole alle aktuellen, schreibe ihre oid und den Timestamp der Aktuellen nachricht in eine Datei
if (!File.Exists(Path.Combine(GetAndCreateUserAppDataPath(), "ownChatMessageSync.txt")))
{
using (
StreamWriter sw =
new StreamWriter(Path.Combine(GetAndCreateUserAppDataPath(), "ownChatMessageSync.txt")))
{
Encoding enc = new UTF8Encoding();
foreach (var kontakt in kontaktliste)
{
var text = kontakt.GroupId + ";" + kontakt.TimeStamp+";";
var byt = enc.GetBytes(text);
var bytes = Convert.ToBase64String(byt);
sw.WriteLine(bytes);
}
File.SetAttributes(Path.Combine(GetAndCreateUserAppDataPath(), "ownChatMessageSync.txt"),
FileAttributes.ReadOnly);
}
}
else
{
File.SetAttributes(Path.Combine(GetAndCreateUserAppDataPath(), "ownChatMessageSync.txt"), FileAttributes.Normal);
File.Delete(Path.Combine(GetAndCreateUserAppDataPath(), "ownChatMessageSync.txt"));
using (
StreamWriter sw = new StreamWriter(Path.Combine(GetAndCreateUserAppDataPath(), "ownChatMessageSync.txt")))
{
Encoding enc = new UTF8Encoding();
foreach (var kontakt in kontaktliste)
{
var text = kontakt.GroupId + ";" + kontakt.TimeStamp + ";";
var byt = enc.GetBytes(text);
var bytes = Convert.ToBase64String(byt);
sw.WriteLine(bytes);
}
File.SetAttributes(Path.Combine(GetAndCreateUserAppDataPath(), "ownChatMessageSync.txt"),
FileAttributes.ReadOnly);
}
}
}
catch (Exception e)
{
}
}
private static string GetAndCreateUserAppDataPath()
{
try
{
string localAppData = Environment.GetFolderPath(
Environment.SpecialFolder.LocalApplicationData);
string companyFilePath
= Path.Combine(localAppData, "beyondSoft");
if (!Directory.Exists(companyFilePath))
Directory.CreateDirectory(companyFilePath);
string bewoFilePath
= Path.Combine(companyFilePath, "OwnChat");
if (!Directory.Exists(bewoFilePath))
Directory.CreateDirectory(bewoFilePath);
return bewoFilePath;
}
catch (Exception ex)
{
MessageBox.Show(
"Fehler beim Anlegen des Anwendungsordners. Sie besitzen nicht die erforderlichen Rechte, bitte wenden Sie sich an Ihren Systemadministrator.\n" +
ex.Message, "BeWoPlaner", MessageBoxButton.OK, MessageBoxImage.Exclamation);
}
return Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
}
#endregion
2017-09-12 14:32:34 +02:00
}
}