import React, { useState } from 'react' import { Link } from 'react-router-dom' import { useQuery } from '@tanstack/react-query' import { FaBuilding, FaPlus, FaSearch, FaFilter, FaDownload, FaEdit, FaEye, FaMapMarkerAlt, FaBox, FaArrowUp, FaExclamationTriangle, FaChartLine, } from 'react-icons/fa' import classNames from 'classnames' import { WarehouseTypeEnum } from '../../../types/wm' import { mockWarehouses } from '../../../mocks/mockWarehouses' import { getWarehouseTypeColor, getWarehouseTypeText } from '../../../utils/erp' import { Container } from '@/components/shared' const WarehouseList: React.FC = () => { const [searchTerm, setSearchTerm] = useState('') const [filterType, setFilterType] = useState('all') const [showFilters, setShowFilters] = useState(false) const { data: warehouses, isLoading, error, } = useQuery({ queryKey: ['warehouses', searchTerm, filterType], queryFn: async () => { await new Promise((resolve) => setTimeout(resolve, 500)) return mockWarehouses.filter((warehouse) => { const matchesSearch = warehouse.code.toLowerCase().includes(searchTerm.toLowerCase()) || warehouse.name.toLowerCase().includes(searchTerm.toLowerCase()) const matchesType = filterType === 'all' || warehouse.warehouseType === filterType return matchesSearch && matchesType }) }, }) const getUtilizationColor = (utilization: number) => { const percentage = utilization if (percentage >= 90) return 'text-red-600' if (percentage >= 75) return 'text-yellow-600' return 'text-green-600' } if (isLoading) { return (
Depolar yükleniyor...
) } if (error) { return (
Depolar yüklenirken hata oluştu.
) } return (
{/* Header Actions */}
setSearchTerm(e.target.value)} className="pl-10 pr-4 py-1.5 text-sm w-64 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent" />
Yeni Depo
{/* Filters Panel */} {showFilters && (
)} {/* Statistics Cards */}

Toplam Depo

{warehouses?.length || 0}

Toplam Kapasite

{warehouses?.reduce((acc, w) => acc + w.capacity, 0).toLocaleString() || 0}

Kullanım Oranı

{warehouses?.length ? Math.round( (warehouses.reduce((acc, w) => acc + w.currentUtilization, 0) / (warehouses.reduce((acc, w) => acc + w.capacity, 0) || 1)) * 100, ) : 0} %

Aktif Depo

{warehouses?.filter((w) => w.isActive).length || 0}

{/* Warehouses Table */}

Depo Listesi

{warehouses?.map((warehouse) => { const utilizationPercentage = Math.round( (warehouse.currentUtilization / warehouse.capacity) * 100, ) return ( ) })}
Depo Bilgileri Tür / Konum Kapasite Kullanım Oranı Performans Durum İşlemler
{warehouse.code}
{warehouse.name}
{warehouse.isMainWarehouse && ( Ana Depo )}
{getWarehouseTypeText(warehouse.warehouseType)}
{warehouse.address?.city}, {warehouse.address?.country}
{warehouse.capacity.toLocaleString()} m³
Toplam Kapasite
Kullanılan: {warehouse.currentUtilization.toLocaleString()} m³
= 90 ? 'bg-red-500' : utilizationPercentage >= 75 ? 'bg-yellow-500' : 'bg-green-500', )} style={{ width: `${Math.min(utilizationPercentage, 100)}%`, }} />
%{utilizationPercentage}
Verimli
Son 30 gün
{warehouse.isActive ? 'Aktif' : 'Pasif'}
{(!warehouses || warehouses.length === 0) && (

Depo bulunamadı

Yeni depo ekleyerek başlayın.

Yeni Depo Ekle
)}
) } export default WarehouseList