Praxissofttware/services/admin.service.js
2026-01-24 18:01:23 -01:00

94 lines
1.8 KiB
JavaScript

const bcrypt = require("bcrypt");
async function createUser(
db,
title,
first_name,
last_name,
username,
password,
role,
fachrichtung,
arztnummer
) {
const hash = await bcrypt.hash(password, 10);
return new Promise((resolve, reject) => {
db.query(
`INSERT INTO users
(title, first_name, last_name, username, password, role, fachrichtung, arztnummer, active)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, 1)`,
[
title,
first_name,
last_name,
username,
hash,
role,
fachrichtung,
arztnummer,
],
(err) => {
if (err) {
if (err.code === "ER_DUP_ENTRY") {
return reject("Benutzername existiert bereits");
}
return reject("Datenbankfehler");
}
resolve();
}
);
});
}
async function getAllUsers(db, search = null) {
let sql = `
SELECT *
FROM users
WHERE 1=1
`;
const params = [];
if (search) {
sql += `
AND (
first_name LIKE ?
OR last_name LIKE ?
OR username LIKE ?
)
`;
const q = `%${search}%`;
params.push(q, q, q);
}
sql += " ORDER BY last_name, first_name";
const [rows] = await db.promise().query(sql, params);
return rows;
}
async function updateUserById(db, userId, data) {
const { title, first_name, last_name, username, role } = data;
const [result] = await db.promise().query(
`
UPDATE users
SET title = ?,
first_name = ?,
last_name = ?,
username = ?,
role = ?
WHERE id = ?
`,
[title, first_name, last_name, username, role, userId]
);
return result;
}
module.exports = {
createUser,
getAllUsers,
updateUserById,
};