Beispiel #1
0
        private void DataOntvangenVanClient(ConnectedClient client, string data)
        {
            txtOntvangen.Text += data + Environment.NewLine;
            string[] data2 = data.Split(';');
            switch (data2[0])
            {
            case "Login":
                DataRow[] rijen = ChatDatabase.Tables[0].Select("gebruikersnaam='" + data2[1] + "'", "id ASC");
                if (rijen.Length == 0)
                {
                    client.Write("Gebruiker bestaat niet");
                }
                else if (rijen.First().Field <string>(2) == data2[2])
                {
                    lstGebruikers.Items.Add(data2[1]);

                    client.User_ID = rijen.First().Field <int>(0);
                    client.Write("Ingelogd;" + client.User_ID.ToString() + "," + data2[1]);
                    foreach (ConnectedClient cl in Clients)
                    {
                        if (cl.CanWrite & (cl.User_ID != -1))
                        {
                            cl.Write(string.Join(";", (new string[] { "Online users" }).Union(Clients
                                                                                              .Except(new ConnectedClient[] { cl })
                                                                                              .Where(T => T.User_ID != -1)
                                                                                              .Select(T => T.User_ID + "," + ChatDatabase.Tables[0].Select("id=" + T.User_ID.ToString(), "id ASC").First().Field <string>(1))
                                                                                              ).ToArray()));
                        }
                    }
                }
                else
                {
                    client.Write("Foutief wachtwoord");
                }
                break;

            case "Logout":
                client.Write("Uitgelogd");
                lstGebruikers.Items.Remove(ChatDatabase.Tables[0].Select("id=" + client.User_ID.ToString()).First().Field <string>(1));
                client.User_ID = -1;
                foreach (ConnectedClient cl in Clients.Except(new ConnectedClient[] { client }))
                {
                    if (cl.CanWrite & (cl.User_ID != -1))
                    {
                        cl.Write(string.Join(";", (new string[] { "Online users" }).Union(Clients
                                                                                          .Except(new ConnectedClient[] { cl })
                                                                                          .Where(T => T.User_ID != -1)
                                                                                          .Select(T => T.User_ID + "," + ChatDatabase.Tables[0].Select("id=" + T.User_ID.ToString(), "id ASC").First().Field <string>(1))
                                                                                          ).ToArray()));
                    }
                }
                client.DataOntvangen -= Client_DataOntvangen;
                client.StopListening();
                break;

            case "Registreer":
                DataRow[] rijen2 = ChatDatabase.Tables[0].Select("gebruikersnaam='" + data2[1] + "'", "id ASC");
                if (data2[1].Replace(" ", "").Replace("\r", "").Replace("\n", "").Replace("\t", "") == "")
                {
                    client.Write("Geef een gebruikersnaam op");
                }
                else if (data2[2].Replace(" ", "").Replace("\r", "").Replace("\n", "").Replace("\t", "") == "")
                {
                    client.Write("Geef een wachtwoord op");
                }
                else if (rijen2.Length == 0)
                {
                    DataRow nieuw = ChatDatabase.Tables[0].NewRow();
                    nieuw.SetField <string>(1, data2[1]);
                    nieuw.SetField <string>(2, data2[2]);
                    ChatDatabase.Tables[0].Rows.Add(nieuw);
                    client.Write("Gebruiker aangemaakt");
                    ChatDatabase.WriteXml(db_file);
                }
                else
                {
                    client.Write("Gebruikersnaam niet meer beschikbaar");
                }
                break;

            case "Bericht":
                // Bericht;ik.id;ik.user;dest.id;bericht
                ConnectedClient[] dest = Clients.Where(T => T.User_ID == Convert.ToInt32(data2[3])).ToArray();
                if (dest.Length == 1)
                {
                    dest[0].Write(data);
                }
                DataRow nieuw2 = ChatDatabase.Tables[1].NewRow();
                nieuw2.SetField <int>(1, Convert.ToInt32(data2[1]));
                nieuw2.SetField <int>(2, Convert.ToInt32(data2[3]));
                nieuw2.SetField <string>(3, data2[4]);
                //nieuw2.SetField<bool>(4, dest.Length == 1);
                //nieuw2.SetField<bool>(5, false);
                ChatDatabase.Tables[1].Rows.Add(nieuw2);
                ChatDatabase.WriteXml(db_file);
                break;
            }
        }