diff --git a/src/vite-project/src/App.jsx b/src/vite-project/src/App.jsx index ddd080c9e7cbdefb925d7997aa0ca6100979a601..22342b9cefc751e724af718a792228241c868dfb 100644 --- a/src/vite-project/src/App.jsx +++ b/src/vite-project/src/App.jsx @@ -46,7 +46,7 @@ function App() { <Route path="/packagesdetailinfo/:id" element={<PackagesDetailInfo />} /> <Route path="/packagesinfofill" element={<PackagesInfoFill />} /> <Route path="/voucherinfofill" element={<VoucherInfoFill />} /> - <Route path="/packagesupdateinfo" element={<PackagesUpdateInfo />} /> + <Route path="/packagesupdateinfo/:id" element={<PackagesUpdateInfo />} /> <Route path="/choose-voucher" element={<ChooseVoucher />} /> <Route path="/voucher-use-info" element={<VoucherUseInfo />} /> <Route path="/subs-register" element={<SubsRegister />} /> diff --git a/src/vite-project/src/components/NavbarAdmin.jsx b/src/vite-project/src/components/NavbarAdmin.jsx index 92a0a112ab9fdb7c5bd3dc0be24d46c7d618c29b..872fb0a9ce0f053f92204c8dcef7650531b83e33 100644 --- a/src/vite-project/src/components/NavbarAdmin.jsx +++ b/src/vite-project/src/components/NavbarAdmin.jsx @@ -2,7 +2,7 @@ import React, {useRef, useEffect, useState} from 'react'; import { Link, useNavigate } from 'react-router-dom'; import NavbarAdminlogo from '../img/logo2.png' -function NavbarAdmin({username}) { +function NavbarAdmin() { const navigate = useNavigate(); const [isOpen, setIsOpen] = useState(false); @@ -21,6 +21,8 @@ function NavbarAdmin({username}) { } }; + const username = localStorage.getItem('username'); + return ( <nav className="bg-blue-400 p-4"> <div className="flex items-center justify-between"> @@ -60,7 +62,7 @@ function NavbarAdmin({username}) { <Link to="/packagesinfo" className="text-black">Packages</Link> <Link to="/voucheredit" className="text-black">Voucher</Link> <div onClick={toggleDropdown} className="relative inline-block text-left text-black focus:outline-none hover:text-indigo-500"> - Jason + {username} <div className={`${ isDropdownOpen ? 'block' : 'hidden' diff --git a/src/vite-project/src/components/NavbarUser.jsx b/src/vite-project/src/components/NavbarUser.jsx index 414c939e04ac7b479360bc2d70d47d6aef80655f..5d5ec03d91dc7b2dffde9961dcd87b76d3c3bba7 100644 --- a/src/vite-project/src/components/NavbarUser.jsx +++ b/src/vite-project/src/components/NavbarUser.jsx @@ -2,7 +2,7 @@ import React, {useRef, useEffect, useState} from 'react'; import { Link, useNavigate } from 'react-router-dom'; import NavbarUserlogo from '../img/logo2.png' -function NavbarUser({username}) { +function NavbarUser() { const navigate = useNavigate(); const [isOpen, setIsOpen] = useState(false); @@ -21,6 +21,8 @@ function NavbarUser({username}) { } }; + const username = localStorage.getItem('username'); + return ( <nav className="bg-blue-400 p-4"> <div className="flex items-center justify-between"> @@ -60,7 +62,7 @@ function NavbarUser({username}) { <Link to="/packagescheckout" className="text-black">Packages</Link> <Link to="/vouchercheck" className="text-black">Voucher</Link> <div onClick={toggleDropdown} className="relative inline-block text-left text-black focus:outline-none hover:text-indigo-500"> - Jason + {username} <div className={`${ isDropdownOpen ? 'block' : 'hidden' diff --git a/src/vite-project/src/pages/dashboard.jsx b/src/vite-project/src/pages/dashboard.jsx index 48b345abb8b18d9491a3611cee336c90c75877cc..6d3cf1aacbd9e3068e6e2bf5f9abecb94e4c3d1e 100644 --- a/src/vite-project/src/pages/dashboard.jsx +++ b/src/vite-project/src/pages/dashboard.jsx @@ -1,4 +1,4 @@ -import React from "react"; +import React, { useEffect } from "react"; import { useLocation } from 'react-router-dom'; import DashboardImage from "../img/seablue.jpg"; import NavbarAdmin from '../components/NavbarAdmin.jsx' @@ -8,12 +8,12 @@ import NavBar from '../components/Navbar'; function Dashboard() { const location = useLocation(); - const role = "user" - + const role = localStorage.getItem('role'); + console.log(role); return ( <> {/* Condition based on role */} - {role === "admin" ? <NavbarAdmin /> : <NavbarUser />} + {role === "Admin" ? <NavbarAdmin /> : <NavbarUser />} <div className="landingpage"> <img src={DashboardImage} id='landingimage' alt="landingimage" className="w-full" /> <div className="titletext absolute top-72 w-full text-center"> diff --git a/src/vite-project/src/pages/login.jsx b/src/vite-project/src/pages/login.jsx index e40c560720280dea84e85dc64ea96c06e9566225..d40c4f68124e31a46fcb88b13fb565d25f2c8685 100644 --- a/src/vite-project/src/pages/login.jsx +++ b/src/vite-project/src/pages/login.jsx @@ -8,28 +8,6 @@ import { isTokenAvailable } from "../components/tokenConfig.jsx"; function Login() { const navigate = useNavigate(); const [loggedInUser, setLoggedInUser] = useState(null); - - const requestLogin = async () => { - try { - const response = await axios.post('/login', { username, password }); - const data = response.data; - if (response.status === 200) { - localStorage.setItem('token', data.accessToken); - const token = localStorage.getItem('token'); - const profile = await axios.get('/profile', { headers: { authorization: `${token}` } }); - const role = profile.data.role; - setLoggedInUser({ username }); - console.log(role); - navigate('/dashboard', { state: { role: role } }); - } else if (response.status === 401) { - window.alert('Username or password tidak tepat, silahkan coba lagi'); - } else { - window.alert('Kesalahan server, silahkan coba lagi'); - } - } catch (error) { - console.error('Error fetching data:', error); - } - }; const SubmitButton = () => { @@ -46,8 +24,9 @@ function Login() { const profile = await axios.get('/profile', { headers: { authorization: `${token}` } }); const role = profile.data.role; setLoggedInUser({ username }); - console.log(role); - navigate('/dashboard'); + localStorage.setItem('role', role); + localStorage.setItem('username', username); + navigate('/dashboard', { state: { role } }); } else if (response.status === 401) { window.alert('Username or password tidak tepat, silahkan coba lagi'); } else { @@ -98,4 +77,4 @@ function Login() { ); } -export default Login; +export default Login; \ No newline at end of file diff --git a/src/vite-project/src/pages/packagesdetailadmin.jsx b/src/vite-project/src/pages/packagesdetailadmin.jsx index b91093a4abb663c93e13ca5eb3cca173fcfa4ca8..08bf586cb7103fb25e23755b2641c235d23a7fee 100644 --- a/src/vite-project/src/pages/packagesdetailadmin.jsx +++ b/src/vite-project/src/pages/packagesdetailadmin.jsx @@ -8,11 +8,19 @@ function PackagesDetail() { const { id } = useParams(); const [packageData, setPackageData] = useState(null); const navigate = useNavigate(); - const DeleteButton = () => { + const DeleteButton = async () => { const confirmation = window.confirm('Yakin mau hapus packages?'); if (confirmation) { - console.log('Paket Perjalanan Berhasil dihapus!'); + try { + await axios.delete(`/package/${id}`, { + headers: { + 'Authorization': `${localStorage.getItem('token')}` + } + }); + } catch (error) { + window.alert('Error deleting package:', error); + } window.alert('Paket Perjalanan Berhasil dihapus!'); navigate('/packagesinfo'); } @@ -56,7 +64,7 @@ function PackagesDetail() { </div> </div> <div class="flex space-x-4 mt-44"> - <Link to="/packagesupdateinfo" className=" bg-blue-500 hover:bg-blue-400 text-white font-bold py-2 px-4 border-b-4 border-blue-700 hover:border-blue-500 rounded text-center"> + <Link to={`/packagesupdateinfo/${id}`} className=" bg-blue-500 hover:bg-blue-400 text-white font-bold py-2 px-4 border-b-4 border-blue-700 hover:border-blue-500 rounded text-center"> Update </Link> <button class="voucher-detail-button bg-red-500 hover:bg-red-400 text-white font-bold py-2 px-4 border-b-4 border-red-700 hover:border-red-500 rounded" onClick={DeleteButton}> diff --git a/src/vite-project/src/pages/packagespageuser.jsx b/src/vite-project/src/pages/packagespageuser.jsx index c5ff85aab0840ec4f09e9b7b5d256972a6bf53fa..c7fc43c0d44be11c1858850fbeca6dc79a6b8fc8 100644 --- a/src/vite-project/src/pages/packagespageuser.jsx +++ b/src/vite-project/src/pages/packagespageuser.jsx @@ -1,59 +1,61 @@ -import React from "react"; +import React, { useEffect, useState } from "react"; import packages from '../img/package.png' import NavbarUser from '../components/NavbarUser.jsx' import { Link, useNavigate } from 'react-router-dom'; - -const DataDummy = [ - { - "title" : 'Package A', - "loc" : "Bali", - }, - { - "title" : 'Package B', - "loc" : "Jakarta", - }, - { - "title" : 'Package C', - "loc" : "Yogyakarta", - }, -] +import axios from '../components/axiosConfig'; function PackagesPageUser() { const navigate = useNavigate(); + const [packagesData, setPackagesData] = useState([]); const KonfirmasiButton = (index) => { const confirmation = window.confirm('Yakin mau konfirmasi?'); if (confirmation) { - const confirmedPackage = DataDummy[index]; - if (index === DataDummy.length - 1) { + const confirmedPackage = packagesData[index]; + if (index === packagesData.length - 1) { navigate('/subs-register'); - } else { - console.log(`Paket Perjalanan ${confirmedPackage.title} dengan tujuan ${confirmedPackage.loc} berhasil dikonfirmasi!`); + } else { window.alert('Paket Perjalanan Berhasil dikonfirmasi!'); } } }; + + useEffect(() => { + axios.get('/package', { + headers: { + 'Authorization': `${localStorage.getItem('token')}` + } + }) + .then(response => { + setPackagesData(response.data.data); + console.log(response.data); + }) + .catch(error => { + console.log('Error fetching packages data:', error); + }); + }, []); + return ( <> <NavbarUser/> - <h1 class="top-2 font-sans text-4xl font-bold py-10 ml-10"> + <h1 className="top-2 font-sans text-4xl font-bold py-10 ml-10"> Package Tersedia: </h1> - {DataDummy.map((item, index) => ( - <div class="bg-white rounded-xl max-w-screen-2xl p-5 pt-5 mb-6 ml-10 mr-10" key={index}> - <div class="flex justify-between items-center"> - <div class="flex items-center"> - <img src={packages} alt="packages" class="w-16 h-16 ml-5 mr-7"/> - <div class="ml-4"> - <h2 class="text-black text-3xl">{item.title}</h2> - <h3 class="text-black text-xl pt-4">{item.loc}</h3> + {packagesData.map((item, index) => ( + <div className="bg-white rounded-xl max-w-screen-2xl p-5 pt-5 mb-6 ml-10 mr-10" key={index}> + <div className="flex justify-between items-center"> + <div className="flex items-center"> + <img src={packages} alt="packages" className="w-16 h-16 ml-5 mr-7"/> + <div className="ml-4"> + <h2 className="text-black text-3xl">{item.PackageName}</h2> + <h3 className="text-black text-xl pt-4">{item.PackageRoute}</h3> </div> </div> - <div class="flex space-x-4"> - <Link to="/packagesdetailconfirm"> - <button class="voucher-detail-button bg-blue-500 hover:bg-blue-400 text-white font-bold py-2 px-4 border-b-4 border-blue-700 hover:border-blue-500 rounded"> + <div className="flex space-x-4"> + <Link to={`/packagesdetailinfo/${item.PackageID}`}> + <button className="voucher-detail-button bg-blue-500 hover:bg-blue-400 text-white font-bold py-2 px-4 border-b-4 border-blue-700 hover:border-blue-500 rounded"> Detail </button> </Link> @@ -68,4 +70,4 @@ function PackagesPageUser() { ); } -export default PackagesPageUser; +export default PackagesPageUser; \ No newline at end of file diff --git a/src/vite-project/src/pages/packagesupdateinfo.jsx b/src/vite-project/src/pages/packagesupdateinfo.jsx index 7a940d2c2cd96c2fc83fa41279f429e46a013f04..094a9d3c0c6f6cf7caa8666af5e6dce094b2957c 100644 --- a/src/vite-project/src/pages/packagesupdateinfo.jsx +++ b/src/vite-project/src/pages/packagesupdateinfo.jsx @@ -1,10 +1,12 @@ import React from "react"; import NavbarAdmin from '../components/NavbarAdmin.jsx' -import { Link, useNavigate } from 'react-router-dom'; +import { Link, useNavigate, useParams } from 'react-router-dom'; +import axios from '../components/axiosConfig.jsx' function PackagesUpdateFill() { + const {id} = useParams(); const navigate = useNavigate(); - const SubmitButton = () => { + const SubmitButton = async () => { const namaPackage = document.getElementById('namaPackage').value; const kota = document.getElementById('kota').value; const rute = document.getElementById('rute').value; @@ -34,8 +36,29 @@ function PackagesUpdateFill() { console.log('Waktu Selesai:', waktuSelesai); console.log('Harga:', harga); console.log('Berhasil update informasi package!'); - window.alert('Informasi Package berhasil diperbaharui!'); - navigate('/packagesdetailinfo'); + try { + const response = await axios.put(`/package/${id}`, { + PackageName: namaPackage, + PackageDesc: deskripsi, + PackageRoute: rute, + PackageStartDate: `${waktuMulai}T00:00:00Z`, + PackageEndDate: `${waktuSelesai}T00:00:00Z`, + City: kota, + Price: Number(harga) + }, { + headers: { + 'Authorization': `${localStorage.getItem('token')}` + } + }); + if (response.status === 200) { + window.alert('Informasi Package berhasil diperbaharui!'); + } else { + window.alert('Kesalahan server, silahkan coba lagi'); + } + } catch (error) { + window.alert('Unavailable'); + } + navigate(`/packagesdetailinfo/${id}`); } }; return ( diff --git a/src/vite-project/src/pages/subscriptionsreq.jsx b/src/vite-project/src/pages/subscriptionsreq.jsx index 173ac445d1dea90cf0608733bfdbbb50fe942d2e..2d50b42052e955e67014b7b0e1d0a5a32c278fa7 100644 --- a/src/vite-project/src/pages/subscriptionsreq.jsx +++ b/src/vite-project/src/pages/subscriptionsreq.jsx @@ -3,19 +3,19 @@ import NavbarAdmin from '../components/NavbarAdmin.jsx' const DataDummy = [ { - "username": "user1", - "firstName": "John", - "lastName": "Doe", + "username": "bintang", + "firstName": "Bintang", + "lastName": "Hijriawan", }, { - "username": "user2", - "firstName": "Johns", - "lastName": "Does", + "username": "jason", + "firstName": "Jason", + "lastName": "Rivalino", }, { - "username": "user3", - "firstName": "Johny", - "lastName": "Doez", + "username": "malik", + "firstName": "Malik", + "lastName": "Baharsyah", }, ] diff --git a/src/vite-project/src/pages/subslist.jsx b/src/vite-project/src/pages/subslist.jsx index c223736a07a44c70c72d4c91c374007be5a2046b..4f0254f54802ba356295ffe05766ad847d807643 100644 --- a/src/vite-project/src/pages/subslist.jsx +++ b/src/vite-project/src/pages/subslist.jsx @@ -30,34 +30,6 @@ const DataDummy = [ "start": "2021-01-01", "end": "2021-12-31" }, - { - "username": "user1", - "firstName": "John", - "lastName": "Doe", - "start": "2021-01-01", - "end": "2021-12-31" - }, - { - "username": "user1", - "firstName": "John", - "lastName": "Doe", - "start": "2021-01-01", - "end": "2021-12-31" - }, - { - "username": "user1", - "firstName": "John", - "lastName": "Doe", - "start": "2021-01-01", - "end": "2021-12-31" - }, - { - "username": "user1", - "firstName": "John", - "lastName": "Doe", - "start": "2021-01-01", - "end": "2021-12-31" - }, ]