diff --git a/app/[locale]/(public)/content-management/download/page.tsx b/app/[locale]/(public)/content-management/download/page.tsx new file mode 100644 index 00000000..cc28936a --- /dev/null +++ b/app/[locale]/(public)/content-management/download/page.tsx @@ -0,0 +1,17 @@ +import HeaderManagement from "@/components/landing-page/header-management"; +import SidebarManagement from "@/components/landing-page/sidebar-management"; +import React from "react"; + +const page = () => { + return ( + <> + +
+ +
Download
+
+ + ); +}; + +export default page; diff --git a/app/[locale]/(public)/content-management/galery/page.tsx b/app/[locale]/(public)/content-management/galery/page.tsx new file mode 100644 index 00000000..04a538f8 --- /dev/null +++ b/app/[locale]/(public)/content-management/galery/page.tsx @@ -0,0 +1,351 @@ +"use client"; + +import { close, error, loading, successCallback } from "@/config/swal"; +import { checkWishlistStatus, deleteWishlist, getInfoProfile, mediaWishlist, saveWishlist } from "@/service/landing/landing"; +import React, { useEffect, useState } from "react"; +import { Link, useRouter } from "@/i18n/routing"; +import { Icon } from "@iconify/react/dist/iconify.js"; +import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs"; +import { formatDateToIndonesian } from "@/utils/globals"; +import { useParams, useSearchParams } from "next/navigation"; +import { Card, CardContent } from "@/components/ui/card"; +import HeaderManagement from "@/components/landing-page/header-management"; +import SidebarManagement from "@/components/landing-page/sidebar-management"; +import withReactContent from "sweetalert2-react-content"; +import { getCookiesDecrypt } from "@/lib/utils"; +import Swal from "sweetalert2"; +import { useToast } from "@/components/ui/use-toast"; + +const Galery = (props: any) => { + const [profile, setProfile] = useState(); + const [selectedTab, setSelectedTab] = useState("video"); + const router = useRouter(); + const MySwal = withReactContent(Swal); + const searchParams = useSearchParams(); + // const { id } = router.query; + const page: any = searchParams?.get("page"); + const title = searchParams?.get("title"); + const category = searchParams?.get("category"); + const pages = page ? page - 1 : 0; + const { isInstitute, instituteId } = props; + const userId = getCookiesDecrypt("uie"); + const userRoleId = getCookiesDecrypt("urie"); + + const [totalContent, setTotalContent] = useState(); + const [categoryFilter] = useState([]); + const [formatFilter] = useState([]); + const [sortBy] = useState(); + const [change] = useState(false); + const [contentVideo, setContentVideo] = useState([]); + const [, setGetTotalPage] = useState([]); + const [refresh, setRefresh] = useState(false); + const [, setCopySuccess] = useState(""); + const { toast } = useToast(); + const [, setWishlistId] = useState(); + + useEffect(() => { + getData(); + }, [page, category, title]); + + async function getData() { + const filter = categoryFilter?.length > 0 ? categoryFilter?.sort().join(",") : category || ""; + + const name = title == undefined ? "" : title; + const format = formatFilter == undefined ? "" : formatFilter?.join(","); + + const response = await mediaWishlist("2", isInstitute ? instituteId : "", name, filter, "9", pages, sortBy, format); + + setGetTotalPage(response.data?.data?.totalPages); + setContentVideo(response.data?.data?.content); + setTotalContent(response.data?.data?.totalElements); + } + + useEffect(() => { + async function initState() { + loading(); + const response = await getInfoProfile(); + + // console.log(response?.data.data); + setProfile(response?.data?.data); + close(); + } + + initState(); + }, []); + + useEffect(() => { + getData(); + }, [change, refresh]); + + async function checkWishlist(uploadId: any) { + if (userId) { + const res = await checkWishlistStatus(uploadId); + console.log(res.data?.data); + // const isAlreadyOnWishlist = res.data?.data == "-1" ? false : true; + // if (isAlreadyOnWishlist == true) { + // warning("Konten sudah Ada", `#`); + // } + setWishlistId(res.data?.data); // setIsSaved(isAlreadyOnWishlist); + // console.log("isSave", isAlreadyOnWishlist); + } + } + + const handleSaveWishlist = async (uploadId: any) => { + if (Number(userRoleId) < 1 || userRoleId == undefined) { + router.push("/auth/login"); + } else { + console.log("data", uploadId); + const data = { + mediaUploadId: uploadId, + }; + + loading(); + checkWishlist(uploadId); + + const res = await saveWishlist(data); + if (res.error) { + error(res.message); + console.log("simpan data", res); + return false; + } + + successCallback("Konten Berhasil Disimpan"); + } + }; + + async function deleteProcess(id: any) { + loading(); + const resDelete = await deleteWishlist(id); + + if (resDelete.error) { + error(resDelete.message); + return false; + } + + setRefresh((prevRefresh) => !prevRefresh); + close(); + } + + const handleDelete = (id: any) => { + MySwal.fire({ + title: "Hapus Data", + text: "", + icon: "warning", + showCancelButton: true, + cancelButtonColor: "#3085d6", + confirmButtonColor: "#d33", + confirmButtonText: "Hapus", + }).then((result) => { + if (result.isConfirmed) { + deleteProcess(id); + } + }); + }; + + const copyToClip = async (url: any) => { + await navigator.clipboard.writeText(`https://mediahub.polri.go.id/video/detail/${url}`); + setCopySuccess("Copied"); + // toast.success("Link Berhasil Di Copy"); + }; + + const [hasMounted, setHasMounted] = useState(false); + + // Hooks + useEffect(() => { + setHasMounted(true); + }, []); + + // Render + if (!hasMounted) return null; + + return ( + <> + +
+ +
+
+

