822 lines
32 KiB
C#
822 lines
32 KiB
C#
using System;
|
|
using System.Linq;
|
|
using System.Windows;
|
|
using System.Windows.Input;
|
|
using System.Windows.Media;
|
|
|
|
using BeWo.ServiceProxy;
|
|
using BeWo.ViewModel;
|
|
|
|
using BS.Shared.Extensions;
|
|
using System.Windows.Controls;
|
|
using System.Net.Sockets;
|
|
using System.Threading;
|
|
using System.Windows.Threading;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.Collections.Specialized;
|
|
using System.IO;
|
|
using System.Text;
|
|
using System.Windows.Documents;
|
|
using System.Windows.Media.Imaging;
|
|
using BS.Shared;
|
|
using BS.Shared.DataContracts.Compact;
|
|
using DevExpress.XtraPrinting.XamlExport;
|
|
using Microsoft.Office.Interop.Word;
|
|
using Color = System.Drawing.Color;
|
|
|
|
namespace BeWo.View
|
|
{
|
|
public partial class ChatView
|
|
{
|
|
public UserVM ViewModel { get; set; }
|
|
public int abr = 0;
|
|
|
|
protected TcpClient tcpClient;
|
|
protected ListBox saveOnlineList = new ListBox();
|
|
|
|
public ChatView(String nameinf, String Chatinf, TcpClient tcpClient)
|
|
{
|
|
InitializeComponent();
|
|
|
|
rootGroupBox.Header = nameinf;
|
|
|
|
this.tcpClient = tcpClient;
|
|
|
|
SetChatSetting();
|
|
|
|
closeWindow();
|
|
}
|
|
|
|
private void SetChatSetting()
|
|
{
|
|
try
|
|
{
|
|
List<string> data = new List<string>();
|
|
data.Add("Gerade Online");
|
|
data.Add("Gerade Offline");
|
|
data.Add("Nur Team");
|
|
data.Add("Nur Mitarbeiter");
|
|
data.Add("Nur Klienten");
|
|
|
|
chatSettingControll.ItemsSource = data;
|
|
chatSettingControll.SelectedIndex = 0;
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
MessageBox.Show("Das Aufbauen der Chat-Settings ist fehlgeschlagen.", "Fehler: 2200 ", MessageBoxButton.OK);
|
|
}
|
|
|
|
}
|
|
|
|
private void RootGroupBox_OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
DragMove();
|
|
}
|
|
catch (Exception) { }
|
|
}
|
|
|
|
public void closeWindow() {
|
|
CommandBindings.Add(new CommandBinding(ApplicationCommands.Close, (s, e) =>
|
|
{
|
|
abr = 1;
|
|
|
|
//Close();
|
|
|
|
Visibility = Visibility.Collapsed;
|
|
}));
|
|
}
|
|
|
|
public void SetTextFromMiniV(String[] text, String nameclient, long personoid)
|
|
{
|
|
try
|
|
{
|
|
if (AktChatUser.ItemsSource != null)
|
|
{
|
|
KontaktlistBuilder curItem = (KontaktlistBuilder) AktChatUser.Items[0];
|
|
|
|
if (curItem.EmpfaengerOid == personoid)
|
|
{
|
|
curItem.Receivems = "";
|
|
if (!nameclient.Equals("NULL") && personoid != 0)
|
|
{
|
|
foreach (String i in text)
|
|
{
|
|
Chat.Items.Add(new KontakMessageBuilder(nameclient, i, DateTime.Now.ToString()));
|
|
SaveChatMessageinDB(personoid,BeWoApp.LoggedOnEmployee.PersonOid.Value,i);
|
|
}
|
|
|
|
Chat.Items.MoveCurrentToLast();
|
|
Chat.ScrollIntoView(Chat.Items.CurrentItem);
|
|
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (!nameclient.Equals("NULL") && personoid != 0)
|
|
{
|
|
int anzReceive = 0;
|
|
|
|
foreach (String i in text)
|
|
{
|
|
//hier muss aktualisierung hin für anzahl der ungelesenen nachrichten
|
|
foreach (var abc in saveOnlineList.Items)
|
|
{
|
|
KontaktlistBuilder curitem = (KontaktlistBuilder) abc;
|
|
|
|
if (curitem.EmpfaengerOid == personoid)
|
|
{
|
|
curitem.Receivems = anzReceive++.ToString();
|
|
}
|
|
}
|
|
SaveChatMessageinDB( personoid,BeWoApp.LoggedOnEmployee.PersonOid.Value, i);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (!nameclient.Equals("NULL") && personoid != 0)
|
|
{
|
|
int anzRec = 0;
|
|
|
|
foreach (String i in text)
|
|
{
|
|
//hier muss aktualisierung hin für anzahl der ungelesenen nachrichten
|
|
foreach (var abc in saveOnlineList.Items)
|
|
{
|
|
KontaktlistBuilder curitem = (KontaktlistBuilder) abc;
|
|
|
|
if (curitem.EmpfaengerOid == personoid)
|
|
{
|
|
curitem.Receivems = anzRec++.ToString();
|
|
}
|
|
}
|
|
SaveChatMessageinDB(personoid, BeWoApp.LoggedOnEmployee.PersonOid.Value, i);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
MessageBox.Show("Die Übername einer Message der Mini-View ist fehlgeschlagen.", "Fehler: 2210 ", MessageBoxButton.OK);
|
|
}
|
|
}
|
|
|
|
public void SetText(String text, String nameclient, long personoid)
|
|
{
|
|
try
|
|
{
|
|
if (!nameclient.Equals("NULL") && personoid != 0)
|
|
{
|
|
|
|
//Hier mus abfrage hin für Chat , wenn personoid not open dann soll das nicht nur zur db gesendet werden sonder
|
|
//es soll im ClientList auf der rechten seite eine zahl angezeigt weden, diese zahl ist anzahl ungelesener Nachrichten
|
|
if (AktChatUser.Items.Count != 0)
|
|
{
|
|
KontaktlistBuilder curItem = (KontaktlistBuilder) AktChatUser.Items[0];
|
|
|
|
if (curItem.EmpfaengerOid == personoid)
|
|
{
|
|
curItem.Receivems = "";
|
|
|
|
if (!nameclient.Equals("NULL") && personoid != 0)
|
|
{
|
|
Chat.Items.Add(new KontakMessageBuilder(nameclient, text, DateTime.Now.ToString()));
|
|
SaveChatMessageinDB(personoid,BeWoApp.LoggedOnEmployee.PersonOid.Value, text);
|
|
|
|
Chat.Items.MoveCurrentToLast();
|
|
Chat.ScrollIntoView(Chat.Items.CurrentItem);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (!nameclient.Equals("NULL") && personoid != 0)
|
|
{
|
|
|
|
//Abfrage foreach und da id zutrifft an der leiste eine nachricht anfügen
|
|
foreach (var abc in saveOnlineList.Items)
|
|
{
|
|
KontaktlistBuilder curitem = (KontaktlistBuilder) abc;
|
|
|
|
if (curitem.EmpfaengerOid == personoid)
|
|
{
|
|
int x;
|
|
bool wasdrin = int.TryParse(curitem.Receivems, out x);
|
|
|
|
if (wasdrin)
|
|
curitem.Receivems = x++.ToString();
|
|
else
|
|
curitem.Receivems = 1.ToString();
|
|
}
|
|
}
|
|
|
|
SaveChatMessageinDB( personoid,BeWoApp.LoggedOnEmployee.PersonOid.Value,text);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
MessageBox.Show("Beim verarbeiten der Nachricht ist ein Fehler aufgetreten.", "Fehler: 2220 ", MessageBoxButton.OK);
|
|
}
|
|
}
|
|
|
|
public void SetList(String clientname,long personoid)
|
|
{
|
|
try
|
|
{
|
|
List<long> x = new List<long>();
|
|
x.Add(personoid);
|
|
|
|
var person = ServiceFacade.DoCustomerServiceSync(s => s.GetPersonsById(x));
|
|
|
|
var a = person[0].Type;
|
|
|
|
String listSelection = chatSettingControll.SelectionBoxItem as string;
|
|
|
|
if (listSelection.Equals("Gerade Online") && a == PersonType.Employee)
|
|
{
|
|
var mitarbeiter = ServiceFacade.DoEmployeeServiceSync(s => s.GetEmployeeWithPersonOid(personoid));
|
|
Clientlist.Items.Add(new KontaktlistBuilder(clientname, "Online", BuildImg(ServiceFacade.DoEmployeeServiceSync(s => s.GetEmployeeImage(mitarbeiter.EmployeeOid.Value))), personoid));
|
|
}
|
|
else if (listSelection.Equals("Gerade Online") && a == PersonType.Customer)
|
|
{
|
|
var klienten = ServiceFacade.DoCustomerServiceSync(s => s.GetCustomerWithPersonOid(personoid));
|
|
Clientlist.Items.Add(new KontaktlistBuilder(clientname, "Online", BuildImg(ServiceFacade.DoCustomerServiceSync(s => s.GetCustomerImage(klienten.CustomerOid.Value))), personoid));
|
|
}
|
|
|
|
|
|
saveOnlineList.Items.Add(new KontaktlistBuilder(clientname, "Online", BuildImg(null), personoid));
|
|
}
|
|
catch (Exception)
|
|
{
|
|
MessageBox.Show("Beim Erweitern der 'Gerade Online' liste ist ein fehler aufgetreten.", "Fehler: 2230 ", MessageBoxButton.OK);
|
|
}
|
|
}
|
|
|
|
public void RemoveListItem(long clientid)
|
|
{
|
|
try
|
|
{
|
|
foreach (var abc in saveOnlineList.Items)
|
|
{
|
|
KontaktlistBuilder curItem = (KontaktlistBuilder) abc;
|
|
|
|
if (curItem.EmpfaengerOid == clientid)
|
|
{
|
|
|
|
/* if (AktChatUser.Items.Count != 0) Löscht akt user und akt chat von der view
|
|
{
|
|
KontaktlistBuilder aktItem = (KontaktlistBuilder)AktChatUser.Items[0];
|
|
|
|
if (aktItem.EmpfaengerOid == curItem.EmpfaengerOid)
|
|
{
|
|
|
|
AktChatUser.Items.Clear();
|
|
Chat.Items.Clear();
|
|
}
|
|
} */
|
|
|
|
//Item auslesen und nach der passenden oid suchen wenn equal dann deleteeeee
|
|
|
|
saveOnlineList.Items.Remove(abc);
|
|
|
|
|
|
Clientlist.Items.Clear();
|
|
|
|
if (saveOnlineList.Items.Count == 0)
|
|
{
|
|
break;
|
|
}
|
|
else
|
|
{
|
|
foreach (var xyz in saveOnlineList.Items)
|
|
{
|
|
Clientlist.Items.Add(xyz);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
MessageBox.Show("Beim Entfernen eines Users von der 'Gerade Online' liste ist ein Fehler aufgetreten .", "Fehler: 2240 ", MessageBoxButton.OK);
|
|
}
|
|
}
|
|
|
|
public Boolean CompareWithListItem(long personid)
|
|
{
|
|
try
|
|
{
|
|
foreach (var abc in saveOnlineList.Items)
|
|
{
|
|
KontaktlistBuilder curItem = (KontaktlistBuilder) abc;
|
|
|
|
if (curItem.EmpfaengerOid == personid)
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
catch (Exception edf)
|
|
{
|
|
MessageBox.Show("Das Vergleichen mit der User-Liste ist nicht möglich.", "Fehler: 2350 ",
|
|
MessageBoxButton.OK);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public void SetServerStats(String servstats)
|
|
{
|
|
ServerStats.Text = servstats;
|
|
}
|
|
|
|
private void SendButton_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
if (!AktChatUser.Items.IsEmpty && !Chatbox.Text.Equals(""))
|
|
{
|
|
KontaktlistBuilder curItem = (KontaktlistBuilder) AktChatUser.Items[0];
|
|
|
|
SendMessage(curItem.EmpfaengerOid);
|
|
|
|
SaveChatMessageinDB(BeWoApp.LoggedOnEmployee.PersonOid.Value,curItem.EmpfaengerOid, Chatbox.Text);
|
|
|
|
Chat.Items.MoveCurrentToLast();
|
|
Chat.ScrollIntoView(Chat.Items.CurrentItem);
|
|
|
|
Chatbox.Text = "";
|
|
|
|
if (Chatbox.Text.Equals(""))
|
|
{
|
|
Chatbox.Text = "Nachricht schreiben";
|
|
Chatbox.Foreground = new SolidColorBrush(Colors.DarkGray);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
// gebe eine Nachricht aus das man éinen Chat partner wählen muss
|
|
if (AktChatUser.Items.IsEmpty)
|
|
{
|
|
MessageBox.Show("Bitte wählen Sie einen Chatpartner aus.", "Fehler", MessageBoxButton.OK);
|
|
if (Chatbox.Text.Equals(""))
|
|
{
|
|
Chatbox.Text = "Nachricht schreiben";
|
|
Chatbox.Foreground = new SolidColorBrush(Colors.DarkGray);
|
|
}
|
|
}
|
|
else if (Chatbox.Text.Equals(""))
|
|
{
|
|
MessageBox.Show("Sie können keine lehre Nachricht verschicken.", "Fehler", MessageBoxButton.OK);
|
|
if (Chatbox.Text.Equals(""))
|
|
{
|
|
Chatbox.Text = "Nachricht schreiben";
|
|
Chatbox.Foreground = new SolidColorBrush(Colors.DarkGray);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch (Exception sf)
|
|
{
|
|
MessageBox.Show("Beim Senden einer Nachricht ist ein Fehler aufgetreten.", "Fehler: 2250 ", MessageBoxButton.OK);
|
|
}
|
|
}
|
|
|
|
private void OnKeyDownHandler(object sender, KeyEventArgs e)
|
|
{
|
|
|
|
try
|
|
{
|
|
if (e.Key == Key.Return)
|
|
{
|
|
if (!AktChatUser.Items.IsEmpty && !Chatbox.Text.Equals(""))
|
|
{
|
|
KontaktlistBuilder curItem = (KontaktlistBuilder) AktChatUser.Items[0];
|
|
|
|
SendMessage(curItem.EmpfaengerOid);
|
|
|
|
SaveChatMessageinDB(BeWoApp.LoggedOnEmployee.PersonOid.Value, curItem.EmpfaengerOid, Chatbox.Text);
|
|
|
|
Chat.Items.MoveCurrentToLast();
|
|
Chat.ScrollIntoView(Chat.Items.CurrentItem);
|
|
|
|
Chatbox.Text = "";
|
|
}
|
|
else
|
|
{
|
|
if (AktChatUser.Items.IsEmpty)
|
|
{
|
|
MessageBox.Show("Bitte wählen Sie einen Chatpartner aus.", "Fehler", MessageBoxButton.OK);
|
|
}
|
|
else if (Chatbox.Text.Equals(""))
|
|
{
|
|
MessageBox.Show("Sie können keine lehre Nachricht verschicken.", "Fehler", MessageBoxButton.OK);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ed)
|
|
{
|
|
MessageBox.Show("Beim Senden einer Nachricht ist ein Fehler aufgetreten.", "Fehler: 2260 ", MessageBoxButton.OK);
|
|
}
|
|
}
|
|
|
|
private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
string value = chatSettingControll.SelectedItem as string;
|
|
|
|
switch (value)
|
|
{
|
|
case "Gerade Online":
|
|
|
|
// Alle zurzeit Online namen in eine liste packen und zwischen speichern und diese liste dann mit der anderen ersetzen
|
|
Clientlist.Items.Clear();
|
|
|
|
foreach (var xyz in saveOnlineList.Items)
|
|
//added alle Save list daten in die Clientlist list data
|
|
{
|
|
Clientlist.Items.Add(xyz);
|
|
}
|
|
|
|
break;
|
|
case "Gerade Offline":
|
|
|
|
//Rufe alle listen auf und zeige diese an
|
|
var offteams = ServiceFacade.DoEmployeeServiceSync(s => s.GetAllTeamsCompact());
|
|
var offmitarbeiter =
|
|
ServiceFacade.DoEmployeeServiceSync(s => s.GetAllChatActiveEmployeesCompact());
|
|
var offklienten = ServiceFacade.DoCustomerServiceSync(s => s.GetAllChatActiveCustomersCompact());
|
|
|
|
Clientlist.Items.Clear();
|
|
|
|
string Goff = "Offline";
|
|
|
|
foreach (var team in offteams)
|
|
{
|
|
Clientlist.Items.Add(new KontaktlistBuilder(team.Name, Goff, BuildImg(null), team.TeamOid));
|
|
}
|
|
foreach (var list in offmitarbeiter)
|
|
{
|
|
Clientlist.Items.Add(new KontaktlistBuilder(list.FirstName+" "+list.LastName, Goff,
|
|
BuildImg(ServiceFacade.DoEmployeeServiceSync(s => s.GetEmployeeImage(list.EmployeeOid))),
|
|
list.PersonOid));
|
|
}
|
|
foreach (var list in offklienten)
|
|
{
|
|
Clientlist.Items.Add(new KontaktlistBuilder(list.FirstName+" "+list.LastName, Goff,
|
|
BuildImg(ServiceFacade.DoCustomerServiceSync(s => s.GetCustomerImage(list.CustomerOid))),
|
|
list.PersonOid));
|
|
}
|
|
|
|
|
|
// Gerade Online mit Gerade Offline Vergleichen und wenn es vergleiche gibt diese dann aus Clientlist nehemen da der ja online ist
|
|
foreach (var clist in Clientlist.Items)
|
|
{
|
|
KontaktlistBuilder cl = (KontaktlistBuilder) clist;
|
|
foreach (var savelist in saveOnlineList.Items)
|
|
{
|
|
KontaktlistBuilder sl = (KontaktlistBuilder) savelist;
|
|
if (cl.EmpfaengerOid == sl.EmpfaengerOid)
|
|
{
|
|
Clientlist.Items.Remove(cl);
|
|
}
|
|
}
|
|
}
|
|
|
|
break;
|
|
case "Nur Team":
|
|
|
|
var teams = ServiceFacade.DoEmployeeServiceSync(s => s.GetAllTeamsCompact());
|
|
|
|
Clientlist.Items.Clear();
|
|
|
|
string Ton = "Online";
|
|
|
|
//zeigt alle teams die die berechtigung haben an
|
|
foreach (var team in teams)
|
|
{
|
|
Clientlist.Items.Add(new KontaktlistBuilder(team.Name, Ton, BuildImg(null), team.TeamOid));
|
|
}
|
|
|
|
break;
|
|
case "Nur Mitarbeiter":
|
|
|
|
var mitarbeiter = ServiceFacade.DoEmployeeServiceSync(s => s.GetAllChatActiveEmployeesCompact());
|
|
|
|
Clientlist.Items.Clear();
|
|
|
|
string Mon = "Online";
|
|
|
|
foreach (var list in mitarbeiter)
|
|
{
|
|
//überprüfen wer von denen grad online ist und je nachdem aussortieren
|
|
foreach (var abc in saveOnlineList.Items)
|
|
{
|
|
KontaktlistBuilder curItem = (KontaktlistBuilder) abc;
|
|
|
|
if (curItem.EmpfaengerOid == list.PersonOid)
|
|
Clientlist.Items.Add(new KontaktlistBuilder(list.FirstName, Mon,
|
|
BuildImg(
|
|
ServiceFacade.DoEmployeeServiceSync(
|
|
s => s.GetEmployeeImage(list.EmployeeOid))), list.PersonOid));
|
|
}
|
|
}
|
|
|
|
|
|
break;
|
|
case "Nur Klienten":
|
|
var klienten = ServiceFacade.DoCustomerServiceSync(s => s.GetAllChatActiveCustomersCompact());
|
|
|
|
Clientlist.Items.Clear();
|
|
|
|
string Kon = "Online";
|
|
|
|
//Add items der Liste //funktionierendes original
|
|
foreach (var list in klienten)
|
|
{
|
|
foreach (var sl in saveOnlineList.Items)
|
|
{
|
|
KontaktlistBuilder curItem = (KontaktlistBuilder) sl;
|
|
|
|
if (curItem.EmpfaengerOid == list.PersonOid)
|
|
Clientlist.Items.Add(new KontaktlistBuilder(list.FirstName, Kon,
|
|
BuildImg(
|
|
ServiceFacade.DoCustomerServiceSync(
|
|
s => s.GetCustomerImage(list.CustomerOid))), list.PersonOid));
|
|
}
|
|
}
|
|
|
|
break;
|
|
}
|
|
}
|
|
catch (Exception edf)
|
|
{
|
|
MessageBox.Show("Beim Setzen einer Neuen Chat Einstellung ist ein Fehler aufgetreten.", "Fehler: 2270 ", MessageBoxButton.OK);
|
|
}
|
|
}
|
|
|
|
private void ListBoxSelectedIndexChanged(object sender, System.EventArgs e)
|
|
{
|
|
KontaktlistBuilder curItem;
|
|
try
|
|
{
|
|
if (!Clientlist.Items.IsEmpty)
|
|
{
|
|
curItem = (KontaktlistBuilder) Clientlist.SelectedItem;
|
|
|
|
Chat.Items.Clear();
|
|
|
|
AktChatUser.Items.Clear();
|
|
|
|
if(!curItem.Receivems.Equals("")){
|
|
int isx = int.Parse(curItem.Receivems);
|
|
|
|
if (curItem.WorkerId == null)
|
|
AktChatUser.Items.Add(new KontaktlistBuilder(curItem.Name, curItem.Lastms, curItem.Image, curItem.EmpfaengerOid));
|
|
else
|
|
AktChatUser.Items.Add(new KontaktlistBuilder(curItem.Name, curItem.Lastms, curItem.Image,curItem.EmpfaengerOid,curItem.WorkerId.Value,isx));
|
|
}
|
|
else
|
|
{
|
|
if(curItem.WorkerId == null)
|
|
AktChatUser.Items.Add(new KontaktlistBuilder(curItem.Name, curItem.Lastms, curItem.Image,curItem.EmpfaengerOid));
|
|
else
|
|
AktChatUser.Items.Add(new KontaktlistBuilder(curItem.Name, curItem.Lastms, curItem.Image,curItem.EmpfaengerOid,curItem.WorkerId.Value));
|
|
|
|
}
|
|
|
|
LoadChatMessagefromDB(BeWoApp.LoggedOnEmployee.PersonOid.Value,curItem.EmpfaengerOid);
|
|
Chat.Items.MoveCurrentToLast();
|
|
Chat.ScrollIntoView(Chat.Items.CurrentItem);
|
|
}
|
|
}
|
|
catch (Exception s)
|
|
{
|
|
curItem = null;
|
|
MessageBox.Show("Beim Auswählen eines Users ist ein Fehler aufgetreten.", "Fehler: 2280 ", MessageBoxButton.OK);
|
|
}
|
|
}
|
|
|
|
public ImageSource BuildImg(Byte[] c)
|
|
{
|
|
try
|
|
{
|
|
if (c != null)
|
|
{
|
|
var biImg = new BitmapImage();
|
|
var ms = new MemoryStream(c);
|
|
|
|
biImg.BeginInit();
|
|
biImg.StreamSource = ms;
|
|
biImg.EndInit();
|
|
|
|
return biImg;
|
|
}
|
|
else
|
|
{
|
|
return
|
|
(ImageSource)
|
|
new ImageSourceConverter().ConvertFromString(
|
|
"../../Ressources/Icons/UserHomeBoyDisabled.png");
|
|
}
|
|
}
|
|
catch (Exception edf)
|
|
{
|
|
MessageBox.Show("Beim Aufbauen der Profilbilder ist ein Fehler aufgetreten.", "Fehler: 2290 ", MessageBoxButton.OK);
|
|
return null;
|
|
}
|
|
}
|
|
|
|
public void SendMessage(long empfängeroid)
|
|
{
|
|
try
|
|
{
|
|
string msg = Chatbox.Text;
|
|
Chat.Items.Add(new KontakMessageBuilder(BeWoApp.LoggedOnUser.LoginName, msg, DateTime.Now.ToString()));
|
|
|
|
NetworkStream serverStream = tcpClient.GetStream();
|
|
|
|
//da wo drei ("3") ist muss empfänger oid hin
|
|
|
|
byte[] outStream = System.Text.Encoding.UTF8.GetBytes("" + BeWoApp.LoggedOnUser.Employee.PersonOid + ";" + 3 + ";" + BeWoApp.LoggedOnUser.LoginName.Length + ";" +
|
|
msg.Length + ";" + 0 + ";" + BeWoApp.LoggedOnUser.LoginName + ";" +
|
|
BeWoApp.Tenant + msg + DateTime.Now.ToString("dd.MM.yyyy HH:mm:ss"));
|
|
serverStream.Write(outStream, 0, outStream.Length);
|
|
serverStream.Flush();
|
|
|
|
Dispatcher.Invoke(
|
|
DispatcherPriority.Normal,
|
|
(ThreadStart)delegate { ServerStats.Text = "Nachricht erfolgreich gesendet"; });
|
|
}
|
|
catch (Exception xe)
|
|
{
|
|
MessageBox.Show("Beim Senden einer Nachricht zum Server ist ein Fehler aufgetreten.", "Fehler: 2300 ", MessageBoxButton.OK);
|
|
|
|
Dispatcher.Invoke(
|
|
DispatcherPriority.Normal,
|
|
(ThreadStart)delegate { ServerStats.Text = "Fehler: Die Nachricht konnte nicht gesendet werden."; });
|
|
}
|
|
}
|
|
|
|
public void SaveChatMessageinDB( long senderoid,long empfangid,string message)
|
|
{
|
|
try
|
|
{
|
|
ServiceFacade.DoOperationsServiceSync(s => s.CreateNewChatMessagesDC(senderoid, empfangid, message));
|
|
}
|
|
catch (InvalidOperationException e)
|
|
{
|
|
MessageBox.Show("Beim Speichern einer Nachricht in die Datenbank ist ein Fehler aufgetreten.", "Fehler: 2310 ", MessageBoxButton.OK);
|
|
}
|
|
}
|
|
|
|
public void LoadChatMessagefromDB(long senderoid ,long empfaengerOid)
|
|
{
|
|
try
|
|
{
|
|
//if() team abfrage muss noch geregelt werden // es muss der richtige name gesetzt werden
|
|
var allitems =
|
|
ServiceFacade.DoCustomerServiceSync(
|
|
s => s.FindAllChatMessages(senderoid, empfaengerOid));
|
|
|
|
foreach (var list in allitems)
|
|
{
|
|
if (list.SenderPersonOid == senderoid)
|
|
{
|
|
List<long> x = new List<long>();
|
|
x.Add(senderoid);
|
|
|
|
var person = ServiceFacade.DoCustomerServiceSync(s => s.GetPersonsById(x));
|
|
|
|
Chat.Items.Add(new KontakMessageBuilder(person[0].FirstName, list.ChatText,
|
|
list.Uhrzeit.ToString()));
|
|
}
|
|
else
|
|
{
|
|
List<long> x = new List<long>();
|
|
x.Add(empfaengerOid);
|
|
|
|
var person = ServiceFacade.DoCustomerServiceSync(s => s.GetPersonsById(x));
|
|
|
|
Chat.Items.Add(new KontakMessageBuilder(person[0].FirstName, list.ChatText, list.Uhrzeit.ToString()));
|
|
}
|
|
|
|
}
|
|
}
|
|
catch (Exception edf)
|
|
{
|
|
MessageBox.Show("Beim Laden einer Nachricht aus der Datenbank ist ein Fehler aufgetreten.", "Fehler: 2320 ", MessageBoxButton.OK);
|
|
}
|
|
|
|
}
|
|
|
|
//placeholder
|
|
private void OnFocus(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
Chatbox.Text = "";
|
|
Chatbox.Foreground = new SolidColorBrush(Colors.Black);
|
|
}
|
|
catch (Exception edf)
|
|
{
|
|
MessageBox.Show("Fehler beim Fokusieren der Nachrichten Leiste.", "Fehler: 2330 ", MessageBoxButton.OK);
|
|
}
|
|
}
|
|
/* private void OnDefocus(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
if (Chatbox.Text.Equals(""))
|
|
{
|
|
/* Chatbox.Text = "Nachricht schreiben";
|
|
Chatbox.Foreground = new SolidColorBrush(Colors.DarkGray);
|
|
}
|
|
}
|
|
catch (Exception edf)
|
|
{
|
|
MessageBox.Show("Fehler beim De-Fokusieren der Nachrichten Leiste.", "Fehler: 2340 ", MessageBoxButton.OK);
|
|
}
|
|
}*/
|
|
}
|
|
|
|
//KontaklisteFormat und KontaktMessageBuilder Klasse
|
|
public class KontaktlistBuilder
|
|
{
|
|
public KontaktlistBuilder(string name, string lastms, ImageSource image,long empfaengerid, Int32 workerid/*,boolean isteam*/)
|
|
{
|
|
this.Name = name;
|
|
this.Lastms = lastms;
|
|
this.Image = image;
|
|
this.EmpfaengerOid = empfaengerid;
|
|
this.WorkerId = workerid;
|
|
Receivems = "";
|
|
//this.isTeam = isteam;
|
|
}
|
|
|
|
public KontaktlistBuilder(string name, string lastms, ImageSource image, long empfaengerid, Int32 workerid, int receivems/*,boolean isteam*/)
|
|
{
|
|
this.Name = name;
|
|
this.Lastms = lastms;
|
|
this.Image = image;
|
|
this.EmpfaengerOid = empfaengerid;
|
|
this.WorkerId = workerid;
|
|
Receivems = receivems.ToString();
|
|
//this.isTeam = isteam;
|
|
}
|
|
|
|
public KontaktlistBuilder(string name, string lastms, ImageSource image, long empfaengerid/*,boolean isteam*/)
|
|
{
|
|
this.Name = name;
|
|
this.Lastms = lastms;
|
|
this.Image = image;
|
|
this.EmpfaengerOid = empfaengerid;
|
|
this.WorkerId = null;
|
|
|
|
Receivems = "";
|
|
//this.isTeam = isteam;
|
|
}
|
|
|
|
public string Name { get; private set; }
|
|
|
|
public string Lastms { get; private set; }
|
|
|
|
public ImageSource Image { get; private set; }
|
|
|
|
public long EmpfaengerOid { get; private set; }
|
|
|
|
public int? WorkerId { get; private set; }
|
|
|
|
public string Receivems { get; set; }
|
|
//public Boolean isTeam {get; private set; }
|
|
}
|
|
|
|
public class KontakMessageBuilder
|
|
{
|
|
public KontakMessageBuilder(string username, string message, string sendtime)
|
|
{
|
|
Username = username;
|
|
UserMessage = message;
|
|
SendTime = sendtime;
|
|
|
|
}
|
|
|
|
public string Username { get; private set; }
|
|
public string UserMessage { get; private set; }
|
|
public string SendTime { get; private set; }
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|