private void sendFile(GroupInfoModel group, PackageInfoModel package)
        {
            FileController fileController = new FileController();
            string filePath = fileController.getPathFromFile(group.Name, package.Name);

            if (!File.Exists(filePath))
            {
                return;
            }

            byte[] fileName = Encoding.ASCII.GetBytes(package.Name);
            byte[] fileData = File.ReadAllBytes(filePath);
            byte[] fileNameLen = BitConverter.GetBytes(fileName.Length);
            byte[] file = new byte[4 + fileName.Length + fileData.Length];

            fileNameLen.CopyTo(file, 0);
            fileName.CopyTo(file, 4);
            fileData.CopyTo(file, 4 + fileName.Length);

            try
            {
                tcpConnection.Client.Send(file);
                Console.WriteLine("File: {0} has been sent.", fileName);
            }
            catch (Exception ex)
            {
                Diagnostics.WriteToEventLog(ex.Message, EventLogEntryType.Error, 3003);
            }

            stopConnection();
        }
        public GroupInfoModel gbAddGroup(GroupInfoModel oGroup)
        {
            try
            {
                string sQry;
                GroupInfoModel oResult = new GroupInfoModel();
                SqlCeCommand sqlCmd = new SqlCeCommand();

                if (oGroup.ID == -1)
                {
                    sQry = "INSERT INTO Gruppe(Gruppe_Name)" +
                           "VALUES ('" + oGroup.Name + "')";
                }
                else
                {
                    sQry = "UPDATE Gruppe SET Gruppe_Name = '" + oGroup.Name + "'";
                }

                sqlCmd.CommandText = sQry;
                sqlCmd.Connection = Connection;
                openConnection();
                sqlCmd.ExecuteNonQuery();
                closeConnection();

                // Bearbeiteten Datensatz ermitteln und im objekt speichern
                sQry = "SELECT * FROM Gruppe WHERE Gruppe_Name = '" + oGroup.Name.ToString() + "'";
                DataTable oData = new DataTable();
                SqlCeDataAdapter oDataAdapter = new SqlCeDataAdapter(sQry, Connection);

                oDataAdapter.Fill(oData);

                foreach (DataRow oRow in oData.Rows)
                {
                    if (oData.Rows.Count == 1)
                    {
                        oResult.ID = Convert.ToInt32(oRow["Gruppe_ID"]);
                        oResult.Name = oRow["Gruppe_Name"].ToString();
                    }
                }

                return oResult;
            }
            catch (Exception ex)
            {
                Diagnostics.WriteToEventLog(ex.Message, System.Diagnostics.EventLogEntryType.Error, 3103);
                return null;
            }
        }
        public bool gbDeleteGroup(GroupInfoModel oGroup)
        {
            try
            {
                SqlCeCommand sqlCmd = new SqlCeCommand();
                string sQry;

                if (mbDataExists("Gruppe", "Gruppe_ID = " + oGroup.ID))
                {
                    // Vorher alle Clients der Gruppe ermitteln und in Standard packen
                    DataTable oData = new DataTable();
                    sQry = "SELECT * FROM Client WHERE Client_Gruppe = " + oGroup.ID;
                    SqlCeDataAdapter oDataAdapter = new SqlCeDataAdapter(sQry, Connection);
                    oDataAdapter.Fill(oData);

                    foreach (DataRow oRow in oData.Rows)
                    {
                        ClientInfoModel clientingroup = new ClientInfoModel();

                        clientingroup.ID = Convert.ToInt32(oRow["Client_ID"]);

                        gbDeleteClient(clientingroup);
                    }

                    // Gruppe löschen

                    sQry = "DELETE FROM Gruppe WHERE Gruppe_ID = " + oGroup.ID;
                    sqlCmd = new SqlCeCommand(sQry, Connection);
                    openConnection();
                    sqlCmd.ExecuteNonQuery();
                }

                if (mbDataExists("Gruppe_Softwarepaket", "Gruppe_ID = " + oGroup.ID))
                {
                    // Software-Einträge löschen, die mit der Gruppe verknüpft sind
                    sQry = "DELETE FROM Gruppe_Softwarepaket WHERE Gruppe_ID = " + oGroup.ID;

                    sqlCmd = new SqlCeCommand(sQry, Connection);
                    openConnection();
                    sqlCmd.ExecuteNonQuery();
                }

                closeConnection();

                return true;
            }
            catch (Exception ex)
            {
                Diagnostics.WriteToEventLog(ex.Message, System.Diagnostics.EventLogEntryType.Error, 3107);
                return false;
            }
        }
        public List<PackageInfoModel> GetGroupPackages(GroupInfoModel oGroup)
        {
            try
            {
                List<PackageInfoModel> oResult = new List<PackageInfoModel>();
                DataTable oData = new DataTable();
                string sQry;

                sQry = "    SELECT S.Softwarepaket_ID, S.Softwarepaket_Name " +
                       "           , S.Softwarepaket_Groesse, S.Softwarepaket_Arc " +
                       "           , S.Softwarepaket_ShowName " +
                       "      FROM Softwarepaket AS S" +
                       " LEFT JOIN Gruppe_Softwarepakete AS GS ON S.Softwarepaket_ID = GS.Softwarepaket_ID " +
                       "     WHERE GS.Gruppe_ID = " + oGroup.ID;
                SqlCeDataAdapter oDataAdapter = new SqlCeDataAdapter(sQry, Connection);
                oDataAdapter.Fill(oData);

                foreach (DataRow oRow in oData.Rows)
                {
                    PackageInfoModel package = new PackageInfoModel();

                    package.ID = Convert.ToInt32(oRow["Softwarepaket_ID"]);
                    package.Name = oRow["Softwarepaket_Name"].ToString();
                    package.size = Convert.ToInt32(oRow["Softwarepaket_Groesse"]);
                    package.arc = oRow["Softwarepaket_Arc"].ToString();
                    package.showName = oRow["Softwarepaket_ShowName"].ToString();

                    oResult.Add(package);
                }

                return oResult;
            }
            catch (Exception ex)
            {
                Diagnostics.WriteToEventLog(ex.Message, System.Diagnostics.EventLogEntryType.Error, 3015);
                return null;
            }
        }
        public List<GroupInfoModel> GetGroupInfoModels()
        {
            try
            {
                List<GroupInfoModel> oResult = new List<GroupInfoModel>();
                DataTable oData = new DataTable();

                SqlCeDataAdapter oDataAdapter = new SqlCeDataAdapter("SELECT * FROM Gruppe", Connection);
                oDataAdapter.Fill(oData);

                if (oData.Rows.Count > 0)
                {
                    foreach (DataRow oRow in oData.Rows)
                    {
                        GroupInfoModel oGroup = new GroupInfoModel();

                        oGroup.ID = Convert.ToInt32(oRow["Gruppe_ID"]);
                        oGroup.Name = oRow["Gruppe_Name"].ToString();

                        oResult.Add(oGroup);
                    }
                }

                return oResult;
            }
            catch (Exception ex)
            {
                Diagnostics.WriteToEventLog(ex.Message, System.Diagnostics.EventLogEntryType.Error, 3012);
                return null;
            }
        }
        public List<ClientInfoModel> GetGroupClients(GroupInfoModel oGroup)
        {
            try
            {
                List<ClientInfoModel> oResult = new List<ClientInfoModel>();
                DataTable oData = new DataTable();
                string sQry;

                sQry = "SELECT * FROM Client WHERE Client_Gruppe = " + oGroup.ID;
                SqlCeDataAdapter oDataAdapter = new SqlCeDataAdapter(sQry, Connection);

                oDataAdapter.Fill(oData);

                foreach (DataRow oRow in oData.Rows)
                {
                    if (!Convert.ToBoolean(oRow["Client_Administrator"]))
                    {
                        ClientInfoModel client = new ClientInfoModel();

                        client.ID = Convert.ToInt32(oRow["Client_ID"]);
                        client.macAddress = oRow["Client_MacAdresse"].ToString();
                        client.group = Convert.ToInt32(oRow["Client_Gruppe"]);
                        client.arc = oRow["Client_Arc"].ToString();
                        client.admin = Convert.ToBoolean(oRow["Client_Administrator"]);
                        client.pcName = oRow["Client_PCName"].ToString();

                        oResult.Add(client);
                    }
                }

                return oResult;
            }
            catch (Exception ex)
            {
                Diagnostics.WriteToEventLog(ex.Message, System.Diagnostics.EventLogEntryType.Error, 3014);
                return null;
            }
        }
        public GroupInfoModel GetGroupByPackage(PackageInfoModel oPackage)
        {
            GroupInfoModel oResult = new GroupInfoModel();
            string sQry;
            DataTable oData = new DataTable();

            sQry = "SELECT G.Gruppe_ID, G.Gruppe_Name FROM Gruppe_Softwarepakete AS GS LEFT JOIN Gruppe AS G ON G.Gruppe_ID = GS.Gruppe_ID WHERE GS.Softwarepaket_ID = " + oPackage.ID;
            SqlCeDataAdapter oDataAdapter = new SqlCeDataAdapter(sQry, Connection);
            oDataAdapter.Fill(oData);

            foreach (DataRow oRow in oData.Rows)
            {
                oResult.ID = Convert.ToInt32(oRow["Gruppe_ID"]);
                oResult.Name = oRow["Gruppe_Name"].ToString();
            }

            return oResult;
        }
        public GroupInfoModel GetGroupByClient(ClientInfoModel oClient)
        {
            try
            {
                GroupInfoModel oResult = new GroupInfoModel();
                DataTable oData = new DataTable();
                string sQry;

                sQry = "SELECT * FROM Gruppe WHERE Gruppe_ID = " + oClient.group.ToString();
                SqlCeDataAdapter oDataAdapter = new SqlCeDataAdapter(sQry, Connection);

                oDataAdapter.Fill(oData);

                foreach (DataRow oRow in oData.Rows)
                {
                    if (oData.Rows.Count == 1)
                    {
                        oResult.ID = Convert.ToInt32(oRow["Gruppe_ID"]);
                        oResult.Name = oRow["Gruppe_Name"].ToString();
                    }
                }
                return oResult;
            }
            catch (Exception ex)
            {
                Diagnostics.WriteToEventLog(ex.Message, System.Diagnostics.EventLogEntryType.Error, 3017);
                return null;
            }
        }