Birlik Akaryakıt Jurnali
++ Birliklerin aylık yakıt giriş/çıkış hareketlerini bu alandan + görüntüleyebilir ve raporlayabilirsiniz. Özellik geliştirme + aşamasında, yakında detaylı veri görünümleri eklenecek. +
+diff --git a/src/lib/components/GoodsManagersContent.svelte b/src/lib/components/GoodsManagersContent.svelte index cb71357..6f1baed 100644 --- a/src/lib/components/GoodsManagersContent.svelte +++ b/src/lib/components/GoodsManagersContent.svelte @@ -2,44 +2,82 @@ import { onMount } from 'svelte'; export let user = null; -let personnel = []; -let units = []; + let personnel = []; + let units = []; let loading = true; let error = ''; let showAddModal = false; let showEditModal = false; let selectedPersonnel = null; + let isAdmin = false; + let isGoodsManager = false; + let allowedUnitId = null; + let allowedUnitName = ''; // Form değişkenleri -let formData = { - full_name: '', - rank: '', - registration_number: '', - tc_kimlik: '', - phone: '', - unit_id: '', - is_active: true -}; + let formData = { + full_name: '', + rank: '', + registration_number: '', + tc_kimlik: '', + phone: '', + unit_id: '', + is_active: true + }; + + function resolveUser() { + if (user) return user; + const stored = localStorage.getItem('user'); + return stored ? JSON.parse(stored) : null; + } onMount(async () => { - const userData = localStorage.getItem('user'); - if (!userData || JSON.parse(userData).role !== 'admin') { + const sessionUser = resolveUser(); + if (!sessionUser) { + error = 'Kullanıcı oturumu bulunamadı.'; + loading = false; + return; + } + + user = sessionUser; + isAdmin = user.role === 'admin'; + isGoodsManager = user.role === 'goods_manager'; + + if (!isAdmin && !isGoodsManager) { error = 'Bu sayfaya erişim yetkiniz yok.'; loading = false; return; } - user = JSON.parse(userData); + if (isGoodsManager) { + if (!user.unit_id) { + error = 'Birlik bilginiz tanımlı değil. Lütfen sistem yöneticisine başvurun.'; + loading = false; + return; + } + allowedUnitId = parseInt(user.unit_id); + allowedUnitName = user.unit_name || 'Birlik'; + formData.unit_id = allowedUnitId; + } + await loadUnits(); await loadPersonnel(); }); async function loadPersonnel() { try { - const response = await fetch('/api/unit-personnel'); + let url = '/api/unit-personnel'; + if (isGoodsManager && allowedUnitId) { + url += `?unit_id=${allowedUnitId}`; + } + + const response = await fetch(url); if (response.ok) { const data = await response.json(); - personnel = data.unitPersonnel || []; + personnel = data.unitPersonnel?.filter((person) => { + if (!isGoodsManager) return true; + return person.unit_id === allowedUnitId; + }) || []; } else { error = 'Personel bilgileri yüklenemedi.'; } @@ -52,6 +90,14 @@ let formData = { } async function loadUnits() { + if (isGoodsManager) { + units = [{ + id: allowedUnitId, + name: allowedUnitName + }]; + return; + } + try { const response = await fetch('/api/units'); if (response.ok) { @@ -65,7 +111,12 @@ let formData = { function getUnitName(unitId) { const id = parseInt(unitId); - return units.find((unit) => unit.id === id)?.name || 'Belirtilmemiş'; + const found = units.find((unit) => unit.id === id); + if (found) return found.name; + if (isGoodsManager && id === allowedUnitId) { + return allowedUnitName; + } + return 'Belirtilmemiş'; } function resetForm() { @@ -75,7 +126,7 @@ formData = { registration_number: '', tc_kimlik: '', phone: '', - unit_id: '', + unit_id: isGoodsManager ? allowedUnitId : '', is_active: true }; selectedPersonnel = null; @@ -83,6 +134,9 @@ formData = { function openAddModal() { resetForm(); + if (isGoodsManager) { + formData.unit_id = allowedUnitId; + } showAddModal = true; } @@ -94,7 +148,7 @@ formData = { registration_number: person.registration_number, tc_kimlik: person.tc_kimlik, phone: person.phone, - unit_id: person.unit_id || '', + unit_id: person.unit_id || (isGoodsManager ? allowedUnitId : ''), is_active: person.is_active }; showEditModal = true; @@ -436,17 +490,21 @@ formData = {