Files
mexus-app/src/app/(dashboard)/recursos/materiales/page.tsx
Mexus 86bfbd2039 feat: Initial commit - Mexus App
Sistema de Gestión de Obras de Construcción completo con:
- Dashboard con KPIs y gráficos
- Módulo de obras con fases y tareas
- Control financiero (gastos, presupuestos)
- Gestión de recursos (personal, subcontratistas)
- Inventario de materiales con alertas de stock
- Reportes con exportación CSV
- Autenticación con roles (NextAuth.js v5)
- API REST completa
- Documentación de API y base de datos
- Configuración Docker para despliegue

Stack: Next.js 14+, TypeScript, Tailwind CSS, Prisma, PostgreSQL

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 01:10:55 +00:00

43 lines
1.0 KiB
TypeScript

import { auth } from "@/lib/auth";
import { prisma } from "@/lib/prisma";
import { MaterialesClient } from "./materiales-client";
async function getMateriales(empresaId: string) {
const materiales = await prisma.material.findMany({
where: { empresaId },
include: {
movimientos: {
orderBy: { createdAt: "desc" },
take: 5,
include: {
obra: { select: { nombre: true } },
},
},
},
orderBy: { nombre: "asc" },
});
const obras = await prisma.obra.findMany({
where: { empresaId },
select: { id: true, nombre: true },
});
const alertas = materiales.filter(
(m) => m.activo && m.stockActual <= m.stockMinimo
);
return { materiales, obras, alertas };
}
export default async function MaterialesPage() {
const session = await auth();
if (!session?.user?.empresaId) {
return <div>Error: No se encontro la empresa</div>;
}
const data = await getMateriales(session.user.empresaId);
return <MaterialesClient data={data} />;
}