From fb3aaefb9890ee51bfd4e92906ec8d859c1340bb Mon Sep 17 00:00:00 2001 From: sbilketay Date: Sat, 8 Nov 2025 17:20:36 +0300 Subject: [PATCH] Logic fixed --- .../components/GoodsManagersContent.svelte | 2 +- src/routes/dashboard/+page.svelte | 67 +++++++++++++++---- .../dashboard/goods-managers/+page.svelte | 2 +- 3 files changed, 57 insertions(+), 14 deletions(-) diff --git a/src/lib/components/GoodsManagersContent.svelte b/src/lib/components/GoodsManagersContent.svelte index 046af9e..cb71357 100644 --- a/src/lib/components/GoodsManagersContent.svelte +++ b/src/lib/components/GoodsManagersContent.svelte @@ -39,7 +39,7 @@ let formData = { const response = await fetch('/api/unit-personnel'); if (response.ok) { const data = await response.json(); - personnel = data.goodsManagers || []; + personnel = data.unitPersonnel || []; } else { error = 'Personel bilgileri yüklenemedi.'; } diff --git a/src/routes/dashboard/+page.svelte b/src/routes/dashboard/+page.svelte index f58dc04..ada6995 100644 --- a/src/routes/dashboard/+page.svelte +++ b/src/routes/dashboard/+page.svelte @@ -45,6 +45,7 @@ let units = []; let personnel = []; let goodsManagers = []; + let filteredGoodsManagers = []; let formError = ""; let formSuccess = ""; let isSubmitting = false; @@ -181,10 +182,8 @@ if (goodsManagersRes.ok) { const goodsData = await goodsManagersRes.json(); goodsManagers = - goodsData.goodsManagers?.filter((gm) => gm.is_active) || []; - if (!formData.goods_manager_id && goodsManagers.length) { - formData.goods_manager_id = goodsManagers[0].id; - } + goodsData.unitPersonnel?.filter((gm) => gm.is_active) || []; + syncGoodsManagerSelection(); } } catch (err) { console.error("Yakıt verileri yüklenemedi:", err); @@ -204,9 +203,40 @@ liters: "", km: "", personnel_id: "", - goods_manager_id: goodsManagers[0]?.id || "", + goods_manager_id: "", notes: "" }; + syncGoodsManagerSelection(""); + } + + function getGoodsManagersByUnit(unitId) { + if (!unitId) return []; + const normalized = parseInt(unitId); + return goodsManagers.filter((manager) => manager.unit_id === normalized); + } + + function syncGoodsManagerSelection(unitId = formData.unit_id) { + const candidates = getGoodsManagersByUnit(unitId); + filteredGoodsManagers = candidates; + + if (!unitId || candidates.length === 0) { + formData.goods_manager_id = ""; + return; + } + + const hasCurrent = candidates.some( + (manager) => + manager.id.toString() === (formData.goods_manager_id ?? "").toString() + ); + + if (!hasCurrent) { + formData.goods_manager_id = candidates[0].id.toString(); + } + } + + function handleUnitChange(event) { + formData.unit_id = event.target.value; + syncGoodsManagerSelection(formData.unit_id); } async function handleCreateSlip() { @@ -1164,11 +1194,12 @@ id="unit_id" class="form-select" bind:value={formData.unit_id} + on:change={handleUnitChange} required > {#each units as unit} - + {/each} @@ -1248,14 +1279,26 @@ id="goods_manager_id" class="form-select" bind:value={formData.goods_manager_id} + disabled={ + !formData.unit_id || + filteredGoodsManagers.length === 0 + } required > - - {#each goodsManagers as manager} - - {/each} + {#if !formData.unit_id} + + {:else if filteredGoodsManagers.length === 0} + + {:else} + + {#each filteredGoodsManagers as manager} + + {/each} + {/if}
diff --git a/src/routes/dashboard/goods-managers/+page.svelte b/src/routes/dashboard/goods-managers/+page.svelte index 0d3e1f6..7c5bb58 100644 --- a/src/routes/dashboard/goods-managers/+page.svelte +++ b/src/routes/dashboard/goods-managers/+page.svelte @@ -47,7 +47,7 @@ async function loadGoodsManagers() { const response = await fetch('/api/unit-personnel'); if (response.ok) { const data = await response.json(); - personnel = data.goodsManagers || []; + personnel = data.unitPersonnel || []; } else { error = 'Personel bilgileri yüklenemedi.'; }