Add Prozent im ADmin für wochenende
This commit is contained in:
50
database.js
50
database.js
@@ -20,7 +20,7 @@ function initDatabase() {
|
||||
last_week_start TEXT,
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
||||
)`);
|
||||
|
||||
|
||||
// Migration: last_week_start Spalte hinzufügen falls sie nicht existiert
|
||||
db.run(`ALTER TABLE users ADD COLUMN last_week_start TEXT`, (err) => {
|
||||
// Fehler ignorieren wenn Spalte bereits existiert
|
||||
@@ -51,7 +51,7 @@ function initDatabase() {
|
||||
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (user_id) REFERENCES users(id)
|
||||
)`);
|
||||
|
||||
|
||||
// Migration: Tätigkeitsfelder hinzufügen falls sie nicht existieren
|
||||
const activityColumns = [
|
||||
'activity1_desc', 'activity1_hours',
|
||||
@@ -60,7 +60,7 @@ function initDatabase() {
|
||||
'activity4_desc', 'activity4_hours',
|
||||
'activity5_desc', 'activity5_hours'
|
||||
];
|
||||
|
||||
|
||||
activityColumns.forEach(col => {
|
||||
const colType = col.includes('_hours') ? 'REAL' : 'TEXT';
|
||||
db.run(`ALTER TABLE timesheet_entries ADD COLUMN ${col} ${colType}`, (err) => {
|
||||
@@ -85,18 +85,18 @@ function initDatabase() {
|
||||
FOREIGN KEY (reviewed_by) REFERENCES users(id),
|
||||
FOREIGN KEY (pdf_downloaded_by) REFERENCES users(id)
|
||||
)`);
|
||||
|
||||
|
||||
// Migration: version Spalte hinzufügen falls sie nicht existiert
|
||||
db.run(`ALTER TABLE weekly_timesheets ADD COLUMN version INTEGER DEFAULT 1`, (err) => {
|
||||
// Fehler ignorieren wenn Spalte bereits existiert
|
||||
// Wenn Spalte neu erstellt wurde, bestehende Einträge haben automatisch version = 1
|
||||
});
|
||||
|
||||
|
||||
// Migration: pdf_downloaded_at Spalte hinzufügen falls sie nicht existiert
|
||||
db.run(`ALTER TABLE weekly_timesheets ADD COLUMN pdf_downloaded_at DATETIME`, (err) => {
|
||||
// Fehler ignorieren wenn Spalte bereits existiert
|
||||
});
|
||||
|
||||
|
||||
// Migration: pdf_downloaded_by Spalte hinzufügen falls sie nicht existiert
|
||||
db.run(`ALTER TABLE weekly_timesheets ADD COLUMN pdf_downloaded_by INTEGER`, (err) => {
|
||||
// Fehler ignorieren wenn Spalte bereits existiert
|
||||
@@ -124,7 +124,7 @@ function initDatabase() {
|
||||
'activity3_project_number', 'activity4_project_number',
|
||||
'activity5_project_number'
|
||||
];
|
||||
|
||||
|
||||
projectNumberColumns.forEach(col => {
|
||||
db.run(`ALTER TABLE timesheet_entries ADD COLUMN ${col} TEXT`, (err) => {
|
||||
// Fehler ignorieren wenn Spalte bereits existiert
|
||||
@@ -141,7 +141,7 @@ function initDatabase() {
|
||||
console.warn('Warnung beim Hinzufügen der Spalte overtime_taken_hours:', err.message);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
db.run(`ALTER TABLE timesheet_entries ADD COLUMN vacation_type TEXT`, (err) => {
|
||||
// Fehler ignorieren wenn Spalte bereits existiert
|
||||
if (err && !err.message.includes('duplicate column')) {
|
||||
@@ -164,7 +164,7 @@ function initDatabase() {
|
||||
console.warn('Warnung beim Hinzufügen der Spalte pause_start_time:', err.message);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
db.run(`ALTER TABLE timesheet_entries ADD COLUMN pause_end_time TEXT`, (err) => {
|
||||
// Fehler ignorieren wenn Spalte bereits existiert
|
||||
if (err && !err.message.includes('duplicate column')) {
|
||||
@@ -176,15 +176,15 @@ function initDatabase() {
|
||||
db.run(`ALTER TABLE users ADD COLUMN personalnummer TEXT`, (err) => {
|
||||
// Fehler ignorieren wenn Spalte bereits existiert
|
||||
});
|
||||
|
||||
|
||||
db.run(`ALTER TABLE users ADD COLUMN wochenstunden REAL`, (err) => {
|
||||
// Fehler ignorieren wenn Spalte bereits existiert
|
||||
});
|
||||
|
||||
|
||||
db.run(`ALTER TABLE users ADD COLUMN urlaubstage REAL`, (err) => {
|
||||
// Fehler ignorieren wenn Spalte bereits existiert
|
||||
});
|
||||
|
||||
|
||||
// Migration: Überstunden-Offset (manuelle Korrektur durch Verwaltung)
|
||||
db.run(`ALTER TABLE users ADD COLUMN overtime_offset_hours REAL DEFAULT 0`, (err) => {
|
||||
// Fehler ignorieren wenn Spalte bereits existiert
|
||||
@@ -249,6 +249,22 @@ function initDatabase() {
|
||||
name TEXT
|
||||
)`);
|
||||
|
||||
// System-Optionen-Tabelle für Wochenend-Prozentsätze
|
||||
db.run(`CREATE TABLE IF NOT EXISTS system_options (
|
||||
id INTEGER PRIMARY KEY DEFAULT 1,
|
||||
saturday_percentage REAL DEFAULT 100,
|
||||
sunday_percentage REAL DEFAULT 100,
|
||||
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
CHECK (id = 1)
|
||||
)`);
|
||||
|
||||
// Standard-Eintrag für system_options erstellen falls nicht vorhanden
|
||||
db.run(`INSERT OR IGNORE INTO system_options (id, saturday_percentage, sunday_percentage) VALUES (1, 100, 100)`, (err) => {
|
||||
if (err && !err.message.includes('UNIQUE constraint')) {
|
||||
console.warn('Warnung beim Erstellen des Standard-Eintrags für system_options:', err.message);
|
||||
}
|
||||
});
|
||||
|
||||
// Migration: Bestehende Rollen zu JSON-Arrays konvertieren
|
||||
// Prüfe ob Rollen noch als einfache Strings gespeichert sind (nicht als JSON-Array)
|
||||
db.all('SELECT id, role FROM users', (err, users) => {
|
||||
@@ -265,7 +281,7 @@ function initDatabase() {
|
||||
} catch (e) {
|
||||
// Nicht JSON, konvertiere zu JSON-Array
|
||||
}
|
||||
|
||||
|
||||
// Konvertiere zu JSON-Array
|
||||
const roleArray = JSON.stringify([roleValue]);
|
||||
db.run('UPDATE users SET role = ? WHERE id = ?', [roleArray, user.id], (err) => {
|
||||
@@ -280,14 +296,14 @@ function initDatabase() {
|
||||
// Standard Admin-Benutzer erstellen
|
||||
const adminPassword = bcrypt.hashSync('admin123', 10);
|
||||
db.run(`INSERT OR IGNORE INTO users (id, username, password, firstname, lastname, role)
|
||||
VALUES (1, 'admin', ?, 'System', 'Administrator', ?)`,
|
||||
[adminPassword, JSON.stringify(['admin'])]);
|
||||
VALUES (1, 'admin', ?, 'System', 'Administrator', ?)`,
|
||||
[adminPassword, JSON.stringify(['admin'])]);
|
||||
|
||||
// Standard Verwaltungs-Benutzer erstellen
|
||||
const verwaltungPassword = bcrypt.hashSync('verwaltung123', 10);
|
||||
db.run(`INSERT OR IGNORE INTO users (id, username, password, firstname, lastname, role)
|
||||
VALUES (2, 'verwaltung', ?, 'Verwaltung', 'User', ?)`,
|
||||
[verwaltungPassword, JSON.stringify(['verwaltung'])]);
|
||||
VALUES (2, 'verwaltung', ?, 'Verwaltung', 'User', ?)`,
|
||||
[verwaltungPassword, JSON.stringify(['verwaltung'])]);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user