import type { Request, Response } from "express"; import { ConsumerRepository } from "../../db/repositories/consumer.repository.js"; import { PowerBalanceService } from "../../domain/services/power-balance.service.js"; import { createConsumerSchema } from "../../shared/validation/consumer.schemas.js"; const consumerRepository = new ConsumerRepository(); const powerBalanceService = new PowerBalanceService(); export async function listConsumersByProject(req: Request, res: Response) { const { projectId } = req.params; if (typeof projectId !== "string") { return res.status(400).json({ error: "Invalid projectId" }); } const rows = await consumerRepository.listByProject(projectId); const enriched = rows.map((row) => powerBalanceService.enrichConsumer({ id: row.id, projectId: row.projectId, distributionBoardId: row.distributionBoardId ?? undefined, name: row.name, category: row.category ?? undefined, quantity: row.quantity, installedPowerPerUnitKw: row.installedPowerPerUnitKw, demandFactor: row.demandFactor, voltageV: row.voltageV ?? undefined, phaseCount: row.phaseCount === 1 || row.phaseCount === 3 ? row.phaseCount : undefined, powerFactor: row.powerFactor ?? undefined, note: row.note ?? undefined, }) ); res.json(enriched); } export async function createConsumer(req: Request, res: Response) { const parsed = createConsumerSchema.safeParse(req.body); if (!parsed.success) { return res.status(400).json({ error: parsed.error.flatten() }); } const created = await consumerRepository.create(parsed.data); const enriched = powerBalanceService.enrichConsumer(created); return res.status(201).json(enriched); }