From a331460cefca86f0f19f4adb3a283adf940b2d8c Mon Sep 17 00:00:00 2001 From: Anang Yusman Date: Tue, 4 Feb 2025 15:08:45 +0800 Subject: [PATCH] feat:update agenda setting, detail penugasan --- .../agenda-setting/calender-view.tsx | 15 ++++-- .../agenda-setting/event-modal.tsx | 31 ++++++++++-- components/form/task/task-detail-form.tsx | 50 ++++++++++++++++--- service/agenda-setting/agenda-setting.ts | 5 ++ service/task.ts | 5 ++ 5 files changed, 91 insertions(+), 15 deletions(-) diff --git a/app/[locale]/(protected)/contributor/agenda-setting/calender-view.tsx b/app/[locale]/(protected)/contributor/agenda-setting/calender-view.tsx index 6713b9c8..3597b1d7 100644 --- a/app/[locale]/(protected)/contributor/agenda-setting/calender-view.tsx +++ b/app/[locale]/(protected)/contributor/agenda-setting/calender-view.tsx @@ -10,7 +10,7 @@ import { Label } from "@/components/ui/label"; import ExternalDraggingevent from "./dragging-events"; import { Calendar } from "@/components/ui/calendar"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; -import { Book, Plus } from "lucide-react"; +import { Book, CheckSquare2, CheckSquare2Icon, Plus } from "lucide-react"; import { Checkbox } from "@/components/ui/checkbox"; import { EventContentArg } from "@fullcalendar/core"; import EventModal from "./event-modal"; @@ -334,11 +334,17 @@ const CalendarView = ({ categories }: CalendarViewProps) => { const renderEventContent = (eventInfo: any) => { const { title } = eventInfo.event; + const { isPublish } = eventInfo.event.extendedProps; const { createdByName } = eventInfo.event.extendedProps; return ( <> -

{title}

+
+ {" "} + {isPublish && } +

{title}

+
+

Created By : {createdByName}

@@ -437,7 +443,10 @@ const CalendarView = ({ categories }: CalendarViewProps) => { className={`w-full p-1 mb-2 rounded-md text-white text-sm ${bgColor}`} onClick={() => handleClickListItem(item)} > -

{text}

+
+ +

{text}

+

Created By: {createdBy}

); diff --git a/app/[locale]/(protected)/contributor/agenda-setting/event-modal.tsx b/app/[locale]/(protected)/contributor/agenda-setting/event-modal.tsx index 94bbf18e..6d214941 100644 --- a/app/[locale]/(protected)/contributor/agenda-setting/event-modal.tsx +++ b/app/[locale]/(protected)/contributor/agenda-setting/event-modal.tsx @@ -46,6 +46,7 @@ import { postSchedule } from "@/service/schedule/schedule"; import { deleteAgendaSettings, getAgendaSettingsById, + publishAgendaSettings, saveAgendaSettings, } from "@/service/agenda-setting/agenda-setting"; import { Checkbox } from "@/components/ui/checkbox"; @@ -153,6 +154,7 @@ const EventModal = ({ const [selectedPolres, setSelectedPolres] = React.useState([]); const [wavesurfer, setWavesurfer] = useState(); const [isPlaying, setIsPlaying] = useState(false); + const [isPublishing, setIsPublishing] = useState(false); const { register, @@ -293,7 +295,7 @@ const EventModal = ({ }); }; - const save = async (data: any) => { + const save = async (data: any, publish = false) => { const publishTo = []; if (wilayahPublish.semua) publishTo.push("all"); if (wilayahPublish.nasional) publishTo.push("mabes"); @@ -356,6 +358,18 @@ const EventModal = ({ "0" // Optional: Replace with actual duration if available ); }); + if (publish) { + setIsPublishing(true); + const publishResponse = await publishAgendaSettings(id); + setIsPublishing(false); + + if (publishResponse?.error) { + error(publishResponse?.message); + return false; + } + + success("Agenda berhasil dipublikasikan!"); + } }; const onSubmit = (data: any) => { @@ -1120,9 +1134,18 @@ const EventModal = ({ {detailData && (
- + {roleId == 11 || roleId == 12 ? ( + + ) : ( + "" + )}
)} diff --git a/components/form/task/task-detail-form.tsx b/components/form/task/task-detail-form.tsx index cb86bfac..7ca5760d 100644 --- a/components/form/task/task-detail-form.tsx +++ b/components/form/task/task-detail-form.tsx @@ -30,6 +30,7 @@ import { getAcceptance, getAcceptanceAssignmentStatus, getAssignmentResponseList, + getMediaUpload, getTask, getUserLevelForAssignments, } from "@/service/task"; @@ -192,6 +193,7 @@ export default function FormTaskDetail() { const userLevelNumber = getCookiesDecrypt("ulne"); const userId = getCookiesDecrypt("uie"); + const userLevelId = getCookiesDecrypt("ulie"); // State for various form fields const [taskOutput, setTaskOutput] = useState({ @@ -227,6 +229,9 @@ export default function FormTaskDetail() { [] ); + const [totalPage, setTotalPage] = React.useState(1); + const [dataTable, setDataTable] = React.useState([]); + const [totalData, setTotalData] = React.useState(1); const [imageFiles, setImageFiles] = useState([]); const [videoFiles, setVideoFiles] = useState([]); const [textFiles, setTextFiles] = useState([]); @@ -322,6 +327,19 @@ export default function FormTaskDetail() { fetchPoldaPolres(); }, []); + const fetchFilteredData = async (selectedLevels: any[]) => { + try { + const levels = + selectedLevels.length === 0 ? userLevelId : selectedLevels.join(","); + + const response = await getMediaUpload(id, levels); + + setUploadResults(response?.data?.data || []); + } catch (error) { + console.error("Error fetching filtered data:", error); + } + }; + useEffect(() => { async function initState() { if (id) { @@ -330,9 +348,9 @@ export default function FormTaskDetail() { setDetail(details); - if (details) { - setUploadResults(details.uploadResults || []); - } + // if (details) { + // setUploadResults(details.uploadResults || []); + // } if (details?.urls) { // Extract attachmentUrl from each object in urls @@ -432,6 +450,25 @@ export default function FormTaskDetail() { }); }; + const handleCheckboxChangeFilter = async (id: number) => { + setCheckedLevels((prev: any) => { + const updatedLevels = new Set(prev); + + if (updatedLevels.has(id)) { + updatedLevels.delete(id); + } else { + updatedLevels.add(id); + } + + console.log("Checked Levels:", Array.from(updatedLevels)); + + // Fetch data dengan filter userLevelId + fetchFilteredData(Array.from(updatedLevels)); + + return updatedLevels; + }); + }; + const toggleExpand = (poldaId: any) => { setExpandedPolda((prev: any) => ({ ...prev, @@ -1417,10 +1454,9 @@ export default function FormTaskDetail() {