()
+ const [isComent, setIsComent] = useState("")
+ const param = useParams<{ id: string, detail: string }>()
-export default function DetailDiscussion({ id }: { id: string }) {
+ const getData = async () => {
+ try {
+ const response = await funGetDiscussionById(id)
+ setData(response.data)
+ } catch (error) {
+ console.log(error)
+ }
+ }
- const [isData, setData] = useState([])
+ useShallowEffect(() => {
+ getData()
+ }, [])
+
+ const sendComent = async () => {
+ try {
+ const response = await funCreateComent(id, {
+ comment: isComent,
+ idDiscussion: param.detail
+ })
+
+ if (response.success) {
+ setIsComent("")
+ getData()
+ } else {
+ toast.error(response.message)
+ }
+ } catch (error) {
+ console.log(error)
+ }
+ }
- const getData = async () => {
- try {
- const response = await funGetDiscussionById(id)
- setData(response.data)
- } catch (error) {
- console.log(error)
- }
- }
- useShallowEffect(() => {
- getData()
- }, [])
return (
<>
-
- {JSON.stringify(isData, null, 1)}
+
- Fibra Marcell
+ {isData?.username}
- BUKA
+ {isData?.status === 1 ? "BUKA" : "TUTUP"}
- 1 Jam
+ {isData?.createdAt}
- It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged
+
+ {isData?.desc}
+
- 10 Komentar
+ {isData?.totalComments} Komentar
- {dataAnggota.map((v, i) => {
+ {isData?.DivisionDisscussionComment.map((v, i) => {
return (
-
+
- {v.name}
+ {v.username}
- 1 Jam
+ {moment(v.createdAt).format("LL")}
- {v.desc}
+ {v.comment}
@@ -141,11 +125,18 @@ export default function DetailDiscussion({ id }: { id: string }) {
}}
size="md"
placeholder="Kirim Komentar"
+ disabled={isData?.status === 2}
+ onChange={(e) => setIsComent(e.target.value)}
+ value={isComent}
/>
-
+
+
+
diff --git a/src/module/discussion/ui/drawer_detail_discussion.tsx b/src/module/discussion/ui/drawer_detail_discussion.tsx
index 182a818..a5db5a2 100644
--- a/src/module/discussion/ui/drawer_detail_discussion.tsx
+++ b/src/module/discussion/ui/drawer_detail_discussion.tsx
@@ -4,29 +4,63 @@ import { Box, Stack, SimpleGrid, Flex, Text } from "@mantine/core";
import { useState } from "react";
import toast from "react-hot-toast";
import { BsTrash3 } from "react-icons/bs";
-import { FaPencil } from "react-icons/fa6";
+import { FaCheck, FaPencil } from "react-icons/fa6";
import { MdClose } from "react-icons/md";
+import { funDeleteDiscussion, funEditStatusDiscussion } from "../lib/api_discussion";
+import { useParams, useRouter } from "next/navigation";
-export default function DrawerDetailDiscussion({ onSuccess }: { onSuccess: (val: boolean) => void }) {
+export default function DrawerDetailDiscussion({ onSuccess, id, status, idDivision }: { onSuccess: (val: boolean) => void, id: string, status: number, idDivision: string }) {
const [isValModal, setValModal] = useState(false)
const [isValModalStatus, setValModalStatus] = useState(false)
+ const router = useRouter()
+ const param = useParams<{ id: string, detail: string }>()
- function onTrue(val: boolean) {
- if (val) {
- onSuccess(true)
- toast.success("Sukses! Data terhapus");
+
+ async function fetchStatusDiscussion(val: boolean) {
+ try {
+ if (val) {
+ const response = await funEditStatusDiscussion(id, { status: status })
+
+ if (response.success) {
+ toast.success(response.message)
+ setValModalStatus(false)
+ } else {
+ toast.error(response.message)
+ }
+ }
+ setValModalStatus(false)
+ } catch (error) {
+ console.log(error);
+ setValModalStatus(false)
+ toast.error("Gagal menambahkan diskusi, coba lagi nanti");
+ } finally {
+ setValModalStatus(false)
}
- setValModal(false)
}
- function onTrueStatus(val: boolean) {
- if (val) {
- onSuccess(true)
- toast.success("Sukses! Data terupdate");
+ async function fetchDeleteDiscussion(val: boolean) {
+ try {
+ if (val) {
+ const response = await funDeleteDiscussion(id)
+ if (response.success) {
+ toast.success(response.message)
+ setValModal(false)
+ router.push(`/division/${param.id}/discussion`)
+ } else {
+ toast.error(response.message)
+ }
+ }
+ setValModal(false)
+ } catch (error) {
+ console.log(error);
+ setValModal(false)
+ toast.error("Gagal hapus diskusi, coba lagi nanti");
+ } finally {
+ setValModal(false)
}
- setValModalStatus(false)
}
+
return (
@@ -42,7 +76,7 @@ export default function DrawerDetailDiscussion({ onSuccess }: { onSuccess: (val:
- window.location.href = "/discussion/edit/2"} justify={'center'} align={'center'} direction={'column'} >
+ window.location.href = `/division/${param.id}/discussion/update/${param.detail}`} justify={'center'} align={'center'} direction={'column'} >
@@ -51,12 +85,28 @@ export default function DrawerDetailDiscussion({ onSuccess }: { onSuccess: (val:
- setValModalStatus(true)} justify={'center'} align={'center'} direction={'column'} >
+ setValModalStatus(true)} >
-
-
-
- Tutup Diskusi
+ {status === 1 ? (
+ <>
+
+
+
+
+ Tutup Diskusi
+
+ >
+ ) : (
+ <>
+
+
+
+
+
+ Buka Diskusi
+
+ >
+ )}
@@ -64,12 +114,12 @@ export default function DrawerDetailDiscussion({ onSuccess }: { onSuccess: (val:
setValModal(false)}
description="Apakah Anda yakin ingin menghapus diskusi ini?"
- onYes={(val) => { onTrue(val) }} />
+ onYes={(val) => { fetchDeleteDiscussion(val) }} />
setValModalStatus(false)}
description="Apakah Anda yakin ingin mengubah status diskusi ini?"
- onYes={(val) => { onTrueStatus(val) }} />
+ onYes={(val) => { fetchStatusDiscussion(val) }} />
)
}
\ No newline at end of file
diff --git a/src/module/discussion/ui/form_edit_discussion.tsx b/src/module/discussion/ui/form_edit_discussion.tsx
new file mode 100644
index 0000000..3476a53
--- /dev/null
+++ b/src/module/discussion/ui/form_edit_discussion.tsx
@@ -0,0 +1,99 @@
+'use client'
+import { WARNA } from "@/module/_global"
+import LayoutModal from "@/module/_global/layout/layout_modal"
+import { Box, Group, Avatar, Textarea, Button, Grid } from "@mantine/core"
+import { useParams, useRouter } from "next/navigation"
+import { useState } from "react"
+import toast from "react-hot-toast"
+import { funEditDiscussion, funGetDiscussionById } from "../lib/api_discussion"
+import { useShallowEffect } from "@mantine/hooks"
+
+export default function FormEditDiscussion() {
+ const [isValModal, setValModal] = useState(false)
+ const router = useRouter()
+ const param = useParams<{ id: string, detail: string }>()
+ const [isDataOne, setDataOne] = useState("")
+
+ async function fetchGetOneDiscussion() {
+ try {
+ const response = await funGetDiscussionById(param.detail)
+ setDataOne(response.data.desc)
+ } catch (error) {
+ console.log(error);
+ toast.error("Gagal menampilkan discussion, coba lagi nanti");
+ }
+ }
+
+ async function fetchEditDiscussion(val: boolean) {
+ try {
+ if (val) {
+ const response = await funEditDiscussion(param.detail, {
+ desc: isDataOne
+ })
+ if (response.success) {
+ toast.success(response.message)
+ setValModal(false)
+ router.push(`/division/${param.id}/discussion/${param.detail}`)
+ } else {
+ toast.error(response.message)
+ }
+ }
+ setValModal(false)
+ } catch (error) {
+ console.log(error);
+ setValModal(false)
+ toast.error("Gagal menambahkan diskusi, coba lagi nanti");
+ } finally {
+ setValModal(false)
+ }
+ }
+
+ useShallowEffect(() => {
+ fetchGetOneDiscussion()
+ }, [])
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ setValModal(false)}
+ description="Apakah Anda yakin ingin mengubah data?"
+ onYes={(val) => { fetchEditDiscussion(val) }} />
+
+ )
+}
\ No newline at end of file
diff --git a/src/module/discussion/ui/list_discussion.tsx b/src/module/discussion/ui/list_discussion.tsx
index 536c1d3..70226c7 100644
--- a/src/module/discussion/ui/list_discussion.tsx
+++ b/src/module/discussion/ui/list_discussion.tsx
@@ -1,7 +1,7 @@
'use client'
import { WARNA } from "@/module/_global";
import { Avatar, Badge, Box, Divider, Flex, Group, Text, TextInput } from "@mantine/core";
-import { useRouter, useSearchParams } from "next/navigation";
+import { useParams, useRouter, useSearchParams } from "next/navigation";
import { useState } from "react";
import { GrChatOption } from "react-icons/gr";
import { HiMagnifyingGlass } from "react-icons/hi2";
@@ -12,6 +12,7 @@ import { IDataDiscussion } from "../lib/type_discussion";
export default function ListDiscussion({ id }: { id: string }) {
const [isData, setData] = useState([])
const [searchQuery, setSearchQuery] = useState('')
+ const param = useParams<{ id: string }>()
const getData = async () => {
try {
@@ -48,7 +49,7 @@ export default function ListDiscussion({ id }: { id: string }) {
return (
{
- router.push(`/division/${v.id}/discussion/${v.id}`)
+ router.push(`/division/${param.id}/discussion/${v.id}`)
}}
>
{v.user_name}
- {(v.status) ? "BUKA" : "TUTUP"}
+ {v.status === 1 ? "BUKA" : "TUTUP"}
- {v.createdAt}
+ {v.createdAt}
{v.desc}
diff --git a/src/module/discussion/ui/navbar_detail_discussion.tsx b/src/module/discussion/ui/navbar_detail_discussion.tsx
index 9f82da1..c43eb99 100644
--- a/src/module/discussion/ui/navbar_detail_discussion.tsx
+++ b/src/module/discussion/ui/navbar_detail_discussion.tsx
@@ -5,7 +5,7 @@ import { useState } from "react";
import { HiMenu } from "react-icons/hi";
import DrawerDetailDiscussion from "./drawer_detail_discussion";
-export default function NavbarDetailDiscussion() {
+export default function NavbarDetailDiscussion({id, status, idDivision}: {id: string, status: number, idDivision:string}) {
const [openDrawer, setOpenDrawer] = useState(false)
return (
<>
@@ -16,7 +16,7 @@ export default function NavbarDetailDiscussion() {
}
/>
setOpenDrawer(false)}>
- setOpenDrawer(false)} />
+ setOpenDrawer(false)} id={id} status={status} idDivision={idDivision} />
>
);
diff --git a/src/module/division_new/_division_fitur/discussion/component/form_edit_discussion.tsx b/src/module/division_new/_division_fitur/discussion/component/form_edit_discussion.tsx
deleted file mode 100644
index 8358a27..0000000
--- a/src/module/division_new/_division_fitur/discussion/component/form_edit_discussion.tsx
+++ /dev/null
@@ -1,59 +0,0 @@
-'use client'
-import { WARNA } from "@/module/_global"
-import LayoutModal from "@/module/_global/layout/layout_modal"
-import { Box, Group, Avatar, Textarea, Button } from "@mantine/core"
-import { useRouter } from "next/navigation"
-import { useState } from "react"
-import toast from "react-hot-toast"
-
-export default function FormEditDiscussion() {
- const [isValModal, setValModal] = useState(false)
- const router = useRouter()
-
- function onTrue(val: boolean) {
- if (val) {
- toast.success("Sukses! Data tersimpan");
- router.back()
-
- }
- setValModal(false)
- }
-
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
- setValModal(false)}
- description="Apakah Anda yakin ingin mengubah data?"
- onYes={(val) => { onTrue(val) }} />
-
- )
-}
\ No newline at end of file
diff --git a/src/module/division_new/_division_fitur/discussion/view/view_edit_discussion.tsx b/src/module/division_new/_division_fitur/discussion/view/view_edit_discussion.tsx
deleted file mode 100644
index 67563fa..0000000
--- a/src/module/division_new/_division_fitur/discussion/view/view_edit_discussion.tsx
+++ /dev/null
@@ -1,11 +0,0 @@
-import { LayoutNavbarNew } from "@/module/_global";
-import FormEditDiscussion from "../component/form_edit_discussion";
-
-export default function ViewEditDiscussion() {
- return (
- <>
- >} />
-
- >
- )
-}
\ No newline at end of file
diff --git a/src/module/division_new/index.ts b/src/module/division_new/index.ts
index c637c29..06016c7 100644
--- a/src/module/division_new/index.ts
+++ b/src/module/division_new/index.ts
@@ -8,7 +8,6 @@ import ViewDetailEventDivision from "./_division_fitur/calender/view/view_detail
import ViewDivisionCalender from "./_division_fitur/calender/view/view_division_calender";
import ViewHistoryDivisionCalender from "./_division_fitur/calender/view/view_history_division_calender";
import ViewUpdateDivisionCalender from "./_division_fitur/calender/view/view_update_division_calender";
-import ViewEditDiscussion from "./_division_fitur/discussion/view/view_edit_discussion";
import ViewDocumentDivision from "./_division_fitur/document/view/view_document_division";
import ViewCreateTaskDivision from "./_division_fitur/task/view/view_create_division_task";
import ViewDetailDivisionTask from "./_division_fitur/task/view/view_detail_division_task";
@@ -45,7 +44,6 @@ export { ViewDetailEventDivision };
export { ViewUpdateDivisionCalender };
export { UpdateUserDivisionCalender };
export { UpdateUlangiEvent };
-export { ViewEditDiscussion };
export { ViewDocumentDivision };
export type { IFormDivision, IFormMemberDivision, IFormFixDivision, IDataDivison, IDataMemberDivision }
export { ListDivision }
diff --git a/src/module/user/member/lib/type_member.ts b/src/module/user/member/lib/type_member.ts
index 7258a49..7119f24 100644
--- a/src/module/user/member/lib/type_member.ts
+++ b/src/module/user/member/lib/type_member.ts
@@ -50,4 +50,4 @@ export interface IEditDataMember {
export interface IMember{
id: string
- }
\ No newline at end of file
+}
\ No newline at end of file