Create dan Update

# feat
- tampilan user
- tampilan admin
## No Issue
This commit is contained in:
2024-01-02 16:35:55 +08:00
parent f02e907bc5
commit 4fc158bdc5
92 changed files with 2357 additions and 851 deletions

View File

@@ -0,0 +1,32 @@
import prisma from "@/app/lib/prisma";
import fs from "fs";
import { NextRequest, NextResponse } from "next/server";
export async function GET(
req: NextRequest,
{ params }: { params: { id: string } }
) {
const get = await prisma.images.findUnique({
where: {
id: params.id,
},
select: {
url: true,
},
});
if (!fs.existsSync(`./public/donasi/image/${get?.url}`)) {
const notFile = fs.readFileSync("./public/aset/global/no_img.png");
return new NextResponse(notFile, {
headers: {
"Content-Type": "image/png",
},
});
}
const file = fs.readFileSync(`./public/donasi/image/${get?.url}`);
return new NextResponse(file, {
headers: {
"Content-Type": "image/png",
},
});
}

View File

@@ -0,0 +1,34 @@
import prisma from "@/app/lib/prisma";
import fs from "fs";
import { NextRequest, NextResponse } from "next/server";
export async function GET(
req: NextRequest,
{ params }: { params: { id: string } }
) {
const get = await prisma.images.findUnique({
where: {
id: params.id,
},
select: {
url: true,
},
});
if (!fs.existsSync(`./public/donasi/image_cerita/${get?.url}`)) {
const notFile = fs.readFileSync("./public/aset/global/no_img.png");
return new NextResponse(notFile, {
headers: {
"Content-Type": "image/png",
},
});
}
const file = fs.readFileSync(`./public/donasi/image_cerita/${get?.url}`);
return new NextResponse(file, {
headers: {
"Content-Type": "image/png",
},
});
}

View File

@@ -0,0 +1,23 @@
import fs from "fs";
import { NextRequest, NextResponse } from "next/server";
export async function GET(
req: NextRequest,
{ params }: { params: { url: string } }
) {
if (!fs.existsSync(`./public/donasi/image/${params.url}`)) {
const notFile = fs.readFileSync("./public/aset/global/no_img.png");
return new NextResponse(notFile, {
headers: {
"Content-Type": "image/png",
},
});
}
const file = fs.readFileSync(`./public/donasi/image/${params.url}`);
return new NextResponse(file, {
headers: {
"Content-Type": "image/png",
},
});
}

View File

@@ -0,0 +1,25 @@
import { NextRequest, NextResponse } from "next/server";
import fs from "fs"
export async function GET(
req: NextRequest,
{ params }: { params: { url: string } }
) {
if (!fs.existsSync(`./public/donasi/image_cerita/${params.url}`)) {
const notFile = fs.readFileSync("./public/aset/global/no_img.png");
return new NextResponse(notFile, {
headers: {
"Content-Type": "image/png",
},
});
}
const file = fs.readFileSync(`./public/donasi/image_cerita/${params.url}`);
return new NextResponse(file, {
headers: {
"Content-Type": "image/png",
},
});
}

View File

@@ -0,0 +1 @@
# Test

View File

@@ -0,0 +1,9 @@
import { AdminDonasi_DetailReview } from "@/app_modules/admin/donasi";
import { AdminDonasi_getById } from "@/app_modules/admin/donasi/fun/get/get_one_by_id";
export default async function Page({params}: {params: {id: string}}) {
// console.log(params.id)
const dataReview = await AdminDonasi_getById(params.id)
// console.log(dataReview)
return <AdminDonasi_DetailReview dataReview={dataReview as any}/>
}

View File

@@ -1,10 +1,20 @@
import { AdminDonasi_Main } from "@/app_modules/admin/donasi";
import AdminDonasi_funCountByStatus from "@/app_modules/admin/donasi/fun/count/fun_count_donasi_by_status";
export default async function Page() {
const countPublish = await AdminDonasi_funCountByStatus("1");
const countReview = await AdminDonasi_funCountByStatus("2");
const countDraft = await AdminDonasi_funCountByStatus("3");
const countReject = await AdminDonasi_funCountByStatus("4");
return (
<>
<AdminDonasi_Main />
<AdminDonasi_Main
countPublish={countPublish as number}
countReview={countReview as number}
countDraft={countDraft as number}
countReject={countReject as number}
/>
</>
);
}

