diff --git a/api.http b/api.http index 41e64e4..dae69ff 100644 --- a/api.http +++ b/api.http @@ -175,25 +175,24 @@ Content-Type: application/json "title": "cobaannouncement1 dsdsd", "desc": "coba announcement sdsdsd", - "idVillage": "121212", - "createBy": "111", + "idVillage": "desa1", + "createBy": "superAdminLukman", "groups": [ { - "idGroup": "1", + "idGroup": "group1", "idDivision": "1" }, - { - "idGroup": "1", - "idDivision": "2" - } ] } ### -GET http://localhost:3000/api/announcement/get?path=get-all-announcement&groupID=1&villageID=121212&createBy=111&divisionID=1 HTTP/1.1 +GET http://localhost:3000/api/announcement/get?path=get-all-announcement HTTP/1.1 ### -GET http://localhost:3000/api/announcement/get?path=get-one-announcement&announcementId=clz6kqzvt000eb3mle1nyz6fd HTTP/1.1 +GET http://localhost:3000/api/announcement/get?path=get-all-announcement&divisionI=1 HTTP/1.1 + +### +GET http://localhost:3000/api/announcement/get?path=get-one-announcement&announcementId=1 HTTP/1.1 ### POST http://localhost:3000/api/announcement/post?path=update-announcement HTTP/1.1 diff --git a/src/module/announcement/api/get/getAllAnnouncement.ts b/src/module/announcement/api/get/getAllAnnouncement.ts index 328760c..c4042b0 100644 --- a/src/module/announcement/api/get/getAllAnnouncement.ts +++ b/src/module/announcement/api/get/getAllAnnouncement.ts @@ -1,42 +1,33 @@ import { prisma } from "@/module/_global"; +import { funGetUserByCookies } from "@/module/auth"; +import _ from "lodash"; +import moment from "moment"; +import "moment/locale/id"; import { NextRequest } from "next/server"; export async function getAllAnnouncement(req: NextRequest) { try { - const searchParams = req.nextUrl.searchParams; - const groupID = searchParams.get("groupID"); - const villageID = searchParams.get("villageID"); - const createBy = searchParams.get("createBy"); - const divisionID = searchParams.get("divisionID"); + const user = await funGetUserByCookies(); + const villageId = user.idVillage const announcements = await prisma.announcement.findMany({ where: { - idVillage: String(villageID), - createdBy: String(createBy), + idVillage: String(villageId), isActive: true, }, select: { id: true, title: true, desc: true, + createdAt: true, }, }); - const announcementMember = await prisma.announcementMember.findMany({ - where: { - idGroup: String(groupID), - idDivision: String(divisionID), - idAnnouncement: { - in: announcements.map((announcement: any) => announcement.id), - }, - }, - select: { - idAnnouncement: true, - idGroup: true, - idDivision: true, - }, - }); + const allData = announcements.map((v: any) => ({ + ..._.omit(v, ["createdAt"]), + createdAt: moment(v.createdAt).format("LL") + })) - return Response.json({ announcements, announcementMember }); + return Response.json(allData); } catch (error) { console.error(error); return Response.json( diff --git a/src/module/announcement/api/get/getOneAnnouncement.ts b/src/module/announcement/api/get/getOneAnnouncement.ts index 05a7f10..9fe1346 100644 --- a/src/module/announcement/api/get/getOneAnnouncement.ts +++ b/src/module/announcement/api/get/getOneAnnouncement.ts @@ -1,4 +1,5 @@ import { prisma } from "@/module/_global"; +import _ from "lodash"; import { NextRequest } from "next/server"; export async function getOneAnnouncement(req: NextRequest) { @@ -23,10 +24,20 @@ export async function getOneAnnouncement(req: NextRequest) { idAnnouncement: true, idGroup: true, idDivision: true, + Group: { + select: { + name: true, + }, + }, }, }); - return Response.json({ announcement, announcementMember }); + const allAnnouncementMember = announcementMember.map((v: any) => ({ + ..._.omit(v, ["Group"]), + group: v.Group.name, + })) + + return Response.json({ announcement, allAnnouncementMember }); } catch (error) { console.error(error); return Response.json( diff --git a/src/module/announcement/component/create_announcement.tsx b/src/module/announcement/component/create_announcement.tsx index 11bd2ec..9f7eb6e 100644 --- a/src/module/announcement/component/create_announcement.tsx +++ b/src/module/announcement/component/create_announcement.tsx @@ -1,10 +1,11 @@ 'use client' import { WARNA } from "@/module/_global"; import LayoutModal from "@/module/_global/layout/layout_modal"; -import { Box, Button, Stack, Textarea, TextInput } from "@mantine/core"; +import { Box, Button, Group, Stack, Text, Textarea, TextInput } from "@mantine/core"; import { useState } from "react"; import toast from "react-hot-toast"; import { HiOutlineChevronRight } from "react-icons/hi2"; +import { IoIosArrowForward } from "react-icons/io"; export default function CreateAnnouncement() { const [isOpen, setOpen] = useState(false) @@ -19,14 +20,10 @@ export default function CreateAnnouncement() { return (