Neu ist Immer Besser

This commit is contained in:
Waldi
2017-10-06 12:08:05 +02:00
parent 706f83ccd9
commit e85dbfa970
17 changed files with 939 additions and 474 deletions

View File

@@ -104,5 +104,11 @@
<Resource Include="Ressourcen\mitarbeiter-team-avatar.png" />
<Resource Include="Ressourcen\paperclip.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Ressourcen\paperclip2.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Ressourcen\SymbolRefresh32.png" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View File

@@ -16,8 +16,8 @@ namespace ChatController.ChatKlassen
public DateTime TimeStamp { get; set; }
public long GroupId { get; set; }
public long? CustomerPersonOid { get; set; }
public AktuellerKontakt(KontaktlistBuilder kontakt)
{
if(kontakt != null) {

View File

@@ -12,6 +12,9 @@ namespace ChatController.ChatKlassen
{
public class KontaktMessageBuilder
{
public string OriginalImage { get; private set; }
//Chat Ansicht
public KontaktMessageBuilder(string username, string message, string sendtime, bool isme, DateTime convertedSendTimeString)
{
@@ -48,16 +51,16 @@ namespace ChatController.ChatKlassen
_herunterladen = Visibility.Collapsed;
_gifPictureVisibility = Visibility.Collapsed;
}
// IMage Ansicht
public KontaktMessageBuilder(string username, string message, string sendtime, bool isme, ImageSource image, DateTime convertedSendTimeString)
public KontaktMessageBuilder(string username, string message, string sendtime, bool isme, ImageSource image, DateTime convertedSendTimeString,string originalImage)
{
Username = username;
UserMessage = message;
SendTime = sendtime;
ImageSources = image;
ConvertetSendtimeString = convertedSendTimeString;
OriginalImage = originalImage;
// Dokpfad =
if (isme)

View File

@@ -37,7 +37,8 @@
<RowDefinition Height="5*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="10*"/>
<ColumnDefinition Width="8*"/>
<ColumnDefinition Width="2*"/>
</Grid.ColumnDefinitions>
<!--<StackPanel Grid.Row="0" Orientation="Horizontal" VerticalAlignment="Bottom" HorizontalAlignment="Left" Visibility="Collapsed">
@@ -48,20 +49,25 @@
//Checked="ComboBox_SelectionChanged"
<RadioButton GroupName="status" x:Name="RadioButtonBeschaeftigt" BorderBrush="DarkOrange" MaxWidth="15" ToolTip="Beschäftigt" VerticalAlignment="Center" Foreground="DarkOrange"/>
//Checked="ComboBox_SelectionChanged"
</StackPanel> -->
</StackPanel> / Style="{DynamicResource IconButtonStyle}" /-->
<StackPanel Grid.Row="0" MaxWidth="20" HorizontalAlignment="Right" Orientation="Horizontal" VerticalAlignment="Bottom" Visibility="Collapsed">
<Button Style="{DynamicResource IconButtonStyle}" x:Name="ButtonSortLabel" Background="Transparent" BorderBrush="Transparent" HorizontalAlignment="Right" VerticalAlignment="Center" Width="20" Height="20" >
<!--Click="ButtonSortLabel_OnClick"-->
<Image x:Name="SortLabel" ToolTip="Sortierung ändern" Source="pack://application:,,,/Ressources/icons/unsortiert.png" />
<StackPanel x:Name="ReloadGruppen" Grid.Row="0" Grid.Column="1" MinHeight="25" MaxWidth="25" HorizontalAlignment="Right" Orientation="Horizontal" VerticalAlignment="Bottom" Visibility="Collapsed" Margin="0,-2,0,-2">
<Button Background="Transparent" HorizontalAlignment="Right" BorderThickness="0" VerticalAlignment="Center" VerticalContentAlignment="Center" Width="25" Height="25" Click="ButtonReloadGruppen_OnClick" >
<Image ToolTip="Gruppen Aktualisieren" Width="20" Height="20" Source="pack://application:,,,/ChatController;component/Ressourcen/SymbolRefresh32.png" RenderOptions.BitmapScalingMode="HighQuality" HorizontalAlignment="Center" />
</Button>
</StackPanel>
<!-- <StackPanel Grid.Row="0" MaxWidth="20" HorizontalAlignment="Right" Orientation="Horizontal" VerticalAlignment="Bottom" Visibility="Collapsed">
<Button Style="{DynamicResource IconButtonStyle}" x:Name="ButtonSortLabel" Background="Transparent" BorderBrush="Transparent" HorizontalAlignment="Right" VerticalAlignment="Center" Width="20" Height="20" >
Click="ButtonSortLabel_OnClick"-->
<!-- <Image x:Name="SortLabel" ToolTip="Sortierung ändern" Source="pack://application:,,,/Ressources/icons/unsortiert.png" />
</Button>
</StackPanel>-->
<!-- KeyDown="Suche_OnKeyDown" TextChanged="Suche_OnTextChanged" -->
<Label Grid.Row="0" Grid.Column="0" MinHeight="25">Suche:</Label>
<!-- <GroupBox Grid.Column="0" Grid.Row="1" Header="Suche:" Style="{x:Null}"> -->
<TextBox x:Name="Suche" Grid.Column="0" Grid.Row="1" Margin="3,3,3,3" MinHeight="25" Height="25" VerticalContentAlignment="Center" TextChanged="Suche_OnTextChanged" VerticalAlignment="Top" ToolTip="Suchen Sie hier nach einem User in der Liste" >
<TextBox x:Name="Suche" Grid.Column="0" Grid.ColumnSpan="2" Grid.Row="1" Margin="3,3,3,3" MinHeight="25" Height="25" VerticalContentAlignment="Center" TextChanged="Suche_OnTextChanged" VerticalAlignment="Top" ToolTip="Suchen Sie hier nach einem User in der Liste" >
<TextBox.Resources>
<Style TargetType="{x:Type Border}">
<Setter Property="CornerRadius" Value="4"/>
@@ -331,30 +337,33 @@
<Grid Grid.Column="0" Grid.ColumnSpan="2" MinHeight="25">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="9*"/>
<ColumnDefinition Width="30"/>
<ColumnDefinition Width="30"/>
<ColumnDefinition Width="30"/>
</Grid.ColumnDefinitions>
<TextBox x:Name="Chatbox" HorizontalAlignment="Stretch" Grid.Column="0" Grid.ColumnSpan="3" TextWrapping="Wrap" Text="Nachricht schreiben" VerticalScrollBarVisibility="Hidden" MaxLines="5" MaxHeight="70" Visibility="Visible"
VerticalContentAlignment="Center" MinHeight="25" ToolTip="Schreiben Sie hier eine Nachricht hinein" Foreground="DarkGray" VerticalAlignment="Bottom" GotFocus="Chatbox_OnGotFocus" KeyDown="Chatbox_OnKeyDownHandler">
VerticalContentAlignment="Center" MinHeight="25" Padding="10,0,60,0" ToolTip="Schreiben Sie hier eine Nachricht hinein" Foreground="DarkGray" VerticalAlignment="Bottom" GotFocus="Chatbox_OnGotFocus" KeyDown="Chatbox_OnKeyDownHandler">
<TextBox.Resources>
<Style TargetType="{x:Type Border}">
<Setter Property="CornerRadius" Value="3"/>
<Setter Property="Padding" Value="10,0,60,0" />
<!-- <Setter Property="Padding" Value="10,0,60,0" />-->
</Style>
</TextBox.Resources>
</TextBox>
<Button Grid.Column="1" Style="{x:Null}" Height="25" Background="Transparent" BorderThickness="0" Margin="1,0,0,0" VerticalAlignment="Bottom" ToolTip="Datei einfügen" Click="MediaButton_OnClick" >
<Image Height="15" Width="15" Source='pack://application:,,,/ChatController;component/Ressourcen/paperclip.png' Margin="3" RenderOptions.BitmapScalingMode="HighQuality" HorizontalAlignment="Right"/>
</Button>
<Button Grid.Column="2" Style="{x:Null}" Height="25" Background="Transparent" BorderThickness="0" x:Name="EmojiButton" Margin="2,0,0,0" VerticalAlignment="Bottom" ToolTip="Emoji einfügen" Click="EmojiButton_OnClick">
<Image Height="15" Width="15" Source='pack://application:,,,/ChatController;component/Ressourcen/glucklicher.png' Margin="3" RenderOptions.BitmapScalingMode="HighQuality" HorizontalAlignment="Right"/>
<!-- StackPanel Zur test zwecken Style="{x:Null}"-->
<StackPanel Grid.Column="1" Grid.ColumnSpan="2" Margin="1" Orientation="Horizontal">
<Button Grid.Column="1" Margin="1,0,0,0" x:Name="MediaButton" Background="Transparent" Width="25" BorderThickness="0" VerticalAlignment="Bottom" ToolTip="Datei einfügen" Click="MediaButton_OnClick" >
<Image Height="15" Width="15" Source='pack://application:,,,/ChatController;component/Ressourcen/paperclip2.png' Margin="3" RenderOptions.BitmapScalingMode="HighQuality" HorizontalAlignment="Center"/>
</Button>
<Button Grid.Column="2" Width="25" BorderThickness="0" Background="Transparent" x:Name="EmojiButton" Margin="2,0,0,0" VerticalAlignment="Bottom" ToolTip="Emoji einfügen" Click="EmojiButton_OnClick">
<Image Height="15" Width="15" Source='pack://application:,,,/ChatController;component/Ressourcen/glucklicher.png' Margin="3" RenderOptions.BitmapScalingMode="HighQuality" HorizontalAlignment="Center" />
</Button>
</StackPanel>
<!-- Stackpanel zu 12 testZwecken -->
</Grid>
<Button x:Name="SendButton" Content="Senden" HorizontalAlignment="Stretch" Margin="2,0,0,0" Grid.Column="2" VerticalAlignment="Bottom" Click="SendButton_OnClick" Background="#ff5e00" Height="25" >

View File

@@ -16,6 +16,7 @@ using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Media.TextFormatting;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Threading;
@@ -32,6 +33,7 @@ namespace ChatController
/// </summary>
public partial class ChatMainControl : UserControl
{
#region Vokabeln :)
private Chat _chat;
private AktuellerKontakt _aktuellerKontakt;
@@ -58,6 +60,11 @@ namespace ChatController
private Dictionary<String, Action<string>> menuItemName2Callback = new Dictionary<string, Action<string>>();
public delegate void CloseDelegate();
public event CloseDelegate OnClose;
#endregion
public ChatMainControl()
{
InitializeComponent();
@@ -121,6 +128,59 @@ namespace ChatController
}
}
public void SetzteStyleAufNull()
{
EmojiButton.Style = null;
MediaButton.Style = null;
ReloadGruppen.Visibility = Visibility.Visible;
}
public void SynchronisationVeranlassen()
{
try
{
bool doSync = true;
do
{
doSync = _chat.DoSynchronisation(_chatDaten.ApiKey, _chatDaten.Kundennummer);
if (true || doSync)
{
var aktuelleGruppen = _chat.GruppenAktuallisieren();
var x = _chat.GroupklassenAktuallisieren(aktuelleGruppen);
_kontaktlist = x;
Dispatcher.BeginInvoke(
DispatcherPriority.Normal,
(Action) delegate
{
Clientlist.Items.Refresh();
});
//this.Dispatch(delegate // hä ??
//{
// Clientlist.Items.Refresh();
//});
Thread.Sleep(TimeSpan.FromMinutes(5));
}
} while (doSync);
//sobald nicht mehr in der Schleife dann Close weil dann Sync false
if (OnClose != null)
{
OnClose();
}
}
catch (Exception e)
{
MessageBox.Show("Ein Fehler bei der Synchronisation ist aufgetreten.\nFehler:\n" + e.Message, "Fehler",MessageBoxButton.OK);
}
}
#region Lade KontaktDaten und Lade sie in den Chat
private void AktChatUser_OnMouseDoubleClick(object sender, MouseButtonEventArgs e)
{
@@ -778,7 +838,9 @@ namespace ChatController
if (item != null && item.ImageSources != null)
{
_chat.ShowPicture(item);
}
}
}
@@ -873,5 +935,53 @@ namespace ChatController
}
#endregion
#region ReloadGruppen (For Stand Alone version)
private void ButtonReloadGruppen_OnClick(object sender, RoutedEventArgs e)
{
//Thread newThread = new Thread(DoSynchro);
//newThread.IsBackground = true;
//newThread.Start();
DoSynchro();
}
private void DoSynchro()
{
try
{
Cursor = Cursors.Wait;
//StartWaiting();
var doSync = _chat.DoSynchronisation(_chatDaten.ApiKey, _chatDaten.Kundennummer);
if (doSync)
{
var aktuelleGruppen = _chat.GruppenAktuallisieren();
var x = _chat.GroupklassenAktuallisieren(aktuelleGruppen);
_kontaktlist = x;
Clientlist.Items.Refresh();
Cursor = Cursors.Arrow;
}
else
{
Cursor = Cursors.Arrow;
// EndWaiting();
if (OnClose != null)
{
OnClose();
}
}
}
catch (Exception e)
{
MessageBox.Show("Ein Fehler bei der Synchronisation ist aufgetreten.\nFehler:\n" + e.Message, "Fehler", MessageBoxButton.OK);
}
}
#endregion
}
}

View File

@@ -5,6 +5,7 @@ using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using System.Linq.Expressions;
using System.Net;
using System.Net.Http;
using System.Text;
@@ -23,6 +24,7 @@ using ChatController.Klassen;
using Newtonsoft.Json;
using Clipboard = System.Windows.Forms.Clipboard;
using ContextMenu = System.Windows.Controls.ContextMenu;
using Cursor = System.Windows.Input.Cursor;
using DataFormats = System.Windows.Forms.DataFormats;
using Image = System.Windows.Controls.Image;
using MenuItem = System.Windows.Forms.MenuItem;
@@ -165,22 +167,29 @@ namespace ChatController.HauptKlassen
var timeformated = TimeZoneInfo.ConvertTimeFromUtc(time, clientZone);
if (!ChatMessage.File.Equals("")) // Bilder werden Sichtbar
if (!ChatMessage.File.Equals(""))
{
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.File),
timeformated));
}
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));
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
{
//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));
}
}
else
{
@@ -202,17 +211,26 @@ namespace ChatController.HauptKlassen
{
//image
Messages.Add(new KontaktMessageBuilder(ChatMessage.User_Name, ChatMessage.Text,
timeformated.ToString("dd MMMM yyyy HH:mm:ss"), false, LadeBildNach(ChatMessage.File),
timeformated));
}
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));
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
{
//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));
}
}
else
{
@@ -242,7 +260,7 @@ namespace ChatController.HauptKlassen
bix.BeginInit();
bix.UriSource = new Uri(link);
bix.EndInit();
return bix;
}
catch (Exception edf)
@@ -301,7 +319,7 @@ namespace ChatController.HauptKlassen
}
catch (Exception e)
{
// MessageBox.Show(e.Message, "Fehler", MessageBoxButton.OK);
MessageBox.Show(e.Message, "Fehler", MessageBoxButton.OK);
}
}
@@ -332,129 +350,6 @@ namespace ChatController.HauptKlassen
}
}
#endregion
#region Verbesserung der LadeNachricht nach senden einer Nachricht
//public IOrderedEnumerable<KontaktMessageBuilder> 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<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();
// return jsonDaten;
// }
// catch (Exception e)
// {
// return null;
// }
//}
#endregion
#region Lade Weiter Nachrichten
@@ -478,15 +373,31 @@ namespace ChatController.HauptKlassen
if (!ChatMessage.File.Equals("")) // Bilder werden Sichtbar
{
//bool isGif = false;
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));
}
//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));
//Messages.Add(new KontaktMessageBuilder(ChatMessage.User_Name, ChatMessage.Text,
// timeformated.ToString("dd MMMM yyyy HH:mm:ss"), true, LadeBildNach(ChatMessage.File), timeformated));
}
else
@@ -503,16 +414,35 @@ namespace ChatController.HauptKlassen
var clientZone = TimeZoneInfo.Local;
var timeformated = TimeZoneInfo.ConvertTimeFromUtc(time, clientZone);
if (!ChatMessage.File.Equals("")) // Bilder werden Sichtbar
if (!ChatMessage.File.Equals(""))
{
//bool isGif = false;
//if (ChatMessage.File.Contains(".gif"))
//{
// isGif = true;
//}
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));
//Messages.Add(new KontaktMessageBuilder(ChatMessage.User_Name, ChatMessage.Text,
//timeformated.ToString("dd MMMM yyyy HH:mm:ss"), false, LadeBildNach(ChatMessage.File), timeformated));
}
else
{
@@ -581,7 +511,7 @@ namespace ChatController.HauptKlassen
}
catch (Exception e)
{
// MessageBox.Show(e.Message, "Fehler", MessageBoxButton.OK);
MessageBox.Show(e.Message, "Fehler", MessageBoxButton.OK);
}
}
@@ -706,10 +636,7 @@ namespace ChatController.HauptKlassen
catch (Exception e)
{
return 0;
}
}
}
public IOrderedEnumerable<KontaktlistBuilder> NeueGroupklassenKontakte()
@@ -795,7 +722,7 @@ namespace ChatController.HauptKlassen
}
catch (Exception e)
{
// MessageBox.Show(e.Message, "Fehler", MessageBoxButton.OK);
MessageBox.Show(e.Message, "Fehler", MessageBoxButton.OK);
return null;
}
@@ -816,50 +743,7 @@ namespace ChatController.HauptKlassen
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");
@@ -887,12 +771,11 @@ namespace ChatController.HauptKlassen
//string antwortResponse = await httpResponse.Content.ReadAsStringAsync();
}
//##################################################################################################################
}
catch (Exception e)
{
// MessageBox.Show("Fehler: " + e.Message);
MessageBox.Show("Fehler: " + e.Message,"Fehler",MessageBoxButton.OK);
}
}
@@ -920,7 +803,7 @@ namespace ChatController.HauptKlassen
}
catch (Exception e)
{
MessageBox.Show("Fehler: " + e.Message, "Fehler", MessageBoxButton.OK);
}
}
@@ -995,7 +878,7 @@ namespace ChatController.HauptKlassen
}
catch (Exception e)
{
MessageBox.Show("Fehler: " + e.Message, "Fehler", MessageBoxButton.OK);
}
}
@@ -1038,10 +921,9 @@ namespace ChatController.HauptKlassen
{
if (item.ImageSources != null)
{
string filename = item.ImageSources.ToString();
SpeichernUnter(1, filename,
DownloadMediaDatei(filename));
SpeichernUnter(1, Path.GetFileName(item.OriginalImage),
DownloadMediaDatei(item.OriginalImage));
}
}
@@ -1060,7 +942,9 @@ namespace ChatController.HauptKlassen
}
catch (Exception e)
{
throw new Exception(e.Message);
//throw new Exception(e.Message);
MessageBox.Show("Fehler: " + e.Message, "Fehler", MessageBoxButton.OK);
return null;
}
}
@@ -1104,7 +988,7 @@ namespace ChatController.HauptKlassen
}
catch (Exception e)
{
//throw fehler
MessageBox.Show("Fehler: "+e.Message,"Fehler",MessageBoxButton.OK);
}
}
@@ -1169,10 +1053,18 @@ namespace ChatController.HauptKlassen
public static byte[] ImageToByteArray(System.Drawing.Image image)
{
using (var ms = new MemoryStream())
try
{
image.Save(ms, ImageFormat.Bmp);
return ms.ToArray();
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;
}
}
@@ -1219,71 +1111,259 @@ namespace ChatController.HauptKlassen
public void ShowKontaktPicture(AktuellerKontakt curItem )
{
using (Form form = new Form())
try
{
Image imgg = new Image();
using (Form form = new Form())
{
Image imgg = new Image();
imgg.Source = curItem.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);
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);
Bitmap imgbit = new Bitmap(img);
form.StartPosition = FormStartPosition.CenterScreen;
form.Size = imgbit.Size;
form.FormBorderStyle = FormBorderStyle.Sizable;
form.StartPosition = FormStartPosition.CenterScreen;
form.Size = imgbit.Size;
form.FormBorderStyle = FormBorderStyle.Sizable;
PictureBox pb = new PictureBox();
pb.Dock = DockStyle.Fill;
pb.Image = imgbit;
PictureBox pb = new PictureBox();
pb.Dock = DockStyle.Fill;
pb.Image = imgbit;
pb.SizeMode = PictureBoxSizeMode.StretchImage;
pb.SizeMode = PictureBoxSizeMode.StretchImage;
form.Controls.Add(pb);
form.ShowDialog();
form.Controls.Add(pb);
form.ShowDialog();
}
}
catch (Exception e)
{
MessageBox.Show("Fehler: "+e.Message,"Fehler",MessageBoxButton.OK);
}
}
public void ShowPicture(KontaktMessageBuilder curItem)
{
using (Form form = new Form())
try
{
Image imgg = new Image();
var webClient = new WebClient();
webClient.DownloadDataCompleted += DownoaldKomplett;
webClient.DownloadDataAsync(new Uri(curItem.OriginalImage));
}
catch (Exception e)
{
MessageBox.Show("Fehler: " + e.Message, "Fehler", MessageBoxButton.OK);
}
}
imgg.Source = curItem.ImageSources;
private void DownoaldKomplett(object sender, DownloadDataCompletedEventArgs e)
{
try
{
using (Form form = new Form())
{
Image imgg = new 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);
BitmapImage bix = new BitmapImage();
using (var stream = new MemoryStream(e.Result))
{
bix.BeginInit();
bix.CacheOption = BitmapCacheOption.OnLoad;
bix.StreamSource = stream;
bix.EndInit();
}
Bitmap imgbit = new Bitmap(img);
imgg.Source = bix;
form.StartPosition = FormStartPosition.CenterScreen;
form.Size = imgbit.Size;
form.FormBorderStyle = FormBorderStyle.Sizable;
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);
PictureBox pb = new PictureBox();
pb.Dock = DockStyle.Fill;
pb.Image = imgbit;
Bitmap imgbit = new Bitmap(img);
pb.SizeMode = PictureBoxSizeMode.StretchImage;
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();
form.Controls.Add(pb);
form.ShowDialog();
}
}
catch (Exception edf)
{
MessageBox.Show("Fehler: " + edf.Message, "Fehler", MessageBoxButton.OK);
}
}
#endregion
//Neu
#region Synchronisation Veranlassen
//sync für alles und jeden
//public bool DoSync = true;
public bool DoSynchronisation( string apikey, string customerid)
{
try
{
var endurl = ChatDaten.ServerUrl + "/api/ownchat/sync/schedule/"+apikey+"/" +customerid;
WebRequest request = WebRequest.Create(endurl);
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
#region Neue Gruppen Holen
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
{
foreach (var kontakt in chatDaten.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);
}
}
if (message.Equals("") && value.LastMessage != null && !value.LastMessage.File.Equals(""))
{
message = Path.GetFileName(value.LastMessage.File);
}
//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;
}
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
}
}

