Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions prisma/schema.prisma
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,17 @@ datasource db {

model UserMetadata {
id String @id @default(uuid()) @db.Uuid
email String @default("")
department String @default("")
role String @default("")
bio String @default("Enter edit mode to update your bio")
mobile String @default("")
workNumber String @default("")
birthday String @default("")
avatarUrl String @default("")
online Boolean @default(false)
away Boolean @default(false)
location String @default("")
is_admin Boolean @default(false)
is_hr Boolean @default(false)
position String @default("")
Expand Down
135 changes: 130 additions & 5 deletions prisma/seed.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,34 @@ const prisma = new PrismaClient();
async function main() {
await prisma.userMetadata.upsert({
where: { id: "00000000-0000-0000-0000-000000000001" },
update: { employeeFirstName: "Morgan", employeeLastName: "Manager" },
update: {
email: "morgan.manager@odyssey.org",
department: "Operations",
role: "Manager",
bio: "Keeps cross-functional work moving and removes blockers for the team.",
mobile: "(404) 555-0111",
workNumber: "(404) 555-0101",
birthday: "1988-04-12",
avatarUrl: "",
online: true,
away: false,
location: "Atlanta",
employeeFirstName: "Morgan",
employeeLastName: "Manager",
},
create: {
id: "00000000-0000-0000-0000-000000000001",
email: "morgan.manager@odyssey.org",
department: "Operations",
role: "Manager",
bio: "Keeps cross-functional work moving and removes blockers for the team.",
mobile: "(404) 555-0111",
workNumber: "(404) 555-0101",
birthday: "1988-04-12",
avatarUrl: "",
online: true,
away: false,
location: "Atlanta",
is_admin: true,
is_hr: false,
position: "Manager",
Expand All @@ -18,9 +43,34 @@ async function main() {

await prisma.userMetadata.upsert({
where: { id: "00000000-0000-0000-0000-000000000002" },
update: { employeeFirstName: "Harper", employeeLastName: "Reed" },
update: {
email: "harper.reed@odyssey.org",
department: "People",
role: "HR Lead",
bio: "Supports people operations, policies, and employee relations across the org.",
mobile: "(646) 555-0112",
workNumber: "(646) 555-0102",
birthday: "1990-09-03",
avatarUrl: "",
online: true,
away: false,
location: "New York",
employeeFirstName: "Harper",
employeeLastName: "Reed",
},
create: {
id: "00000000-0000-0000-0000-000000000002",
email: "harper.reed@odyssey.org",
department: "People",
role: "HR Lead",
bio: "Supports people operations, policies, and employee relations across the org.",
mobile: "(646) 555-0112",
workNumber: "(646) 555-0102",
birthday: "1990-09-03",
avatarUrl: "",
online: true,
away: false,
location: "New York",
is_admin: true,
is_hr: true,
position: "HR",
Expand All @@ -31,9 +81,34 @@ async function main() {

await prisma.userMetadata.upsert({
where: { id: "00000000-0000-0000-0000-000000000003" },
update: { employeeFirstName: "Alex", employeeLastName: "Anderson" },
update: {
email: "alex.anderson@odyssey.org",
department: "Engineering",
role: "Frontend Engineer",
bio: "Builds polished employee-facing interfaces and improves usability.",
mobile: "(415) 555-0113",
workNumber: "(415) 555-0103",
birthday: "1994-01-19",
avatarUrl: "",
online: false,
away: true,
location: "Remote",
employeeFirstName: "Alex",
employeeLastName: "Anderson",
},
create: {
id: "00000000-0000-0000-0000-000000000003",
email: "alex.anderson@odyssey.org",
department: "Engineering",
role: "Frontend Engineer",
bio: "Builds polished employee-facing interfaces and improves usability.",
mobile: "(415) 555-0113",
workNumber: "(415) 555-0103",
birthday: "1994-01-19",
avatarUrl: "",
online: false,
away: true,
location: "Remote",
is_admin: false,
is_hr: false,
position: "Employee",
Expand All @@ -44,9 +119,34 @@ async function main() {

await prisma.userMetadata.upsert({
where: { id: "00000000-0000-0000-0000-000000000004" },
update: { employeeFirstName: "Blair", employeeLastName: "Baker" },
update: {
email: "blair.baker@odyssey.org",
department: "Design",
role: "Product Designer",
bio: "Designs accessible product flows and keeps the visual system consistent.",
mobile: "(917) 555-0114",
workNumber: "(917) 555-0104",
birthday: "1992-06-27",
avatarUrl: "",
online: true,
away: false,
location: "Remote",
employeeFirstName: "Blair",
employeeLastName: "Baker",
},
create: {
id: "00000000-0000-0000-0000-000000000004",
email: "blair.baker@odyssey.org",
department: "Design",
role: "Product Designer",
bio: "Designs accessible product flows and keeps the visual system consistent.",
mobile: "(917) 555-0114",
workNumber: "(917) 555-0104",
birthday: "1992-06-27",
avatarUrl: "",
online: true,
away: false,
location: "Remote",
is_admin: false,
is_hr: false,
position: "Employee",
Expand All @@ -57,9 +157,34 @@ async function main() {

await prisma.userMetadata.upsert({
where: { id: "00000000-0000-0000-0000-000000000005" },
update: { employeeFirstName: "Evan", employeeLastName: "Employee" },
update: {
email: "evan.employee@odyssey.org",
department: "Support",
role: "Support Specialist",
bio: "Helps employees resolve day-to-day issues and keeps service quality high.",
mobile: "(312) 555-0115",
workNumber: "(312) 555-0105",
birthday: "1993-11-08",
avatarUrl: "",
online: true,
away: false,
location: "Chicago",
employeeFirstName: "Evan",
employeeLastName: "Employee",
},
create: {
id: "00000000-0000-0000-0000-000000000005",
email: "evan.employee@odyssey.org",
department: "Support",
role: "Support Specialist",
bio: "Helps employees resolve day-to-day issues and keeps service quality high.",
mobile: "(312) 555-0115",
workNumber: "(312) 555-0105",
birthday: "1993-11-08",
avatarUrl: "",
online: true,
away: false,
location: "Chicago",
is_admin: false,
is_hr: false,
position: "Employee",
Expand Down
38 changes: 38 additions & 0 deletions src/app/api/directory/route.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
import { NextResponse } from "next/server";
import { prisma } from "@/lib/prisma";
import { getUser } from "@/utils/supabase/server";

export async function GET() {
try {
const user = await getUser();

if (!user) {
return NextResponse.json({ error: "Not authenticated" }, { status: 401 });
}

const employees = await prisma.userMetadata.findMany({
select: {
id: true,
email: true,
employeeFirstName: true,
employeeLastName: true,
position: true,
department: true,
role: true,
location: true,
bio: true,
mobile: true,
workNumber: true,
birthday: true,
avatarUrl: true,
online: true,
away: true,
},
orderBy: { id: "asc" },
});
return NextResponse.json({ employees });
} catch (error) {
console.error("/api/directory GET error", error);
return NextResponse.json({ error: "Failed to fetch directory employees" }, { status: 500 });
}
}
12 changes: 1 addition & 11 deletions src/app/dashboard/directory/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,16 +17,6 @@ export default async function EmployeeDirectoryPage() {

// Get userId, username and role and pass as props
const userId = user?.id ?? user?.user_metadata?.id ?? "0";
const username = user?.email ?? user?.user_metadata?.name ?? "User";
const userMetadata = data;
const userRole = userMetadata?.position ?? "Unknown";

return (
<EmployeeDirectory
userId={userId}
username={username}
userRole={userRole}
userMetadata={userMetadata}
/>
);
return <EmployeeDirectory id={userId} />;
}
Loading
Loading