View File

@@ -1,7 +1,10 @@
import { AdminDonasi_TablePublish } from "@/app_modules/admin/donasi";
import { AdminDonasi_getByStatus } from "@/app_modules/admin/donasi/fun/get/get_donasi_by_status";
export default async function Page() {
const listPublish = await AdminDonasi_getByStatus("1")
// console.log(listPublish)
return<>
<AdminDonasi_TablePublish/>
<AdminDonasi_TablePublish listPublish={listPublish as any}/>
</>
}

View File

@@ -1,7 +1,10 @@
import { AdminDonasi_TableReject } from "@/app_modules/admin/donasi";
import { AdminDonasi_getByStatus } from "@/app_modules/admin/donasi/fun/get/get_donasi_by_status";
export default async function Page() {
const dataReject = await AdminDonasi_getByStatus("4")
// console.log(dataReject)
return<>
<AdminDonasi_TableReject/>
<AdminDonasi_TableReject dataReject={dataReject as any}/>
</>
}

View File

@@ -1,5 +1,9 @@
import { AdminDonasi_TableReview } from "@/app_modules/admin/donasi";
import { AdminDonasi_getByStatus } from "@/app_modules/admin/donasi/fun/get/get_donasi_by_status";
import { getToken_UserId } from "@/app_modules/fun/get_user_token";
export default async function Page() {
return <AdminDonasi_TableReview />;
const listReview = await AdminDonasi_getByStatus("2");
// console.log(listReview);
return <AdminDonasi_TableReview listReview={listReview as any} />;
}

View File

@@ -0,0 +1,21 @@
import { LayoutCeritaPenggalangDonasi } from "@/app_modules/donasi";
import { Donasi_getOneById } from "@/app_modules/donasi/fun/get/get_one_donasi_by_id";
import React from "react";
export default async function Layout({
children,
params,
}: {
children: React.ReactNode;
params: { id: string };
}) {
const dataDonasi = await Donasi_getOneById(params.id);
const statusDonasiId = dataDonasi?.donasiMaster_StatusDonasiId;
return (
<>
<LayoutCeritaPenggalangDonasi statusDonasiId={statusDonasiId as string}>
{children}
</LayoutCeritaPenggalangDonasi>
</>
);
}

View File

@@ -0,0 +1,12 @@
import { CeritaPenggalangDonasi } from "@/app_modules/donasi";
import Donasi_getCeritaByDonasiId from "@/app_modules/donasi/fun/get/get_cerita_penggalang";
export default async function Page({ params }: { params: { id: string } }) {
const dataCerita = await Donasi_getCeritaByDonasiId(params.id);
// console.log(dataCerita)
return (
<>
<CeritaPenggalangDonasi dataCerita={dataCerita as any}/>
</>
);
}

View File

@@ -1,8 +0,0 @@
import { LayoutCeritaPenggalangDonasi } from "@/app_modules/donasi";
import React from "react";
export default async function Layout({children}: {children: React.ReactNode}) {
return<>
<LayoutCeritaPenggalangDonasi>{children}</LayoutCeritaPenggalangDonasi>
</>
}

View File

@@ -1,9 +0,0 @@
import { CeritaPenggalangDonasi } from "@/app_modules/donasi";
export default async function Page() {
return (
<>
<CeritaPenggalangDonasi />
</>
);
}

View File

