F2.1: marcar altas y selecciones de campo
This commit is contained in:
@@ -26,19 +26,60 @@ export class FieldDiscoveryInspectionLinkService {
|
|||||||
[visitId],
|
[visitId],
|
||||||
)) as Array<{ id: string; status: string }>;
|
)) as Array<{ id: string; status: string }>;
|
||||||
|
|
||||||
|
const [existing] = (await manager.query(
|
||||||
|
`
|
||||||
|
SELECT included, planning_source AS "planningSource"
|
||||||
|
FROM inspection_visit_assets
|
||||||
|
WHERE visit_id = $1 AND asset_id = $2
|
||||||
|
FOR UPDATE
|
||||||
|
`,
|
||||||
|
[visitId, assetId],
|
||||||
|
)) as Array<{ included: boolean; planningSource: string }>;
|
||||||
|
|
||||||
await manager.query(
|
await manager.query(
|
||||||
`
|
`
|
||||||
INSERT INTO inspection_visit_assets (visit_id, asset_id, included, added_by)
|
INSERT INTO inspection_visit_assets (
|
||||||
VALUES ($1, $2, true, $3)
|
visit_id, asset_id, included, planning_source, added_by,
|
||||||
|
exclusion_reason, excluded_by, excluded_at
|
||||||
|
)
|
||||||
|
VALUES ($1, $2, true, 'FIELD', $3, NULL, NULL, NULL)
|
||||||
ON CONFLICT (visit_id, asset_id) DO UPDATE SET
|
ON CONFLICT (visit_id, asset_id) DO UPDATE SET
|
||||||
included = true,
|
included = true,
|
||||||
|
planning_source = CASE
|
||||||
|
WHEN inspection_visit_assets.planning_source IN ('AUTOMATIC','VERIFICATION')
|
||||||
|
THEN inspection_visit_assets.planning_source
|
||||||
|
ELSE 'FIELD'
|
||||||
|
END,
|
||||||
added_by = EXCLUDED.added_by,
|
added_by = EXCLUDED.added_by,
|
||||||
|
exclusion_reason = NULL,
|
||||||
|
excluded_by = NULL,
|
||||||
|
excluded_at = NULL,
|
||||||
updated_at = CURRENT_TIMESTAMP
|
updated_at = CURRENT_TIMESTAMP
|
||||||
`,
|
`,
|
||||||
[visitId, assetId, userId],
|
[visitId, assetId, userId],
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const eventType = existing && existing.included ? null : 'FIELD_INCLUDED';
|
||||||
|
if (eventType) {
|
||||||
|
await manager.query(
|
||||||
|
`
|
||||||
|
INSERT INTO inspection_visit_asset_events (
|
||||||
|
visit_id, asset_id, event_type, actor_user_id, metadata
|
||||||
|
)
|
||||||
|
VALUES ($1, $2, 'FIELD_INCLUDED', $3, $4::jsonb)
|
||||||
|
`,
|
||||||
|
[
|
||||||
|
visitId,
|
||||||
|
assetId,
|
||||||
|
userId,
|
||||||
|
JSON.stringify({
|
||||||
|
fieldSelection: true,
|
||||||
|
previousPlanningSource: existing?.planningSource ?? null,
|
||||||
|
}),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
if (act) {
|
if (act) {
|
||||||
await manager.query(
|
await manager.query(
|
||||||
`
|
`
|
||||||
|
|||||||
Reference in New Issue
Block a user