diff --git a/app/[locale]/(protected)/contributor/agenda-setting/calender-view.tsx b/app/[locale]/(protected)/contributor/agenda-setting/calender-view.tsx
index 9169de8f..87df5001 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}
+
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 27def02c..e4abf2e9 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() {