1 files added
3 files modified
| | |
| | | // } |
| | | // }) |
| | | |
| | | .post("/api/kurs/:refId/status/:usrId", async function (req, res) { |
| | | const {refId, usrId} = req.params |
| | | if (!refId || !usrId) throw {status: "error", msg: "refId and usrId requried"} |
| | | try { |
| | | const {obj_id: course_id} = await db.getObjIdFromRefId(refId) |
| | | // let data = await libIlias.abmelden(usrId, course_id) |
| | | // let data = await libIlias.deleteTeilnahme(refId, usrId) |
| | | if (!data) throw {statusCode: 404, message: "Teilnahme not found"} |
| | | return res.send(data) |
| | | } catch (ex) { |
| | | console.error(ex) |
| | | const msg = ex.msg ?? ex.message ?? ex.toString() |
| | | if (ex.statusCode) { |
| | | return res.code(ex.statusCode).send({status: "error", msg}) |
| | | } |
| | | return res.code(500).send({status: "error", msg}) |
| | | } |
| | | }) |
| | | |
| | | .delete("/api/kurs/:refId/teilnehmer/:usrId", async function (req, res) { |
| | | const {refId, usrId} = req.params |
| | | if (!refId || !usrId) throw {status: "error", msg: "refId and usrId requried"} |
| | |
| | | getUdf, |
| | | |
| | | getMemberRoleForCourse, |
| | | |
| | | setStatus, |
| | | } |
| | | |
| | | ///////////////////////////////////////////////////////////////////////// |
| | |
| | | return null |
| | | } |
| | | } |
| | | |
| | | /////// STATUS //////////////////////////////////////////////////////////////// |
| | | |
| | | /** |
| | | * Zwei Möglichkeiten: |
| | | * 1. es gibt schon einen Eintrag in ut_lp_marks, dann muss man diesen updaten |
| | | * 2. es gibt noch keinen Eintrag in ut_lp_marks, dann muss erst einer erstellt werden (NEIN! Für neuen TN sind bereits beide Einträge vorhanden, kann also wegfallen) |
| | | * |
| | | * Weiterhin haben wir es mit zwei Tabellen zu tun: |
| | | * - obj_members (passed) |
| | | * - ut_lp_marks (status) |
| | | * |
| | | * UPDATE: Wir nehmen an, dass beide Einträge schon vorhanden sind! |
| | | * |
| | | * @param courseId |
| | | * @param userId |
| | | * @param passed |
| | | * @param status |
| | | * @returns {Promise<void>} |
| | | */ |
| | | async function setStatus (courseId, userId, passed = null, status = null) { |
| | | const pool = await poolP |
| | | |
| | | // ACHTUNG Transactions funktioneren so nicht, erst mal ohne machen... |
| | | const q = ` |
| | | START TRANSACTION; |
| | | |
| | | UPDATE ${database}.ut_lp_marks ulm |
| | | SET status = ${status} |
| | | WHERE ulm.usr_id = 31793 AND ulm.obj_id = 32212; |
| | | |
| | | UPDATE ${database}.obj_members om |
| | | SET passed = ${passed} |
| | | WHERE om.usr_id = ${userId} AND om.obj_id = ${courseId}; |
| | | |
| | | COMMIT; |
| | | ` |
| | | |
| | | const q1 = ` |
| | | UPDATE ${database}.ut_lp_marks ulm |
| | | SET status = ${status} |
| | | WHERE ulm.usr_id = 31793 |
| | | AND ulm.obj_id = 32212; |
| | | ` |
| | | const q2 = ` |
| | | UPDATE ${database}.obj_members om |
| | | SET passed = ${passed} |
| | | WHERE om.usr_id = ${userId} |
| | | AND om.obj_id = ${courseId}; |
| | | ` |
| | | const [results1] = await pool.query(q1) |
| | | const [results2] = await pool.query(q2) |
| | | const {affectedRows: affectedRows1} = results1 |
| | | const {affectedRows: affectedRows2} = results2 |
| | | if (affectedRows1 && affectedRows2) { |
| | | return { |
| | | status: "ok", |
| | | } |
| | | } |
| | | else { |
| | | throw { |
| | | status: "error", |
| | | reason: {affectedRows1, affectedRows2} |
| | | } |
| | | } |
| | | // return {results1, results2} |
| | | } |
| | |
| | | const res = await fetch(url2, {method: "DELETE"}) |
| | | return await res.json() |
| | | } |
| | | |
| | | |
| New file |
| | |
| | | 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 setStatus", function () { |
| | | |
| | | const kurs = testData.kurs // TODO |
| | | const user = testData.user |
| | | |
| | | let kursId = 32212 |
| | | let userId = 31793 |
| | | const status = 2 |
| | | const passed = 1 |
| | | |
| | | beforeEach(async function () { |
| | | // TODO add kurs, add User |
| | | }) |
| | | |
| | | afterEach(async function () { |
| | | // TODO delete kurs, delete user |
| | | }) |
| | | |
| | | it("should set status and passed for a kurs TN", async function () { |
| | | const res = await db.setStatus(kursId, userId, 4, 4) |
| | | |
| | | console.dir(res, {depth: null}) |
| | | return |
| | | expect(res).to.have.property("status").and.to.equal("ok") |
| | | expect(res.command).to.equal("anmelden") |
| | | expect(res.method).to.equal("POST") |
| | | }) |
| | | |
| | | }) |
| | | |
| | | ///////////////////////////////////////////////////////////////////////// |
| | | |