Files
dh-inspeccion-v2/api-v3/src/inspection-operations/field-discovery-inspection-link.service.ts
T
admin cd24736df8 F1.1 · Inspección multi-Acta y firma diferida
Implementa el nuevo núcleo operativo: múltiples Actas por Inspección, un Informe por Acta, cierre de campo independiente y firma de empresa diferida con conformidad/disidencia.
2026-09-05 14:46:26 -03:00

59 lines
1.5 KiB
TypeScript

import { Injectable } from '@nestjs/common';
import type { EntityManager } from 'typeorm';
export interface FieldDiscoveryInspectionLinkResult {
actId: string | null;
}
@Injectable()
export class FieldDiscoveryInspectionLinkService {
async attach(
manager: EntityManager,
visitId: string,
assetId: string,
userId: string,
): Promise<FieldDiscoveryInspectionLinkResult> {
const [act] = (await manager.query(
`
SELECT id, status
FROM inspection_acts
WHERE visit_id = $1
AND status = 'DRAFT'
ORDER BY created_at DESC
LIMIT 1
FOR UPDATE
`,
[visitId],
)) as Array<{ id: string; status: string }>;
await manager.query(
`
INSERT INTO inspection_visit_assets (visit_id, asset_id, included, added_by)
VALUES ($1, $2, true, $3)
ON CONFLICT (visit_id, asset_id) DO UPDATE SET
included = true,
added_by = EXCLUDED.added_by,
updated_at = CURRENT_TIMESTAMP
`,
[visitId, assetId, userId],
);
if (act) {
await manager.query(
`
INSERT INTO inspection_act_assets (act_id, asset_id, included, added_by)
VALUES ($1, $2, true, $3)
ON CONFLICT (act_id, asset_id) DO UPDATE SET
included = true,
added_by = EXCLUDED.added_by,
updated_at = CURRENT_TIMESTAMP
`,
[act.id, assetId, userId],
);
}
return { actId: act?.id ?? null };
}
}