diff --git a/src/app/dev/admin/app-information/bidang-bisnis/create/page.tsx b/src/app/dev/admin/app-information/bidang-bisnis/create/page.tsx new file mode 100644 index 00000000..d9993c7c --- /dev/null +++ b/src/app/dev/admin/app-information/bidang-bisnis/create/page.tsx @@ -0,0 +1,9 @@ +import AdminAppInformation_ViewCreateBidangBisnis from "@/app_modules/admin/app_info/view/view_create_bidang"; + +export default function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/admin/app-information/bidang-bisnis/page.tsx b/src/app/dev/admin/app-information/bidang-bisnis/page.tsx index e53933aa..f794d9db 100644 --- a/src/app/dev/admin/app-information/bidang-bisnis/page.tsx +++ b/src/app/dev/admin/app-information/bidang-bisnis/page.tsx @@ -1,9 +1,11 @@ import { AdminAppInformation_ViewKategoriPortofolio } from "@/app_modules/admin/app_info/view"; +import { AdminAppInformation_V3_ViewKategoriBidangBisnis } from "@/app_modules/admin/app_info/view/new_kategori_bidang_bisnis"; export default function Page() { return ( <> + {/* */} ); } diff --git a/src/app_modules/admin/_admin_global/back_button.tsx b/src/app_modules/admin/_admin_global/back_button.tsx index a25f4cc7..0565fcd7 100644 --- a/src/app_modules/admin/_admin_global/back_button.tsx +++ b/src/app_modules/admin/_admin_global/back_button.tsx @@ -6,7 +6,7 @@ import { IconChevronLeft } from "@tabler/icons-react"; import { useRouter } from "next/navigation"; import { useState } from "react"; -export default function AdminGlobal_ComponentBackButton({ +export default function Admin_ComponentBackButton({ path, }: { path?: string; diff --git a/src/app_modules/admin/_admin_global/comp_preview_image_admin.tsx b/src/app_modules/admin/_admin_global/comp_preview_image_admin.tsx index ec2d0b48..8bc2ccc9 100644 --- a/src/app_modules/admin/_admin_global/comp_preview_image_admin.tsx +++ b/src/app_modules/admin/_admin_global/comp_preview_image_admin.tsx @@ -1,7 +1,7 @@ "use client"; import { Box, Center, Image, ScrollArea, Skeleton, Stack, Text } from "@mantine/core"; -import AdminGlobal_ComponentBackButton from "./back_button"; +import Admin_ComponentBackButton from "./back_button"; import { APIs, pathAssetImage } from "@/lib"; import { useShallowEffect } from "@mantine/hooks"; import { useState } from "react"; @@ -34,7 +34,7 @@ export function Admin_ComponentPreviewImageAdmin({ return ( <> - + {isImage === null ? (
diff --git a/src/app_modules/admin/app_info/ui/ui_layout_admin_app.tsx b/src/app_modules/admin/app_info/ui/ui_layout_admin_app.tsx index 410f8838..c9a6315c 100644 --- a/src/app_modules/admin/app_info/ui/ui_layout_admin_app.tsx +++ b/src/app_modules/admin/app_info/ui/ui_layout_admin_app.tsx @@ -24,17 +24,11 @@ export default function AdminAppInformation_Layout({ }) { const pathname = usePathname(); const listPage = [ - // { - // id: "1", - // name: "Whatsapp", - // }, { - id: "2", name: "Informasi Bank", path: "/dev/admin/app-information/info-bank", }, { - id: "3", name: "Bidang Bisnis", path: "/dev/admin/app-information/bidang-bisnis", }, @@ -58,8 +52,9 @@ export default function AdminAppInformation_Layout({ component={Link} href={e.path} radius={"xl"} - c={isActive(e.path) ? AdminColor.white : "gray"} - bg={isActive(e.path) ? AccentColor.blue : AccentColor.blackgray} + c={isActive(e.path) ? MainColor.black : MainColor.white} + color="yellow" + bg={isActive(e.path) ? AccentColor.yellow : AccentColor.blackgray} style={{ transition: "all 0.5s", }} diff --git a/src/app_modules/admin/app_info/view/new_kategori_bidang_bisnis.tsx b/src/app_modules/admin/app_info/view/new_kategori_bidang_bisnis.tsx new file mode 100644 index 00000000..5d83601b --- /dev/null +++ b/src/app_modules/admin/app_info/view/new_kategori_bidang_bisnis.tsx @@ -0,0 +1,265 @@ +"use client"; + +import { + AdminColor, + MainColor, +} from "@/app_modules/_global/color/color_pallet"; +import CustomSkeleton from "@/app_modules/components/CustomSkeleton"; +import { MODEL_DEFAULT_MASTER_OLD } from "@/app_modules/model_global/interface"; +import { + Box, + Button, + Center, + Paper, + ScrollArea, + Stack, + Switch, + Table, + Text, +} from "@mantine/core"; +import { useShallowEffect } from "@mantine/hooks"; +import { IconCirclePlus, IconEdit } from "@tabler/icons-react"; +import { useState } from "react"; +import { ComponentAdminGlobal_TitlePage } from "../../_admin_global/_component"; +import { ComponentAdminGlobal_NotifikasiBerhasil } from "../../_admin_global/admin_notifikasi/notifikasi_berhasil"; +import { ComponentAdminGlobal_NotifikasiGagal } from "../../_admin_global/admin_notifikasi/notifikasi_gagal"; +import { + adminAppInformation_funCreateBidangBisnis, + adminAppInformation_funGetBidangBisnis, + adminAppInformation_funUpdateBidangBisnis, +} from "../fun"; +import { apiGetMasterAdminBidangBisnis } from "../lib/api_fetch_master"; +import { useRouter } from "next/navigation"; +import { RouterAdminAppInformation } from "@/lib/router_admin/router_app_information"; + +export function AdminAppInformation_V3_ViewKategoriBidangBisnis() { + const router = useRouter(); + const [data, setData] = useState(null); + + useShallowEffect(() => { + handleLoadData(); + }, []); + + async function handleLoadData() { + try { + const response = await apiGetMasterAdminBidangBisnis(); + + if (response && response.success) { + setData(response.data); + } else { + setData([]); + } + } catch (error) { + console.log("Error load data", error); + setData([]); + } + } + + // Create + const [isLoadingCreate, setLoadingCreate] = useState(false); + const [isCreate, setIsCreate] = useState(true); + const [newData, setNewData] = useState(""); + async function onCreate() { + try { + const create = await adminAppInformation_funCreateBidangBisnis({ + name: newData, + }); + + if (create.status === 201) { + setLoadingCreate(true); + const loadData = await adminAppInformation_funGetBidangBisnis(); + setData(loadData); + setNewData(""); + ComponentAdminGlobal_NotifikasiBerhasil(create.message); + } else { + ComponentAdminGlobal_NotifikasiGagal(create.message); + } + } catch (error) { + console.log(error); + ComponentAdminGlobal_NotifikasiGagal("Gagal menambah bidang bisnis"); + } finally { + setLoadingCreate(false); + } + } + + // Update Data + const [isLoadingUpdate, setLoadingUpdate] = useState(false); + + const [isUpdate, setIsUpdate] = useState(false); + const [updateData, setUpdateData] = useState({ + id: "", + name: "", + }); + + async function onUpdate() { + try { + setLoadingUpdate(true); + const updt = await adminAppInformation_funUpdateBidangBisnis({ + data: updateData as any, + }); + if (updt?.status === 200) { + const loadData = await adminAppInformation_funGetBidangBisnis(); + setData(loadData); + + ComponentAdminGlobal_NotifikasiBerhasil(updt.message); + } else { + ComponentAdminGlobal_NotifikasiGagal(updt?.message as any); + } + } catch (error) { + console.log(error); + } finally { + setIsUpdate(false); + setIsCreate(true); + setLoadingUpdate(false); + } + } + + // Activation + const [openModal, setOpenModal] = useState(false); + const [updateStatus, setUpdateStatus] = useState({ + id: "", + active: null, + }); + const [isLoadingActivation, setLoadingActivation] = useState(false); + + async function onUpdateActivation({ + id, + active, + }: { + id: string; + active: boolean; + }) { + try { + setLoadingActivation(true); + const updt = await adminAppInformation_funUpdateBidangBisnis({ + data: { id: id, active: active }, + }); + + if (updt?.status === 200) { + const loadData = await adminAppInformation_funGetBidangBisnis(); + setData(loadData); + setOpenModal(false); + setLoadingActivation(false); + ComponentAdminGlobal_NotifikasiBerhasil(updt?.message); + } else { + ComponentAdminGlobal_NotifikasiGagal(updt?.message as any); + } + } catch (error) { + console.log(error); + ComponentAdminGlobal_NotifikasiGagal("Gagal mengupdate status"); + } + } + + const rowTable = () => { + if (!Array.isArray(data) || data.length === 0) { + return ( + + +
+ Tidak ada data +
+ + + ); + } + return data.map((e, i) => ( + + + + + + + + +
+ { + setOpenModal(true); + setUpdateStatus({ + id: e?.id, + active: val.currentTarget.checked as any, + }); + }} + /> +
+ + + + + {e?.name} + + + + )); + }; + + return ( + <> + + + + + +
+ {!data ? ( + + ) : ( + + + + + + + + + + + {rowTable()} +
+
Aksi
+
+
Status
+
+ Kategori +
+
+
+ )} +
+
+ + ); +} diff --git a/src/app_modules/admin/app_info/view/view_create_bidang.tsx b/src/app_modules/admin/app_info/view/view_create_bidang.tsx new file mode 100644 index 00000000..27f07c12 --- /dev/null +++ b/src/app_modules/admin/app_info/view/view_create_bidang.tsx @@ -0,0 +1,75 @@ +"use client"; + +import { AdminColor } from "@/app_modules/_global/color/color_pallet"; +import { Button, Center, Group, Stack, TextInput, Title } from "@mantine/core"; +import { ComponentAdminGlobal_TitlePage } from "../../_admin_global/_component"; +import { Admin_ComponentBoxStyle } from "../../_admin_global/_component/comp_admin_boxstyle"; +import Admin_ComponentBackButton from "../../_admin_global/back_button"; +import { Admin_V3_ComponentBreakpoint } from "../../_components_v3/comp_simple_grid_breakpoint"; + +export default function AdminAppInformation_ViewCreateBidangBisnis() { + return ( + <> + + + + + + {/* BIDANG */} + + + + Tambah Bidang Bisnis + + + { + // setNewData(val.currentTarget.value); + // }} + /> + + + + {/* SUB BIDANG */} + + + + Tambah Sub Bidang Bisnis + + + { + // setNewData(val.currentTarget.value); + // }} + /> + + + + + + + + + ); +} diff --git a/src/app_modules/admin/app_info/view/view_kategori_portofolio.tsx b/src/app_modules/admin/app_info/view/view_kategori_portofolio.tsx index 9c86c40e..02c947fd 100644 --- a/src/app_modules/admin/app_info/view/view_kategori_portofolio.tsx +++ b/src/app_modules/admin/app_info/view/view_kategori_portofolio.tsx @@ -184,22 +184,6 @@ export function AdminAppInformation_ViewKategoriPortofolio() { > Edit - {/* { - setIsUpdate(true); - setIsCreate(false); - setUpdateData({ - id: e?.id, - name: e?.name, - }); - }} - > - - - - */} @@ -233,21 +217,7 @@ export function AdminAppInformation_ViewKategoriPortofolio() { return ( <> - } - // onClick={() => { - // setIsCreate(true); - // setIsUpdate(false); - // }} - // > - // Tambah - // - // } - /> +
@@ -270,14 +240,6 @@ export function AdminAppInformation_ViewKategoriPortofolio() { /> - {/* */}