| | |
| | | getUserByUserId, |
| | | getUserDefinedFields, |
| | | getUserDefinedField, |
| | | getUserTeilnahmen, |
| | | |
| | | getObjIdFromRefId, |
| | | getRefIdFromObjId, |
| | |
| | | getKurse, |
| | | getKurs, |
| | | getKursItems, |
| | | getKursItems2, |
| | | // getKursByObjId, |
| | | // getKursByRefId, |
| | | getKursTeilnehmer, |
| | | getKursTeilnehmerCount, |
| | | |
| | | } |
| | | |
| | | ///////////////////////////////////////////////////////////////////////// |
| | |
| | | |
| | | async function getUserByLogin (login) { |
| | | const sel = `usr_id, login, firstname, lastname, gender, email, institution, street, city, zipcode, country, department, active` |
| | | // TODO user defined fields |
| | | // TODO check args for SQL Injection |
| | | |
| | | const pool = await poolP |
| | | const [results, fields] = await pool.query( |
| | | `SELECT ${sel} |
| | | FROM ${database}.usr_data AS ud |
| | | WHERE login = '${login}' |
| | | AND login REGEXP '^[0-9]+$'` |
| | | WHERE login = '${login}'` |
| | | ) |
| | | return joinUDF(results[0]) |
| | | } |
| | | |
| | | async function getUserByUserId (userId) { |
| | | const sel = `usr_id, login, firstname, lastname, gender, email, institution, street, city, zipcode, country, department, active` |
| | | // TODO user defined fields |
| | | // TODO check args for SQL Injection |
| | | |
| | | const pool = await poolP |
| | | const [results, fields] = await pool.query( |
| | | `SELECT ${sel} |
| | | FROM ${database}.usr_data AS ud |
| | | WHERE usr_id = '${userId}' |
| | | AND login REGEXP '^[0-9]+$'` |
| | | WHERE usr_id = '${userId}'` |
| | | ) |
| | | return joinUDF(results[0]) |
| | | } |
| | |
| | | } |
| | | |
| | | async function joinUDF (user) { |
| | | if(!user) return user |
| | | if (!user) return user |
| | | const fields = await getUserDefinedField(user.usr_id) |
| | | for (const field of fields) { |
| | | user[field.field_name] = field.value |
| | |
| | | const pool = await poolP |
| | | const q = `SELECT or2.ref_id, or2.obj_id, od.title, od.description, od.type |
| | | FROM ${database}.object_reference or2 |
| | | INNER JOIN ${database}.object_data od ON od.obj_id = or2.obj_id |
| | | WHERE od.type = 'crs' AND or2.deleted IS NULL |
| | | INNER JOIN ${database}.object_data od ON od.obj_id = or2.obj_id |
| | | WHERE od.type = 'crs' |
| | | AND or2.deleted IS NULL |
| | | ` |
| | | const [results] = await pool.query(q) |
| | | return results |
| | |
| | | |
| | | async function getKurs (ref_id) { |
| | | const pool = await poolP |
| | | const q = `SELECT or2.ref_id, or2.obj_id, od.title, od.description, od.type |
| | | const q = `SELECT or2.ref_id, or2.obj_id, od.title, od.description, od.type, od.create_date |
| | | FROM ${database}.object_reference or2 |
| | | INNER JOIN ${database}.object_data od ON od.obj_id = or2.obj_id |
| | | WHERE or2.ref_id = '${ref_id}' |
| | | ` |
| | | let [results] = await pool.query(q) |
| | | results = results.length? results[0] : undefined |
| | | results = results.length ? results[0] : undefined |
| | | return results |
| | | } |
| | | |
| | | async function getKursItems (ref_id) { |
| | | const pool = await poolP |
| | | // const q = `SELECT or2.ref_id, or2.obj_id, od.title, od.description, od.type |
| | |
| | | return results |
| | | } |
| | | |
| | | async function getKursItems2 (ref_id) { |
| | | const pool = await poolP |
| | | const q = ` |
| | | WITH RECURSIVE tree (parent_id, obj_id, ref_id, title, type ) AS ( |
| | | SELECT ci.parent_id, or2.obj_id , ci.obj_id as ref_id, od.title, od.type |
| | | FROM ${database}.crs_items ci |
| | | INNER JOIN ${database}.object_reference or2 ON or2.ref_id = ci.obj_id |
| | | INNER JOIN ${database}.object_data od ON od.obj_id = or2.obj_id |
| | | WHERE ci.obj_id = 3503 -- Kurs ref_id |
| | | AND or2.deleted is NULL |
| | | |
| | | UNION ALL |
| | | |
| | | SELECT child.parent_id, or2.obj_id , child.obj_id as ref_id, od.title, od.type |
| | | FROM ${database}.crs_items child |
| | | INNER JOIN ${database}.object_reference or2 ON or2.ref_id = child.obj_id |
| | | INNER JOIN ${database}.object_data od ON od.obj_id = or2.obj_id |
| | | JOIN tree ON child.parent_id = tree.ref_id |
| | | WHERE or2.deleted is NULL |
| | | ) |
| | | SELECT * FROM tree |
| | | ORDER BY tree.ref_id |
| | | ` |
| | | const [results] = await pool.query(q) |
| | | return results |
| | | } |
| | | |
| | | async function getKursTeilnehmer (ref_id) { |
| | | const pool = await poolP |
| | | const q = `SELECT ci.parent_id, or2.ref_id, or2.obj_id, od.title, od.type, om.usr_id, ud.login, ud.firstname, ud.lastname, ud.active, om.passed, ulm.status |
| | | const q = `SELECT ci.parent_id, |
| | | or2.ref_id, |
| | | or2.obj_id, |
| | | od.title, |
| | | od.type, |
| | | om.usr_id, |
| | | ud.login, |
| | | ud.firstname, |
| | | ud.lastname, |
| | | ud.active, |
| | | om.passed, |
| | | ulm.status, |
| | | ulm.status_changed |
| | | FROM ${database}.crs_items ci |
| | | INNER JOIN ${database}.object_reference or2 ON or2.ref_id = ci.obj_id |
| | | INNER JOIN ${database}.object_data od ON od.obj_id = or2.obj_id |
| | | INNER JOIN ${database}.obj_members om ON om.obj_id = or2.obj_id |
| | | INNER JOIN ${database}.usr_data ud ON ud.usr_id = om.usr_id |
| | | LEFT JOIN ${database}.ut_lp_marks ulm ON ulm.obj_id = or2.obj_id AND ud.usr_id = ulm.usr_id |
| | | INNER JOIN ${database}.object_reference or2 ON or2.ref_id = ci.obj_id |
| | | INNER JOIN ${database}.object_data od ON od.obj_id = or2.obj_id |
| | | INNER JOIN ${database}.obj_members om ON om.obj_id = or2.obj_id AND om.member = 1 |
| | | INNER JOIN ${database}.usr_data ud ON ud.usr_id = om.usr_id |
| | | LEFT JOIN ${database}.ut_lp_marks ulm ON ulm.obj_id = or2.obj_id AND ud.usr_id = ulm.usr_id |
| | | WHERE (or2.ref_id = ${ref_id} OR parent_id = ${ref_id}) |
| | | ORDER BY usr_id |
| | | ` |
| | |
| | | const pool = await poolP |
| | | const q = `SELECT COUNT(*) as count |
| | | FROM ${database}.crs_items ci |
| | | INNER JOIN ${database}.object_reference or2 ON or2.ref_id = ci.obj_id |
| | | INNER JOIN ${database}.object_data od ON od.obj_id = or2.obj_id |
| | | INNER JOIN ${database}.obj_members om ON om.obj_id = or2.obj_id |
| | | INNER JOIN ${database}.usr_data ud ON ud.usr_id = om.usr_id |
| | | WHERE (or2.ref_id = ${ref_id} OR parent_id = ${ref_id}) |
| | | INNER JOIN ${database}.object_reference or2 |
| | | ON or2.ref_id = ci.obj_id |
| | | INNER JOIN ${database}.object_data od ON od.obj_id = or2.obj_id |
| | | INNER JOIN ${database}.obj_members om ON om.obj_id = or2.obj_id AND om.member = 1 |
| | | INNER JOIN ${database}.usr_data ud ON ud.usr_id = om.usr_id |
| | | LEFT JOIN ${database}.ut_lp_marks ulm ON ulm.obj_id = or2.obj_id AND ud.usr_id = ulm.usr_id |
| | | WHERE (or2.ref_id = ${ref_id} |
| | | OR parent_id = ${ref_id}) |
| | | ORDER BY usr_id |
| | | ` |
| | | let [results] = await pool.query(q) |
| | | results = results.length? results[0] : undefined |
| | | return { ref_id, count: results.count } |
| | | results = results.length ? results[0] : undefined |
| | | return {ref_id, count: results.count} |
| | | } |
| | | |
| | | async function getUserTeilnahmen (usr_id) { |
| | | const pool = await poolP |
| | | 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 |
| | | } |