Merge branch 'master' of ssh://float.beyondsoft.de/git/beyondSoft/BeWo
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
2
Model/Changes_25_07_2016.txt
Normal file
2
Model/Changes_25_07_2016.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
ALTER TABLE `1234567890`.`chatmessages`
|
||||
ADD COLUMN `IstZugestellt` TINYINT(4) NULL DEFAULT NULL COMMENT '' AFTER `Uhrzeit`;
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -22,5 +22,9 @@ namespace BS.Shared.DataContracts
|
||||
[DataMember]
|
||||
public string ChatText { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public int IstZugestellt { get; set; }
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -39,6 +39,8 @@ namespace BeWoChatServer
|
||||
Tenant = "";
|
||||
}
|
||||
|
||||
public Packet(){}
|
||||
|
||||
public void GetData(string message)
|
||||
{
|
||||
Debug.WriteLine("Nachricht: " + message);
|
||||
|
||||
Reference in New Issue
Block a user