Implementación seeder para iniciar sistema
This commit is contained in:
646
backend/src/modules/seeders/initialData.seed.ts
Normal file
646
backend/src/modules/seeders/initialData.seed.ts
Normal file
@ -0,0 +1,646 @@
|
|||||||
|
import mongoose from "mongoose";
|
||||||
|
import bcrypt from "bcrypt";
|
||||||
|
import dotenv from "dotenv";
|
||||||
|
|
||||||
|
import roleModel from "../roles/role.model";
|
||||||
|
import userModel from "../user/user.model";
|
||||||
|
import permissionModel from "../permissions/permission.model";
|
||||||
|
import rolePermissionModel from "../role-permissions/rolePermission.model";
|
||||||
|
|
||||||
|
|
||||||
|
async function seedDatabase() {
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
console.log("=================================");
|
||||||
|
console.log("Iniciando Seeder...");
|
||||||
|
console.log("=================================");
|
||||||
|
|
||||||
|
await mongoose.connect(
|
||||||
|
process.env.MONGO_URI as string
|
||||||
|
);
|
||||||
|
|
||||||
|
console.log("MongoDB conectado.");
|
||||||
|
|
||||||
|
const roleExists = await roleModel.findOne({
|
||||||
|
|
||||||
|
roleName: "ADMINISTRADOR"
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
if (roleExists) {
|
||||||
|
|
||||||
|
console.log("El sistema ya fue inicializado.");
|
||||||
|
|
||||||
|
await mongoose.disconnect();
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
const adminRole = await roleModel.create({
|
||||||
|
|
||||||
|
roleName: "ADMINISTRADOR",
|
||||||
|
|
||||||
|
description: "Administrador del sistema",
|
||||||
|
|
||||||
|
active: true
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
// Encriptar contraseña
|
||||||
|
const passwordHash = await bcrypt.hash(
|
||||||
|
|
||||||
|
"Admin123",
|
||||||
|
|
||||||
|
10
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
// Crear usuario administrador
|
||||||
|
const adminUser = await userModel.create({
|
||||||
|
|
||||||
|
employeeId: 1,
|
||||||
|
|
||||||
|
userName: "admin",
|
||||||
|
|
||||||
|
passwordHash,
|
||||||
|
|
||||||
|
roleId: adminRole._id,
|
||||||
|
|
||||||
|
active: true
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
console.log("Usuario Administrador creado.");
|
||||||
|
|
||||||
|
console.log("Rol Administrador creado.");
|
||||||
|
|
||||||
|
const permissions = [
|
||||||
|
|
||||||
|
// AUTH
|
||||||
|
{
|
||||||
|
name: "Iniciar Sesión",
|
||||||
|
module: "auth",
|
||||||
|
action: "login",
|
||||||
|
description: "Permite iniciar sesión"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Cerrar Sesión",
|
||||||
|
module: "auth",
|
||||||
|
action: "logout",
|
||||||
|
description: "Permite cerrar sesión"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Cambiar Contraseña",
|
||||||
|
module: "auth",
|
||||||
|
action: "change-password",
|
||||||
|
description: "Permite cambiar contraseña"
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
// USERS
|
||||||
|
|
||||||
|
{
|
||||||
|
name: "Ver Usuarios",
|
||||||
|
module: "users",
|
||||||
|
action: "read",
|
||||||
|
description: "Consultar usuarios"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Crear Usuarios",
|
||||||
|
module: "users",
|
||||||
|
action: "create",
|
||||||
|
description: "Crear usuarios"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Actualizar Usuarios",
|
||||||
|
module: "users",
|
||||||
|
action: "update",
|
||||||
|
description: "Actualizar usuarios"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Eliminar Usuarios",
|
||||||
|
module: "users",
|
||||||
|
action: "delete",
|
||||||
|
description: "Eliminar usuarios"
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
// ROLES
|
||||||
|
|
||||||
|
{
|
||||||
|
name: "Ver Roles",
|
||||||
|
module: "roles",
|
||||||
|
action: "read",
|
||||||
|
description: "Consultar roles"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Crear Roles",
|
||||||
|
module: "roles",
|
||||||
|
action: "create",
|
||||||
|
description: "Crear roles"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Actualizar Roles",
|
||||||
|
module: "roles",
|
||||||
|
action: "update",
|
||||||
|
description: "Actualizar roles"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Eliminar Roles",
|
||||||
|
module: "roles",
|
||||||
|
action: "delete",
|
||||||
|
description: "Eliminar roles"
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
// PERMISSIONS
|
||||||
|
|
||||||
|
{
|
||||||
|
name: "Ver Permisos",
|
||||||
|
module: "permissions",
|
||||||
|
action: "read",
|
||||||
|
description: "Consultar permisos"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Crear Permisos",
|
||||||
|
module: "permissions",
|
||||||
|
action: "create",
|
||||||
|
description: "Crear permisos"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Actualizar Permisos",
|
||||||
|
module: "permissions",
|
||||||
|
action: "update",
|
||||||
|
description: "Actualizar permisos"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Eliminar Permisos",
|
||||||
|
module: "permissions",
|
||||||
|
action: "delete",
|
||||||
|
description: "Eliminar permisos"
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
// ROLE PERMISSIONS
|
||||||
|
|
||||||
|
{
|
||||||
|
name: "Ver Configuración de Permisos",
|
||||||
|
module: "role-permissions",
|
||||||
|
action: "read",
|
||||||
|
description: "Consultar permisos por rol"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Asignar Permisos",
|
||||||
|
module: "role-permissions",
|
||||||
|
action: "create",
|
||||||
|
description: "Asignar permisos a un rol"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Actualizar Configuración de Permisos",
|
||||||
|
module: "role-permissions",
|
||||||
|
action: "update",
|
||||||
|
description: "Actualizar permisos de un rol"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Eliminar Configuración de Permisos",
|
||||||
|
module: "role-permissions",
|
||||||
|
action: "delete",
|
||||||
|
description: "Eliminar configuración de permisos"
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
// FUEL TYPES
|
||||||
|
|
||||||
|
{
|
||||||
|
name: "Ver Tipos de Combustible",
|
||||||
|
module: "fuel-types",
|
||||||
|
action: "read",
|
||||||
|
description: "Consultar tipos de combustible"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Crear Tipo de Combustible",
|
||||||
|
module: "fuel-types",
|
||||||
|
action: "create",
|
||||||
|
description: "Crear tipo de combustible"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Actualizar Tipo de Combustible",
|
||||||
|
module: "fuel-types",
|
||||||
|
action: "update",
|
||||||
|
description: "Actualizar tipo de combustible"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Eliminar Tipo de Combustible",
|
||||||
|
module: "fuel-types",
|
||||||
|
action: "delete",
|
||||||
|
description: "Eliminar tipo de combustible"
|
||||||
|
},
|
||||||
|
|
||||||
|
// FUEL REQUESTS
|
||||||
|
{
|
||||||
|
name: "Ver Solicitudes de Combustible",
|
||||||
|
module: "fuel-requests",
|
||||||
|
action: "read",
|
||||||
|
description: "Consultar solicitudes de combustible"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Crear Solicitud de Combustible",
|
||||||
|
module: "fuel-requests",
|
||||||
|
action: "create",
|
||||||
|
description: "Crear solicitud de combustible"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Actualizar Solicitud de Combustible",
|
||||||
|
module: "fuel-requests",
|
||||||
|
action: "update",
|
||||||
|
description: "Actualizar solicitud de combustible"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Eliminar Solicitud de Combustible",
|
||||||
|
module: "fuel-requests",
|
||||||
|
action: "delete",
|
||||||
|
description: "Eliminar solicitud de combustible"
|
||||||
|
},
|
||||||
|
|
||||||
|
// FUEL LOADS
|
||||||
|
{
|
||||||
|
name: "Ver Cargas de Combustible",
|
||||||
|
module: "fuel-loads",
|
||||||
|
action: "read",
|
||||||
|
description: "Consultar cargas de combustible"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Registrar Carga de Combustible",
|
||||||
|
module: "fuel-loads",
|
||||||
|
action: "create",
|
||||||
|
description: "Registrar carga de combustible"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Actualizar Carga de Combustible",
|
||||||
|
module: "fuel-loads",
|
||||||
|
action: "update",
|
||||||
|
description: "Actualizar carga de combustible"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Eliminar Carga de Combustible",
|
||||||
|
module: "fuel-loads",
|
||||||
|
action: "delete",
|
||||||
|
description: "Eliminar carga de combustible"
|
||||||
|
},
|
||||||
|
|
||||||
|
// EXTERNAL INVOICES
|
||||||
|
|
||||||
|
|
||||||
|
{
|
||||||
|
name: "Ver Facturas Externas",
|
||||||
|
module: "external-invoices",
|
||||||
|
action: "read",
|
||||||
|
description: "Consultar facturas externas"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Crear Factura Externa",
|
||||||
|
module: "external-invoices",
|
||||||
|
action: "create",
|
||||||
|
description: "Registrar factura externa"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Actualizar Factura Externa",
|
||||||
|
module: "external-invoices",
|
||||||
|
action: "update",
|
||||||
|
description: "Actualizar factura externa"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Eliminar Factura Externa",
|
||||||
|
module: "external-invoices",
|
||||||
|
action: "delete",
|
||||||
|
description: "Eliminar factura externa"
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
// APPROVALS
|
||||||
|
|
||||||
|
{
|
||||||
|
name: "Ver Aprobaciones",
|
||||||
|
module: "approvals",
|
||||||
|
action: "read",
|
||||||
|
description: "Consultar aprobaciones"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Aprobar Solicitud",
|
||||||
|
module: "approvals",
|
||||||
|
action: "approve",
|
||||||
|
description: "Aprobar solicitud"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Rechazar Solicitud",
|
||||||
|
module: "approvals",
|
||||||
|
action: "reject",
|
||||||
|
description: "Rechazar solicitud"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Eliminar Aprobación",
|
||||||
|
module: "approvals",
|
||||||
|
action: "delete",
|
||||||
|
description: "Eliminar aprobación"
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
// PUMP READINGS
|
||||||
|
|
||||||
|
{
|
||||||
|
name: "Ver Lecturas de Bomba",
|
||||||
|
module: "pump-readings",
|
||||||
|
action: "read",
|
||||||
|
description: "Consultar lecturas de bomba"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Actualizar Lectura de Bomba",
|
||||||
|
module: "pump-readings",
|
||||||
|
action: "update",
|
||||||
|
description: "Actualizar lectura de bomba"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Calcular Galones Despachados",
|
||||||
|
module: "pump-readings",
|
||||||
|
action: "calculate-dispensed",
|
||||||
|
description: "Calcular galones despachados"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Calcular Galones del Sistema",
|
||||||
|
module: "pump-readings",
|
||||||
|
action: "calculate-system",
|
||||||
|
description: "Calcular galones registrados por el sistema"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Calcular Diferencia",
|
||||||
|
module: "pump-readings",
|
||||||
|
action: "calculate-difference",
|
||||||
|
description: "Calcular diferencia entre sistema y bomba"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Actualizar Estado de Lectura",
|
||||||
|
module: "pump-readings",
|
||||||
|
action: "update-status",
|
||||||
|
description: "Actualizar estado de la lectura"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Actualizar Solicitudes Relacionadas",
|
||||||
|
module: "pump-readings",
|
||||||
|
action: "update-requests",
|
||||||
|
description: "Actualizar solicitudes relacionadas"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Crear Anomalía",
|
||||||
|
module: "pump-readings",
|
||||||
|
action: "create-anomaly",
|
||||||
|
description: "Registrar anomalía por diferencia"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Cerrar Lectura",
|
||||||
|
module: "pump-readings",
|
||||||
|
action: "close",
|
||||||
|
description: "Cerrar lectura diaria de bomba"
|
||||||
|
},
|
||||||
|
|
||||||
|
// CATALOGS
|
||||||
|
|
||||||
|
{
|
||||||
|
name: "Ver Empleados",
|
||||||
|
module: "catalogs",
|
||||||
|
action: "employees-read",
|
||||||
|
description: "Consultar empleados"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Ver Vehículos",
|
||||||
|
module: "catalogs",
|
||||||
|
action: "vehicles-read",
|
||||||
|
description: "Consultar vehículos"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Ver Departamentos",
|
||||||
|
module: "catalogs",
|
||||||
|
action: "departments-read",
|
||||||
|
description: "Consultar departamentos"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Ver Rutas",
|
||||||
|
module: "catalogs",
|
||||||
|
action: "routes-read",
|
||||||
|
description: "Consultar rutas"
|
||||||
|
},
|
||||||
|
|
||||||
|
// AUDIT LOGS
|
||||||
|
|
||||||
|
{
|
||||||
|
name: "Ver Auditoría",
|
||||||
|
module: "audit-logs",
|
||||||
|
action: "read",
|
||||||
|
description: "Consultar registros de auditoría"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Crear Auditoría",
|
||||||
|
module: "audit-logs",
|
||||||
|
action: "create",
|
||||||
|
description: "Registrar eventos en auditoría"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Eliminar Auditoría",
|
||||||
|
module: "audit-logs",
|
||||||
|
action: "delete",
|
||||||
|
description: "Eliminar registros de auditoría"
|
||||||
|
},
|
||||||
|
|
||||||
|
// REPORTS
|
||||||
|
|
||||||
|
{
|
||||||
|
name: "Resumen General",
|
||||||
|
module: "reports",
|
||||||
|
action: "summary",
|
||||||
|
description: "Consultar resumen general"
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
name: "Reporte de Combustible por Ruta",
|
||||||
|
module: "reports",
|
||||||
|
action: "fuel-route",
|
||||||
|
description: "Consultar combustible por ruta"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Reporte de Combustible por Departamento",
|
||||||
|
module: "reports",
|
||||||
|
action: "fuel-department",
|
||||||
|
description: "Consultar combustible por departamento"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Reporte de Combustible por Vehículo",
|
||||||
|
module: "reports",
|
||||||
|
action: "fuel-vehicle",
|
||||||
|
description: "Consultar combustible por vehículo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Reporte de Combustible por Empleado",
|
||||||
|
module: "reports",
|
||||||
|
action: "fuel-employee",
|
||||||
|
description: "Consultar combustible por empleado"
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
name: "Reporte de Kilómetros por Ruta",
|
||||||
|
module: "reports",
|
||||||
|
action: "distance-route",
|
||||||
|
description: "Consultar kilómetros por ruta"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Reporte de Kilómetros por Departamento",
|
||||||
|
module: "reports",
|
||||||
|
action: "distance-department",
|
||||||
|
description: "Consultar kilómetros por departamento"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Reporte de Kilómetros por Vehículo",
|
||||||
|
module: "reports",
|
||||||
|
action: "distance-vehicle",
|
||||||
|
description: "Consultar kilómetros por vehículo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Reporte de Kilómetros por Empleado",
|
||||||
|
module: "reports",
|
||||||
|
action: "distance-employee",
|
||||||
|
description: "Consultar kilómetros por empleado"
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
name: "Reporte de Rendimiento",
|
||||||
|
module: "reports",
|
||||||
|
action: "vehicle-performance",
|
||||||
|
description: "Consultar rendimiento por vehículo"
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
name: "Historial de Vehículo",
|
||||||
|
module: "reports",
|
||||||
|
action: "vehicle-history",
|
||||||
|
description: "Consultar historial de vehículo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Historial de Empleado",
|
||||||
|
module: "reports",
|
||||||
|
action: "employee-history",
|
||||||
|
description: "Consultar historial de empleado"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Empleado por Vehículo",
|
||||||
|
module: "reports",
|
||||||
|
action: "employee-by-vehicle",
|
||||||
|
description: "Consultar empleado asignado al vehículo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Vehículos por Empleado",
|
||||||
|
module: "reports",
|
||||||
|
action: "vehicles-by-employee",
|
||||||
|
description: "Consultar vehículos asignados al empleado"
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
name: "Reporte de Anomalías",
|
||||||
|
module: "reports",
|
||||||
|
action: "anomalies",
|
||||||
|
description: "Consultar anomalías"
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
name: "Reporte de Facturas por Zona",
|
||||||
|
module: "reports",
|
||||||
|
action: "invoice-zones",
|
||||||
|
description: "Consultar facturas por zona"
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
name: "Ranking de Gastos por Ruta",
|
||||||
|
module: "reports",
|
||||||
|
action: "route-expense-ranking",
|
||||||
|
description: "Consultar ranking de gastos por ruta"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Gasto por Ruta",
|
||||||
|
module: "reports",
|
||||||
|
action: "expense-route",
|
||||||
|
description: "Consultar gasto por ruta"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Gasto por Departamento",
|
||||||
|
module: "reports",
|
||||||
|
action: "expense-department",
|
||||||
|
description: "Consultar gasto por departamento"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Gasto por Vehículo",
|
||||||
|
module: "reports",
|
||||||
|
action: "expense-vehicle",
|
||||||
|
description: "Consultar gasto por vehículo"
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
name: "Ranking de Consumo de Vehículos",
|
||||||
|
module: "reports",
|
||||||
|
action: "vehicle-consumption-ranking",
|
||||||
|
description: "Consultar ranking de consumo"
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
name: "Dashboard",
|
||||||
|
module: "reports",
|
||||||
|
action: "dashboard",
|
||||||
|
description: "Consultar dashboard"
|
||||||
|
}
|
||||||
|
|
||||||
|
];
|
||||||
|
|
||||||
|
const permissionsToInsert = permissions.map((permission: any) => ({
|
||||||
|
|
||||||
|
...permission,
|
||||||
|
|
||||||
|
active: true,
|
||||||
|
|
||||||
|
createdBy: adminUser._id
|
||||||
|
|
||||||
|
}));
|
||||||
|
|
||||||
|
const createdPermissions = await permissionModel.insertMany(
|
||||||
|
permissionsToInsert
|
||||||
|
);
|
||||||
|
|
||||||
|
console.log(`${createdPermissions.length} permisos creados.`);
|
||||||
|
|
||||||
|
await rolePermissionModel.create({
|
||||||
|
|
||||||
|
roleId: adminRole._id,
|
||||||
|
|
||||||
|
permissions: createdPermissions.map(
|
||||||
|
permission => permission._id
|
||||||
|
),
|
||||||
|
|
||||||
|
active: true,
|
||||||
|
|
||||||
|
createdBy: adminUser._id
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
console.log("Permisos asignados al rol Administrador.");
|
||||||
|
|
||||||
|
await mongoose.disconnect();
|
||||||
|
|
||||||
|
console.log("Seeder ejecutado correctamente.");
|
||||||
|
|
||||||
|
} catch (error) {
|
||||||
|
|
||||||
|
console.error(error);
|
||||||
|
await mongoose.disconnect();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
seedDatabase();
|
||||||
Reference in New Issue
Block a user