Guardar en db
This commit is contained in:
@@ -0,0 +1,130 @@
|
||||
const express = require('express');
|
||||
const Database = require('better-sqlite3');
|
||||
const path = require('path');
|
||||
|
||||
const app = express();
|
||||
const PORT = 3000;
|
||||
const DATA_DIR = '/app/data';
|
||||
|
||||
app.use(express.json());
|
||||
|
||||
const dbTrabajadores = new Database(path.join(DATA_DIR, 'trabajadores.db'));
|
||||
const dbDatos = new Database(path.join(DATA_DIR, 'datos.db'));
|
||||
const dbHistorial = new Database(path.join(DATA_DIR, 'historial.db'));
|
||||
|
||||
// ==================== TRABAJADORES ====================
|
||||
|
||||
app.get('/api/trabajadores', (req, res) => {
|
||||
try {
|
||||
const rows = dbTrabajadores.prepare('SELECT * FROM trabajadores ORDER BY nombre').all();
|
||||
res.json(rows);
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
});
|
||||
|
||||
app.post('/api/trabajadores', (req, res) => {
|
||||
try {
|
||||
const { id, nombre, apellidos, puesto, salario_mensual, fecha_ingreso, seguridad_social, activo } = req.body;
|
||||
dbTrabajadores.prepare(
|
||||
'INSERT INTO trabajadores (id, nombre, apellidos, puesto, salario_mensual, fecha_ingreso, seguridad_social, activo) VALUES (?, ?, ?, ?, ?, ?, ?, ?)'
|
||||
).run(id, nombre, apellidos, puesto, salario_mensual, fecha_ingreso, seguridad_social, activo);
|
||||
res.json({ message: 'Trabajador creado' });
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
});
|
||||
|
||||
app.put('/api/trabajadores/:id', (req, res) => {
|
||||
try {
|
||||
const idOriginal = req.params.id;
|
||||
const { id, nombre, apellidos, puesto, salario_mensual, fecha_ingreso, seguridad_social, activo } = req.body;
|
||||
dbTrabajadores.prepare(
|
||||
'UPDATE trabajadores SET id = ?, nombre = ?, apellidos = ?, puesto = ?, salario_mensual = ?, fecha_ingreso = ?, seguridad_social = ?, activo = ? WHERE id = ?'
|
||||
).run(id, nombre, apellidos, puesto, salario_mensual, fecha_ingreso, seguridad_social, activo, idOriginal);
|
||||
res.json({ message: 'Trabajador actualizado' });
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
});
|
||||
|
||||
app.delete('/api/trabajadores/:id', (req, res) => {
|
||||
try {
|
||||
dbTrabajadores.prepare('DELETE FROM trabajadores WHERE id = ?').run(req.params.id);
|
||||
res.json({ message: 'Trabajador eliminado' });
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
});
|
||||
|
||||
// ==================== CONFIGURACIONES ====================
|
||||
|
||||
app.get('/api/configuracion', (req, res) => {
|
||||
try {
|
||||
const row = dbDatos.prepare('SELECT * FROM parametros_nomina ORDER BY id DESC LIMIT 1').get();
|
||||
res.json(row || {});
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
});
|
||||
|
||||
app.post('/api/configuracion', (req, res) => {
|
||||
try {
|
||||
const {
|
||||
nombre_empresa,
|
||||
salario_minimo,
|
||||
auxilio_transporte,
|
||||
horas_semanales,
|
||||
horas_mensuales,
|
||||
dia_inicio_mes,
|
||||
dia_fin_mes,
|
||||
tiempo_almuerzo,
|
||||
valor_hora_ordinaria,
|
||||
valor_hora_extra,
|
||||
valor_hora_extra_nocturna
|
||||
} = req.body;
|
||||
|
||||
const count = dbDatos.prepare('SELECT COUNT(*) as total FROM parametros_nomina').get().total;
|
||||
|
||||
if (count === 0) {
|
||||
dbDatos.prepare(
|
||||
'INSERT INTO parametros_nomina (nombre_empresa, salario_minimo, auxilio_transporte, horas_semanales, horas_mensuales, dia_inicio_mes, dia_fin_mes, tiempo_almuerzo, valor_hora_ordinaria, valor_hora_extra, valor_hora_extra_nocturna) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)'
|
||||
).run(nombre_empresa, salario_minimo, auxilio_transporte, horas_semanales, horas_mensuales, dia_inicio_mes, dia_fin_mes, tiempo_almuerzo, valor_hora_ordinaria, valor_hora_extra, valor_hora_extra_nocturna);
|
||||
} else {
|
||||
dbDatos.prepare(
|
||||
'UPDATE parametros_nomina SET nombre_empresa = ?, salario_minimo = ?, auxilio_transporte = ?, horas_semanales = ?, horas_mensuales = ?, dia_inicio_mes = ?, dia_fin_mes = ?, tiempo_almuerzo = ?, valor_hora_ordinaria = ?, valor_hora_extra = ?, valor_hora_extra_nocturna = ?'
|
||||
).run(nombre_empresa, salario_minimo, auxilio_transporte, horas_semanales, horas_mensuales, dia_inicio_mes, dia_fin_mes, tiempo_almuerzo, valor_hora_ordinaria, valor_hora_extra, valor_hora_extra_nocturna);
|
||||
}
|
||||
|
||||
res.json({ message: 'Configuración guardada' });
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
});
|
||||
|
||||
// ==================== HISTORIAL ====================
|
||||
|
||||
app.get('/api/historial', (req, res) => {
|
||||
try {
|
||||
const rows = dbHistorial.prepare('SELECT * FROM registros_historial ORDER BY fecha DESC').all();
|
||||
res.json(rows);
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
});
|
||||
|
||||
app.post('/api/historial', (req, res) => {
|
||||
try {
|
||||
const { fecha, trabajador, inicio_dia, fin_dia, tiempo_almuerzo } = req.body;
|
||||
dbHistorial.prepare(
|
||||
'INSERT INTO registros_historial (fecha, trabajador, inicio_dia, fin_dia, tiempo_almuerzo) VALUES (?, ?, ?, ?, ?)'
|
||||
).run(fecha, trabajador, inicio_dia, fin_dia, tiempo_almuerzo);
|
||||
res.json({ message: 'Registro guardado' });
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
});
|
||||
|
||||
app.listen(PORT, () => {
|
||||
console.log(`Backend corriendo en http://localhost:${PORT}`);
|
||||
});
|
||||
Reference in New Issue
Block a user