diff --git a/src/lib/components/VehiclesContent.svelte b/src/lib/components/VehiclesContent.svelte index 3f51391..249e417 100644 --- a/src/lib/components/VehiclesContent.svelte +++ b/src/lib/components/VehiclesContent.svelte @@ -2,17 +2,22 @@ import { onMount } from 'svelte'; // Props - export let user = null; +export let user = null; let vehicles = []; let units = []; let loading = true; let error = ''; + let unitWarning = ''; let showAddModal = false; let showEditModal = false; let selectedVehicle = null; - // Form değişkenleri + let isAdmin = false; + let isGoodsManager = false; + let managerUnitId = null; + let managerUnitName = ''; + let formData = { brand: '', model: '', @@ -26,6 +31,37 @@ let formData = { kislik_mukannen: 0 }; +$: { + isAdmin = user?.role === 'admin'; + isGoodsManager = user?.role === 'goods_manager'; + managerUnitId = isGoodsManager && user?.unit_id ? parseInt(user.unit_id) : null; + managerUnitName = isGoodsManager ? (user?.unit_name || getUnitName(user?.unit_id)) : ''; +} + +$: { + if (isGoodsManager && !managerUnitId) { + unitWarning = 'Birlik bilginiz bulunamadı. Lütfen sistem yöneticisine başvurun.'; + } else { + unitWarning = ''; + } +} + +$: { + const managerUnitValue = managerUnitId ? managerUnitId.toString() : ''; + if ( + isGoodsManager && + managerUnitId && + formData.unit_id !== managerUnitValue && + !showEditModal && + (!showAddModal || (showAddModal && !formData.unit_id)) + ) { + formData = { + ...formData, + unit_id: managerUnitValue + }; + } +} + onMount(async () => { await loadUnits(); await loadVehicles(); @@ -37,6 +73,9 @@ async function loadUnits() { if (response.ok) { const data = await response.json(); units = data.units || []; + if (isGoodsManager && managerUnitId) { + managerUnitName = getUnitName(managerUnitId, units); + } } } catch (err) { console.error('Load units error:', err); @@ -48,7 +87,15 @@ async function loadUnits() { const response = await fetch('/api/vehicles'); if (response.ok) { const data = await response.json(); - vehicles = data.vehicles; + let fetchedVehicles = data.vehicles || []; + if (isGoodsManager) { + if (managerUnitId) { + fetchedVehicles = fetchedVehicles.filter(vehicle => vehicle.unit_id === managerUnitId); + } else { + fetchedVehicles = []; + } + } + vehicles = fetchedVehicles; } else { error = 'Araçlar yüklenemedi.'; } @@ -66,7 +113,7 @@ function resetForm() { model: '', year: new Date().getFullYear(), plate: '', - unit_id: '', + unit_id: isGoodsManager && managerUnitId ? managerUnitId.toString() : '', fuel_type: 'Benzin', fuel_capacity: 50, current_fuel: 0, @@ -115,11 +162,21 @@ function validateMukannen(value) { function getUnitName(unitId, unitList = units) { const id = parseInt(unitId); - return unitList.find((unit) => unit.id === id)?.name || 'Belirtilmemiş'; + const unitName = unitList.find((unit) => unit.id === id)?.name; + if (unitName) return unitName; + if (isGoodsManager && managerUnitId === id) { + return managerUnitName || 'Belirtilmemiş'; + } + return 'Belirtilmemiş'; } - async function handleAddVehicle() { - if (!formData.brand || !formData.model || !formData.year || !formData.plate || !formData.unit_id || !formData.fuel_type || !formData.fuel_capacity) { +async function handleAddVehicle() { + if (isGoodsManager && !managerUnitId) { + error = 'Birlik bilginiz bulunamadı. Lütfen sistem yöneticisine başvurun.'; + return; + } + + if (!formData.brand || !formData.model || !formData.year || !formData.plate || (!isGoodsManager && !formData.unit_id) || !formData.fuel_type || !formData.fuel_capacity) { error = 'Tüm zorunlu alanları doldurun.'; return; } @@ -132,7 +189,7 @@ function getUnitName(unitId, unitList = units) { try { const payload = { ...formData, - unit_id: parseInt(formData.unit_id) + unit_id: isGoodsManager && managerUnitId ? managerUnitId : parseInt(formData.unit_id) }; const response = await fetch('/api/vehicles', { method: 'POST', @@ -157,8 +214,13 @@ function getUnitName(unitId, unitList = units) { } } - async function handleUpdateVehicle() { - if (!formData.brand || !formData.model || !formData.year || !formData.plate || !formData.unit_id || !formData.fuel_type || !formData.fuel_capacity) { +async function handleUpdateVehicle() { + if (isGoodsManager && !managerUnitId) { + error = 'Birlik bilginiz bulunamadı. Lütfen sistem yöneticisine başvurun.'; + return; + } + + if (!formData.brand || !formData.model || !formData.year || !formData.plate || (!isGoodsManager && !formData.unit_id) || !formData.fuel_type || !formData.fuel_capacity) { error = 'Tüm zorunlu alanları doldurun.'; return; } @@ -172,7 +234,7 @@ function getUnitName(unitId, unitList = units) { const payload = { id: selectedVehicle.id, ...formData, - unit_id: parseInt(formData.unit_id) + unit_id: isGoodsManager && managerUnitId ? managerUnitId : parseInt(formData.unit_id) }; const response = await fetch('/api/vehicles', { method: 'PUT', @@ -233,7 +295,7 @@ function getUnitName(unitId, unitList = units) { {vehicles.length} Araç -