import { useEffect, useState } from "react"; import { useNavigate } from "react-router-dom"; import SidebarAdmin from "../Layout/SidebarAdmin"; import NavbarAdmin from "../Layout/NavbarAdmin"; import axios from "axios"; type Lowongan = { id: string; posisi: string; kelompok_peminatan: string; lokasi: string; }; const ListLowongan = () => { const [lowongans, setLowongans] = useState([]); const [searchTerm, setSearchTerm] = useState(""); const [currentPage, setCurrentPage] = useState(1); const itemsPerPage = 10; const navigate = useNavigate(); useEffect(() => { fetchLowongan(); }, []); const fetchLowongan = () => { axios .get(`${import.meta.env.VITE_API_BASE_URL}/lowongan-magang-api/get`) .then((res) => { setLowongans(res.data.data || []); }) .catch((err) => { console.error("Gagal mengambil data lowongan:", err); }); }; const handleDelete = async (id: string) => { const confirmed = window.confirm("Yakin ingin menghapus lowongan ini?"); if (!confirmed) return; try { const token = document.cookie .split("; ") .find((row) => row.startsWith("token=")) ?.split("=")[1]; if (!token) { alert("Token tidak ditemukan. Silakan login ulang."); return; } await axios.delete( `${import.meta.env.VITE_API_BASE_URL}/lowongan-magang-api/delete/${id}`, { headers: { Authorization: `Bearer ${token}`, }, } ); alert("Lowongan berhasil dihapus."); fetchLowongan(); } catch (err) { console.error("Gagal menghapus:", err); alert("Gagal menghapus lowongan pastikan tidak ada data pelamar yang sedang melamar."); } }; const indexOfLastItem = currentPage * itemsPerPage; const indexOfFirstItem = indexOfLastItem - itemsPerPage; const filteredLowongans = lowongans.filter( (low) => low.posisi.toLowerCase().includes(searchTerm.toLowerCase()) || low.kelompok_peminatan.toLowerCase().includes(searchTerm.toLowerCase()) || low.lokasi.toLowerCase().includes(searchTerm.toLowerCase()) ); const currentItems = filteredLowongans.slice( indexOfFirstItem, indexOfLastItem ); const totalPages = Math.ceil(filteredLowongans.length / itemsPerPage); return (

Daftar Lowongan

setSearchTerm(e.target.value)} className="px-4 py-2 rounded-2xl w-[20rem] border border-slate-400" />
{currentItems.map((low) => ( ))}
Posisi Kelompok Peminatan Lokasi Aksi
{low.posisi} {low.kelompok_peminatan} {low.lokasi} {/* Tombol View */} {/* Tombol Hapus */}
{lowongans.length === 0 && (

Tidak ada data.

)}
{Array.from({ length: totalPages }, (_, i) => ( ))}
); }; export default ListLowongan;