#Job admin

- Tampilan user done
- Tampilan admin done
git commit -m
This commit is contained in:
2024-02-28 16:22:45 +08:00
parent fb7e89fb44
commit 83d2b0a1c4
114 changed files with 3572 additions and 375 deletions

View File

@@ -1,14 +1,56 @@
"use client";
import { Stack } from "@mantine/core";
import { Button, Stack } from "@mantine/core";
import ComponentJob_DetailData from "../../component/detail/detail_data";
import { MODEL_JOB } from "../../model/interface";
import { useRouter } from "next/navigation";
import { RouterJob } from "@/app/lib/router_hipmi/router_job";
import { ComponentGlobal_NotifikasiBerhasil } from "@/app_modules/component_global/notif_global/notifikasi_berhasil";
import { ComponentGlobal_NotifikasiGagal } from "@/app_modules/component_global/notif_global/notifikasi_gagal";
import { useAtom } from "jotai";
import { Job_funEditArsipById } from "../../fun/edit/fun_edit_arsip_by_id";
import { gs_job_status, gs_job_hot_menu } from "../../global_state";
export default function Job_DetailArsip() {
export default function Job_DetailArsip({ dataJob }: { dataJob: MODEL_JOB }) {
return (
<>
<Stack>
<ComponentJob_DetailData />
<ComponentJob_DetailData data={dataJob} />
<ButtonAction jobId={dataJob.id} />
</Stack>
</>
);
}
function ButtonAction({ jobId }: { jobId: string }) {
const router = useRouter();
const [status, setStatus] = useAtom(gs_job_status);
const [hotMenu, setHotMenu] = useAtom(gs_job_hot_menu);
async function onAction() {
await Job_funEditArsipById(jobId, false).then((res) => {
if (res.status === 200) {
setStatus("Publish");
setHotMenu(1);
ComponentGlobal_NotifikasiBerhasil("Berhasil Diarsipkan");
router.replace(RouterJob.beranda);
} else {
ComponentGlobal_NotifikasiGagal(res.message);
}
});
}
return (
<>
<Button
radius={"xl"}
color="green"
mb={30}
onClick={() => {
onAction();
}}
>
Publish Lagi
</Button>
</>
);
}

View File

@@ -8,8 +8,10 @@ import { RouterJob } from "@/app/lib/router_hipmi/router_job";
export default function LayoutJob_DetailDraft({
children,
jobId,
}: {
children: React.ReactNode;
jobId: string
}) {
return (
<>
@@ -18,7 +20,7 @@ export default function LayoutJob_DetailDraft({
<ComponentJob_HeaderTamplate
title="Detail Draft"
icon={<IconEdit />}
route2={RouterJob.edit}
route2={RouterJob.edit + jobId}
/>
}
>

View File

@@ -9,33 +9,55 @@ import ComponentJob_DetailData from "../../component/detail/detail_data";
import { gs_job_status } from "../../global_state";
import { useRouter } from "next/navigation";
import { useDisclosure } from "@mantine/hooks";
import { Job_funEditStatusByStatusId } from "../../fun/edit/fun_edit_status_by_status_id";
import { ComponentGlobal_NotifikasiGagal } from "@/app_modules/component_global/notif_global/notifikasi_gagal";
import { Job_funDeleteById } from "../../fun/delete/fun_delete_by_id";
import ComponentJob_NotedBox from "../../component/detail/noted_box";
import { MODEL_JOB } from "../../model/interface";
export default function Job_DetailDraft() {
export default function Job_DetailDraft({ dataJob }: { dataJob: MODEL_JOB }) {
return (
<>
<Stack>
<ComponentJob_DetailData />
<ButtonAction />
{dataJob.catatan ? (
<ComponentJob_NotedBox informasi={dataJob.catatan} />
) : (
""
)}
<ComponentJob_DetailData data={dataJob} />
<ButtonAction jobId={dataJob.id} />
</Stack>
</>
);
}
function ButtonAction() {
function ButtonAction({ jobId }: { jobId: string }) {
const router = useRouter();
const [status, setStatus] = useAtom(gs_job_status);
const [opened, { open, close }] = useDisclosure();
async function onAction() {
router.push(RouterJob.status);
setStatus("Review");
ComponentGlobal_NotifikasiBerhasil("Berhasil Diajukan");
await Job_funEditStatusByStatusId(jobId, "2").then((res) => {
if (res.status === 200) {
setStatus("Review");
ComponentGlobal_NotifikasiBerhasil("Berhasil Diajukan");
router.push(RouterJob.status);
} else {
ComponentGlobal_NotifikasiGagal(res.message);
}
});
}
async function onDelete() {
router.push(RouterJob.status);
setStatus("Draft");
ComponentGlobal_NotifikasiBerhasil("Berhasil Hapus Draft");
await Job_funDeleteById(jobId).then((res) => {
if (res.status === 200) {
setStatus("Draft");
ComponentGlobal_NotifikasiBerhasil(res.message);
router.push(RouterJob.status);
} else {
ComponentGlobal_NotifikasiGagal(res.message);
}
});
}
return (
@@ -67,7 +89,7 @@ function ButtonAction() {
</Paper>
</Modal>
<Group grow mb={50} >
<Group grow mb={50}>
<Button
radius={"xl"}
color="yellow"

View File

@@ -9,22 +9,21 @@ import { useAtom } from "jotai";
import { gs_job_status, gs_job_hot_menu } from "../../global_state";
import Link from "next/link";
import { IconBrandWhatsapp } from "@tabler/icons-react";
import { MODEL_JOB } from "../../model/interface";
export default function Job_MainDetail() {
export default function Job_MainDetail({ dataJob }: { dataJob: MODEL_JOB }) {
return (
<>
<Stack>
<ComponentJob_DetailData />
<ButtonAction />
<ComponentJob_DetailData data={dataJob} />
<ButtonAction jobId={dataJob.id} />
</Stack>
</>
);
}
function ButtonAction() {
function ButtonAction({ jobId }: { jobId: string }) {
const router = useRouter();
const [status, setStatus] = useAtom(gs_job_status);
const [hotMenu, setHotMenu] = useAtom(gs_job_hot_menu);
async function onAction() {
// router.push(RouterJob.arsip);
@@ -41,13 +40,15 @@ function ButtonAction() {
color="teal"
mb={30}
leftIcon={<IconBrandWhatsapp />}
onClick={() => {
onAction();
}}
// onClick={() => {
// onAction();
// }}
>
<Link
style={{ textDecoration: "none", color: "white" }}
href={`whatsapp://send?text=Job Vacancy HIPMI BADUNG : http://localhost:3000/dev/job/non_user_view`}
href={`whatsapp://send?text=Job Vacancy HIPMI BADUNG : http://localhost:3000${
RouterJob.non_user_view + jobId
}`}
// href={`https://t.me/share/url?url={${"http://localhost:3000/dev/job/non_user_view"}}&text={Lowongan Kerja Ini}`}
>
Bagikan ke WhatsApp

View File

@@ -7,27 +7,38 @@ import { ComponentGlobal_NotifikasiBerhasil } from "@/app_modules/component_glob
import { Stack, Button } from "@mantine/core";
import { useAtom } from "jotai";
import { gs_job_hot_menu, gs_job_status } from "../../global_state";
import { ComponentGlobal_NotifikasiPeringatan } from "@/app_modules/component_global/notif_global/notifikasi_peringatan";
import { Job_funEditArsipById } from "../../fun/edit/fun_edit_arsip_by_id";
import { MODEL_JOB } from "../../model/interface";
import { ComponentGlobal_NotifikasiGagal } from "@/app_modules/component_global/notif_global/notifikasi_gagal";
export default function Job_DetailPublish() {
export default function Job_DetailPublish({ dataJob }: { dataJob: MODEL_JOB }) {
return (
<>
<Stack>
<ComponentJob_DetailData />
<ButtonAction />
<ComponentJob_DetailData data={dataJob as any} />
<ButtonAction jobId={dataJob.id} />
</Stack>
</>
);
}
function ButtonAction() {
function ButtonAction({ jobId }: { jobId: string }) {
const router = useRouter();
const [status, setStatus] = useAtom(gs_job_status);
const [hotMenu, setHotMenu] = useAtom(gs_job_hot_menu)
const [hotMenu, setHotMenu] = useAtom(gs_job_hot_menu);
async function onAction() {
router.push(RouterJob.arsip);
setStatus("Publish");
setHotMenu(3)
ComponentGlobal_NotifikasiBerhasil("Berhasil Diarsipkan");
await Job_funEditArsipById(jobId, true).then((res) => {
if (res.status === 200) {
setStatus("Publish");
setHotMenu(3);
ComponentGlobal_NotifikasiBerhasil("Berhasil Diarsipkan");
router.replace(RouterJob.arsip);
} else {
ComponentGlobal_NotifikasiGagal(res.message);
}
});
}
return (
<>

View File

@@ -10,34 +10,50 @@ import { gs_job_status } from "../../global_state";
import { useRouter } from "next/navigation";
import { useDisclosure } from "@mantine/hooks";
import ComponentJob_NotedBox from "../../component/detail/noted_box";
import { MODEL_JOB } from "../../model/interface";
import { Job_funEditStatusByStatusId } from "../../fun/edit/fun_edit_status_by_status_id";
import { ComponentGlobal_NotifikasiGagal } from "@/app_modules/component_global/notif_global/notifikasi_gagal";
import { Job_funDeleteById } from "../../fun/delete/fun_delete_by_id";
export default function Job_DetailReject() {
export default function Job_DetailReject({ dataJob }: { dataJob: MODEL_JOB }) {
return (
<>
<Stack>
<ComponentJob_NotedBox informasi="Alasan reject"/>
<ComponentJob_DetailData />
<ButtonAction />
<ComponentJob_NotedBox informasi={dataJob.catatan} />
<ComponentJob_DetailData data={dataJob} />
<ButtonAction jobId={dataJob.id} />
</Stack>
</>
);
}
function ButtonAction() {
function ButtonAction({ jobId }: { jobId: string }) {
const router = useRouter();
const [status, setStatus] = useAtom(gs_job_status);
const [opened, { open, close }] = useDisclosure();
async function onAction() {
router.push(RouterJob.status);
setStatus("Draft");
ComponentGlobal_NotifikasiBerhasil("Masuk Draft");
await Job_funEditStatusByStatusId(jobId, "3").then((res) => {
if (res.status === 200) {
router.push(RouterJob.status);
setStatus("Draft");
ComponentGlobal_NotifikasiBerhasil("Masuk Draft");
} else {
ComponentGlobal_NotifikasiGagal(res.message);
}
});
}
async function onDelete() {
router.push(RouterJob.status);
setStatus("Reject");
ComponentGlobal_NotifikasiBerhasil("Berhasil Hapus Job");
await Job_funDeleteById(jobId).then((res) => {
if (res.status === 200) {
router.push(RouterJob.status);
setStatus("Reject");
ComponentGlobal_NotifikasiBerhasil("Berhasil Hapus Job");
} else {
ComponentGlobal_NotifikasiGagal(res.message);
}
});
}
return (

View File

@@ -7,25 +7,36 @@ import { RouterJob } from "@/app/lib/router_hipmi/router_job";
import { useAtom } from "jotai";
import { gs_job_status } from "../../global_state";
import { ComponentGlobal_NotifikasiBerhasil } from "@/app_modules/component_global/notif_global/notifikasi_berhasil";
import { MODEL_JOB } from "../../model/interface";
import { Job_funEditStatusByStatusId } from "../../fun/edit/fun_edit_status_by_status_id";
import { ComponentGlobal_NotifikasiGagal } from "@/app_modules/component_global/notif_global/notifikasi_gagal";
export default function Job_DetailReview() {
export default function Job_DetailReview({ dataJob }: { dataJob: MODEL_JOB }) {
return (
<>
<Stack>
<ComponentJob_DetailData />
<ButtonAction />
<ComponentJob_DetailData data={dataJob} />
<ButtonAction jobId={dataJob.id} />
</Stack>
</>
);
}
function ButtonAction() {
function ButtonAction({ jobId }: { jobId: string }) {
const router = useRouter();
const [status, setStatus] = useAtom(gs_job_status);
async function onAction() {
router.push(RouterJob.status);
setStatus("Draft");
ComponentGlobal_NotifikasiBerhasil("Berhasil Dibatalkan");
await Job_funEditStatusByStatusId(jobId, "3").then((res) => {
if (res.status === 200) {
setStatus("Draft");
ComponentGlobal_NotifikasiBerhasil("Berhasil Dibatalkan");
router.push(RouterJob.status);
} else {
ComponentGlobal_NotifikasiGagal(res.message);
}
});
}
return (
<>