From 7524cb591ac2e16d5e70680803d26e31b6ff5ee9 Mon Sep 17 00:00:00 2001 From: ajdj100 Date: Fri, 19 Sep 2025 00:42:31 -0400 Subject: [PATCH] finalized LOA systems --- api/routes/members.js | 14 +++++++- ui/src/api/loa.ts | 2 +- ui/src/api/member.ts | 1 + ui/src/components/loa/loaForm.vue | 35 ++++++++++-------- ui/src/components/loa/loaList.vue | 60 +++++++++++++++++++++++++++---- ui/src/pages/ManageLOA.vue | 32 ++++++++++++++++- ui/src/pages/SubmitLOA.vue | 19 +++++++++- ui/src/pages/memberList.vue | 21 ++--------- 8 files changed, 141 insertions(+), 43 deletions(-) diff --git a/api/routes/members.js b/api/routes/members.js index cd72cd2..99faa20 100644 --- a/api/routes/members.js +++ b/api/routes/members.js @@ -12,7 +12,19 @@ router.post('/', async (req, res) => { //get all users router.get('/', async (req, res) => { try { - const result = await pool.query('SELECT * FROM view_member_rank_status_all;'); + const result = await pool.query( + `SELECT + v.*, + CASE + WHEN EXISTS ( + SELECT 1 + FROM leave_of_absences l + WHERE l.member_id = v.member_id + AND l.deleted = 0 + AND UTC_TIMESTAMP() BETWEEN l.start_date AND l.end_date + ) THEN 1 ELSE 0 + END AS on_loa + FROM view_member_rank_status_all v;`); return res.status(200).json(result); } catch (err) { console.error('Error fetching users:', err); diff --git a/ui/src/api/loa.ts b/ui/src/api/loa.ts index c140f58..6f9314b 100644 --- a/ui/src/api/loa.ts +++ b/ui/src/api/loa.ts @@ -1,5 +1,5 @@ export type LOARequest = { - id: number; + id?: number; name?: string; member_id: number; filed_date: string; // ISO 8601 string diff --git a/ui/src/api/member.ts b/ui/src/api/member.ts index 2d2d2a2..e9a38c3 100644 --- a/ui/src/api/member.ts +++ b/ui/src/api/member.ts @@ -5,6 +5,7 @@ export type Member = { rank_date: string | null; status: string | null; status_date: string | null; + on_loa: boolean | null; }; // @ts-ignore diff --git a/ui/src/components/loa/loaForm.vue b/ui/src/components/loa/loaForm.vue index 980e767..8e0067e 100644 --- a/ui/src/components/loa/loaForm.vue +++ b/ui/src/components/loa/loaForm.vue @@ -1,7 +1,6 @@