feat(ticket): add audit timeline and safeguard extension rejection

This commit is contained in:
2026-07-31 11:51:32 +05:30
parent 58098af0fe
commit 44d3be5d27
16 changed files with 394 additions and 210 deletions

View File

@@ -4,8 +4,6 @@ import { PERMISSIONS } from '@/constants/permissions';
import { PermissionGuard } from '@/guards';
import type { TicketAssignmentSummary, TicketDetail } from '@/types';
import { AssignedContractorAction } from './actions/AssignedContractorAction';
import { ClosedTicketAction } from './actions/ClosedTicketAction';
import { NoTicketAction } from './actions/NoTicketAction';
import { RequestExtensionAction } from './actions/RequestExtensionAction';
import { ReviewExtensionRequestAction } from './actions/ReviewExtensionRequestAction';
@@ -36,46 +34,15 @@ function getTicketAction(
</PermissionGuard>
}
>
<>
{ticket.assignment_status === 'assigned' ? (
<AssignedContractorAction ticket={ticket} />
) : null}
<ReviewExtensionRequestAction
ticket={ticket}
assignmentId={assignment.id}
/>
</>
<ReviewExtensionRequestAction
ticket={ticket}
assignmentId={assignment.id}
/>
</PermissionGuard>
);
}
if (ticket.assignment_status === 'unassigned') {
return null;
}
if (ticket.assignment_status === 'assigned') {
return (
<PermissionGuard
permissions={PERMISSIONS.TICKET.ASSIGN}
fallback={<NoTicketAction />}
>
<AssignedContractorAction ticket={ticket} />
</PermissionGuard>
);
}
if (ticket.assignment_status === 'under_review') {
return null;
}
if (
ticket.assignment_status === 'approved' ||
ticket.assignment_status === 'rejected'
) {
return <ClosedTicketAction ticket={ticket} />;
}
return <NoTicketAction />;
return null;
}
export function TicketStatusActions({