Merge branch 'master' of ssh://float.beyondsoft.de/git/beyondSoft/BeWo

This commit is contained in:
staccatomamba
2016-07-25 14:53:11 +02:00
12 changed files with 167 additions and 532 deletions

View File

@@ -3775,7 +3775,7 @@ namespace BeWo.ServiceProxy
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/CreateNewChatMessagesDC", ReplyAction="http://tempuri.org/IOperationsService/CreateNewChatMessagesDCResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/IOperationsService/CreateNewChatMessagesDCBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
BS.Shared.DataContracts.ChatMessageDC CreateNewChatMessagesDC(long senderOid, long empfängerOid, string message);
BS.Shared.DataContracts.ChatMessageDC CreateNewChatMessagesDC(long senderOid, long empfängerOid, string message, int istZugestellt);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IOperationsService/CreateNewIsChatActiveCustomerAPPCodeDC", ReplyAction="http://tempuri.org/IOperationsService/CreateNewIsChatActiveCustomerAPPCodeDCRespo" +
"nse")]
@@ -4432,9 +4432,9 @@ namespace BeWo.ServiceProxy
return base.Channel.CreateNewCustomerAPPCodeDC(customerOid);
}
public BS.Shared.DataContracts.ChatMessageDC CreateNewChatMessagesDC(long senderOid, long empfängerOid, string message)
public BS.Shared.DataContracts.ChatMessageDC CreateNewChatMessagesDC(long senderOid, long empfängerOid, string message, int istZugestellt)
{
return base.Channel.CreateNewChatMessagesDC(senderOid, empfängerOid, message);
return base.Channel.CreateNewChatMessagesDC(senderOid, empfängerOid, message, istZugestellt);
}
public BS.Shared.DataContracts.CustomerAPPCodeDC CreateNewIsChatActiveCustomerAPPCodeDC(long customerOid, int activeType)

View File

