diff --git a/apps/backend/src/repositories/worker-platform/work-order-repo.ts b/apps/backend/src/repositories/worker-platform/work-order-repo.ts index 4bdfafaa..3913fc30 100644 --- a/apps/backend/src/repositories/worker-platform/work-order-repo.ts +++ b/apps/backend/src/repositories/worker-platform/work-order-repo.ts @@ -1219,7 +1219,18 @@ export async function getWorkerOrderOverview(workerId: number | string): Promise AND wos.worker_id = $1 AND wos.status != 'cancelled' WHERE wo.assigned_worker_id = $1 - OR wo.last_assigned_worker_id = $1 + OR ( + wo.last_assigned_worker_id = $1 + AND ( + wo.status <> 'open' + OR EXISTS ( + SELECT 1 + FROM work_order_events timeout_event + WHERE timeout_event.work_order_id = wo.id + AND timeout_event.event_type = 'timeout_reopen' + ) + ) + ) OR wos.id IS NOT NULL ) SELECT @@ -3410,7 +3421,18 @@ function buildWorkOrderWhere({ params.push(workerSharingId) filters.push( `(wo.assigned_worker_id = $${params.length} - OR wo.last_assigned_worker_id = $${params.length} + OR ( + wo.last_assigned_worker_id = $${params.length} + AND ( + wo.status <> 'open' + OR EXISTS ( + SELECT 1 + FROM work_order_events timeout_event + WHERE timeout_event.work_order_id = wo.id + AND timeout_event.event_type = 'timeout_reopen' + ) + ) + ) OR wo.id IN ( SELECT work_order_id FROM work_order_shares WHERE worker_id = $${params.length} AND status != 'cancelled'