Beispiel #1
0
        public int AddNewLM(string guid, int categoryId, string title, string licenceKey, bool contentProtected, int calCount)
        {
            if (!Parent.CurrentUser.ConnectionString.ConnectionString.EndsWith(Helper.EmbeddedDbExtension))
            {
                ConnectionStringStruct css = Parent.CurrentUser.ConnectionString;
                css.ConnectionString += @"\" + title.Replace(@"\", "_") + Helper.EmbeddedDbExtension;
                css.Typ = DatabaseType.MsSqlCe;
                Parent.CurrentUser.ConnectionString = css;
            }
            {
                //replace invalid filename characters
                ConnectionStringStruct css = Parent.CurrentUser.ConnectionString;
                css.ConnectionString = Helper.FilterInvalidFilenameCharacters(css.ConnectionString);
                Parent.CurrentUser.ConnectionString = css;
            }
            if (File.Exists(Parent.CurrentUser.ConnectionString.ConnectionString))
            {
                int i = 1;
                while (File.Exists(Parent.CurrentUser.ConnectionString.ConnectionString.Replace(Helper.EmbeddedDbExtension, "_" + i + Helper.EmbeddedDbExtension)))
                {
                    i++;
                }

                ConnectionStringStruct css = Parent.CurrentUser.ConnectionString;
                css.ConnectionString = css.ConnectionString.Replace(Helper.EmbeddedDbExtension, "_" + i + Helper.EmbeddedDbExtension);
                Parent.CurrentUser.ConnectionString = css;
            }
            if (!Directory.Exists(Path.GetDirectoryName(Parent.CurrentUser.ConnectionString.ConnectionString)))
            {
                Directory.CreateDirectory(Path.GetDirectoryName(Parent.CurrentUser.ConnectionString.ConnectionString));
            }
            using (SqlCeEngine clientEngine = new SqlCeEngine("Data Source=" + Parent.CurrentUser.ConnectionString.ConnectionString))
            {
                clientEngine.CreateDatabase();
                clientEngine.Dispose();
            }
            using (SqlCeCommand cmd = MSSQLCEConn.CreateCommand(Parent.CurrentUser))
            {
                cmd.CommandText = Resources.MsSqlCeDbCreateScript;
                MSSQLCEConn.ExecuteNonQuery(cmd);
            }
            MSSQLCEConn.ApplyIndicesToDatabase(MSSQLCEConn.GetConnection(Parent.CurrentUser));
            int cat_id;

            using (SqlCeCommand cmd = MSSQLCEConn.CreateCommand(Parent.CurrentUser))
            {
                cmd.CommandText = "SELECT id FROM Categories WHERE global_id=@cat_id;";
                cmd.Parameters.Add("@cat_id", categoryId);
                cat_id = MSSQLCEConn.ExecuteScalar <int>(cmd).Value;
            }
            using (SqlCeCommand cmd = MSSQLCEConn.CreateCommand(Parent.CurrentUser))
            {
                cmd.CommandText = "INSERT INTO LearningModules (guid, title, categories_id, default_settings_id, allowed_settings_id, licence_key, content_protected, cal_count) " +
                                  "VALUES (@guid, @title, @cat_id, @dset, @aset, @lk, @cp, @cals); SELECT @@IDENTITY;";
                cmd.Parameters.Add("@guid", guid);
                cmd.Parameters.Add("@title", title);
                cmd.Parameters.Add("@cat_id", cat_id);
                cmd.Parameters.Add("@lk", licenceKey);
                cmd.Parameters.Add("@cp", contentProtected);
                cmd.Parameters.Add("@cals", calCount);
                cmd.Parameters.Add("@dset", MsSqlCeSettingsConnector.CreateNewDefaultSettings(Parent));
                cmd.Parameters.Add("@aset", MsSqlCeSettingsConnector.CreateNewAllowedSettings(Parent));

                return(MSSQLCEConn.ExecuteScalar <int>(cmd).Value);
            }
        }