From e00c1f3326f1395469daa5c4667861cea5cd86ed Mon Sep 17 00:00:00 2001 From: hanif salafi Date: Tue, 7 Jan 2025 23:53:22 +0700 Subject: [PATCH] feat: move satker and polda, update detail video and image on contributor --- .../{ => (polda)}/polda/[polda_name]/page.tsx | 0 .../(public)/{ => (polda)}/polda/layout.tsx | 0 .../satker/[satker_name]/page.tsx | 0 .../(public)/{ => (satker)}/satker/layout.tsx | 0 components/form/content/image-detail-form.tsx | 166 +++++++-------- components/form/content/video-detail-form.tsx | 193 +++++++++++++----- components/landing-page/division.tsx | 4 +- components/landing-page/new-content.tsx | 5 + service/landing/landing.ts | 4 +- 9 files changed, 240 insertions(+), 132 deletions(-) rename app/[locale]/(public)/{ => (polda)}/polda/[polda_name]/page.tsx (100%) rename app/[locale]/(public)/{ => (polda)}/polda/layout.tsx (100%) rename app/[locale]/(public)/{ => (satker)}/satker/[satker_name]/page.tsx (100%) rename app/[locale]/(public)/{ => (satker)}/satker/layout.tsx (100%) diff --git a/app/[locale]/(public)/polda/[polda_name]/page.tsx b/app/[locale]/(public)/(polda)/polda/[polda_name]/page.tsx similarity index 100% rename from app/[locale]/(public)/polda/[polda_name]/page.tsx rename to app/[locale]/(public)/(polda)/polda/[polda_name]/page.tsx diff --git a/app/[locale]/(public)/polda/layout.tsx b/app/[locale]/(public)/(polda)/polda/layout.tsx similarity index 100% rename from app/[locale]/(public)/polda/layout.tsx rename to app/[locale]/(public)/(polda)/polda/layout.tsx diff --git a/app/[locale]/(public)/satker/[satker_name]/page.tsx b/app/[locale]/(public)/(satker)/satker/[satker_name]/page.tsx similarity index 100% rename from app/[locale]/(public)/satker/[satker_name]/page.tsx rename to app/[locale]/(public)/(satker)/satker/[satker_name]/page.tsx diff --git a/app/[locale]/(public)/satker/layout.tsx b/app/[locale]/(public)/(satker)/satker/layout.tsx similarity index 100% rename from app/[locale]/(public)/satker/layout.tsx rename to app/[locale]/(public)/(satker)/satker/layout.tsx diff --git a/components/form/content/image-detail-form.tsx b/components/form/content/image-detail-form.tsx index f2bb4025..b88f67dc 100644 --- a/components/form/content/image-detail-form.tsx +++ b/components/form/content/image-detail-form.tsx @@ -133,11 +133,11 @@ export default function FormImageDetail() { const [filePlacements, setFilePlacements] = useState([]); const [detailThumb, setDetailThumb] = useState([]); const [thumbsSwiper, setThumbsSwiper] = useState(null); + const [isUserMabesApprover, setIsUserMabesApprover] = useState(false); const [selectedTarget, setSelectedTarget] = useState(""); const [files, setFiles] = useState([]); const [rejectedFiles, setRejectedFiles] = useState([]); - const [isMabesApprover, setIsMabesApprover] = useState(false); let fileTypeId = "1"; @@ -157,7 +157,7 @@ export default function FormImageDetail() { userLevelId == "216" && roleId == "3" ) { - setIsMabesApprover(true); + setIsUserMabesApprover(true); } }, [userLevelId, roleId]); @@ -306,7 +306,7 @@ export default function FormImageDetail() { mediaUploadId: id, statusId: status, message: description, - files: isMabesApprover ? getPlacement() : [], + files: isUserMabesApprover ? getPlacement() : [], }; loading(); const response = await submitApproval(data); @@ -330,9 +330,11 @@ export default function FormImageDetail() { } close(); + submitApprovalSuccesss(); return false; } + const setupPlacement = ( index: number, placement: string, @@ -396,8 +398,10 @@ export default function FormImageDetail() { icon: "success", confirmButtonColor: "#3085d6", confirmButtonText: "OK", - }).then(() => { - router.push("/in/contributor/content/image"); + }).then((result) => { + if (result.isConfirmed) { + router.push("/contributor/content/image"); + } }); }; @@ -516,7 +520,7 @@ export default function FormImageDetail() {
- +
@@ -675,82 +679,84 @@ export default function FormImageDetail() {
-
-
- - setupPlacement(index, "all", Boolean(e)) - } - /> - -
-
- - setupPlacement(index, "mabes", Boolean(e)) - } - /> - -
-
- - setupPlacement(index, "polda", Boolean(e)) - } - /> - -
+ {isUserMabesApprover && +
+
+ + setupPlacement(index, "all", Boolean(e)) + } + /> + +
+
+ + setupPlacement(index, "mabes", Boolean(e)) + } + /> + +
+
+ + setupPlacement(index, "polda", Boolean(e)) + } + /> + +
-
- - setupPlacement( - index, - "international", - Boolean(e) - ) - } - /> - +
+ + setupPlacement( + index, + "international", + Boolean(e) + ) + } + /> + +
-
+ }
)) diff --git a/components/form/content/video-detail-form.tsx b/components/form/content/video-detail-form.tsx index c703bfc5..c6331988 100644 --- a/components/form/content/video-detail-form.tsx +++ b/components/form/content/video-detail-form.tsx @@ -134,10 +134,11 @@ export default function FormVideoDetail() { const [detailVideo, setDetailVideo] = useState([]); const [thumbsSwiper, setThumbsSwiper] = useState(null); + const [filePlacements, setFilePlacements] = useState([]); const [selectedTarget, setSelectedTarget] = useState(""); const [files, setFiles] = useState([]); const [rejectedFiles, setRejectedFiles] = useState([]); - const [isMabesApprover, setIsMabesApprover] = useState(false); + const [isUserMabesApprover, setIsUserMabesApprover] = useState(false); let fileTypeId = "2"; @@ -168,7 +169,7 @@ export default function FormVideoDetail() { userLevelId == "216" && roleId == "3" ) { - setIsMabesApprover(true); + setIsUserMabesApprover(true); } }, [userLevelId, roleId]); @@ -254,9 +255,16 @@ export default function FormVideoDetail() { }, [refresh, setValue]); const actionApproval = (e: string) => { + const temp = []; + for (const element of detail.files) { + temp.push([]); + } + setFilePlacements(temp); setStatus(e); - setModalOpen(true); + setFiles(detail.files); + setDescription(""); + setModalOpen(true); }; const submit = async () => { @@ -286,8 +294,7 @@ export default function FormVideoDetail() { mediaUploadId: id, statusId: status, message: description, - files: [], - // files: isMabesApprover ? getPlacement() : [], + files: isUserMabesApprover ? getPlacement() : [], }; loading(); @@ -310,10 +317,57 @@ export default function FormVideoDetail() { } close(); + submitApprovalSuccesss(); return false; } + const getPlacement = () => { + console.log("getPlaa", filePlacements); + const temp = []; + for (let i = 0; i < filePlacements?.length; i++) { + if (filePlacements[i].length !== 0) { + const now = filePlacements[i].filter((a) => a !== "all"); + const data = { mediaFileId: files[i].id, placement: now.join(",") }; + temp.push(data); + } + } + return temp; + }; + + const setupPlacement = ( + index: number, + placement: string, + checked: boolean + ) => { + let temp = [...filePlacements]; + if (checked) { + if (placement === "all") { + temp[index] = ["all", "mabes", "polda", "international"]; + } else { + const now = temp[index]; + now.push(placement); + if (now.length === 3 && !now.includes("all")) { + now.push("all"); + } + temp[index] = now; + } + } else { + if (placement === "all") { + temp[index] = []; + } else { + const now = temp[index].filter((a) => a !== placement); + console.log("now", now); + temp[index] = now; + if (now.length === 3 && now.includes("all")) { + const newData = now.filter((b) => b !== "all"); + temp[index] = newData; + } + } + } + setFilePlacements(temp); + }; + function handleDeleteFileApproval(id: number) { const selectedFiles = files.filter((file) => file.id != id); setFiles(selectedFiles); @@ -344,8 +398,10 @@ export default function FormVideoDetail() { icon: "success", confirmButtonColor: "#3085d6", confirmButtonText: "OK", - }).then(() => { - router.push("/in/contributor/content/video"); + }).then((result) => { + if (result.isConfirmed) { + router.push("/contributor/content/video"); + } }); }; @@ -610,7 +666,7 @@ export default function FormVideoDetail() { Berikan Komentar {status == "2" - ? files?.map((file) => ( + ? files?.map((file, index) => (
-
-
- - -
-
- - -
-
- - -
+ {isUserMabesApprover && +
+
+ + setupPlacement(index, "all", Boolean(e)) + } + /> + +
+
+ + setupPlacement(index, "mabes", Boolean(e)) + } + /> + +
+
+ + setupPlacement(index, "polda", Boolean(e)) + } + /> + +
-
- - +
+ + setupPlacement( + index, + "international", + Boolean(e) + ) + } + /> + +
-
+ }
)) @@ -744,7 +843,7 @@ export default function FormVideoDetail() { diff --git a/components/landing-page/division.tsx b/components/landing-page/division.tsx index eab1ded1..39608ce1 100644 --- a/components/landing-page/division.tsx +++ b/components/landing-page/division.tsx @@ -94,7 +94,7 @@ const Division = () => { filteredList.map((region, index) => !seeAllValue ? ( index < 7 ? ( - +
{region.name}
@@ -104,7 +104,7 @@ const Division = () => { "" ) ) : ( - +
{region.name}
diff --git a/components/landing-page/new-content.tsx b/components/landing-page/new-content.tsx index bdc42672..c92a95e3 100644 --- a/components/landing-page/new-content.tsx +++ b/components/landing-page/new-content.tsx @@ -18,17 +18,22 @@ const NewContent = (props: { type: string }) => { const pathname = usePathname(); const params = useParams(); const locale = params?.locale; + const poldaName = params?.polda_name; + const satkerName = params?.satker_name; const t = useTranslations("LandingPage"); useEffect(() => { initFetch(); }, [selectedTab]); const initFetch = async () => { + console.log("Satker Name : ", satkerName); const request = { + title: "", page: 0, size: 5, sortBy: props.type == "popular" ? "clickCount" : "createdAt", contentTypeId: selectedTab == "image" ? "1" : selectedTab == "video" ? "2" : selectedTab == "text" ? "3" : selectedTab == "audio" ? "4" : "", + group: poldaName && String(poldaName)?.length > 1 ? poldaName : "", }; const response = await getListContent(request); console.log("category", response); diff --git a/service/landing/landing.ts b/service/landing/landing.ts index 822a395a..0e8c4afc 100644 --- a/service/landing/landing.ts +++ b/service/landing/landing.ts @@ -10,9 +10,7 @@ export async function getCategoryData() { export async function getListContent(props: any) { return await httpGetInterceptor( - `media/public/list?enablePage=1&sort=desc&sortBy=${props.sortBy}&size=${props.size}&page=${props.page}&typeId=${props.contentTypeId}&title=${ - props.title ? props.title : "" - }&categoryId=&fileFormats=&tags=&group=&startDate=&endDate=&month=&year=` + `media/public/list?enablePage=1&sort=desc&sortBy=${props.sortBy}&size=${props.size}&page=${props.page}&typeId=${props.contentTypeId}&title=${props.title}&group=${props.group}&categoryId=&fileFormats=&tags=&startDate=&endDate=&month=&year=` ); }