REST Service for POPCORN - ILIAS
alex
2025-06-04 62f8d28c73eb042edf9c31127f4c87f1f9e6ac4c
adding user teilnahmen
3 files modified
86 ■■■■ changed files
app.js 9 ●●●●● patch | view | raw | blame | history
lib/db.js 12 ●●●●● patch | view | raw | blame | history
vue/src/pages/UserDetail.vue 65 ●●●● patch | view | raw | blame | history
app.js
@@ -66,11 +66,12 @@
      }
   })
   .get("/api/user/teilnahmen/:userId", async function (req, res) {
      const {userid} = req.params
      if(!userid || isNaN(Number(userid))) {
         return res.code(500).send({status: "error", msg: "userid error"})
      let userId = req.params.userId
      console.log(`--------${userId}-----------`, typeof userId)
      if(!userId || isNaN(Number(userId))) {
         return res.code(500).send({status: "error", msg: "userId error"})
      }
      const tn = await db.getUserTeilnahmen(userid)
      const tn = await db.getUserTeilnahmen(userId)
      if (tn) {
         return res.send(tn)
      }
lib/db.js
@@ -266,15 +266,17 @@
async function getUserTeilnahmen (usr_id) {
   const pool = await poolP
   const q = `SELECT om.obj_id, om.usr_id, od.title, ulm.status, om.passed, ulm.status_changed
              FROM ilias_globusfachtest.obj_members om
                       INNER JOIN ilias_globusfachtest.usr_data ud ON ud.usr_id = om.usr_id
                       INNER JOIN ilias_globusfachtest.object_data od ON od.obj_id = om.obj_id
                       LEFT JOIN ilias_globusfachtest.ut_lp_marks ulm
   const q = `SELECT om.obj_id, or2.ref_id , om.usr_id, od.title , ulm.status, om.passed, ulm.status_changed
              FROM ${database}.obj_members om
                       INNER JOIN ${database}.object_reference or2 ON or2.obj_id = om.obj_id
                       INNER JOIN ${database}.usr_data ud ON ud.usr_id = om.usr_id
                       INNER JOIN ${database}.object_data od ON od.obj_id = om.obj_id
                       LEFT JOIN ${database}.ut_lp_marks ulm
                                 ON ulm.usr_id = om.usr_id AND ulm.obj_id = om.obj_id
              WHERE om.usr_id = ${usr_id}
                AND om.member = 1
   `
   console.log(q)
   const [results] = await pool.query(q)
   return results
}
vue/src/pages/UserDetail.vue
@@ -2,7 +2,7 @@
import {useRoute} from 'vue-router'
import {onMounted, reactive, ref} from "vue"
import {getUser, getUserTeilnahmen, iliasBase} from "../lib/api"
import {getUser, getUserTeilnahmen, iliasBase, routerBase} from "@/lib/api"
import LinkExtern from "../components/LinkExtern.vue"
const route = useRoute()
@@ -21,6 +21,7 @@
   console.log(data)
   user.value = data
   console.log(3333)
   const tn = await getUserTeilnahmen(userId)
   console.log(tn)
   teilnahmen.value = tn
@@ -76,39 +77,37 @@
      </div>
      <!--      <table v-if="user">-->
      <!--         <tbody>-->
      <!--            <tr>-->
      <!--               <td>user_id</td>-->
      <!--               <td>{{user.usr_id}}</td>-->
      <!--               <td>login</td>-->
      <!--               <td>{{user.login}}</td>-->
      <!--            </tr>-->
      <!--            <tr>-->
      <!--               <td>firstname</td>-->
      <!--               <td>{{user.firstname}}</td>-->
      <!--               <td>lastname</td>-->
      <!--               <td>{{user.lastname}}</td>-->
      <!--            </tr>-->
      <!--            <tr>-->
      <!--               <td>usr_id</td>-->
      <!--               <td>{{user.usr_id}}</td>-->
      <!--            </tr>-->
      <!--            <tr>-->
      <!--               <td>usr_id</td>-->
      <!--               <td>{{user.usr_id}}</td>-->
      <!--            </tr>-->
      <!--            <tr>-->
      <!--               <td>usr_id</td>-->
      <!--               <td>{{user.usr_id}}</td>-->
      <!--            </tr>-->
      <!--            <tr>-->
      <!--               <td>usr_id</td>-->
      <!--               <td>{{user.usr_id}}</td>-->
      <!--            </tr>-->
      <h2>Teilnahmen</h2>
      <table>
         <thead>
            <tr>
               <th>obj_id</th>
               <th>ref_id</th>
               <th>usr_id</th>
               <th>title</th>
               <th>passed</th>
               <th>status</th>
               <th>status_changed</th>
            </tr>
         </thead>
         <tbody>
            <tr v-for="tn in teilnahmen">
               <td>{{tn.obj_id}}</td>
               <td>
                  <RouterLink :to="`${routerBase}/ui/kurs/${tn.ref_id}`">
                     {{tn.ref_id}}
                  </RouterLink>
               </td>
               <td>{{tn.usr_id}}</td>
               <td>{{tn.title}}</td>
               <td>{{tn.passed}}</td>
               <td>{{tn.status}}</td>
               <td>{{tn.status_changed}}</td>
            </tr>
         </tbody>
      </table>
      <!--         </tbody>-->
      <!--      </table>-->
<!--      <pre>{{teilnahmen}}</pre>-->
   </div>