From 3b8a935b46b6d92d2cd1ca8dfa236677e081d7f1 Mon Sep 17 00:00:00 2001 From: mahdahar <89adham@gmail.com> Date: Mon, 23 Feb 2026 05:11:30 +0700 Subject: [PATCH] feat(organization): add CRUD operations for disciplines and departments --- src/lib/api/organization.js | 46 ++ src/lib/components/Sidebar.svelte | 244 ++++--- src/routes/(app)/+layout.svelte | 9 +- src/routes/(app)/master-data/+page.svelte | 14 +- .../master-data/organization/+page.svelte | 674 ++++++++++++++++++ .../tests/test-modal/TestFormModal.svelte | 23 +- .../test-modal/tabs/CalcDetailsTab.svelte | 138 +--- .../tests/test-modal/tabs/RefNumTab.svelte | 197 ++--- .../test-modal/tabs/TechDetailsTab.svelte | 106 +-- 9 files changed, 1094 insertions(+), 357 deletions(-) create mode 100644 src/routes/(app)/master-data/organization/+page.svelte diff --git a/src/lib/api/organization.js b/src/lib/api/organization.js index ccb212d..693510e 100644 --- a/src/lib/api/organization.js +++ b/src/lib/api/organization.js @@ -10,6 +10,29 @@ export async function fetchDiscipline(id) { return get(`/api/organization/discipline/${id}`); } +export async function createDiscipline(data) { + const payload = { + DisciplineCode: data.DisciplineCode, + DisciplineName: data.DisciplineName, + Parent: data.Parent || null, + }; + return post('/api/organization/discipline', payload); +} + +export async function updateDiscipline(data) { + const payload = { + id: data.DisciplineID, + DisciplineCode: data.DisciplineCode, + DisciplineName: data.DisciplineName, + Parent: data.Parent || null, + }; + return patch('/api/organization/discipline', payload); +} + +export async function deleteDiscipline(id) { + return del('/api/organization/discipline', { id }); +} + // Departments export async function fetchDepartments(params = {}) { const query = new URLSearchParams(params).toString(); @@ -19,3 +42,26 @@ export async function fetchDepartments(params = {}) { export async function fetchDepartment(id) { return get(`/api/organization/department/${id}`); } + +export async function createDepartment(data) { + const payload = { + DepartmentCode: data.DepartmentCode, + DepartmentName: data.DepartmentName, + DisciplineID: data.DisciplineID, + }; + return post('/api/organization/department', payload); +} + +export async function updateDepartment(data) { + const payload = { + id: data.DepartmentID, + DepartmentCode: data.DepartmentCode, + DepartmentName: data.DepartmentName, + DisciplineID: data.DisciplineID, + }; + return patch('/api/organization/department', payload); +} + +export async function deleteDepartment(id) { + return del('/api/organization/department', { id }); +} diff --git a/src/lib/components/Sidebar.svelte b/src/lib/components/Sidebar.svelte index 3a570cc..919d58f 100644 --- a/src/lib/components/Sidebar.svelte +++ b/src/lib/components/Sidebar.svelte @@ -1,8 +1,7 @@ + +{#if isOpen} +
+{/if} +