diff options
Diffstat (limited to 'lib/users/knox-service.ts')
| -rw-r--r-- | lib/users/knox-service.ts | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/lib/users/knox-service.ts b/lib/users/knox-service.ts index d5453072..d6755022 100644 --- a/lib/users/knox-service.ts +++ b/lib/users/knox-service.ts @@ -4,6 +4,8 @@ import { unstable_cache } from "next/cache"; import db from "@/db/db"; import { organization } from "@/db/schema/knox/organization"; import { eq, and, asc } from "drizzle-orm"; +import { users } from "@/db/schema/users"; +import { employee } from "@/db/schema/knox/employee"; // 조직 트리 노드 타입 export interface DepartmentNode { @@ -375,3 +377,38 @@ export async function getCurrentCompanyInfo(): Promise<{ code: string; name: str name: "삼성중공업" }; } + +// 사번으로 user Id 찾기 +export async function findUserIdByEmployeeNumber(employeeNumber: string): Promise<number | null> { + + try { + // 1. 사번 기준으로 email 찾기 + const userEmail = await db + .select({ email: employee.emailAddress }) + .from(employee) + .where(eq(employee.employeeNumber, employeeNumber)) + .limit(1); + + if (userEmail.length === 0) { + console.error('사번에 해당하는 이메일 찾기 실패', { employeeNumber }); + return null; + } + + // 2. 이메일 기준으로 userId 찾기 + const userId = await db + .select({ id: users.id }) + .from(users) + .where(eq(users.email, userEmail[0].email)); + + if (userId.length === 0) { + console.error('이메일에 해당하는 사용자 찾기 실패', { email: userEmail[0].email }); + return null; + } + + return userId[0].id; + + } catch (error) { + console.error('사번에 해당하는 이메일 찾기 실패', { employeeNumber, error }); + return null; + } +}
\ No newline at end of file |