View File

@@ -6,6 +6,7 @@ using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Web;
using System.Windows;
using ChatController.Klassen;
using Newtonsoft.Json;
@@ -13,7 +14,9 @@ namespace ChatController.HauptKlassen
{
public class Login
{
private string _url = "https://bewoplaner.beyondsoft.de/voucher_check.php";
private string _url = ""; //"https://bewoplaner.beyondsoft.de/voucher_check.php"; // alt
private string _newUrl = "https://dict.ownchat.de/api/server/resolve/1/"; //https://dict.ownchat.de/api/server/resolve/{type}/{customerid} //type = Diensttyp(1,2,oder 3), customerid = Kudennummer des Kunden
private string _serverUrl = "";
private string _authToken = "";
@@ -22,6 +25,7 @@ namespace ChatController.HauptKlassen
private readonly string _passwort;
private readonly string _kundennummer;
private readonly string _chatCode;
private readonly string _apikey;
private long? _userid;
@@ -38,51 +42,55 @@ namespace ChatController.HauptKlassen
_kundennummer = kundennummer;
_chatCode = chatCode;
_benutzername = benutzername;
_passwort = passwort;
_passwort = passwort;
_apikey = "0000";//default damit nichts kaput geht
}
public Login(string kundennummer, string chatCode, string benutzername, string passwort,string apikey)
{
_kundennummer = kundennummer;
_chatCode = chatCode;
_benutzername = benutzername;
_passwort = passwort;
_apikey = apikey;
}
public ChatDatenUebergabe AnmeldevorgangDurchFuehren()
{
BaueEineVerbindungAuf();
if (_verbindungsaufbauOK)
{
if(ServerErmittlung()){
Dictionary<string, string> dic = new Dictionary<string, string>();
dic.Add("username", _benutzername);
dic.Add("password", _passwort);
dic.Add("chatcode",_chatCode);
VerbindeMitChatServer(dic);
}
// Gruppen abfragen
if (_ownchatVerbindungsaufbauOK)
{
GruppenHolen();
}
// Gruppen abfragen
if (_ownchatVerbindungsaufbauOK)
{
GruppenHolen();
}
if (_gruppeholenverbindungsaufbauOK)
{
if (_gruppeholenverbindungsaufbauOK)
{
ChatDatenUebergabe ubergabe = new ChatDatenUebergabe(_serverconect, _userconect, _groupconect, _serverUrl, _authToken, _userid, _kundennummer);
ChatDatenUebergabe ubergabe = new ChatDatenUebergabe(_serverconect, _userconect, _groupconect, _serverUrl, _authToken, _userid, _kundennummer,_apikey);
return ubergabe;
return ubergabe;
}
}
return null;
}
//throw fehler anpassungen überall
private void BaueEineVerbindungAuf()
public bool ServerErmittlung()
{
try
{
string endurl = _url + "?k=" + _kundennummer + "&Voucher=" + _chatCode;
string serverURl = _newUrl + _kundennummer;
WebRequest request = WebRequest.Create(endurl);
WebRequest request = WebRequest.Create(serverURl);
request.Credentials = CredentialCache.DefaultCredentials;
@@ -94,55 +102,79 @@ namespace ChatController.HauptKlassen
}
catch (Exception e)
{
//throw fehler
// MessageBox.Show("Die Kundennummer oder der Chatcode ist falsch.\nOder Beides!", "Fehler", MessageBoxButton.OK);
return;
MessageBox.Show("Es konnte keine Verbindung aufgebaut werden.", "Fehler", MessageBoxButton.OK);
return false;
}
// Display the status.
var statusResponse = ((HttpWebResponse)response).StatusDescription;
string responseFromServer = ReadStream(response);
try
{
var jsonDatentyp = JsonConvert.DeserializeObject<NewAuthentifizierungsDatenTyp1>(responseFromServer);
if (!responseFromServer.Equals(""))
{
//_voucherCheckOk = true;
//################# Deserialisierung mit Json ###############################
var jsonDaten = JsonConvert.DeserializeObject<Dictionary<string, AuthentifizierungsDaten>>(responseFromServer);
var serv = jsonDaten[_chatCode].ServerName;
//#################################################################################
_serverUrl = serv;
_serverconect = jsonDaten[_chatCode];
_verbindungsaufbauOK = true;
}
else
{
//throw fehler
//MessageBox.Show("Die Kundennummer oder der Chatcode ist falsch.\nOder Beides!", "Fehler", MessageBoxButton.OK);
}
if (jsonDatentyp.Status == 1)
{
MessageBox.Show("Kundennummer unbekannt");
return false;
}
else if (jsonDatentyp.Status == 2)
{
MessageBox.Show("Diensttyp ist für angegebene Kundennummer nicht definiert");
return false;
}
else
{
_url = jsonDatentyp.URL;
}
}
catch (Exception eds)
{
try
{
var jsonDatentyp = JsonConvert.DeserializeObject<NewAuthentifizierungsDatenTyp2>(responseFromServer);
if (jsonDatentyp.Status == 1)
{
MessageBox.Show("Kundennummer unbekannt");
return false;
}
else if (jsonDatentyp.Status == 2)
{
MessageBox.Show("Diensttyp ist für angegebene Kundennummer nicht definiert");
return false;
}
else
{
_url = jsonDatentyp.URL;
}
}
catch (Exception e)
{
MessageBox.Show("Beim Parsen der Datei ist ein fehler aufgetreten.", "Fehler",
MessageBoxButton.OK);
}
}
response.Close();
_serverUrl = _url;
return true;
}
catch (Exception e)
{
//thorw fehler
//MessageBox.Show("Es konnte keine Verbindung aufgebaut werden.", "Fehler", MessageBoxButton.OK);
MessageBox.Show("Ein nicht weiter definierter fehler ist aufgetreten: "+ e.Message,"Fehler",MessageBoxButton.OK);
return false;
}
}
private void VerbindeMitChatServer(Dictionary<string, string> postparameter)
{
//try
//{
var endurl = _serverUrl + "/api/user/login";
try
{
var endurl = _url + "/api/user/login"; //loginwithchatcode
string postdaten = "";
@@ -150,7 +182,6 @@ namespace ChatController.HauptKlassen
foreach (var key in postparameter.Keys)
{
postdaten += HttpUtility.UrlEncode(key) + "=" + HttpUtility.UrlEncode(postparameter[key]) + "&";
}
WebRequest requesten = WebRequest.Create(endurl);
@@ -177,9 +208,8 @@ namespace ChatController.HauptKlassen
string pageContent = myStreamReader.ReadToEnd();
//Baue pagekontent in Json um
//UserDaten müssen mehrere wege der initialisierung bieten
if (!pageContent.Equals(""))
{
//_serverCheckOK = true;
@@ -213,19 +243,19 @@ namespace ChatController.HauptKlassen
myStreamReader.Close();
responseStream.Close();
//}
//catch (WebException e)
//{
// //throw fehler
// //MessageBox.Show(e.Message, "Fehler", MessageBoxButton.OK);
//}
}
catch (Exception e)
{
//throw fehler
MessageBox.Show(e.Message, "Fehler", MessageBoxButton.OK);
}
}
private void GruppenHolen()
{
try
{
var endurl = _serverUrl + "/api/chat/groups";
var endurl = _url + "/api/chat/groups";
WebRequest request = WebRequest.Create(endurl);

View File

@@ -49,8 +49,9 @@
<Label Grid.Column="0" Grid.Row="3" Margin="3">Passwort:</Label>
<PasswordBox x:Name="TextBoxPasswort" Grid.Column="1" Grid.Row="3" Margin="3" VerticalContentAlignment="Center"/>
<CheckBox x:Name="Merken" Margin="3" Content="Passwort Speichern" Grid.Column="0" Grid.ColumnSpan="2" Grid.Row="4"/>
<!--
<CheckBox x:Name="Merken" Margin="3" Content="Passwort Speichern" Grid.Column="0" Grid.ColumnSpan="2" Grid.Row="4"/>-->
<Button Grid.ColumnSpan="2" Grid.Column="0" Grid.Row="5" Click="AnmeldenButton_OnClick" Content="Anmelden" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="3" Width="80" Background="#ff5e00" HorizontalContentAlignment="Center" >
<Button.Resources>

View File

@@ -2,9 +2,14 @@
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Web;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
@@ -16,6 +21,8 @@ using System.Windows.Navigation;
using System.Windows.Shapes;
using ChatController.HauptKlassen;
using ChatController.Klassen;
using Newtonsoft.Json;
using Path = System.IO.Path;
namespace ChatController
{
@@ -28,13 +35,23 @@ namespace ChatController
public event LoginDelegate OnLogin;
private string _dateiPfad = "ChatAnmeldeDaten.txt"; //OwnChatX1253781
//private readonly string _dateiPfad = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "ownChatX1253781.txt"; //OwnChatX1253781
//private readonly string _merkeDaten = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "ownChatX1253782.txt"; //OwnChatX1253782
private string _newUrl = "https://dict.ownchat.de/api/server/resolve/1/";
private string _benutzername = "";
private string _passwort = "";
private string _chatCode = "";
private string _kundennummer = "";
private string _authToken = "";
private string _merkeDaten = "MerkeChatTeilAnmeldeDaten.txt"; //OwnChatX1253782
public LoginControl()
{
InitializeComponent();
//encrypt verschlüsselte datei
LeseDateiFallsVorhanden();
}
@@ -42,66 +59,41 @@ namespace ChatController
{
try
{
#if DEBUG
Cursor = Cursors.Wait;
Login _login = new Login("4368658435", "ZMCKb-BckTt", "RuppelW", "ABXT32wgtruppeldiedup");
var x = _login.AnmeldevorgangDurchFuehren();
if (OnLogin != null)
{
AutosetDaten();
if (Merken.IsChecked == true)
{
SpeichereDatenInDatei();
}
else
{
LoescheGespeicherteDatei();
}
OnLogin(x);
}
Cursor = Cursors.Arrow;
#else
//TODO Abfrage einführen die prüft ob eine verbindung ueberhaupt hergestellt werde kann | FehlerMeldungen Genauer Definieren
if (!TextBoxKundennummer.Text.Equals("") && !TextBoxChatCode.Text.Equals("") &&
!TextBoxBenutzerName.Text.Equals("") && !TextBoxPasswort.Password.Equals(""))
{
Cursor = Cursors.Wait;
{
Cursor = Cursors.Wait;
Login _login = new Login(TextBoxKundennummer.Text, TextBoxChatCode.Text, TextBoxBenutzerName.Text, TextBoxPasswort.Password);
Login _login = new Login(TextBoxKundennummer.Text, TextBoxChatCode.Text, TextBoxBenutzerName.Text, TextBoxPasswort.Password);
var x = _login.AnmeldevorgangDurchFuehren();
var x = _login.AnmeldevorgangDurchFuehren();
if (OnLogin != null && x != null)
{
AutosetDaten();
if (Merken.IsChecked == true)
if (OnLogin != null && x != null)
{
SpeichereDatenInDatei();
AutosetDaten();
//if (Merken.IsChecked == true)
//{
// SpeichereDatenInDatei();
//}
//else
//{
// LoescheGespeicherteDatei();
//}
OnLogin(x);
}
else
{
LoescheGespeicherteDatei();
MessageBox.Show("Fehler bei der Anmeldung. Bitte überprüfen Sie die Anmeldeinformationen.", "Info", MessageBoxButton.OK, MessageBoxImage.Asterisk);
}
OnLogin(x);
Cursor = Cursors.Arrow;
}
else
{
MessageBox.Show("Fehler bei der Anmeldung. Bitte überprüfen Sie die Anmeldeinformationen.", "Info", MessageBoxButton.OK, MessageBoxImage.Asterisk);
MessageBox.Show("Bitte alle Felder ausfüllen!", "Info", MessageBoxButton.OK);
}
Cursor = Cursors.Arrow;
}
else
{
MessageBox.Show("Bitte alle Felder ausfüllen!", "Info", MessageBoxButton.OK);
}
#endif
}
catch (Exception exception)
{
@@ -115,14 +107,74 @@ namespace ChatController
#region Speichern / Laden / Löschen der Datei
#region wird vorerst nicht gebraucht
private void SpeichereDatenInDatei()
{
try
{
if (!File.Exists(Path.Combine(GetAndCreateUserAppDataPath(), "OwnChatX1253781.txt"))) {
using (StreamWriter sw = new StreamWriter(Path.Combine(GetAndCreateUserAppDataPath(), "OwnChatX1253781.txt")))
{
Encoding enc = new UTF8Encoding();
//var byt = enc.GetBytes(TextBoxKundennummer.Text);
//var bytes = Convert.ToBase64String(byt);
//var byt2 = enc.GetBytes(TextBoxChatCode.Text);
//var bytes2 = Convert.ToBase64String(byt2);
var byt3 = enc.GetBytes(TextBoxBenutzerName.Text);
var bytes3 = Convert.ToBase64String(byt3);
var byt4 = enc.GetBytes(TextBoxPasswort.Password);
var bytes4 = Convert.ToBase64String(byt4);
//var byt5 = enc.GetBytes(Merken.IsChecked.ToString());
//var bytes5 = Convert.ToBase64String(byt5);
//sw.WriteLine(bytes);
//sw.WriteLine(bytes2);
sw.WriteLine(bytes3);
sw.WriteLine(bytes4);
//sw.WriteLine(bytes5);
File.SetAttributes(Path.Combine(GetAndCreateUserAppDataPath(), "OwnChatX1253781.txt"), FileAttributes.ReadOnly);
}
}
}
catch (Exception e)
{
MessageBox.Show("Ups, da ist was schief gelaufen: \n" + e.Message, "Fehler", MessageBoxButton.OK);
}
}
private void LoescheGespeicherteDatei()
{
try
{
if (File.Exists(Path.Combine(GetAndCreateUserAppDataPath(), "OwnChatX1253781.txt")))
{
File.SetAttributes(Path.Combine(GetAndCreateUserAppDataPath(), "OwnChatX1253781.txt"), FileAttributes.Normal);
File.Delete(Path.Combine(GetAndCreateUserAppDataPath(), "OwnChatX1253781.txt"));
}
}
catch (Exception e)
{
MessageBox.Show("Ups, da ist was schief gelaufen: \n" + e.Message, "Fehler", MessageBoxButton.OK);
}
}
#endregion
private void LeseDateiFallsVorhanden()
{
try
{
if (File.Exists(_merkeDaten))
if (File.Exists(Path.Combine(GetAndCreateUserAppDataPath(), "OwnChat.txt")))
{
List<string> merkdaten = new List<string>();
using (StreamReader sr = new StreamReader(_merkeDaten, true))
using (StreamReader sr = new StreamReader(Path.Combine(GetAndCreateUserAppDataPath(), "OwnChat.txt"), true))
{
string line = "";
@@ -144,30 +196,30 @@ namespace ChatController
}
if (File.Exists(_dateiPfad)) {
//if (File.Exists(Path.Combine(GetAndCreateUserAppDataPath(), "OwnChatX1253781.txt"))) {
List<string> daten = new List<string>();
using (StreamReader sr = new StreamReader(_dateiPfad,true))
{
string line = "";
// List<string> daten = new List<string>();
// using (StreamReader sr = new StreamReader(Path.Combine(GetAndCreateUserAppDataPath(), "OwnChatX1253781.txt"), true))
// {
// string line = "";
while ((line = sr.ReadLine()) != null)
{
var encodedTextBytes = Convert.FromBase64String(line);
// while ((line = sr.ReadLine()) != null)
// {
// var encodedTextBytes = Convert.FromBase64String(line);
string plainText = Encoding.UTF8.GetString(encodedTextBytes);
// string plainText = Encoding.UTF8.GetString(encodedTextBytes);
daten.Add(plainText);
}
}
// daten.Add(plainText);
// }
// }
if(daten.Count == 3) {
// if(daten.Count == 3) {
TextBoxBenutzerName.Text = daten[0];
TextBoxPasswort.Password = daten[1];
Merken.IsChecked = Convert.ToBoolean(daten[2]);
}
}
// TextBoxBenutzerName.Text = daten[0];
// TextBoxPasswort.Password = daten[1];
// // Merken.IsChecked = Convert.ToBoolean(daten[2]);
// }
//}
}
catch (Exception e)
{
@@ -175,14 +227,14 @@ namespace ChatController
}
}
//Kundenummer und ChatCode sollen Separat gespeichert werden
private void AutosetDaten()
{
try
{
if (!File.Exists(_merkeDaten))
if (!File.Exists(Path.Combine(GetAndCreateUserAppDataPath(), "ownChat.txt")))
{
using (StreamWriter sw = new StreamWriter(_merkeDaten))
using (
StreamWriter sw = new StreamWriter(Path.Combine(GetAndCreateUserAppDataPath(), "ownChat.txt")))
{
Encoding enc = new UTF8Encoding();
@@ -191,53 +243,35 @@ namespace ChatController
var byt2 = enc.GetBytes(TextBoxChatCode.Text);
var bytes2 = Convert.ToBase64String(byt2);
sw.WriteLine(bytes);
sw.WriteLine(bytes2);
File.SetAttributes(_merkeDaten, FileAttributes.ReadOnly);
File.SetAttributes(Path.Combine(GetAndCreateUserAppDataPath(), "ownChat.txt"),
FileAttributes.ReadOnly);
}
}
}
catch (Exception e)
{
MessageBox.Show("Ups, da ist was schief gelaufen: \n" + e.Message, "Fehler", MessageBoxButton.OK);
}
}
else
{
File.SetAttributes(Path.Combine(GetAndCreateUserAppDataPath(), "ownChat.txt"), FileAttributes.Normal);
File.Delete(Path.Combine(GetAndCreateUserAppDataPath(), "ownChat.txt"));
private void SpeichereDatenInDatei()
{
try
{
if (!File.Exists(_dateiPfad)) {
using (StreamWriter sw = new StreamWriter(_dateiPfad))
using (
StreamWriter sw = new StreamWriter(Path.Combine(GetAndCreateUserAppDataPath(), "ownChat.txt")))
{
Encoding enc = new UTF8Encoding();
//var byt = enc.GetBytes(TextBoxKundennummer.Text);
//var bytes = Convert.ToBase64String(byt);
var byt = enc.GetBytes(TextBoxKundennummer.Text);
var bytes = Convert.ToBase64String(byt);
//var byt2 = enc.GetBytes(TextBoxChatCode.Text);
//var bytes2 = Convert.ToBase64String(byt2);
var byt2 = enc.GetBytes(TextBoxChatCode.Text);
var bytes2 = Convert.ToBase64String(byt2);
var byt3 = enc.GetBytes(TextBoxBenutzerName.Text);
var bytes3 = Convert.ToBase64String(byt3);
sw.WriteLine(bytes);
sw.WriteLine(bytes2);
var byt4 = enc.GetBytes(TextBoxPasswort.Password);
var bytes4 = Convert.ToBase64String(byt4);
var byt5 = enc.GetBytes(Merken.IsChecked.ToString());
var bytes5 = Convert.ToBase64String(byt5);
//sw.WriteLine(bytes);
//sw.WriteLine(bytes2);
sw.WriteLine(bytes3);
sw.WriteLine(bytes4);
sw.WriteLine(bytes5);
File.SetAttributes(_dateiPfad, FileAttributes.ReadOnly);
File.SetAttributes(Path.Combine(GetAndCreateUserAppDataPath(), "ownChat.txt"),
FileAttributes.ReadOnly);
}
}
}
@@ -247,24 +281,182 @@ namespace ChatController
}
}
private void LoescheGespeicherteDatei()
public static string GetAndCreateUserAppDataPath()
{
try
{
if (File.Exists(_dateiPfad))
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
//Neue Region zum VErschlüsseln und entschlüsseln der Daten
#region Verschlüsseln/Entschlüsseln via Link // wird ersmal nicht mehr gebraucht
//TODO Kann erst nach erfolgreichem Login verschlüsselt werden
private bool Verschluss()
{
try
{
string URl = _newUrl + "api/ownchat/user/encryptcredentials";
string postdaten = "";
Dictionary<string, string> postparameter = new Dictionary<string, string>();
postparameter.Add("username", _benutzername);
postparameter.Add("password", _passwort);
//neu | hinzufügen laut document
postparameter.Add("chatcode", _chatCode);
int i = 0;
foreach (var key in postparameter.Keys)
{
File.SetAttributes(_dateiPfad, FileAttributes.Normal);
File.Delete(_dateiPfad);
//hier noch chatcode übergeben
postdaten += HttpUtility.UrlEncode(key) + "=" + HttpUtility.UrlEncode(postparameter[key]) + "&";
}
WebRequest requesten = WebRequest.Create(URl);
requesten.Method = "POST";
requesten.ContentType = "application/x-www-form-urlencoded";
requesten.Headers["Token"] = _authToken;
requesten.Headers["CustomerID"] = _kundennummer;
byte[] daten = Encoding.ASCII.GetBytes(postdaten);
requesten.ContentLength = daten.Length;
try
{
Stream requestStream = requesten.GetRequestStream();
requestStream.Write(daten, 0, daten.Length);
requestStream.Close();
}
catch (Exception e)
{
MessageBox.Show("Es konnte keine Verbindung aufgebaut werden.", "Fehler", MessageBoxButton.OK);
return false;
}
//response bereich | Verarbeiten
HttpWebResponse myHttpWebResponse = (HttpWebResponse)requesten.GetResponse();
Stream responseStream = myHttpWebResponse.GetResponseStream();
StreamReader myStreamReader = new StreamReader(responseStream, Encoding.Default);
var pageContent = myStreamReader.ReadToEnd();
//Bereich zum Verarbeiten der Erhaltenen Daten
var definiti = new { encryped = ""};
var jsonDatentyp = JsonConvert.DeserializeAnonymousType(pageContent, definiti);
return true;
}
catch (Exception e)
{
MessageBox.Show("Ups, da ist was schief gelaufen: \n" + e.Message, "Fehler", MessageBoxButton.OK);
MessageBox.Show("Beim Verschlüsseln ist was schief gelaufen. \n" + e.Message,"Fehler",MessageBoxButton.OK);
return false;
}
}
#endregion
private byte[] mediaDatei;
//TODO Entschluss weiter ausprogrammieren
private bool Entschluss()
{
try
{
string URl = _newUrl + "api/ownchat/user/decryptcredentials";
WebRequest requesten = WebRequest.Create(URl);
requesten.Method = "POST";
requesten.ContentType = "application/x-www-form-urlencoded";
requesten.Headers["CustomerID"] = _kundennummer;
byte[] daten = mediaDatei;
requesten.ContentLength = daten.Length;
try
{
Stream requestStream = requesten.GetRequestStream();
requestStream.Write(daten, 0, daten.Length);
requestStream.Close();
}
catch (Exception e)
{
MessageBox.Show("Es konnte keine Verbindung aufgebaut werden.", "Fehler", MessageBoxButton.OK);
return false;
}
//erhalte response
HttpWebResponse myHttpWebResponse = (HttpWebResponse)requesten.GetResponse();
Stream responseStream = myHttpWebResponse.GetResponseStream();
StreamReader myStreamReader = new StreamReader(responseStream, Encoding.Default);
var pageContent = myStreamReader.ReadToEnd();
//Bereich zum Verarbeiten der Erhaltenen Daten
var definiti = new { encrypted = "" };
var jsonDatentyp = JsonConvert.DeserializeAnonymousType(pageContent, definiti);
return true;
}
catch (Exception e)
{
MessageBox.Show("Beim Entschlüsseln ist was schief gelaufen. \n" + e.Message, "Fehler", MessageBoxButton.OK);
return false;
}
}
#endregion
}

View File

@@ -9,6 +9,19 @@ namespace ChatController.Klassen
public class AuthentifizierungsDaten
{
public string CustomerId { get; set; }
public string ServerName { get; set; }
public string ServerName { get; set; }
}
public class NewAuthentifizierungsDatenTyp1
{
public int Status { get; set; }
public string URL { get; set; }
}
public class NewAuthentifizierungsDatenTyp2
{
public int Status { get; set; }
public string URL { get; set; }
public int SYNCTYPE { get; set; }
}
}

View File

@@ -16,8 +16,9 @@ namespace ChatController.Klassen
private string _authToken { get; set; }
private long? _userid { get; set; }
private string _kundennummer { get; set; }
private string _apikey { get; set; }
public ChatDatenUebergabe(AuthentifizierungsDaten serverConect, UserDaten userConect, ChatGruppenDaten groupConect, string serverUrl, string authToken, long? userid, string kundennummer)
public ChatDatenUebergabe(AuthentifizierungsDaten serverConect, UserDaten userConect, ChatGruppenDaten groupConect, string serverUrl, string authToken, long? userid, string kundennummer, string apikey)
{
_serverconect = serverConect;
_userconect = userConect;
@@ -27,6 +28,7 @@ namespace ChatController.Klassen
_authToken = authToken;
_userid = userid;
_kundennummer = kundennummer;
_apikey = apikey;
}
public AuthentifizierungsDaten Serverconect
@@ -112,5 +114,17 @@ namespace ChatController.Klassen
_kundennummer = value;
}
}
public string ApiKey
{
get
{
return _apikey;
}
private set
{
_apikey = value;
}
}
}
}

View File

@@ -30,7 +30,7 @@ namespace ChatController.Klassen
public string Text { get; set; }
public string File { get; set; }
public string Original_Filename { get; set; }
public string Smaller_Images { get; set; }
public string Smaller_Image { get; set; }
public LastMessageTimeStamp Timestamp { get; set; }
public long CreatetdAt { get; set; }
public long UserId { get; set; }

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -8,6 +8,6 @@
mc:Ignorable="d" WindowStartupLocation="CenterScreen"
Title="ownChat Desktop" Height="700" Width="900" x:Name="MainView" Closed="MainWindow_OnClosed">
<Grid>
<cc:ChatMainControl x:Name="ChatMainControl" OnEmojii="ChatMainControl_OnOnEmojii" ></cc:ChatMainControl>
<cc:ChatMainControl x:Name="ChatMainControl" OnClose="ChatMainControl_OnOnClose" OnEmojii="ChatMainControl_OnOnEmojii" ></cc:ChatMainControl>
</Grid>
</Window>

View File

@@ -71,10 +71,10 @@ namespace ownChat
ChatMainControl.InitMitChatdaten(x);
ChatMainControl.SetzteStyleAufNull();
//ChatMainControl.AddContextMenu("In Dokumentation übernehmen", ChatMainControl_OnClickContextMenuItem);
}
private void ChatMainControl_OnOnEmojii(System.Windows.Controls.Button emojiButton)
@@ -113,7 +113,14 @@ namespace ownChat
private void MainWindow_OnClosed(object sender, EventArgs e)
{
_emojiView = null;
Environment.Exit(0);
// Environment.Exit(0);
LoginMaske newLogin = new LoginMaske();
newLogin.Show();
}
private void ChatMainControl_OnOnClose()
{
this.Close();
}
}