@@ -105,7 +105,7 @@ namespace BeWo.View
foreach (String i in text)
{
Chat.Items.Add(new KontakMessageBuilder(nameclient, i, DateTime.Now.ToString()));
SaveChatMessageinDB(personoid,BeWoApp.LoggedOnEmployee.PersonOid.Value,i);
// SaveChatMessageinDB(personoid,BeWoApp.LoggedOnEmployee.PersonOid.Value,i);
}
Chat.Items.MoveCurrentToLast();
@@ -131,7 +131,7 @@ namespace BeWo.View
curitem.Receivems = anzReceive++.ToString();
}
}
SaveChatMessageinDB( personoid,BeWoApp.LoggedOnEmployee.PersonOid.Value, i);
//SaveChatMessageinDB( personoid,BeWoApp.LoggedOnEmployee.PersonOid.Value, i);
}
}
}
@@ -154,7 +154,7 @@ namespace BeWo.View
curitem.Receivems = anzRec++.ToString();
}
}
SaveChatMessageinDB(personoid, BeWoApp.LoggedOnEmployee.PersonOid.Value, i);
//SaveChatMessageinDB(personoid, BeWoApp.LoggedOnEmployee.PersonOid.Value, i);
}
}
}
@@ -165,7 +165,7 @@ namespace BeWo.View
}
}
public void SetText(String text, String nameclient, long personoid)
public void SetText(String text, String nameclient, long personoid )
{
try
{
@@ -185,7 +185,7 @@ namespace BeWo.View
if (!nameclient.Equals("NULL") && personoid != 0)
{
Chat.Items.Add(new KontakMessageBuilder(nameclient, text, DateTime.Now.ToString()));
SaveChatMessageinDB(personoid,BeWoApp.LoggedOnEmployee.PersonOid.Value, text);
//SaveChatMessageinDB(personoid,BeWoApp.LoggedOnUser.Employee.PersonOid, text);
Chat.Items.MoveCurrentToLast();
Chat.ScrollIntoView(Chat.Items.CurrentItem);
@@ -214,7 +214,7 @@ namespace BeWo.View
}
}
SaveChatMessageinDB( personoid,BeWoApp.LoggedOnEmployee.PersonOid.Value,text);
//SaveChatMessageinDB(personoid, BeWoApp.LoggedOnUser.Employee.PersonOid, text);
}
}
}
@@ -346,7 +346,7 @@ namespace BeWo.View
SendMessage(curItem.EmpfaengerOid);
SaveChatMessageinDB(BeWoApp.LoggedOnEmployee.PersonOid.Value,curItem.EmpfaengerOid, Chatbox.Text);
// SaveChatMessageinDB(BeWoApp.LoggedOnEmployee.PersonOid.Value,curItem.EmpfaengerOid, Chatbox.Text);
Chat.Items.MoveCurrentToLast();
Chat.ScrollIntoView(Chat.Items.CurrentItem);
@@ -401,7 +401,7 @@ namespace BeWo.View
SendMessage(curItem.EmpfaengerOid);
SaveChatMessageinDB(BeWoApp.LoggedOnEmployee.PersonOid.Value, curItem.EmpfaengerOid, Chatbox.Text);
// SaveChatMessageinDB(BeWoApp.LoggedOnEmployee.PersonOid.Value, curItem.EmpfaengerOid, Chatbox.Text);
Chat.Items.MoveCurrentToLast();
Chat.ScrollIntoView(Chat.Items.CurrentItem);
@@ -642,35 +642,56 @@ namespace BeWo.View
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
if (tcpClient.Connected)
{
NetworkStream serverStream = tcpClient.GetStream();
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"; });
}
//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"; });
}
else
{
SaveChatMessageinDB(BeWoApp.LoggedOnUser.Employee.PersonOid,empfängeroid, msg, 0);
MessageBox.Show("Die Daten werden in der Datenbank Gespeichert, da der Server nicht zur Verfügung steht.", "Info ", MessageBoxButton.OK);
}
}
catch (Exception xe)
{
MessageBox.Show("Beim Senden einer Nachricht zum Server ist ein Fehler aufgetreten.", "Fehler: 2300 ", MessageBoxButton.OK);
if (tcpClient.Connected){
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."; });
}
Dispatcher.Invoke(
DispatcherPriority.Normal,
(ThreadStart)delegate { ServerStats.Text = "Fehler: Die Nachricht konnte nicht gesendet werden."; });
}
}
public void SaveChatMessageinDB( long senderoid,long empfangid,string message)
public void SaveChatMessageinDB( long senderoid,long empfangid,string message,int istZugestellt)
{
try
{
ServiceFacade.DoOperationsServiceSync(s => s.CreateNewChatMessagesDC(senderoid, empfangid, message));
{
ServiceFacade.DoOperationsServiceSync(s => s.CreateNewChatMessagesDC(senderoid, empfangid, message, istZugestellt));
}
catch (InvalidOperationException e)
{

View File

@@ -34,6 +34,7 @@ using System.Net.Sockets;
using System.Collections;
using System.Net;
using System.Text;
using BeWoChatServer;
namespace BeWo.View
{
@@ -46,14 +47,6 @@ namespace BeWo.View
//################# Variablen der Serveranwendung #################
protected Socket m_mainSocket;
protected Socket[] m_workerSocket = new Socket[10];
protected ArrayList m_workerSocketList = ArrayList.Synchronized(new ArrayList());
protected AsyncCallback asyncWorkerCallBack;
protected int clientCount = 0;
protected ListBox Clientlist = new ListBox();
protected TextBox ServerStats = new TextBox();
protected TextBox chat = new TextBox();
@@ -61,9 +54,6 @@ namespace BeWo.View
protected MiniChatView pav;
protected ChatView chatpav;
SocketPacket socketDaten;
String erhaltenerDS;
Dictionary<long, MiniChatView> pavlist = new Dictionary<long, MiniChatView>();
@@ -98,26 +88,19 @@ namespace BeWo.View
// FillInbox();
// FillOutbox();
Loaded += HomeDragPanelViewLoaded;
//####################### ServerAnwendung ############################
//onConnectionStart();
this.Dispatcher.BeginInvoke(
DispatcherPriority.Normal,
(Action)delegate
{
ConnectWithServer();
if(clientSocket.Connected)
MessageBox.Show("Verbindung geglückt.", "Info", MessageBoxButton.OK,MessageBoxImage.Information);
});
chatpav = new ChatView("Whats chat", chat.Text, clientSocket);
chatpav.Visibility = Visibility.Collapsed;
//####################################################################
chatpav.Visibility = Visibility.Collapsed;
}
private void PreparePanels()
@@ -1245,21 +1228,20 @@ namespace BeWo.View
}
//############# Sever wurde ausgelagert
//-------------- Server Chat Gedöns -----------------------------------------
//---------------------------- Server Chat Gedöns -----------------------------------------------------------------------
private void ConnectWithServer()
{
try
{
var ipAdresse = "192.168.1.103";
var port = 5000;
var ipAdresse = "192.168.1.103"; //103 statt 109
var port = 5000;
clientSocket.Connect(ipAdresse, port);
// Thread prf = new Thread(PruefeServerDisconection); //<---------- gibt eine Nachricht aus wenn die verbindung zum server verloren geht
// prf.Start();
Thread prf = new Thread(PruefeServerDisconection); //<---------- gibt eine Nachricht aus wenn die verbindung zum server verloren geht
prf.Start();
SendAnmeldungsMessagetoServer(clientSocket);
@@ -1294,15 +1276,12 @@ namespace BeWo.View
}
public void WaitForMsFromServer()
{
try
{
// nehme den String auseinander und überprüfe ob es eine liste ist
// wenn nicht / schaue auf onReceiveMs || Erstmal ohne While versuchen
// while (true)
// {
{
if (clientSocket != null)
{
serverStream = clientSocket.GetStream();
@@ -1316,23 +1295,33 @@ namespace BeWo.View
//String umbauen in Liste und daten wie oid und nachricht und so rausholen
//Wenn array dann AktList
//ErhalteDatenFromString(data);
//Wenn array dann AktList
String[] receiveData = ErhalteDatenFromString(data);
long persoid = Int32.Parse(receiveData[3]);
List<long> x = new List<long>();
x.Add(2);
x.Add(persoid);
var person = ServiceFacade.DoCustomerServiceSync(s => s.GetPersonsById(x));
if(!chatpav.CompareWithListItem(2)) // <----- hier muss die person Oid übergeben werden damit das ganze funzt
// if ()
// {
// }
var person = ServiceFacade.DoCustomerServiceSync(s => s.GetPersonsById(x));
if (!chatpav.CompareWithListItem(persoid))
{
ErstelleChatViews(person[0].FirstName+" "+person[0].LastName, 2);
ErstelleChatViews(persoid);
}
UebergebeNachricht(data, person[0].FirstName + " " + person[0].LastName, 2);
UebergebeNachricht(receiveData[0], person[0].FirstName + " " + person[0].LastName, persoid);
/*if(liste > 1 )
{
@@ -1346,33 +1335,39 @@ namespace BeWo.View
//MessageBox.Show(data, "Server", MessageBoxButton.OK);
}
//}
}
catch (Exception e)
{
if (clientSocket.Connected)
MessageBox.Show("Beim Erhalten von Nachrichten ist ein Fehler aufgetreten.", "Fehler: 2030 ", MessageBoxButton.OK);
// hier abfrage hin wenn server nicht mehr vorhanden alle 5 min neuer connect versuch starten
}
}
public void ErhalteDatenFromString(String message)
public String[] ErhalteDatenFromString(String message)
{
try
{
{
Packet a = new Packet();
a.GetData(message);
string[] alfa = new string[4];
alfa[0] = a.ChatMessage;
alfa[1] = a.MessageTimeStamp.ToString();
alfa[2] = a.ClientName;
alfa[3] = a.SenderPersonOid.ToString();
// return "";
return alfa;
}
catch (Exception e)
{
MessageBox.Show("Beim Sortieren von Nachrichten ist ein Fehler aufgetreten.", "Fehler: 2040 ", MessageBoxButton.OK);
//return null;
return null;
}
}
@@ -1392,7 +1387,7 @@ namespace BeWo.View
}
public void UebergebeNachricht(String text,String name, long personoid ) // kann sein das fehler passieren
public void UebergebeNachricht(String text,String name, long personoid )
{
try
{
@@ -1466,14 +1461,16 @@ namespace BeWo.View
//Connected ist immer true ??????
if (clientSocket.Client.Connected == false)
if (clientSocket.Connected == false)
{
MessageBox.Show("Die verbindung zum Server wurde unterbrochen", "Info", MessageBoxButton.OK);
clientSocket.Close();
break;
}
Thread.Sleep(3000);
//Thread.Sleep(3000);
}
}
catch (Exception e)
@@ -1485,7 +1482,7 @@ namespace BeWo.View
private void ErstelleChatViews(String personName,long personOid)
private void ErstelleChatViews(long personOid)
{
try
{
@@ -1541,444 +1538,6 @@ namespace BeWo.View
}
//---------------------------------------------------------------------------------------------------------------------------
//#################### Ab hier alles Weg Serveranwendung System ##################################################
public void onConnectionStart()
{
try
{
int port = 5000;
String ipAdresse = "192.168.1.103";
m_mainSocket = new Socket(AddressFamily.InterNetwork,
SocketType.Stream,
ProtocolType.Tcp);
//ipAdressvergabe falls gewollt
//IPEndPoint iplocal = new IPEndPoint(IPAddress.Parse(ipAdresse),port);
IPEndPoint iplocal = new IPEndPoint(IPAddress.Any, port);
m_mainSocket.Bind(iplocal);
m_mainSocket.Listen(4);
m_mainSocket.BeginAccept(new AsyncCallback(OnConnectedClient), null);
}
catch (SocketException e)
{
MessageBox.Show("Ups, da ist etwas kaput gegangen.","Fehler: 2010 ",MessageBoxButton.OK);
}
}
//Zählt und (erstellt Sockets) der jeweiligen anfragen der clienten,
public void OnConnectedClient(IAsyncResult asn)
{
try
{
// if (m_mainSocket.Connected){ <------- Hier muss ordentliche abfrage hin sonst schmiert das ding beim abmelden ab.
Socket workerSocket = m_mainSocket.EndAccept(asn);
Interlocked.Increment(ref clientCount);
m_workerSocketList.Add(workerSocket);
WaitforDatenfromClient(workerSocket, clientCount, "", 0);
m_mainSocket.BeginAccept(new AsyncCallback(OnConnectedClient), null);
//}
}
catch (SocketException e)
{
MessageBox.Show("Ups, da ist etwas kaput gegangen.", "Fehler: 2020 ", MessageBoxButton.OK);
}
}
//Listener der immer auf eine Antwort vom Clienten wartet
public void WaitforDatenfromClient(Socket soc, int clientnummer, String clientname, long oid)
{
try
{
if (asyncWorkerCallBack == null)
{
asyncWorkerCallBack = new AsyncCallback(OnReceiveData);
}
SocketPacket sockPac = new SocketPacket(soc, clientnummer, clientname,oid);
soc.BeginReceive(sockPac.dataBuffer, 0, sockPac.dataBuffer.Length, SocketFlags.None, asyncWorkerCallBack, sockPac);
}
catch (SocketException e)
{
MessageBox.Show("Ups, da ist etwas kaput gegangen.", "Fehler: 2030 ", MessageBoxButton.OK);
}
}
//Verarbeitet vom Clienten Erhaltene Daten
public void OnReceiveData(IAsyncResult asn)
{
socketDaten = (SocketPacket)asn.AsyncState;
//primitiv aber effektiv mit bugs deshalb ungenutzt
Boolean erstkonntakt = false;
try
{
int anzahlre = socketDaten.m_currentSocket.EndReceive(asn);
char[] chars = new char[anzahlre];
Decoder decode = System.Text.Encoding.UTF8.GetDecoder();
int charLenght = decode.GetChars(socketDaten.dataBuffer, 0, anzahlre, chars, 0);
erhaltenerDS = new String(chars);
string msg = "" + socketDaten.m_clientNumber + ":";
// Send back the reply to the client
//string replyMsg = "Server Reply:" + erhaltenerDS.ToUpper();
// Convert the reply to byte array
//byte[] byData = System.Text.Encoding.ASCII.GetBytes(replyMsg);
Socket workerSocket = (Socket)socketDaten.m_currentSocket;
#region save socketdaten daten für chat bereich
//######################### Fische den Namen des Clienten Raus und weise ihm am ende zu ################
if (socketDaten.m_clientname.ToString().Equals(""))
{
int x;
int persOid = 0;
String[] splitt = erhaltenerDS.Split('/');
//Hole die Person oid aus dem Connection String
String[] personoid = splitt[1].Split('?');
if (splitt.Length > 1)
{
Int32.TryParse(splitt[1], out x);
bool isNum = false;
// so oder soetwa muss das gehen
if (personoid.Length > 1)
{
isNum = Int32.TryParse(personoid[1], out persOid);
Console.WriteLine("" + persOid);
}
if (isNum)
{
socketDaten.m_clientname = splitt[0];
Dispatcher.Invoke(
DispatcherPriority.Normal,
(ThreadStart)delegate { //Clientlist.Items.Add(socketDaten.m_clientname);
if (persOid != 0)
socketDaten.m_clientpersonoid = persOid;
// chatpav.SetList(socketDaten.m_clientname,socketDaten.m_clientpersonoid,socketDaten.m_clientNumber);
chatpav.SetServerStats(splitt[0] + " Connected");
//statt "" war erhalteneDS | neu hinzugefügt
pav = new MiniChatView(socketDaten.m_clientname, "", chatpav,socketDaten.m_clientpersonoid);
pav.Visibility = Visibility.Collapsed;
//Abfrage bei gkleiche Schlüssel weil sonst crash
pavlist.Add(socketDaten.m_clientpersonoid, pav);
});
erstkonntakt = true;
erhaltenerDS = splitt[0] + " Connected";
// Send back the reply to the client
string replyMsg = BeWoApp.LoggedOnUser.LoginName + ":" + " Connected" + "\n";
// Convert the reply to byte array
byte[] byData = System.Text.Encoding.ASCII.GetBytes(replyMsg);
Socket workerS = (Socket)socketDaten.m_currentSocket;
workerS.Send(byData);
}
else
{
socketDaten.m_clientname = "Client";
Dispatcher.Invoke(
DispatcherPriority.Normal,
(ThreadStart) delegate
{
// Clientlist.Items.Add("Client" + clientCount);
// chatpav.SetList("Client" + clientCount,socketDaten.m_clientpersonoid,socketDaten.m_clientNumber);
chatpav.SetServerStats("Client" + clientCount + " Connected");
//statt "" war erhalteneDS | neu hinzugefügt
pav = new MiniChatView(socketDaten.m_clientname + clientCount, "", chatpav,socketDaten.m_clientpersonoid);
pav.Visibility = Visibility.Collapsed;
pavlist.Add(socketDaten.m_clientpersonoid, pav);
});
erstkonntakt = true;
// Send back the reply to the client
string replyMsg = BeWoApp.LoggedOnUser.LoginName + ":" + " Connected" + "\n";
// Convert the reply to byte array
byte[] byData = System.Text.Encoding.ASCII.GetBytes(replyMsg);
Socket workerS = (Socket)socketDaten.m_currentSocket;
workerS.Send(byData);
}
}
else
{
socketDaten.m_clientname = "Client";
Dispatcher.Invoke(
DispatcherPriority.Normal,
(ThreadStart) delegate
{
//Clientlist.Items.Add("Client" + clientCount);
// chatpav.SetList("Client" + clientCount,socketDaten.m_clientpersonoid,socketDaten.m_clientNumber);
chatpav.SetServerStats("Client" + clientCount + " Connected");
//statt "" war erhalteneDS | neu hinzugefügt
pav = new MiniChatView(socketDaten.m_clientname + clientCount, "", chatpav,socketDaten.m_clientpersonoid);
pav.Visibility = Visibility.Collapsed;
pavlist.Add(socketDaten.m_clientpersonoid, pav);
});
erstkonntakt = true;
// Send back the reply to the client
string replyMsg = BeWoApp.LoggedOnUser.LoginName + ":" + " Connected " + "\n";
// Convert the reply to byte array
byte[] byData = System.Text.Encoding.ASCII.GetBytes(replyMsg);
Socket workerS = (Socket)socketDaten.m_currentSocket;
workerS.Send(byData);
}
//#####################################################################################################
}
#endregion
#region verarbeite erhaltene Daten
// if (!erstkonntakt)
// {
//###################################### Message bereich ###################################################
//hier die aufforderung die nachrichten an alle anderen clienten zu schicken // Später umfunktioniert zu senden Klient / klienten
if (!erhaltenerDS.Equals(""))
{
SendMessageToOtherClients(erhaltenerDS, socketDaten.m_clientNumber);
}
//aktualiesiere die gui
if (!erhaltenerDS.Equals(""))
{
//Hier abfrage ob ehlateneDaten == Socketname dann soll maybe nix passieren/ erstellen wen gewünscht
Dispatcher.Invoke(
DispatcherPriority.Normal,
(ThreadStart) delegate
{
chat.AppendText(socketDaten.m_clientname + ": " + erhaltenerDS + "\n");
chat.ScrollToEnd();
if (chatpav.Visibility != Visibility.Visible &&
pavlist[socketDaten.m_clientpersonoid].Visibility != Visibility.Visible)
{
pavlist[socketDaten.m_clientpersonoid].Visibility = Visibility.Visible;
pavlist[socketDaten.m_clientpersonoid].SetText(erhaltenerDS, 1);
}
else if (pavlist[socketDaten.m_clientpersonoid].Visibility != Visibility.Visible)
{
chatpav.SetText(erhaltenerDS, socketDaten.m_clientname,socketDaten.m_clientpersonoid);
}
else
{
pavlist[socketDaten.m_clientpersonoid].AppendTextwhileViewOpen(erhaltenerDS, 1);
}
});
//Continue Waiting for data on The Current socket
WaitforDatenfromClient(socketDaten.m_currentSocket, socketDaten.m_clientNumber,
socketDaten.m_clientname,socketDaten.m_clientpersonoid);
}
else
{
//primitiv aber funktioniert entfernt den current client
Dispatcher.Invoke(
DispatcherPriority.Normal,
(ThreadStart) delegate
{
if (!socketDaten.m_clientname.Equals("Client"))
{
chatpav.RemoveListItem(socketDaten.m_clientpersonoid);
chatpav.SetServerStats(socketDaten.m_clientname + " Disconnected ! ");
pavlist.Remove(socketDaten.m_clientpersonoid);
m_workerSocketList[socketDaten.m_clientNumber - 1] = null;
workerSocket.Close();
}
else
{
chatpav.RemoveListItem(socketDaten.m_clientpersonoid);
chatpav.SetServerStats(socketDaten.m_clientname + socketDaten.m_clientNumber +
" Disconnected ! ");
//Removed die dazugehörige Minichatview
pavlist.Remove(socketDaten.m_clientpersonoid);
m_workerSocketList[socketDaten.m_clientNumber - 1] = null;
workerSocket.Close();
}
});
//###################################### Message bereich Ende ###################################################
}
#endregion
}
catch (ObjectDisposedException)
{
System.Diagnostics.Debugger.Log(0, "1", "\n OnReceiveData: Socket has been closed \n");
}
catch (SocketException se)
{
MessageBox.Show(se.Message);
if (se.ErrorCode == 10054) // Error code for Connection reset
{
m_workerSocketList[socketDaten.m_clientNumber - 1] = null;
}
}
}
//erstellt den Current Socket und legt die Größe fest
public class SocketPacket
{
public Socket m_currentSocket;
public int m_clientNumber;
public String m_clientname;
public long m_clientpersonoid;
// Buffer to store the data sent by the client
public byte[] dataBuffer = new byte[1024];
public SocketPacket(Socket socket, int clientNummer, String name,long oid)
{
m_currentSocket = socket;
m_clientNumber = clientNummer;
m_clientname = name;
m_clientpersonoid = oid;
}
}
//Sende Nachrichten von Client an alle anderen clienten
public void SendMessageToOtherClients(String msg, int curClient)
{
try
{
msg = "Client " + curClient + ": " + msg + "\n";
byte[] byData = System.Text.Encoding.ASCII.GetBytes(msg);
Socket workerSocket = null;
int x = 1;
for (int i = 0; i < m_workerSocketList.Count; i++)
{
if (x != curClient)
{
workerSocket = (Socket)m_workerSocketList[i];
if (workerSocket != null)
{
if (workerSocket.Connected)
{
workerSocket.Send(byData);
}
}
}
else
{
//Console.WriteLine("I ist gleich curent Client");
}
x++;
}
//Console.WriteLine("Entweder Erfolgreich oder halt aber nicht");
}
catch (Exception xe)
{
Dispatcher.Invoke(
DispatcherPriority.Normal,
(ThreadStart)delegate { chatpav.SetServerStats("Ein Fehler im Bereich Message"); });
}
}
public void CloseConnection()
{
try
{
if (m_mainSocket != null)
{
m_mainSocket.Close();
}
Socket workerSocket = null;
for (int i = 0; i < m_workerSocketList.Count; i++)
{
workerSocket = (Socket)m_workerSocketList[i];
if (workerSocket != null)
{
workerSocket.Close();
//workerSocket = null;
}
}
}
catch (Exception ze)
{
Dispatcher.Invoke(
DispatcherPriority.Normal,
(ThreadStart)delegate { ServerStats.Text = "Ein Fehler im Bereich Schließen"; });
}
}
//####################### Close Connection den Abmelde Button anfügen ###############################
}
public class TaskDateDescriptionConverter : IValueConverter

View File

@@ -10,6 +10,8 @@ namespace BeWo.ViewModel
public static string PropertyName_Uhrzeit = "Uhrzeit";
public static string PropertyName_IstZugestellt = "IstZugestellt";
private string _ChatText;
private DateTime _Uhrzeit;
@@ -18,6 +20,8 @@ namespace BeWo.ViewModel
private long? _EmpfängerPersonOid;
private int _istZugestellt;
public ChatMessageVM(ChatMessageDC pDC)
: base(pDC, true)
@@ -85,6 +89,22 @@ namespace BeWo.ViewModel
}
}
public virtual int IstZugestellt
{
get
{
return _istZugestellt;
}
set
{
if (AreDifferent(_istZugestellt, value))
{
_istZugestellt = value;
}
}
}
protected override void InitByDataContract(ChatMessageDC pDataContract)
{
@@ -92,6 +112,7 @@ namespace BeWo.ViewModel
this._EmpfängerPersonOid = pDataContract.EmpfängerPersonOid;
this._Uhrzeit = pDataContract.Uhrzeit;
this._ChatText = pDataContract.ChatText;
_istZugestellt = pDataContract.IstZugestellt;
}
protected override ChatMessageDC MapToDataContract(ChatMessageDC pDataContract, bool doCommit)
@@ -99,7 +120,8 @@ namespace BeWo.ViewModel
pDataContract.SenderPersonOid = _SenderPersonOid;
pDataContract.EmpfängerPersonOid = _EmpfängerPersonOid;
pDataContract.Uhrzeit = _Uhrzeit;
pDataContract.ChatText = _ChatText;
pDataContract.ChatText = _ChatText;
pDataContract.IstZugestellt = _istZugestellt;
return pDataContract;
}

View File

@@ -14,6 +14,8 @@ namespace BeWo.Data.Entities
public static string PropertyName_SenderPersonOid = "SenderPersonOid";
public static string PropertyName_IstZugestellt = "IstZugestellt";
private string _ChatText;
private DateTime _Uhrzeit;
@@ -22,6 +24,8 @@ namespace BeWo.Data.Entities
private long? _SenderPersonOid;
private int _istZugestellt;
public ChatMessage()
{
_Tid = TableID.ChatMessage;
@@ -90,6 +94,22 @@ namespace BeWo.Data.Entities
}
}
}
public virtual int istZugestellt
{
get
{
return _istZugestellt;
}
set
{
if (AreDifferent(_istZugestellt, value))
{
_istZugestellt = value;
}
}
}
}

View File

@@ -15,7 +15,9 @@
<property name="IsActive" type="BS.Shared.ActivationTypeId, BS.Shared" />
<property name="SystemEntryID" type="BS.Shared.SystemEntryID, BS.Shared" />
<property name="Notice" />
<property name="Uhrzeit" column="Uhrzeit" />
<property name="Uhrzeit" column="Uhrzeit" />
<property name="ChatText" column="ChatText" />
<property name="istZugestellt" column="IstZugestellt" />
</class>
</hibernate-mapping>

View File

@@ -0,0 +1,2 @@
ALTER TABLE `1234567890`.`chatmessages`
ADD COLUMN `IstZugestellt` TINYINT(4) NULL DEFAULT NULL COMMENT '' AFTER `Uhrzeit`;

View File

@@ -14,7 +14,8 @@ namespace BeWo.Service.DCEntityMapper
pDataContract.EmpfängerPersonOid = pEntity.EmpfängerPersonOid;
pDataContract.ChatText = pEntity.ChatText;
pDataContract.Uhrzeit = pEntity.Uhrzeit;
pDataContract.IstZugestellt = pEntity.istZugestellt;
return pDataContract;
}
@@ -24,7 +25,8 @@ namespace BeWo.Service.DCEntityMapper
pEntity.EmpfängerPersonOid = pDataContract.EmpfängerPersonOid;
pEntity.Uhrzeit = pDataContract.Uhrzeit;
pEntity.ChatText = pDataContract.ChatText;
pEntity.istZugestellt = pDataContract.IstZugestellt;
return pEntity;
}

View File

@@ -515,7 +515,7 @@ namespace BeWo.Service.ServiceContracts
[FaultContract(typeof (BeWoFault))]
[OperationContract]
ChatMessageDC CreateNewChatMessagesDC(long senderOid, long empfängerOid, string message);
ChatMessageDC CreateNewChatMessagesDC(long senderOid, long empfängerOid, string message, int istZugestellt);
[FaultContract(typeof(BeWoFault))]
[OperationContract]

View File

@@ -3102,7 +3102,7 @@ namespace BeWo.Service.ServiceImplementations
}
}
public ChatMessageDC CreateNewChatMessagesDC(long senderOid, long empfängerOid, string message)
public ChatMessageDC CreateNewChatMessagesDC(long senderOid, long empfängerOid, string message, int istZugestellt)
{
try
{
@@ -3111,7 +3111,8 @@ namespace BeWo.Service.ServiceImplementations
newCode.SenderPersonOid = senderOid;
newCode.Uhrzeit = DateTime.Now;
newCode.ChatText = message;
newCode.istZugestellt = istZugestellt;
DAOFactory.GenericDAO.Insert(newCode);
var ChatMEssagesDC = MapperFactory.ChatMessagesDC_ChatMessages.MapToNewDC(newCode);

View File

@@ -22,5 +22,9 @@ namespace BS.Shared.DataContracts
[DataMember]
public string ChatText { get; set; }
[DataMember]
public int IstZugestellt { get; set; }
}
}

View File

@@ -39,6 +39,8 @@ namespace BeWoChatServer
Tenant = "";
}
public Packet(){}
public void GetData(string message)
{
Debug.WriteLine("Nachricht: " + message);