36 lines
1.1 KiB
TypeScript
36 lines
1.1 KiB
TypeScript
import { query } from '../../utils/db'
|
|
|
|
/**
|
|
* 내가 보고서 작성한 프로젝트 목록
|
|
* GET /api/project/my-projects
|
|
*/
|
|
export default defineEventHandler(async (event) => {
|
|
const userId = getCookie(event, 'user_id')
|
|
if (!userId) {
|
|
throw createError({ statusCode: 401, message: '로그인이 필요합니다.' })
|
|
}
|
|
|
|
// 내가 주간보고를 작성한 프로젝트 + 전체 활성 프로젝트
|
|
const projects = await query(`
|
|
SELECT DISTINCT p.*,
|
|
CASE WHEN t.project_id IS NOT NULL THEN true ELSE false END as has_my_report
|
|
FROM wr_project_info p
|
|
LEFT JOIN (
|
|
SELECT DISTINCT t.project_id
|
|
FROM wr_weekly_report_task t
|
|
JOIN wr_weekly_report r ON t.report_id = r.report_id
|
|
WHERE r.author_id = $1
|
|
) t ON p.project_id = t.project_id
|
|
WHERE p.project_status = 'ACTIVE'
|
|
ORDER BY has_my_report DESC, p.project_name
|
|
`, [parseInt(userId)])
|
|
|
|
return projects.map((p: any) => ({
|
|
projectId: p.project_id,
|
|
projectCode: p.project_code,
|
|
projectName: p.project_name,
|
|
clientName: p.client_name,
|
|
hasMyReport: p.has_my_report
|
|
}))
|
|
})
|