Galeri {profile?.institute?.name}

+
+
+
+ + + + Audio Visual + +
|
+ + Audio + +
|
+ + Foto + +
|
+ + Teks + +
+
+
+
+ {selectedTab == "video" ? ( + contentVideo?.length > 0 ? ( +
+ {contentVideo?.map((video: any) => ( + + + + +
+ {formatDateToIndonesian(new Date(video?.createdAt))} {video?.timezone ? video?.timezone : "WIB"}| + {video?.clickCount}{" "} + + + {" "} +
+
{video?.title}
+ +
+
+ ))} +
+ ) : ( +

+ empty +

+ ) + ) : selectedTab == "audio" ? ( + profile?.length > 0 ? ( +
+ {profile?.map((audio: any) => ( + +
+ + + +
+ +
+
+ {formatDateToIndonesian(new Date(audio?.createdAt))} {audio?.timezone ? audio?.timezone : "WIB"} | 518 +
+
{audio?.title}
+
+
+
+ +
+
+ # +
{audio?.duration}
+ + + +
+
+ + ))} +
+ ) : ( +

+ empty +

+ ) + ) : selectedTab == "image" ? ( + profile?.length > 0 ? ( +
+ {profile?.map((image: any) => ( + + + + +
+ {formatDateToIndonesian(new Date(image?.createdAt))} {image?.timezone ? image?.timezone : "WIB"}| + {image?.clickCount}{" "} + + + {" "} +
+
{image?.title}
+ +
+
+ ))} +
+ ) : ( +

+ empty +

+ ) + ) : profile.length > 0 ? ( +
+ {profile?.map((document: any) => ( + +
+ + + +
+ +
+
+ {formatDateToIndonesian(new Date(document?.createdAt))} {document?.timezone ? document?.timezone : "WIB"} | 518 +
+
{document?.title}
+
+ + + + Download Dokumen +
+
+ + ))} +
+ ) : ( +

+ empty +

+ )} +
+
+
+
+ + ); +}; + +export default Galery; diff --git a/app/[locale]/(public)/content-management/layout.tsx b/app/[locale]/(public)/content-management/layout.tsx index fab820cf..d9cd4d70 100644 --- a/app/[locale]/(public)/content-management/layout.tsx +++ b/app/[locale]/(public)/content-management/layout.tsx @@ -13,6 +13,7 @@ const layout = async ({ children }: { children: React.ReactNode }) => { return ( <> + {children}