Skip to content

Commit ddc6775

Browse files
Zeff01claude
andcommitted
fix: filter org chart to only show applicants with passed status
- Added application_status filter to database query - Updated OrgChart component to filter all positions by passed status - Ensures only approved team members appear in organization chart 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 67e27d6 commit ddc6775

2 files changed

Lines changed: 15 additions & 13 deletions

File tree

‎apps/codebility/app/home/orgchart/_components/OrgChart.tsx‎

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -27,51 +27,52 @@ export default function OrgChart({ data }: OrgChartProps) {
2727

2828

2929
const ceo = sortedData.find(
30-
(member) => member.display_position === "CEO / Founder",
30+
(member) => member.display_position === "CEO / Founder" && member.application_status === "passed",
3131
);
3232
const admin = sortedData.filter(
33-
(member) => member.display_position === "Admin",
33+
(member) => member.display_position === "Admin" && member.application_status === "passed",
3434
);
3535
const marketing = sortedData.filter(
36-
(member) => member.display_position === "Marketing",
36+
(member) => member.display_position === "Marketing" && member.application_status === "passed",
3737
);
3838
const pm = sortedData.filter(
39-
(member) => member.display_position === "Project Manager",
39+
(member) => member.display_position === "Project Manager" && member.application_status === "passed",
4040
);
4141
const developers = {
4242
"Full Stack Developers": sortedData
4343
.filter((member) =>
44-
member.display_position === "Full Stack Developer" ||
45-
member.display_position === "Developer"
44+
(member.display_position === "Full Stack Developer" ||
45+
member.display_position === "Developer") &&
46+
member.application_status === "passed"
4647
)
4748
.sort(
4849
(a, b) =>
4950
(b.image_url ? 1 : 0) - (a.image_url ? 1 : 0) || // Prioritize those with images
5051
a.first_name.localeCompare(b.first_name), // Sort by first name
5152
),
5253
"Frontend Developers": sortedData
53-
.filter((member) => member.display_position === "Frontend Developer")
54+
.filter((member) => member.display_position === "Frontend Developer" && member.application_status === "passed")
5455
.sort(
5556
(a, b) =>
5657
(b.image_url ? 1 : 0) - (a.image_url ? 1 : 0) ||
5758
a.first_name.localeCompare(b.first_name),
5859
),
5960
"Backend Developers": sortedData
60-
.filter((member) => member.display_position === "Backend Developer")
61+
.filter((member) => member.display_position === "Backend Developer" && member.application_status === "passed")
6162
.sort(
6263
(a, b) =>
6364
(b.image_url ? 1 : 0) - (a.image_url ? 1 : 0) ||
6465
a.first_name.localeCompare(b.first_name),
6566
),
6667
"Mobile Developers": sortedData
67-
.filter((member) => member.display_position === "Mobile Developer")
68+
.filter((member) => member.display_position === "Mobile Developer" && member.application_status === "passed")
6869
.sort(
6970
(a, b) =>
7071
(b.image_url ? 1 : 0) - (a.image_url ? 1 : 0) ||
7172
a.first_name.localeCompare(b.first_name),
7273
),
7374
"UI/UX Designers": sortedData
74-
.filter((member) => member.display_position === "UI/UX Designer")
75+
.filter((member) => member.display_position === "UI/UX Designer" && member.application_status === "passed")
7576
.sort(
7677
(a, b) =>
7778
(b.image_url ? 1 : 0) - (a.image_url ? 1 : 0) ||
@@ -135,7 +136,7 @@ export default function OrgChart({ data }: OrgChartProps) {
135136
<div className="absolute left-1/2 top-0 h-px w-4/5 -translate-x-1/2 bg-gradient-to-r from-transparent via-gray-300 to-transparent dark:via-gray-600" />
136137
<div className="grid w-full grid-cols-1 gap-8 pt-6 md:grid-cols-2 xl:grid-cols-3">
137138
{Object.entries(developers)
138-
.filter(([title, members]) => members.filter(member => member.application_status === "passed").length > 0)
139+
.filter(([title, members]) => members.length > 0)
139140
.map(([title, members], index) => {
140141
const colors = [
141142
"from-indigo-500 to-customBlue-500",
@@ -156,7 +157,7 @@ export default function OrgChart({ data }: OrgChartProps) {
156157
<div className="absolute -bottom-1 left-1/2 h-2 w-2 -translate-x-1/2 rounded-full bg-gray-400 dark:bg-gray-600" />
157158
</div>
158159
<div className="grid grid-cols-1 gap-2 sm:grid-cols-3">
159-
{members.filter(member => member.application_status === "passed").map((member) => (
160+
{members.map((member) => (
160161
<TeamMemberCard key={member.id} {...member} />
161162
))}
162163
</div>

‎apps/codebility/app/home/orgchart/page.tsx‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ const Page = async () => {
1212
.select(
1313
"id, first_name, last_name, display_position, image_url, application_status, availability_status",
1414
)
15-
.eq("availability_status", true);
15+
.eq("availability_status", true)
16+
.eq("application_status", "passed");
1617

1718
if (error) {
1819
return <div>Error loading organization chart</div>;

0 commit comments

Comments
 (0)