diff --git a/src/app/api/division/[id]/detail/route.ts b/src/app/api/division/[id]/detail/route.ts index 61434c5..c65c4fc 100644 --- a/src/app/api/division/[id]/detail/route.ts +++ b/src/app/api/division/[id]/detail/route.ts @@ -133,7 +133,43 @@ export async function GET(request: Request, context: { params: { id: string } }) projectTitle: v.DivisionProject.title })) } else if (kategori == "new-file") { - allData = await prisma.divisionDocumentFolderFile.findMany({ + const dataShare = await prisma.divisionDocumentShare.findMany({ + skip: 0, + take: 5, + where: { + isActive: true, + idDivision: String(id), + DivisionDocumentFolderFile: { + isActive: true, + category: "FILE" + } + }, + select: { + DivisionDocumentFolderFile: { + select: { + id: true, + name: true, + extension: true, + path: true, + } + }, + createdAt: true + }, + orderBy: { + createdAt: 'desc' + } + }) + + const fixShare = dataShare.map((v: any) => ({ + ..._.omit(v, ["DivisionDocumentFolderFile"]), + id: v.DivisionDocumentFolderFile.id, + name: v.DivisionDocumentFolderFile.name, + extension: v.DivisionDocumentFolderFile.extension, + path: 'home', + share: true + })) + + const dataDokumen = await prisma.divisionDocumentFolderFile.findMany({ skip: 0, take: 5, where: { @@ -146,11 +182,24 @@ export async function GET(request: Request, context: { params: { id: string } }) name: true, extension: true, path: true, + createdAt: true }, orderBy: { createdAt: "desc" } }) + + const fixData = dataDokumen.map((v: any) => ({ + ..._.omit(v, [""]), + share: false + })) + + if (fixShare.length > 0) { + fixData.push(...fixShare) + } + + allData = _.orderBy(fixData, ['createdAt'], ['desc']); + } else if (kategori == "new-discussion") { const diskusi = await prisma.divisionDisscussion.findMany({ skip: 0, diff --git a/src/module/division_new/lib/type_division.ts b/src/module/division_new/lib/type_division.ts index 4846b1f..9b6273e 100644 --- a/src/module/division_new/lib/type_division.ts +++ b/src/module/division_new/lib/type_division.ts @@ -42,7 +42,8 @@ export interface IDataKalenderOnDetailDivision { id: string, name: string, extension: string, - path: string + path: string, + share:boolean } export interface IDataDiscussionOnDetailDivision { diff --git a/src/module/division_new/ui/list_document.tsx b/src/module/division_new/ui/list_document.tsx index 7409732..a2e2c6b 100644 --- a/src/module/division_new/ui/list_document.tsx +++ b/src/module/division_new/ui/list_document.tsx @@ -2,7 +2,7 @@ import { TEMA, } from "@/module/_global"; import { useHookstate } from "@hookstate/core"; import { Carousel } from "@mantine/carousel"; -import { Box, Center, Group, Image, Skeleton, Stack, Text, UnstyledButton } from "@mantine/core"; +import { Box, Center, Flex, Group, Image, Indicator, Skeleton, Stack, Text, UnstyledButton } from "@mantine/core"; import { useMediaQuery, useShallowEffect } from "@mantine/hooks"; import { useParams, useRouter } from "next/navigation"; import { useState } from "react"; @@ -10,6 +10,7 @@ import toast from "react-hot-toast"; import { funGetDetailDivisionById } from "../lib/api_division"; import * as ICON from '../lib/file_icon'; import { IDataKalenderOnDetailDivision } from "../lib/type_division"; +import { FaShare } from "react-icons/fa6"; const iconContainer = (icon: string) => 'data:image/svg+xml;base64,' + btoa(icon) @@ -44,7 +45,7 @@ export default function ListDocumentOnDetailDivision() { return ( - Dokumen Terbaru + Dokumen Terkini { loading @@ -70,11 +71,31 @@ export default function ListDocumentOnDetailDivision() { router.push(`/division/${param.id}/document?path=${v.path}`)}> - -
- image -
-
+ { + v.share ? + } + size={25} + > + +
+ image +
+
+
+ : + +
+ image +
+
+ } + {v.name + '.' + v.extension}