From dd1f381e57312be59e15f8792a06f3f0cd922d76 Mon Sep 17 00:00:00 2001
From: alex <alex@alexloehr.net>
Date: Sat, 12 Jul 2025 13:19:19 +0000
Subject: [PATCH] adding createKurs

---
 test/testAbmelden.js          |   15 +++++--
 lib/libIlias.js               |   18 +++++++++
 php/globus-ilias-rest/api.php |   20 ++++++++++
 test/data.js                  |   10 +++++
 test/testCreateKurs.js        |   33 ++++++++++++++++
 5 files changed, 91 insertions(+), 5 deletions(-)

diff --git a/lib/libIlias.js b/lib/libIlias.js
index bed78e0..4d8e7c2 100644
--- a/lib/libIlias.js
+++ b/lib/libIlias.js
@@ -13,6 +13,8 @@
 
    importIliasUser,
 
+   createKurs,
+
    anmelden,
    abmelden,
 
@@ -147,6 +149,22 @@
 //    }
 // }
 
+/////// KURS ////////////////////////////////////////////////////////////////
+
+async function createKurs(kurs) {
+   const sp = new URLSearchParams({
+      command: "createKurs",
+      token: iliastoken,
+   })
+   let url2 = `${url}?${sp.toString()}`
+   const res = await fetch(url2, {
+      method: "POST",
+      body: JSON.stringify(kurs),
+   })
+   return await res.json()
+}
+
+
 /////// Anmelden / Abmelden ////////////////////////////////////////////////////////////////
 
 async function anmelden (usr_id, course_id) {
diff --git a/php/globus-ilias-rest/api.php b/php/globus-ilias-rest/api.php
index 696f431..f79ea9d 100644
--- a/php/globus-ilias-rest/api.php
+++ b/php/globus-ilias-rest/api.php
@@ -74,6 +74,16 @@
                     $res["status"] = "ok";
                     break;
                 }
+            /////// Kurs ////////////////////////////////////////////////////////////////
+            case "createKurs":
+                if ($method == "POST") {
+                    $body = file_get_contents('php://input');
+                    $data = json_decode($body, true);
+                    $res["ref_id"] = createKurs($data);
+                    $res["status"] = "ok";
+                    $res["msg"] = "User Import OK";
+                    break;
+                }
             //// Anmelden / Abmelden //////////////////////////////////////////////////////////
             case "anmelden": // params: usr_id, course_id, role
                 if ($method == "POST") {
@@ -146,6 +156,15 @@
     return $usr_id;
 }
 
+function createKurs($data) {
+// TODO ätzend kompliziert
+// ilSoapCourseAdministration->addCourse()
+// beispile wie Kurs erstellt wird in : ilECSCourseCreationHandler->createParallelCourse
+//     $course = new ilObjCourse();
+//     $course->create();
+    throw new Exception("not implemented");
+}
+
 // ACHTUNG course_id muss obj_id sein!
 // die Rolle muss aus dem Kurs gelesen werden
 function anmelden($usr_id, $course_id) {
@@ -160,6 +179,7 @@
     $course = ilObjectFactory::getInstanceByObjId($course_id);
     $membersObject = $course->getMembersObject();
     return $membersObject->delete($usr_id);
+    // TODO auch aus Rolle löschen - wird eigentlich gemacht in ilCourseParticipants->delete()
 }
 
 function deleteUser($obj_id, $dry)
diff --git a/test/data.js b/test/data.js
index a1989ed..0861959 100644
--- a/test/data.js
+++ b/test/data.js
@@ -23,7 +23,17 @@
    },
 }
 
+const kurs = {
+   "title": "Globus-ILIAS-Rest Testkurs",
+   "description": "ein Kurs zum Testen",
+   "online": false,
+   "public": false,
+   "maxTn": 20,
+   "registerNo": true
+}
+
 module.exports = {
    user,
+   kurs,
 }
 
diff --git a/test/testAbmelden.js b/test/testAbmelden.js
index c1d56c8..f8289f8 100644
--- a/test/testAbmelden.js
+++ b/test/testAbmelden.js
@@ -12,13 +12,14 @@
    const kurs = testData.kurs // TODO
    const user = testData.user
 
-   let kursId = 31938
-   let userId = 31954
+   let kursId = null
+   let userId = null
 
    beforeEach(async function () {
-      // TODO add kurs
-      // const res = await libIlias.importIliasUser(user)
-      // userId = res.usr_id
+      // const {usr_id:userId} = await libIlias.importIliasUser(user)
+      const userRes  = await libIlias.importIliasUser(user)
+      const kursRes  = await libIlias.
+      console.log(data)
    })
 
    afterEach(async function () {
@@ -27,6 +28,10 @@
    })
 
    it("should import a new user to ILIAS", async function () {
+      console.log("!111")
+      console.error("finish test")
+      return
+
       console.log("++abmelden", userId, kursId)
       const res = await libIlias.abmelden(userId, kursId)
       console.dir(res, {depth: null})
diff --git a/test/testCreateKurs.js b/test/testCreateKurs.js
new file mode 100644
index 0000000..755f244
--- /dev/null
+++ b/test/testCreateKurs.js
@@ -0,0 +1,33 @@
+const expect = require("chai").expect
+
+const settings = require("../settings")
+const libIlias = require("../lib/libIlias")
+const db = require("../lib/db")
+const testData = require("./data")
+
+/////////////////////////////////////////////////////////////////////////
+
+describe("the function anmelden", function () {
+
+   const kurs = testData.kurs // TODO
+   let kursId = 31938
+
+   beforeEach(async function () {
+   })
+
+   afterEach(async function () {
+   })
+
+   it("should create a new Kurs in ILIAS", async function () {
+      console.log("++createKurs", kurs)
+      const res = await libIlias.createKurs(kurs)
+      console.dir(res, {depth: null})
+      // expect(res).to.have.property("status").and.to.equal("ok")
+      // expect(res.command).to.equal("anmelden")
+      // expect(res.method).to.equal("POST")
+   })
+
+})
+
+/////////////////////////////////////////////////////////////////////////
+

--
Gitblit v1.8.0