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 ;
2017-09-18 13:07:37 +02:00
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-15 09:49:32 +02:00
2017-09-12 14:32:34 +02:00
if ( lastMS ! = null )
{
if ( lastMS . Text ! = null )
{
message = lastMS . Text ;
timestamp = DateTime . Parse ( lastMS . Timestamp . Date ) ;
}
}
2017-09-15 09:49:32 +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
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 ( ) ;
2017-09-18 13:07:37 +02:00
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 ) ;
2017-09-18 13:07:37 +02:00
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 ;
2017-09-18 13:07:37 +02:00
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-18 13:07:37 +02:00
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 ) )
{
2017-09-20 11:46:00 +02:00
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
2017-09-18 13:07:37 +02:00
#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
}
}