43 lines
1.4 KiB
TypeScript
43 lines
1.4 KiB
TypeScript
import { queryOne, query } from '../../../utils/db'
|
|
|
|
/**
|
|
* 프로젝트 상세 조회
|
|
* GET /api/project/[id]/detail
|
|
*/
|
|
export default defineEventHandler(async (event) => {
|
|
const projectId = getRouterParam(event, 'id')
|
|
|
|
const project = await queryOne<any>(`
|
|
SELECT * FROM wr_project_info WHERE project_id = $1
|
|
`, [projectId])
|
|
|
|
if (!project) {
|
|
throw createError({ statusCode: 404, message: '프로젝트를 찾을 수 없습니다.' })
|
|
}
|
|
|
|
// 현재 PM/PL
|
|
const managers = await query(`
|
|
SELECT * FROM wr_project_manager_current WHERE project_id = $1
|
|
`, [projectId])
|
|
|
|
const pm = managers.find((m: any) => m.role_type === 'PM')
|
|
const pl = managers.find((m: any) => m.role_type === 'PL')
|
|
|
|
return {
|
|
projectId: project.project_id,
|
|
projectCode: project.project_code,
|
|
projectName: project.project_name,
|
|
projectType: project.project_type || 'SI',
|
|
clientName: project.client_name,
|
|
projectDescription: project.project_description,
|
|
startDate: project.start_date,
|
|
endDate: project.end_date,
|
|
contractAmount: project.contract_amount,
|
|
projectStatus: project.project_status,
|
|
createdAt: project.created_at,
|
|
updatedAt: project.updated_at,
|
|
currentPm: pm ? { employeeId: pm.employee_id, employeeName: pm.employee_name } : null,
|
|
currentPl: pl ? { employeeId: pl.employee_id, employeeName: pl.employee_name } : null
|
|
}
|
|
})
|