Merge pull request #35 from bipproduction/join

Join
This commit is contained in:
Amalia
2024-01-19 17:07:52 +08:00
committed by GitHub
452 changed files with 12422 additions and 3278 deletions

28
coba.sh
View File

@@ -1,28 +0,0 @@
curl -X POST
http://localhost:3000/api/investasi/midtrans/ \
-H 'User-Agent: Veritrans' \
-H 'Accept: application/json'\
-H 'Content-Type: application/json' \
-d '{
"transaction_time": "2020-01-09 18:27:19",
"transaction_status": "capture",
"transaction_id":
"57d5293c-e65f-4a29-95e4-5959c3fa335b",
"status_message": "midtrans payment notification",
"status_code": "200",
"signature_key":
"16d6f84b2fb0468e2a9cf99a8ac4e5d803d42180347aaa70cb2a7abb13b5c6130458ca9c71956a962c0827637cd3bc7d40b21a8ae9fab12c7c3efe351b18d00a",
"payment_type": "credit_card",
"order_id": "Postman-1578568851",
"merchant_id": "G141532850",
"masked_card": "48111111-1114",
"gross_amount": "10000.00",
"fraud_status": "accept",
"eci": "05",
"currency": "IDR",
"channel_response_message": "Approved",
"channel_response_code": "00",
"card_type": "credit",
"bank": "bni",
"approval_code": "1578569243927"
}'

View File

@@ -16,6 +16,7 @@
"@mantine/dropzone": "^7.1.3",
"@mantine/hooks": "^6.0.17",
"@mantine/next": "^6.0.17",
"@mantine/notifications": "^6.0.17",
"@prisma/client": "^5.0.0",
"@tabler/icons-react": "^2.38.0",
"@types/lodash": "^4.14.199",
@@ -24,6 +25,8 @@
"@types/react-dom": "18.2.7",
"@types/uuid": "^9.0.4",
"autoprefixer": "10.4.14",
"echarts": "^5.4.3",
"echarts-for-react": "^3.0.2",
"embla-carousel-react": "^8.0.0-rc14",
"eslint": "8.45.0",
"eslint-config-next": "13.4.12",

View File

