diff --git a/components/template.jsx b/components/template.jsx index d1c5d5e5f8bcbfcd3b7fecfa7b2bc9f878095125..919bc279d71fee5ec84cbb01a5e75321f0ae226c 100644 --- a/components/template.jsx +++ b/components/template.jsx @@ -30,14 +30,32 @@ const Template = ({ children }) => { return <> <header className="flex flex-row align-middle justify-between bg-[#AEDEFC] px-10"> <div className="flex flex-row align-middle justify-center space-x-3"> - <Image src="/logo.png" alt="Main Logo" width={100} height={100} /> + <Image className="hover:cursor-pointer" src="/logo.png" alt="Main Logo" width={100} height={100} onClick={()=> + router.push("/")}/> <span className="h-min my-auto font-bold text-xl">SISTEM MANAJEMEN KURSUS MENGEMUDI RPL</span> </div> <div className="flex flex-row align-middle justify-center space-x-6"> {userObject === null && <span className="h-min my-auto font-semibold">Login as Admin Kursus/Owner?</span>} {userObject !== null && <span className="h-min my-auto font-semibold">Logged in as {userObject.tipe_user}</span>} {userObject === null && <button className="bg-[#F875AA] h-1/2 w-28 rounded-2xl font-bold text-white text-xl my-auto p-2 " onClick={handleLogin}>Log In</button>} - {userObject !== null && <button className="bg-[#F875AA] h-1/2 w-28 rounded-2xl font-bold text-white text-xl my-auto p-2 " onClick={handleLogout}>Log Out</button>} + {userObject !== null && ( + <> + <button className="bg-[#F875AA] h-1/2 w-30 rounded-2xl font-bold text-white text-xl my-auto p-2 " onClick={(e)=>{ + e.preventDefault() + if (userObject.tipe_user === "OWNER"){ + router.push("/dashboard/owner") + return + } + if (userObject.tipe_user === "ADMIN"){ + router.push("/dashboard/admin") + return + } + return + }}>Dashboard</button> + <button className="bg-[#F875AA] h-1/2 w-30 rounded-2xl font-bold text-white text-xl my-auto p-2 " onClick={handleLogout}>Log Out</button> + </> + + )} </div> </header > {children} diff --git a/components/templatenofooter.jsx b/components/templatenofooter.jsx index 7682e9376d7a36fe50d81138698b3ecdc67affb6..0382059577f60149cd2d6b7b905ef152e1808e84 100644 --- a/components/templatenofooter.jsx +++ b/components/templatenofooter.jsx @@ -30,15 +30,33 @@ const Template = ({ children }) => { return <> <header className="flex flex-row align-middle justify-between bg-[#AEDEFC] px-10"> <div className="flex flex-row align-middle justify-center space-x-3"> - <Image src="/logo.png" alt="Main Logo" width={100} height={100} /> + <Image className="hover:cursor-pointer" src="/logo.png" alt="Main Logo" width={100} height={100} onClick={()=> + router.push("/")}/> <span className="h-min my-auto font-bold text-xl">SISTEM MANAJEMEN KURSUS MENGEMUDI RPL</span> </div> <div className="flex flex-row align-middle justify-center space-x-6"> {userObject === null && <span className="h-min my-auto font-semibold">Login as Admin Kursus/Owner?</span>} {userObject !== null && <span className="h-min my-auto font-semibold">Logged in as {userObject.tipe_user}</span>} {userObject === null && <button className="bg-[#F875AA] h-1/2 w-28 rounded-2xl font-bold text-white text-xl my-auto p-2 " onClick={handleLogin}>Log In</button>} - {userObject !== null && <button className="bg-[#F875AA] h-1/2 w-28 rounded-2xl font-bold text-white text-xl my-auto p-2 " onClick={handleLogout}>Log Out</button>} - </div> + {userObject !== null && ( + <> + <button className="bg-[#F875AA] h-1/2 w-30 rounded-2xl font-bold text-white text-xl my-auto p-2 " onClick={(e)=>{ + e.preventDefault() + if (userObject.tipe_user === "OWNER"){ + router.push("/dashboard/owner") + return + } + if (userObject.tipe_user === "ADMIN"){ + router.push("/dashboard/admin") + return + } + return + }}>Dashboard</button> + <button className="bg-[#F875AA] h-1/2 w-30 rounded-2xl font-bold text-white text-xl my-auto p-2 " onClick={handleLogout}>Log Out</button> + </> + + )} + </div> </header > {children} </> diff --git a/pages/_app.jsx b/pages/_app.jsx index 803390f46782f03229f380f348f61f9ae9265085..92e5af423fb54f21cd753ece188073d36b33a757 100644 --- a/pages/_app.jsx +++ b/pages/_app.jsx @@ -1,9 +1,19 @@ import '@/styles/globals.css' import 'react-toastify/dist/ReactToastify.css'; - +import Head from 'next/head'; import { ToastContainer } from 'react-toastify'; export default function App({ Component, pageProps }) { return <> + <Head> + <title>Kursus Mengemudi RPL</title> + <meta name="title" content="Kursus Mengemudi RPL"/> + <meta name="description" content="Kursus Mengemudi RPL adalah mitra terpercaya Anda dalam mengejar keterampilan mengemudi praktis."/> + <meta name="keywords" content="Kursus, Mengemudi, RPL, Keterampilan, Mengemudi, "/> + <meta name="robots" content="index, follow"/> + <meta httpEquiv="Content-Type" content="text/html; charset=utf-8"/> + <meta name="author" content="Muhammad Helmi Hibatullah"/> + + </Head> <Component {...pageProps} /> <ToastContainer autoClose={2000} draggable={false} containerId={1} key={1} limit={1} pauseOnFocusLoss={false} position='top-right' closeButton /> </> diff --git a/pages/_document.jsx b/pages/_document.jsx index 54e8bf3e2a29015a45e11cdc279e06b459890d8b..65c60d86bb6833c3be451c144eecfb504d5699b9 100644 --- a/pages/_document.jsx +++ b/pages/_document.jsx @@ -3,7 +3,8 @@ import { Html, Head, Main, NextScript } from 'next/document' export default function Document() { return ( <Html lang="en"> - <Head /> + <Head/> + <body> <Main /> <NextScript /> diff --git a/pages/adminkursus/edit/[id].jsx b/pages/adminkursus/edit/[id].jsx index b28de815c77290e26df85307f0741bca38ee4816..95fdf0cd98f2101b84f41aa0b353d9c9234ecddf 100644 --- a/pages/adminkursus/edit/[id].jsx +++ b/pages/adminkursus/edit/[id].jsx @@ -42,6 +42,7 @@ const Edit = () => { } useEffect(() => { + if (!router.isReady) return; const token = window.localStorage.getItem("token") if (token === undefined || token === null) { window.location.replace("/auth/login") @@ -63,7 +64,7 @@ const Edit = () => { setpassword_hash(responsejson.data.password_hash) }) //eslint-disable-next-line - }, []) + }, [router.isReady]) return <> <Template> <main className="min-h-screen px-14 py-5 bg-[#FFF6F6]"> diff --git a/pages/calonpelanggan/edit/[id].jsx b/pages/calonpelanggan/edit/[id].jsx index 129f6df9ded401ecb1d376829fdf88b83d9c7928..f70f5efb7ca3a1126b0f34b40f5033e3a820448c 100644 --- a/pages/calonpelanggan/edit/[id].jsx +++ b/pages/calonpelanggan/edit/[id].jsx @@ -12,6 +12,8 @@ const Edit = () => { const [alamat, setAlamat] = useState("") const [statusPelanggan, setStatusPelanggan] = useState("") const [adminKursus, setAdminKursus] = useState("") + const [tanggalPendaftaran, setTanggalPendaftaran] = useState("") + const handleUpdate = async () => { const token = window.localStorage.getItem("token") @@ -26,7 +28,8 @@ const Edit = () => { noWA, alamat, statusPelanggan, - adminKursus + adminKursus, + tanggalPendaftaran, }) const updateQuery = await fetch("https://rpl-backend-production.up.railway.app/v1/calonpelanggan/update/" + router.query.id, { method: "PATCH", @@ -75,6 +78,7 @@ const Edit = () => { setAlamat(responsejson.data.alamat) setStatusPelanggan(responsejson.data.statusPelanggan) setAdminKursus(responsejson.data.adminKursus) + setTanggalPendaftaran(responsejson.data.tanggalPendaftaran) }) //eslint-disable-next-line }, [router.isReady]) @@ -142,6 +146,13 @@ const Edit = () => { setAdminKursus(e.target.value) }} type="number" required className="drop-shadow-xl w-2/3 p-2 rounded-xl" /> </div> + <div className="flex flex-row align-middle justify-between"> + <span className="h-min my-auto font-bold text-lg">Tanggal Pendaftaran</span> + <input disabled value={new Date(tanggalPendaftaran).toLocaleDateString("sv-SE",{ + dateStyle:"short" + }).split("/").join("-")} + type="date" required className="drop-shadow-xl w-2/3 p-2 rounded-xl" /> + </div> <input type="submit" className="bg-[#F875AA] px-8 py-3 text-xl font-bold text-white rounded-xl mx-auto hover:cursor-pointer" value={"Simpan"} /> </form> diff --git a/pages/calonpelanggan/index.jsx b/pages/calonpelanggan/index.jsx index baa80bd56b981eedc7ecca5fffc7a98948ff3647..b32bf2644392ed8ca80fe1fef43f6155bbfe32bd 100644 --- a/pages/calonpelanggan/index.jsx +++ b/pages/calonpelanggan/index.jsx @@ -106,6 +106,7 @@ const Index = () => { <th className="bg-[#F875AA] p-2 border border-[#F875AA]">Alamat</th> <th className="bg-[#F875AA] p-2 border border-[#F875AA]">Status Pelanggan</th> <th className="bg-[#F875AA] p-2 border border-[#F875AA]">Admin Kursus</th> + <th className="bg-[#F875AA] p-2 border border-[#F875AA]">Tanggal Pendaftaran</th> <th className=""></th> </tr> </thead> @@ -120,6 +121,9 @@ const Index = () => { <td className="p-6 border border-[#F875AA] bg-white">{row.alamat}</td> <td className="p-6 border border-[#F875AA] bg-white">{row.statusPelanggan}</td> <td className="p-6 border border-[#F875AA] bg-white">{row.adminKursus}</td> + <td className="p-6 border border-[#F875AA] bg-white">{new Date(row.tanggalPendaftaran).toLocaleDateString("id-ID",{ + dateStyle:"long" + })}</td> <td className="px-2 flex flex-col align-middle justify-evenly space-y-2 "> <button className="bg-[#AEDEFC] p-1 rounded-lg" onClick={(e) => { e.preventDefault(); diff --git a/pages/infoperusahaan/index.jsx b/pages/infoperusahaan/index.jsx index 2c53b67e4801535f1d95c88930deada220261feb..6df5dbc8276cdb672634df6aa8b8091f52af88d6 100644 --- a/pages/infoperusahaan/index.jsx +++ b/pages/infoperusahaan/index.jsx @@ -64,6 +64,11 @@ export default function InformasiPerusahaan({ propertyWebsite }) { } useEffect(() => { + const token = window.localStorage.getItem("token") + if (token === undefined || token === null) { + window.location.replace("/") + return; + } fetch("https://rpl-backend-production.up.railway.app/v1/property").then(async (response) => { const responsejson = await response.json() setDeskripsi(responsejson.data.description) diff --git a/pages/kendaraan/edit/[id].jsx b/pages/kendaraan/edit/[id].jsx index 9a2f1c5a292c5f045917ee13819ad2c48cb40342..543c418f6237093b7b8ff4ef0a0f7d265f090edf 100644 --- a/pages/kendaraan/edit/[id].jsx +++ b/pages/kendaraan/edit/[id].jsx @@ -113,7 +113,9 @@ const Edit = () => { </div> <div className="flex flex-row align-middle justify-between"> <span className="h-min my-auto font-bold text-lg">Tanggal Terakhir Service Kendaraan</span> - <input value={tanggalTerakhirService} onChange={(e) => { + <input value={new Date(tanggalTerakhirService).toLocaleDateString("sv-SE",{ + dateStyle:"short" + }).split("/").join("-")} onChange={(e) => { setTanggalTerakhirService(e.target.value) }} type="date" className="drop-shadow-xl w-2/4 p-2 rounded-xl" /> </div> diff --git a/pages/kendaraan/index.jsx b/pages/kendaraan/index.jsx index 3b6ba1c453a01befbe577f02cd6a3ca6c4138018..6833de9b479d8ccaa76ff6b093695e5404b929b5 100644 --- a/pages/kendaraan/index.jsx +++ b/pages/kendaraan/index.jsx @@ -115,7 +115,9 @@ const Index = () => { <td className="p-6 border border-[#F875AA] bg-white">{row.namaKendaraan}</td> <td className="p-6 border border-[#F875AA] bg-white">{row.jenisTransmisi}</td> <td className="p-6 border border-[#F875AA] bg-white">{row.jumlahKilometer}</td> - <td className="p-6 border border-[#F875AA] bg-white">{row.tanggalTerakhirService}</td> + <td className="p-6 border border-[#F875AA] bg-white">{new Date(row.tanggalTerakhirService).toLocaleDateString("id-ID",{ + dateStyle:"long" + })}</td> <td className="p-6 border border-[#F875AA] bg-white">{row.statusKetersediaan}</td> <td className="p-6 border border-[#F875AA] bg-white">{row.statusKendaraan}</td> <td className="px-2 flex flex-col align-middle justify-evenly space-y-2 "> diff --git a/public/android-chrome-192x192.png b/public/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..18792b442ee51b3bb998463f506f4714dae8e785 Binary files /dev/null and b/public/android-chrome-192x192.png differ diff --git a/public/android-chrome-512x512.png b/public/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..b26180650ef4089831004fc94838e66f0e1980e6 Binary files /dev/null and b/public/android-chrome-512x512.png differ diff --git a/public/apple-touch-icon.png b/public/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..5e0b8df2466b0494fdb1d2dcdcf09430999bc0a8 Binary files /dev/null and b/public/apple-touch-icon.png differ diff --git a/public/favicon-16x16.png b/public/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..1531aec12ce828e9810a88bedadd54889c398aff Binary files /dev/null and b/public/favicon-16x16.png differ diff --git a/public/favicon-32x32.png b/public/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..3c8964895c68afaf409ab2fba5922a803e91f778 Binary files /dev/null and b/public/favicon-32x32.png differ diff --git a/public/favicon.ico b/public/favicon.ico index 718d6fea4835ec2d246af9800eddb7ffb276240c..fc705fecc2303161251f40935f98bddbad94b4b2 100644 Binary files a/public/favicon.ico and b/public/favicon.ico differ diff --git a/public/site.webmanifest b/public/site.webmanifest new file mode 100644 index 0000000000000000000000000000000000000000..45dc8a20658bd09ecb8ca1c88f94fe80cc4ca286 --- /dev/null +++ b/public/site.webmanifest @@ -0,0 +1 @@ +{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"} \ No newline at end of file