@@ -1,13 +1,12 @@
import { CreateCeritaPenggalangDonasi } from "@/app_modules/donasi";
import { Donasi_getTemporaryCreate } from "@/app_modules/donasi/fun/get/get_temporary_create";
import { funGetUserToken } from "@/app_modules/fun/fun_get_user_token";
import { getToken_UserId } from "@/app_modules/fun/get_user_token";
export default async function Page({ params }: { params: { id: string } }) {
const getTemporaryCreate = await Donasi_getTemporaryCreate(params.id);
const getToken = await funGetUserToken()
const userId = getToken.id
const userId = await getToken_UserId()
return (
<>

View File

@@ -3,13 +3,11 @@ import {
Donasi_getMasterDurasi,
Donasi_getMasterKategori,
} from "@/app_modules/donasi/fun";
import { funGetUserToken } from "@/app_modules/fun/fun_get_user_token";
import { getToken_UserId } from "@/app_modules/fun/get_user_token";
export default async function Page() {
const masterKategori = await Donasi_getMasterKategori();
const masterDurasi = await Donasi_getMasterDurasi();
const getToken = await funGetUserToken()
const userId = getToken.id
return (
<CreateDonasi masterKategori={masterKategori} masterDurasi={masterDurasi} />

View File

@@ -3,12 +3,14 @@ import React from "react";
export default async function Layout({
children,
params
}: {
children: React.ReactNode;
params: {id: string}
}) {
return (
<>
<LayoutDetailDraftDonasi>{children}</LayoutDetailDraftDonasi>
<LayoutDetailDraftDonasi donasiId={params.id} >{children}</LayoutDetailDraftDonasi>
</>
);
}

View File

@@ -0,0 +1,12 @@
import { DetailDraftDonasi } from "@/app_modules/donasi";
import { Donasi_getOneById } from "@/app_modules/donasi/fun/get/get_one_donasi_by_id";
export default async function Page({ params }: { params: { id: string } }) {
const dataDonasi = await Donasi_getOneById(params.id);
return (
<>
<DetailDraftDonasi dataDonasi={dataDonasi as any} />
</>
);
}

View File

@@ -1,7 +0,0 @@
import { DetailDraftDonasi } from "@/app_modules/donasi";
export default async function Paeg() {
return<>
<DetailDraftDonasi/>
</>
}

View File

@@ -0,0 +1,12 @@
import { DetailReviewDonasi } from "@/app_modules/donasi";
import { Donasi_getOneById } from "@/app_modules/donasi/fun/get/get_one_donasi_by_id";
export default async function Page({ params }: { params: { id: string } }) {
const dataDonasi = await Donasi_getOneById(params.id);
return (
<>
<DetailReviewDonasi dataDonasi={dataDonasi as any} />
</>
);
}

View File

@@ -1,7 +0,0 @@
import { DetailReviewDonasi } from "@/app_modules/donasi";
export default async function Page() {
return<>
<DetailReviewDonasi/>
</>
}

View File

@@ -0,0 +1,12 @@
import { EditCeritaPenggalangDonasi } from "@/app_modules/donasi";
import Donasi_getCeritaByDonasiId from "@/app_modules/donasi/fun/get/get_cerita_penggalang";
export default async function Page({ params }: { params: { id: string } }) {
const dataCerita = await Donasi_getCeritaByDonasiId(params.id)
// console.log(dataCerita);
return (
<>
<EditCeritaPenggalangDonasi dataCerita={dataCerita as any} />
</>
);
}

View File

@@ -1,7 +0,0 @@
import { EditCeritaPenggalangDonasi } from "@/app_modules/donasi";
export default async function Page() {
return<>
<EditCeritaPenggalangDonasi/>
</>
}

View File

@@ -0,0 +1,15 @@
import { EditDonasi } from "@/app_modules/donasi";
import { Donasi_getMasterDurasi, Donasi_getMasterKategori } from "@/app_modules/donasi/fun";
import { Donasi_getOneById } from "@/app_modules/donasi/fun/get/get_one_donasi_by_id";
export default async function Page({params}: {params: {id: string}}) {
const dataDonasi = await Donasi_getOneById(params.id)
const masterKategori = await Donasi_getMasterKategori()
const masterDurasi = await Donasi_getMasterDurasi()
return (
<>
<EditDonasi dataDonasi={dataDonasi as any} masterKategori={masterKategori} masterDurasi={masterDurasi} />
</>
);
}

View File

@@ -1,9 +0,0 @@
import { EditDonasi } from "@/app_modules/donasi";
export default async function Page() {
return (
<>
<EditDonasi />
</>
);
}

View File

@@ -1,7 +1,17 @@
import { PostingDonasi } from "@/app_modules/donasi";
import Donasi_getByStatus from "@/app_modules/donasi/fun/get/get_donasi_by_status";
import { getToken_UserId } from "@/app_modules/fun/get_user_token";
export default async function Page() {
return<>
<PostingDonasi/>
const authorId = await getToken_UserId();
const listReview = await Donasi_getByStatus(authorId, "2");
const listDraft = await Donasi_getByStatus(authorId, "3");
// console.log(listReview)
return (
<>
<PostingDonasi listReview={listReview} listDraft={listDraft} />
</>
}
);
}

View File

@@ -3,6 +3,7 @@ import AppNotif from "@/app_modules/notif";
// import './globals.css'
import { CacheProvider } from "@emotion/react";
import { MantineProvider, useEmotionCache } from "@mantine/core";
import { Notifications } from "@mantine/notifications";
import { useServerInsertedHTML } from "next/navigation";
import { ToastContainer, toast } from "react-toastify";
import "react-toastify/dist/ReactToastify.css";
@@ -29,9 +30,10 @@ export default function RootStyleRegistry({
<body suppressHydrationWarning={true}>
<CacheProvider value={cache}>
<MantineProvider withGlobalStyles withNormalizeCSS>
<Notifications position="top-center" containerWidth="250px" />
{children}
<ToastContainer position="bottom-center" />
<AppNotif />
{/* <ToastContainer position="bottom-center" />
<AppNotif /> */}
</MantineProvider>
</CacheProvider>
</body>

View File

@@ -24,6 +24,9 @@ export const RouterAdminDonasi = {
// detail
detail_publish: "/dev/admin/donasi/detail/publish",
detail_review: "/dev/admin/donasi/detail/review/",
};
export const RouterAdminAward = {

View File

@@ -1,4 +1,10 @@
export const RouterDonasi = {
//api
api_gambar: "/api/donasi/gambar/",
api_gambar_cerita: "/api/donasi/gambar_cerita/",
api_image: "/api/donasi/image/",
api_image_cerita: "/api/donasi/image_cerita/",
//main
main_beranda: "/dev/donasi/main/beranda",
main_galang_dana: "/dev/donasi/main/galang_dana",
@@ -10,9 +16,8 @@ export const RouterDonasi = {
// edit
update_kabar: "/dev/donasi/edit/update_kabar",
edit_donasi: "/dev/donasi/edit/edit_donasi",
edit_cerita_penggalang: "/dev/donasi/edit/edit_cerita",
edit_donasi: "/dev/donasi/edit/edit_donasi/",
edit_cerita_penggalang: "/dev/donasi/edit/edit_cerita/",
//pop up
page_pop_up_create: "/dev/donasi/page_pop_up/create",
@@ -21,8 +26,8 @@ export const RouterDonasi = {
detail_main: "/dev/donasi/detail/detail_main",
detail_kabar: "/dev/donasi/detail/detail_kabar",
detail_publish: "/dev/donasi/detail/detail_publish",
detail_review: "/dev/donasi/detail/detail_review",
detail_draft: "/dev/donasi/detail/detail_draft",
detail_review: "/dev/donasi/detail/detail_review/",
detail_draft: "/dev/donasi/detail/detail_draft/",
detail_reject: "/dev/donasi/detail/detail_reject",
detail_donasi_saya: "/dev/donasi/detail/detail_donasi_saya",
@@ -32,6 +37,6 @@ export const RouterDonasi = {
kabar: "/dev/donasi/kabar",
pencairan_dana: "/dev/donasi/pencairan_dana",
penggalang_dana: "/dev/donasi/penggalang_dana",
cerita_penggalang: "/dev/donasi/cerita_penggalang",
list_kabar: "/dev/donasi/list_kabar"
cerita_penggalang: "/dev/donasi/cerita_penggalang/",
list_kabar: "/dev/donasi/list_kabar",
};

19
src/app/zCoba/page.tsx Normal file
View File

@@ -0,0 +1,19 @@
"use client";
import { NotifPeringatan } from "@/app_modules/donasi/component/notifikasi/notif_peringatan";
import { Box, Button, Group } from "@mantine/core";
import { notifications } from "@mantine/notifications";
export default function Coba() {
return (
<>
<Box p={"lg"}>
<Group position="center">
<Button variant="outline" onClick={() => NotifPeringatan("Coba")}>
Show notification
</Button>
</Group>
</Box>
</>
);
}