diff --git a/controllers/companySettings.controller.js b/controllers/companySettings.controller.js index d1b0887..3bc22c7 100644 --- a/controllers/companySettings.controller.js +++ b/controllers/companySettings.controller.js @@ -13,14 +13,27 @@ const safe = (v) => { * GET: Firmendaten anzeigen */ async function getCompanySettings(req, res) { - const [[company]] = await db.promise().query( - "SELECT * FROM company_settings LIMIT 1" - ); + try { + const [[company]] = await db + .promise() + .query("SELECT * FROM company_settings LIMIT 1"); - res.render("admin/company-settings", { - user: req.user, - company: company || {} - }); + res.render("admin/company-settings", { + layout: "layout", // 🔥 wichtig + title: "Firmendaten", // 🔥 DAS FEHLTE + active: "companySettings", // 🔥 Sidebar aktiv + sidebarPartial: "partials/admin-sidebar", + + company: company || {}, + + user: req.session.user, // 🔥 konsistent + lang: req.session.lang || "de" + // t kommt aus res.locals + }); + } catch (err) { + console.error(err); + res.status(500).send("Datenbankfehler"); + } } /** diff --git a/controllers/dashboard.controller.js b/controllers/dashboard.controller.js index ee8df9b..bab83ca 100644 --- a/controllers/dashboard.controller.js +++ b/controllers/dashboard.controller.js @@ -8,9 +8,15 @@ async function showDashboard(req, res) { const waitingPatients = await getWaitingPatients(db); res.render("dashboard", { - + layout: "layout", // 🔥 DAS FEHLTE + + title: "Dashboard", + active: "dashboard", + sidebarPartial: "partials/sidebar", + + waitingPatients, user: req.session.user, - waitingPatients + lang: req.session.lang || "de" }); } catch (err) { console.error(err); diff --git a/locales/de.json b/locales/de.json index 8fb2d82..9be11da 100644 --- a/locales/de.json +++ b/locales/de.json @@ -66,7 +66,8 @@ "dashboard": { "welcome": "Willkommen", "waitingRoom": "Wartezimmer-Monitor", - "noWaitingPatients": "Keine Patienten im Wartezimmer." + "noWaitingPatients": "Keine Patienten im Wartezimmer.", + "title":"Dashboard" }, "adminSidebar": { @@ -75,7 +76,8 @@ "user":"Benutzer", "invocieoverview":"Rechnungsübersicht", "seriennumber":"Seriennummer", - "databasetable":"Datenbank" + "databasetable":"Datenbank", + "companysettings":"Firmendaten" }, "adminuseroverview": { diff --git a/locales/es.json b/locales/es.json index f9b5db4..2062297 100644 --- a/locales/es.json +++ b/locales/es.json @@ -39,7 +39,7 @@ "birthday":"Fecha de nacimiento", "email":"Correo electrónico", "phone":"Teléfono", - "address":"AdreDirecciónsse", + "address":"Dirección", "country":"País", "notice":"Notas", "create":"Creado", @@ -67,7 +67,8 @@ "dashboard": { "welcome": "Bienvenido", "waitingRoom": "Monitor sala de espera", - "noWaitingPatients": "No hay pacientes en la sala de espera." + "noWaitingPatients": "No hay pacientes en la sala de espera.", + "title":"Dashboard" }, "adminSidebar": { @@ -76,7 +77,8 @@ "user":"usuario", "invocieoverview":"Resumen de facturas", "seriennumber":"número de serie", - "databasetable":"base de datos" + "databasetable":"base de datos", + "companysettings":"Datos de la empresa" }, "adminuseroverview": { diff --git a/routes/admin.routes.js b/routes/admin.routes.js index 442b1cb..b152c6f 100644 --- a/routes/admin.routes.js +++ b/routes/admin.routes.js @@ -6,6 +6,7 @@ const path = require("path"); const { exec } = require("child_process"); const multer = require("multer"); const { NodeSSH } = require("node-ssh"); +const uploadLogo = require("../middleware/uploadLogo"); // ✅ Upload Ordner für Restore Dumps @@ -31,6 +32,13 @@ const { loadConfig, saveConfig } = require("../config-manager"); // ✅ DB (für resetPool) const db = require("../db"); +// ✅ Firmendaten +const { + getCompanySettings, + saveCompanySettings +} = require("../controllers/companySettings.controller"); + + /* ========================== ✅ VERWALTUNG (NUR ADMIN) ========================== */ @@ -485,4 +493,20 @@ router.post("/database/restore", requireAdmin, async (req, res) => { ========================== */ router.get("/invoices", requireAdmin, showInvoiceOverview); +/* ========================== + ✅ Firmendaten +========================== */ +router.get( + "/company-settings", + requireAdmin, + getCompanySettings +); + +router.post( + "/company-settings", + requireAdmin, + uploadLogo.single("logo"), + saveCompanySettings +); + module.exports = router; diff --git a/routes/companySettings.routes.js b/routes/companySettings.routes.js index 1d36b6a..0d7aae3 100644 --- a/routes/companySettings.routes.js +++ b/routes/companySettings.routes.js @@ -1,19 +1,21 @@ const express = require("express"); const router = express.Router(); -const { requireArzt } = require("../middleware/auth.middleware"); +const { requireAdmin } = require("../middleware/auth.middleware"); const uploadLogo = require("../middleware/uploadLogo"); const { getCompanySettings, saveCompanySettings, } = require("../controllers/companySettings.controller"); -router.get("/admin/company-settings", requireArzt, getCompanySettings); +// ✅ NUR der relative Pfad +router.get("/company-settings", requireAdmin, getCompanySettings); router.post( - "/admin/company-settings", - requireArzt, - uploadLogo.single("logo"), // 🔑 MUSS VOR DEM CONTROLLER KOMMEN - saveCompanySettings, + "/company-settings", + requireAdmin, + uploadLogo.single("logo"), + saveCompanySettings ); module.exports = router; + diff --git a/views/admin/company-settings.ejs b/views/admin/company-settings.ejs index 57c9394..f252a13 100644 --- a/views/admin/company-settings.ejs +++ b/views/admin/company-settings.ejs @@ -1,132 +1,196 @@ - - - - - Firmendaten - - - +<%- include("../partials/page-header", { + user, + title, + subtitle: "", + showUserName: true +}) %> -
-

🏢 Firmendaten

+
-
+ <%- include("../partials/flash") %> -
+
+ +
+
+ +
+ + <%= title %> +
+ + + +
- - + +
- - + +
- - + +
- - + +
- - + +
- - + +
- - + +
- - + +
- - + +
- - + +
- - + +
- - + +
- - + +
- - + +
- - + + - <% if (company.invoice_logo_path) { %> -
- Aktuelles Logo:
- -
- <% } %> + <% if (settings.invoice_logo_path) { %> +
+ Aktuelles Logo:
+
+ <% } %> +
-
+
-
- - Zurück -
+
+ - + + Zurück + +
+ + + +
+
+ +
- - - diff --git a/views/dashboard.ejs b/views/dashboard.ejs index 5708ea5..baca712 100644 --- a/views/dashboard.ejs +++ b/views/dashboard.ejs @@ -1,66 +1,43 @@ -
+ - - <%- include("partials/sidebar", { user, active: "patients", lang }) %> +<%- include("partials/page-header", { + user, + title: t.dashboard.title, + subtitle: "", + showUserName: true, + hideDashboardButton: true +}) %> - -
+
- - <%- include("partials/page-header", { - user, - title: "Dashboard", - subtitle: "", - showUserName: true, - hideDashboardButton: true - }) %> + <%- include("partials/flash") %> -
+
+
🪑 <%= t.dashboard.waitingRoom %>
- - <%- include("partials/flash") %> - - -
-
🪑 <%=t.global.waitingroomtext%>
- -
- <% if (waitingPatients && waitingPatients.length > 0) { %> - - <% waitingPatients.forEach(p => { %> - - <% if (user.role === 'arzt') { %> -
- -
- <% } else { %> -
-
-
<%= p.firstname %> <%= p.lastname %>
-
- <%= new Date(p.birthdate).toLocaleDateString("de-DE") %> -
-
-
- <% } %> - - <% }) %> +
+ <% if (waitingPatients && waitingPatients.length > 0) { %> + <% waitingPatients.forEach(p => { %> + <% if (user.role === "arzt") { %> +
+ +
<% } else { %> -
<%=t.global.waitingroomtextnopatient%>
+
+
<%= p.firstname %> <%= p.lastname %>
+
<% } %> -
-
+ <% }) %> + <% } else { %> +
+ <%= t.dashboard.noWaitingPatients %> +
+ <% } %>
+
diff --git a/views/layout.ejs b/views/layout.ejs index b854ac1..5e4b5ab 100644 --- a/views/layout.ejs +++ b/views/layout.ejs @@ -20,7 +20,6 @@
- <% if (typeof sidebarPartial !== "undefined" && sidebarPartial) { %> <%- include(sidebarPartial, { diff --git a/views/partials/admin-sidebar.ejs b/views/partials/admin-sidebar.ejs index 0403678..fdce966 100644 --- a/views/partials/admin-sidebar.ejs +++ b/views/partials/admin-sidebar.ejs @@ -26,6 +26,18 @@