Create dan Update
# feat - tampilan user - tampilan admin ## No Issue
This commit is contained in:
32
src/app/api/donasi/gambar/[id]/route.ts
Normal file
32
src/app/api/donasi/gambar/[id]/route.ts
Normal 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",
|
||||
},
|
||||
});
|
||||
}
|
||||
34
src/app/api/donasi/gambar_cerita/[id]/route.ts
Normal file
34
src/app/api/donasi/gambar_cerita/[id]/route.ts
Normal 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",
|
||||
},
|
||||
});
|
||||
}
|
||||
23
src/app/api/donasi/image/[url]/route.ts
Normal file
23
src/app/api/donasi/image/[url]/route.ts
Normal 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",
|
||||
},
|
||||
});
|
||||
}
|
||||
25
src/app/api/donasi/image_cerita/[url]/route.ts
Normal file
25
src/app/api/donasi/image_cerita/[url]/route.ts
Normal 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",
|
||||
},
|
||||
});
|
||||
|
||||
}
|
||||
1
src/app/api/donasi/index.md
Normal file
1
src/app/api/donasi/index.md
Normal file
@@ -0,0 +1 @@
|
||||
# Test
|
||||
9
src/app/dev/admin/donasi/detail/review/[id]/page.tsx
Normal file
9
src/app/dev/admin/donasi/detail/review/[id]/page.tsx
Normal 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}/>
|
||||
}
|
||||
@@ -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}
|
||||
/>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -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}/>
|
||||
</>
|
||||
}
|
||||
@@ -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}/>
|
||||
</>
|
||||
}
|
||||
@@ -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} />;
|
||||
}
|
||||
|
||||
21
src/app/dev/donasi/cerita_penggalang/[id]/layout.tsx
Normal file
21
src/app/dev/donasi/cerita_penggalang/[id]/layout.tsx
Normal 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>
|
||||
</>
|
||||
);
|
||||
}
|
||||
12
src/app/dev/donasi/cerita_penggalang/[id]/page.tsx
Normal file
12
src/app/dev/donasi/cerita_penggalang/[id]/page.tsx
Normal 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}/>
|
||||
</>
|
||||
);
|
||||
}
|
||||
@@ -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>
|
||||
</>
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
import { CeritaPenggalangDonasi } from "@/app_modules/donasi";
|
||||
|
||||
export default async function Page() {
|
||||
return (
|
||||
<>
|
||||
<CeritaPenggalangDonasi />
|
||||
</>
|
||||
);
|
||||
}
|
||||
@@ -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 (
|
||||
<>
|
||||
|
||||
@@ -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} />
|
||||
|
||||
@@ -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>
|
||||
</>
|
||||
);
|
||||
}
|
||||
12
src/app/dev/donasi/detail/detail_draft/[id]/page.tsx
Normal file
12
src/app/dev/donasi/detail/detail_draft/[id]/page.tsx
Normal 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} />
|
||||
</>
|
||||
);
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
import { DetailDraftDonasi } from "@/app_modules/donasi";
|
||||
|
||||
export default async function Paeg() {
|
||||
return<>
|
||||
<DetailDraftDonasi/>
|
||||
</>
|
||||
}
|
||||
12
src/app/dev/donasi/detail/detail_review/[id]/page.tsx
Normal file
12
src/app/dev/donasi/detail/detail_review/[id]/page.tsx
Normal 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} />
|
||||
</>
|
||||
);
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
import { DetailReviewDonasi } from "@/app_modules/donasi";
|
||||
|
||||
export default async function Page() {
|
||||
return<>
|
||||
<DetailReviewDonasi/>
|
||||
</>
|
||||
}
|
||||
12
src/app/dev/donasi/edit/edit_cerita/[id]/page.tsx
Normal file
12
src/app/dev/donasi/edit/edit_cerita/[id]/page.tsx
Normal 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} />
|
||||
</>
|
||||
);
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
import { EditCeritaPenggalangDonasi } from "@/app_modules/donasi";
|
||||
|
||||
export default async function Page() {
|
||||
return<>
|
||||
<EditCeritaPenggalangDonasi/>
|
||||
</>
|
||||
}
|
||||
15
src/app/dev/donasi/edit/edit_donasi/[id]/page.tsx
Normal file
15
src/app/dev/donasi/edit/edit_donasi/[id]/page.tsx
Normal 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} />
|
||||
</>
|
||||
);
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
import { EditDonasi } from "@/app_modules/donasi";
|
||||
|
||||
export default async function Page() {
|
||||
return (
|
||||
<>
|
||||
<EditDonasi />
|
||||
</>
|
||||
);
|
||||
}
|
||||
@@ -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} />
|
||||
</>
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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 = {
|
||||
|
||||
@@ -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
19
src/app/zCoba/page.tsx
Normal 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>
|
||||
</>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user