fix(capa): advance incident status to capa_pending on CAPA creation
This commit is contained in:
+14
-2
@@ -5,7 +5,7 @@ import { getSession } from '@/lib/auth/get-session'
|
|||||||
import { withUser } from '@/lib/db/with-user'
|
import { withUser } from '@/lib/db/with-user'
|
||||||
import { writeAuditLog } from '@/lib/db/audit'
|
import { writeAuditLog } from '@/lib/db/audit'
|
||||||
import { capaActions, incidents, users } from '@/lib/db/schema'
|
import { capaActions, incidents, users } from '@/lib/db/schema'
|
||||||
import { aliasedTable, eq, asc } from 'drizzle-orm'
|
import { aliasedTable, eq, asc, and } from 'drizzle-orm'
|
||||||
import { createInAppNotifications } from '@/lib/notifications/in-app'
|
import { createInAppNotifications } from '@/lib/notifications/in-app'
|
||||||
|
|
||||||
export async function GET() {
|
export async function GET() {
|
||||||
@@ -47,6 +47,7 @@ export async function GET() {
|
|||||||
return q
|
return q
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const today = new Date().toISOString().slice(0, 10)
|
||||||
const data = rows.map(r => ({
|
const data = rows.map(r => ({
|
||||||
id: r.id,
|
id: r.id,
|
||||||
incident_id: r.incidentId,
|
incident_id: r.incidentId,
|
||||||
@@ -56,7 +57,9 @@ export async function GET() {
|
|||||||
department: r.department,
|
department: r.department,
|
||||||
due_date: r.dueDate,
|
due_date: r.dueDate,
|
||||||
priority: r.priority,
|
priority: r.priority,
|
||||||
status: r.status,
|
status: (r.status === 'open' || r.status === 'in_progress') && r.dueDate && r.dueDate < today
|
||||||
|
? 'overdue'
|
||||||
|
: r.status,
|
||||||
completed_at: r.completedAt,
|
completed_at: r.completedAt,
|
||||||
verified_by: r.verifiedBy,
|
verified_by: r.verifiedBy,
|
||||||
verified_at: r.verifiedAt,
|
verified_at: r.verifiedAt,
|
||||||
@@ -102,6 +105,15 @@ export async function POST(request: NextRequest) {
|
|||||||
await writeAuditLog(tx, 'capa_actions', capa.id, 'created', {
|
await writeAuditLog(tx, 'capa_actions', capa.id, 'created', {
|
||||||
incident_id, description, owner_user_id, department, due_date,
|
incident_id, description, owner_user_id, department, due_date,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
await tx
|
||||||
|
.update(incidents)
|
||||||
|
.set({ status: 'capa_pending' })
|
||||||
|
.where(and(eq(incidents.id, incident_id), eq(incidents.status, 'investigating')))
|
||||||
|
|
||||||
|
await writeAuditLog(tx, 'incidents', incident_id, 'status_changed', {
|
||||||
|
status: 'capa_pending',
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
await createInAppNotifications([{
|
await createInAppNotifications([{
|
||||||
|
|||||||
Reference in New Issue
Block a user