@@ -23,6 +23,9 @@ model User {
Profile Profile?
Investasi Investasi[]
TransaksiInvestasi TransaksiInvestasi[]
Donasi Donasi[]
Donasi_Invoice Donasi_Invoice[]
Donasi_Notif Donasi_Notif[]
}
model MasterUserRole {
@@ -46,54 +49,91 @@ model UserSession {
}
model Profile {
id String @id @default(cuid())
name String
email String @unique
alamat String
jenisKelamin String
active Boolean @default(true)
createdAt DateTime @default(now())
updatedAt DateTime @default(now()) @updatedAt
User User? @relation(fields: [userId], references: [id])
userId String? @unique
ImageProfile Images? @relation(fields: [imagesId], references: [id])
imagesId String? @unique
Katalog Katalog[]
id String @id @default(cuid())
name String
email String @unique
alamat String
jenisKelamin String
active Boolean @default(true)
createdAt DateTime @default(now())
updatedAt DateTime @default(now()) @updatedAt
User User? @relation(fields: [userId], references: [id])
userId String? @unique
ImageProfile Images? @relation(fields: [imagesId], references: [id])
imagesId String? @unique
Portofolio Portofolio[]
ImagesBackground ImagesBackground? @relation(fields: [imagesBackgroundId], references: [id])
imagesBackgroundId String? @unique
}
model Images {
id String @id @default(cuid())
url String
active Boolean @default(true)
createdAt DateTime @default(now())
updatedAt DateTime @default(now()) @updatedAt
Profile Profile?
Investasi Investasi?
BeritaInvestasi BeritaInvestasi[]
id String @id @default(cuid())
url String
label String @default("null")
active Boolean @default(true)
createdAt DateTime @default(now())
updatedAt DateTime @default(now()) @updatedAt
Profile Profile?
Investasi Investasi?
BeritaInvestasi BeritaInvestasi[]
Donasi Donasi?
CeritaDonasi Donasi_Cerita[]
Donasi_TemporaryCreate Donasi_TemporaryCreate[]
Donasi_Kabar Donasi_Kabar[]
Donasi_PencairanDana Donasi_PencairanDana[]
Donasi_Invoice Donasi_Invoice[]
Portofolio Portofolio[]
}
model Katalog {
id String @id @default(cuid())
namaBisnis String
alamatKantor String
tlpn String
deskripsi String
active Boolean @default(true)
createdAt DateTime @default(now())
updatedAt DateTime @default(now()) @updatedAt
Profile Profile? @relation(fields: [profileId], references: [id])
profileId String?
MasterBidangBisnis MasterBidangBisnis @relation(fields: [masterBidangBisnisId], references: [id])
masterBidangBisnisId String
model ImagesBackground {
id String @id @default(cuid())
url String
label String
active Boolean @default(true)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
Profile Profile?
}
model Portofolio {
id String @id @default(cuid())
namaBisnis String
alamatKantor String
tlpn String
deskripsi String
active Boolean @default(true)
createdAt DateTime @default(now())
updatedAt DateTime @default(now()) @updatedAt
Profile Profile? @relation(fields: [profileId], references: [id])
profileId String?
MasterBidangBisnis MasterBidangBisnis @relation(fields: [masterBidangBisnisId], references: [id])
masterBidangBisnisId String
Logo Images? @relation(fields: [logoId], references: [id])
logoId String?
Portofolio_MediaSosial Portofolio_MediaSosial?
}
model Portofolio_MediaSosial {
id String @id @default(cuid())
facebook String?
twitter String?
instagram String?
tiktok String?
youtube String?
active Boolean @default(true)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
Portofolio Portofolio? @relation(fields: [portofolioId], references: [id])
portofolioId String? @unique
}
model MasterBidangBisnis {
id String @id
name String
active Boolean @default(true)
createdAt DateTime @default(now())
updatedAt DateTime @default(now()) @updatedAt
Katalog Katalog[]
id String @id
name String
active Boolean @default(true)
createdAt DateTime @default(now())
updatedAt DateTime @default(now()) @updatedAt
Portofolio Portofolio[]
}
// -------------------- INVESTASI --------------------- //
@@ -123,17 +163,17 @@ model Investasi {
masterPembagianDevidenId String?
MasterPencarianInvestor MasterPencarianInvestor? @relation(fields: [masterPencarianInvestorId], references: [id])
masterPencarianInvestorId String?
ImageInvestasi Images? @relation(fields: [imagesId], references: [id])
imagesId String? @unique
ImageInvestasi Images? @relation(fields: [imagesId], references: [id])
imagesId String? @unique
MasterStatusInvestasi MasterStatusInvestasi? @relation(fields: [masterStatusInvestasiId], references: [id])
masterStatusInvestasiId String? @default("2")
ProspektusInvestasi ProspektusInvestasi?
BeritaInvestasi BeritaInvestasi[]
DokumenInvestasi DokumenInvestasi[]
MasterStatusInvestasi MasterStatusInvestasi? @relation(fields: [masterStatusInvestasiId], references: [id])
masterStatusInvestasiId String? @default("2")
ProspektusInvestasi ProspektusInvestasi?
BeritaInvestasi BeritaInvestasi[]
DokumenInvestasi DokumenInvestasi[]
TransaksiInvestasi TransaksiInvestasi[]
MasterProgresInvestasi MasterProgresInvestasi? @relation(fields: [masterProgresInvestasiId], references: [id])
masterProgresInvestasiId String?
masterProgresInvestasiId String?
}
model MasterPencarianInvestor {
@@ -268,3 +308,173 @@ model MasterStatusTransaksiInvestasi {
TransaksiInvestasi TransaksiInvestasi[]
}
/// ---------------------------------------- DONASI ----------------------------------------- //
model Donasi {
id String @id @default(cuid())
title String
target String
active Boolean @default(true)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
publishTime DateTime?
catatan String?
progres String? @default("0")
terkumpul String? @default("0")
namaBank String?
rekening String?
akumulasiPencairan Int? @default(0)
totalPencairan Int? @default(0)
Author User? @relation(fields: [authorId], references: [id])
authorId String?
imageDonasi Images? @relation(fields: [imagesId], references: [id])
imagesId String? @unique
CeritaDonasi Donasi_Cerita?
DonasiMaster_Ketegori DonasiMaster_Kategori? @relation(fields: [donasiMaster_KategoriId], references: [id])
donasiMaster_KategoriId String?
DonasiMaster_Durasi DonasiMaster_Durasi? @relation(fields: [donasiMaster_DurasiId], references: [id])
donasiMaster_DurasiId String?
DonasiMaster_Status DonasiMaster_StatusDonasi? @relation(fields: [donasiMaster_StatusDonasiId], references: [id])
donasiMaster_StatusDonasiId String? @default("2")
Donasi_Invoice Donasi_Invoice[]
Donasi_Kabar Donasi_Kabar[]
Donasi_PencairanDana Donasi_PencairanDana[]
}
model Donasi_TemporaryCreate {
id String @id @default(cuid())
title String
target String
active Boolean @default(true)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
imageDonasiTemporary Images? @relation(fields: [imagesId], references: [id])
imagesId String? @unique
kategori DonasiMaster_Kategori? @relation(fields: [donasiMaster_KategoriId], references: [id])
donasiMaster_KategoriId String?
durasi DonasiMaster_Durasi? @relation(fields: [donasiMaster_DurasiId], references: [id])
donasiMaster_DurasiId String?
}
model DonasiMaster_Kategori {
id String @id @default(cuid())
name String
active Boolean @default(true)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
Donasi Donasi[]
Donasi_TemporaryCreate Donasi_TemporaryCreate[]
}
model DonasiMaster_Durasi {
id String @id @default(cuid())
name String
active Boolean @default(true)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
Donasi Donasi[]
Donasi_TemporaryCreate Donasi_TemporaryCreate[]
}
model Donasi_Cerita {
id String @id @default(cuid())
pembukaan String
cerita String
active Boolean @default(true)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
imageCeritaDonasi Images? @relation(fields: [imagesId], references: [id])
imagesId String? @unique
Donasi Donasi? @relation(fields: [donasiId], references: [id])
donasiId String? @unique
}
model DonasiMaster_StatusDonasi {
id String @id @default(cuid())
name String
active Boolean @default(true)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
Donasi Donasi[]
}
model DonasiMaster_Bank {
id String @id @default(cuid())
name String
norek String
active Boolean @default(true)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
Donasi_Invoice Donasi_Invoice[]
}
model DonasiMaster_StatusInvoice {
id String @id @default(cuid())
name String
active Boolean @default(true)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
Donasi_Invoice Donasi_Invoice[]
}
model Donasi_Invoice {
id String @id @default(cuid())
nominal String
active Boolean @default(true)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
Donasi Donasi? @relation(fields: [donasiId], references: [id])
donasiId String?
DonasiMaster_Bank DonasiMaster_Bank? @relation(fields: [donasiMaster_BankId], references: [id])
donasiMaster_BankId String?
DonasiMaster_StatusInvoice DonasiMaster_StatusInvoice? @relation(fields: [donasiMaster_StatusInvoiceId], references: [id])
donasiMaster_StatusInvoiceId String? @default("3")
Author User? @relation(fields: [authorId], references: [id])
authorId String?
Images Images? @relation(fields: [imagesId], references: [id])
imagesId String?
}
model Donasi_Kabar {
id String @id @default(cuid())
title String
deskripsi String
active Boolean @default(true)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
Donasi Donasi? @relation(fields: [donasiId], references: [id])
donasiId String?
ImagesKabar Images? @relation(fields: [imagesId], references: [id])
imagesId String?
Donasi_Notif Donasi_Notif[]
}
model Donasi_Notif {
id String @id @default(cuid())
isRead Boolean @default(false)
active Boolean @default(true)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
User User? @relation(fields: [userId], references: [id])
userId String?
Donasi_Kabar Donasi_Kabar? @relation(fields: [donasi_KabarId], references: [id])
donasi_KabarId String?
}
model Donasi_PencairanDana {
id String @id @default(cuid())
nominalCair Int
title String
deskripsi String
active Boolean @default(true)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
Donasi Donasi? @relation(fields: [donasiId], references: [id])
donasiId String?
Images Images? @relation(fields: [imagesId], references: [id])
imagesId String?
}

View File

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

View File

@@ -1 +0,0 @@
// Image for profile

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 217 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 263 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

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,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/invoice/${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/invoice/${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,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/kabar/${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/kabar/${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/pencairan/${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/pencairan/${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,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/portofolio/logo/${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/portofolio/logo/${get?.url}`);
return new NextResponse(file, {
headers: {
"Content-Type": "image/png",
},
});
}

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.imagesBackground.findUnique({
where: {
id: params.id,
},
select: {
url: true,
},
});
if (!fs.existsSync(`./public/profile/background/${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/profile/background/${get?.url}`);
return new NextResponse(file, {
headers: {
"Content-Type": "image/png",
},
});
}

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/profile/foto/${get?.url}`)) {
const notFile = fs.readFileSync("./public/aset/global/avatar.png");
return new NextResponse(notFile, {
headers: {
"Content-Type": "image/png",
},
});
}
const file = fs.readFileSync(`./public/profile/foto/${get?.url}`);
return new NextResponse(file, {
headers: {
"Content-Type": "image/png",
},
});
}

View File

@@ -1,22 +0,0 @@
import { NextRequest, NextResponse } from "next/server";
import fs from "fs";
export async function GET(
req: NextRequest,
{ params }: { params: { name: string } }
) {
if (!fs.existsSync(`./public/img/${params.name}`)) {
const fl = fs.readFileSync(`./public/aset/avatar.png`);
return new NextResponse(fl, {
headers: {
"Content-Type": "image/png",
},
});
}
const fl = fs.readFileSync(`./public/img/${params.name}`);
return new NextResponse(fl, {
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/profile/background/${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/profile/background/${params.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/profile/foto/${params.url}`)) {
const notFile = fs.readFileSync("./public/aset/global/avatar.png");
return new NextResponse(notFile, {
headers: {
"Content-Type": "image/png",
},
});
}
const file = fs.readFileSync(`./public/profile/foto/${params.url}`);
return new NextResponse(file, {
headers: {
"Content-Type": "image/png",
},
});
}

View File

@@ -10,6 +10,11 @@ import namaBank from "./../../../bin/seeder/investasi/nama_bank.json";
import statusTransaksiInvestasi from "./../../../bin/seeder/investasi/status_transaksi_investasi.json";
import jenisProgres from "../../../bin/seeder/investasi/master_progres.json";
import userSeeder from "../../../bin/seeder/user_seeder.json";
import donasi_status from "../../../bin/seeder/donasi/master_status.json";
import donasi_kategori from "../../../bin/seeder/donasi/master_kategori.json";
import donasi_durasi from "../../../bin/seeder/donasi/master_durasi.json";
import donasi_namaBank from "../../../bin/seeder/donasi/master_bank.json"
import donasi_status_invoice from "../../../bin/seeder/donasi/master_status_invoice.json"
export async function GET(req: Request) {
const dev = new URL(req.url).searchParams.get("dev");
@@ -181,6 +186,84 @@ export async function GET(req: Request) {
});
}
for (let d of donasi_status) {
await prisma.donasiMaster_StatusDonasi.upsert({
where: {
id: d.id,
},
create: {
id: d.id,
name: d.name,
},
update: {
name: d.name,
},
});
}
for (let d of donasi_kategori) {
await prisma.donasiMaster_Kategori.upsert({
where: {
id: d.id,
},
create: {
id: d.id,
name: d.name,
},
update: {
name: d.name,
},
});
}
for (let d of donasi_durasi) {
await prisma.donasiMaster_Durasi.upsert({
where: {
id: d.id,
},
create: {
id: d.id,
name: d.name,
},
update: {
name: d.name,
},
});
}
for (let i of donasi_namaBank) {
await prisma.donasiMaster_Bank.upsert({
where: {
id: i.id,
},
create: {
id: i.id,
name: i.name,
norek: i.norek,
},
update: {
id: i.id,
name: i.name,
norek: i.norek,
},
});
}
for (let d of donasi_status_invoice) {
await prisma.donasiMaster_StatusInvoice.upsert({
where: {
id: d.id,
},
create: {
id: d.id,
name: d.name,
},
update: {
name: d.name,
},
});
}
return NextResponse.json({ success: true });
}

View File

@@ -0,0 +1,24 @@
import { AdminDonasi_DetailPublish } from "@/app_modules/admin/donasi";
import { AdminDonasi_funCountDonatur } from "@/app_modules/admin/donasi/fun/count/fun_count_donatur";
import { AdminDonasi_getListDonatur } from "@/app_modules/admin/donasi/fun/get/get_list_donatur_by_id";
import { AdminDonasi_getListPencairanDana } from "@/app_modules/admin/donasi/fun/get/get_list_pencairan_dana_by_id";
import { AdminDonasi_getOneById } from "@/app_modules/admin/donasi/fun/get/get_one_by_id";
export default async function Page({ params }: { params: { id: string } }) {
const dataPublish = await AdminDonasi_getOneById(params.id);
const listDonatur = await AdminDonasi_getListDonatur(params.id);
const countDonatur = await AdminDonasi_funCountDonatur(params.id);
const listPencairan = await AdminDonasi_getListPencairanDana(params.id);
// console.log(listDonatur)
return (
<>
<AdminDonasi_DetailPublish
dataPublish={dataPublish as any}
listDonatur={listDonatur}
countDonatur={countDonatur}
listPencairan={listPencairan as any}
/>
</>
);
}

View File

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

View File

@@ -0,0 +1,9 @@
import { AdminDonasi_DetailReview } from "@/app_modules/admin/donasi";
import { AdminDonasi_getOneById } 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_getOneById(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

@@ -0,0 +1,6 @@
import { AdminDonasi_PencairanDana } from "@/app_modules/admin/donasi";
export default async function Page({ params }: { params: { id: string } }) {
let donasiId = params.id;
return <AdminDonasi_PencairanDana donasiId={donasiId} />;
}

View File

@@ -0,0 +1,12 @@
import { AdminDonasi_ProsesTransaksi } from "@/app_modules/admin/donasi";
import { AdminDonasi_getListStatusInvoiceProses } from "@/app_modules/admin/donasi/fun/get/get_list_status_invoice_proses";
export default async function Page({params}: {params: {id: string}}) {
let donasiId = params.id
const listProses = await AdminDonasi_getListStatusInvoiceProses(donasiId)
return <AdminDonasi_ProsesTransaksi listProses={listProses as any}/>
}

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_list_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

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

View File

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

View File

@@ -1,5 +1,5 @@
import { Admin_KonfirmasiInvestasi } from "@/app_modules/admin/investasi";
import { funGetUserProfile } from "@/app_modules/fun/get_user_profile";
import { funGetUserProfile } from "@/app_modules/fun_global/get_user_profile";
import getOneInvestasiById from "@/app_modules/investasi/fun/get_one_investasi_by_id";

View File

@@ -1,4 +1,4 @@
import { AdminLayout } from "@/app_modules/admin/main";
import { AdminLayout } from "@/app_modules/admin/main_dashboard";
import React from "react";
export default async function Layout({

View File

@@ -1,5 +1,10 @@
import { AdminMain } from "@/app_modules/admin/main";
import { AdminMain } from "@/app_modules/admin/main_dashboard";
import { AdminMainDashboard_CountPOrtofolio } from "@/app_modules/admin/main_dashboard/fun/count/fun_count_portofolio";
import { AdminMainDashboard_CountUser } from "@/app_modules/admin/main_dashboard/fun/count/fun_count_user";
export default async function Page() {
return <AdminMain />;
const countUser = await AdminMainDashboard_CountUser();
const countPorto = await AdminMainDashboard_CountPOrtofolio();
return <AdminMain countUser={countUser} countPorto={countPorto} />;
}

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} donasiId={dataDonasi?.id 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

@@ -0,0 +1,16 @@
import { CreateCeritaPenggalangDonasi } from "@/app_modules/donasi";
import { Donasi_getTemporaryCreate } from "@/app_modules/donasi/fun/get/get_temporary_create";
import { User_getUserId } from "@/app_modules/fun_global/get_user_token";
export default async function Page({ params }: { params: { id: string } }) {
const getTemporaryCreate = await Donasi_getTemporaryCreate(params.id);
const userId = await User_getUserId()
return (
<>
<CreateCeritaPenggalangDonasi dataTemporary={getTemporaryCreate as any} userId={userId} />
</>
);
}

View File

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

View File

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

View File

@@ -0,0 +1,15 @@
import { CreateDonasi } from "@/app_modules/donasi";
import {
Donasi_getMasterDurasi,
Donasi_getMasterKategori,
} from "@/app_modules/donasi/fun";
import { User_getUserId } from "@/app_modules/fun_global/get_user_token";
export default async function Page() {
const masterKategori = await Donasi_getMasterKategori();
const masterDurasi = await Donasi_getMasterDurasi();
return (
<CreateDonasi masterKategori={masterKategori} masterDurasi={masterDurasi} />
);
}

View File

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

View File

@@ -0,0 +1,8 @@
import { Donasi_CreateKabar } from "@/app_modules/donasi";
export default async function Page({params}: {params: {id: string}}) {
const donasiId = params.id
return<>
<Donasi_CreateKabar donasiId={donasiId}/>
</>
}

View File

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

View File

@@ -0,0 +1,18 @@
import { DetailDonasiSaya } from "@/app_modules/donasi";
import { Donasi_getCountDonatur } from "@/app_modules/donasi/fun/count/get_count_donatur";
import { Donasi_getOneById } from "@/app_modules/donasi/fun/get/get_one_donasi_by_id";
import { Donasi_getOneInvoiceById } from "@/app_modules/donasi/fun/get/get_one_invoice_by_id";
export default async function Page({ params }: { params: { id: string } }) {
let invoiceId = params.id;
const dataDonasi = await Donasi_getOneInvoiceById(invoiceId);
const countDonatur= await Donasi_getCountDonatur(dataDonasi?.donasiId as any)
console.log(dataDonasi?.Donasi?.progres)
return (
<>
<DetailDonasiSaya dataDonasi={dataDonasi as any} countDonatur={countDonatur} />
</>
);
}

View File

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

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,10 @@
import { DetailKabarDonasi } from "@/app_modules/donasi";
import { Donasi_getOneKabar } from "@/app_modules/donasi/fun/get/get_one_kabar";
export default async function Page({params}: {params: {id: string}}) {
let kabarId = params.id
const dataDonasi = await Donasi_getOneKabar(kabarId)
return <DetailKabarDonasi dataDonasi={dataDonasi as any}/>
}

View File

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

View File

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

View File

@@ -0,0 +1,17 @@
import { DetailMainDonasi } from "@/app_modules/donasi";
import { Donasi_getCountDonatur } from "@/app_modules/donasi/fun/count/get_count_donatur";
import { Donasi_getOneById } from "@/app_modules/donasi/fun/get/get_one_donasi_by_id";
import { User_getUserId } from "@/app_modules/fun_global/get_user_token";
export default async function Page({ params }: { params: { id: string } }) {
let donasiId = params.id;
const dataDonasi = await Donasi_getOneById(donasiId);
const countDonatur = await Donasi_getCountDonatur(donasiId)
const userLoginId = await User_getUserId();
return (
<>
<DetailMainDonasi dataDonasi={dataDonasi as any} countDonatur={countDonatur} userLoginId={userLoginId}/>
</>
);
}

View File

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

View File

@@ -0,0 +1,22 @@
import prisma from "@/app/lib/prisma";
import { LayoutDonasi_DetailNotif } from "@/app_modules/donasi";
import { Donasi_getOneKabar } from "@/app_modules/donasi/fun/get/get_one_kabar";
import React from "react";
export default async function Layout({
children,
params,
}: {
children: React.ReactNode;
params: { id: string };
}) {
let kabarId = params.id;
const dataKabar = await Donasi_getOneKabar(kabarId);
const donasiId = dataKabar?.donasiId
return (
<>
<LayoutDonasi_DetailNotif donasiId={donasiId as any}>{children}</LayoutDonasi_DetailNotif>
</>
);
}

View File

@@ -0,0 +1,9 @@
import { Donasi_DetailNotif } from "@/app_modules/donasi";
import { Donasi_getOneKabar } from "@/app_modules/donasi/fun/get/get_one_kabar";
export default async function Page({ params }: { params: { id: string } }) {
let kabarId = params.id;
const dataKabar = await Donasi_getOneKabar(kabarId);
return <Donasi_DetailNotif dataKabar={dataKabar as any} />;
}

View File

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

View File

@@ -0,0 +1,18 @@
import { DetailPublishDonasi } from "@/app_modules/donasi";
import { Donasi_getCountDonatur } from "@/app_modules/donasi/fun/count/get_count_donatur";
import { Donasi_getOneById } from "@/app_modules/donasi/fun/get/get_one_donasi_by_id";
import { User_getUserId } from "@/app_modules/fun_global/get_user_token";
export default async function Page({ params }: { params: { id: string } }) {
const dataPublish = await Donasi_getOneById(params.id);
const countDonatur= await Donasi_getCountDonatur(params.id)
const userLoginId = await User_getUserId();
console.log(userLoginId)
return (
<>
<DetailPublishDonasi dataPublish={dataPublish as any} countDonatur={countDonatur} userLoginId={userLoginId}/>
</>
);
}

View File

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

Some files were not shown because too many files have changed in this diff Show More