diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 971903e2..87cdd3bf 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -22,6 +22,7 @@ model User { UserSession UserSession? Profile Profile? Investasi Investasi[] + SahamTerbeli SahamTerbeli[] } model MasterUserRole { @@ -61,13 +62,14 @@ model Profile { } 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? + 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[] } model Katalog { @@ -94,6 +96,8 @@ model MasterBidangBisnis { Katalog Katalog[] } +// -------------------- INVESTASI --------------------- // +// Table investasi / saham model Investasi { id String @id @default(cuid()) title String @@ -105,7 +109,7 @@ model Investasi { createdAt DateTime @default(now()) updatedAt DateTime @default(now()) @updatedAt author User? @relation(fields: [authorId], references: [id]) - authorId String? + authorId String? MasterPeriodeDeviden MasterPeriodeDeviden? @relation(fields: [masterPeriodeDevidenId], references: [id]) masterPeriodeDevidenId String? @@ -116,6 +120,16 @@ model Investasi { ImageInvestasi Images? @relation(fields: [imagesId], references: [id]) imagesId String? @unique + + ProspektusInvestasi ProspektusInvestasi? + DokumenInvestasi DokumenInvestasi? @relation(fields: [dokumenInvestasiId], references: [id]) + dokumenInvestasiId String? + BeritaInvestasi BeritaInvestasi? @relation(fields: [beritaInvestasiId], references: [id]) + beritaInvestasiId String? + SahamTerbeli SahamTerbeli? @relation(fields: [sahamTerbeliId], references: [id]) + sahamTerbeliId String? + MasterStatusInvestasi MasterStatusInvestasi? @relation(fields: [masterStatusInvestasiId], references: [id]) + masterStatusInvestasiId String? @default("1") } model MasterPencarianInvestor { @@ -144,3 +158,57 @@ model MasterPembagianDeviden { updatedAt DateTime @default(now()) @updatedAt investasi Investasi[] } + +model MasterStatusInvestasi { + id String @id @default(cuid()) + name String + color String + active Boolean @default(true) + createdAt DateTime @default(now()) + updatedAt DateTime @default(now()) @updatedAt + investasi Investasi[] +} + +model ProspektusInvestasi { + id String @id @default(cuid()) + url String + active Boolean @default(true) + createdAt DateTime @default(now()) + updatedAt DateTime @default(now()) @updatedAt + investasi Investasi @relation(fields: [investasiId], references: [id]) + investasiId String @unique +} + +model DokumenInvestasi { + id String @id @default(cuid()) + url String + active Boolean @default(true) + createdAt DateTime @default(now()) + updatedAt DateTime @default(now()) @updatedAt + investasi Investasi[] +} + +model BeritaInvestasi { + id String @id @default(cuid()) + title String + deskripsi String + active Boolean @default(true) + createdAt DateTime @default(now()) + updatedAt DateTime @default(now()) @updatedAt + investasi Investasi[] + ImageBerita Images? @relation(fields: [imagesId], references: [id]) + imagesId String? +} + +model SahamTerbeli { + id String @id @default(cuid()) + totalBeli String + jumlahLembar String + active Boolean @default(true) + createdAt DateTime @default(now()) + updatedAt DateTime @default(now()) @updatedAt + + author User @relation(fields: [authorId], references: [id]) + authorId String + investasi Investasi[] +} diff --git a/src/app/api/seeder/route.ts b/src/app/api/seeder/route.ts index c1c653cc..326842be 100644 --- a/src/app/api/seeder/route.ts +++ b/src/app/api/seeder/route.ts @@ -5,6 +5,7 @@ import bidangBisnis from "../../../bin/seeder/bidang_bisnis.json"; import pencarianInvestor from "./../../../bin/seeder/investasi/pencarian_investor.json"; import periodeDeviden from "./../../../bin/seeder/investasi/periode_deviden.json"; import pembagianDeviden from "./../../../bin/seeder/investasi/pembagian_deviden.json"; +import statusInvestasi from "./../../../bin/seeder/investasi/status_investasi.json"; export async function GET(req: Request) { const dev = new URL(req.url).searchParams.get("dev"); @@ -89,6 +90,24 @@ export async function GET(req: Request) { }); } + // for (let i of statusInvestasi) { + // await prisma.masterStatusInvestasi.upsert({ + // where: { + // id: i.id, + // }, + // create: { + // id: i.id, + // name: i.name, + // color: i.color, + // }, + // update: { + // id: i.id, + // name: i.name, + // color: i.color, + // }, + // }); + // } + return NextResponse.json({ success: true }); } diff --git a/src/app/dev/investasi/detail_portofolio/draft/layout.tsx b/src/app/dev/investasi/detail_portofolio/draft/layout.tsx new file mode 100644 index 00000000..a5ced2f7 --- /dev/null +++ b/src/app/dev/investasi/detail_portofolio/draft/layout.tsx @@ -0,0 +1,8 @@ +import { LayoutDetailDraftInvestasi } from "@/app_modules/investasi"; +import React from "react"; + +export default async function Layout({children}: {children: React.ReactNode}) { + return<> + {children} + +} \ No newline at end of file diff --git a/src/app/dev/investasi/detail_portofolio/draft/page.tsx b/src/app/dev/investasi/detail_portofolio/draft/page.tsx new file mode 100644 index 00000000..e07bb427 --- /dev/null +++ b/src/app/dev/investasi/detail_portofolio/draft/page.tsx @@ -0,0 +1,8 @@ +import { DetailDraftInvestasi } from "@/app_modules/investasi"; + +export default async function Page() { + return<> + + + +} \ No newline at end of file diff --git a/src/app/dev/investasi/detail_portofolio/publish/layout.tsx b/src/app/dev/investasi/detail_portofolio/publish/layout.tsx new file mode 100644 index 00000000..a52bced1 --- /dev/null +++ b/src/app/dev/investasi/detail_portofolio/publish/layout.tsx @@ -0,0 +1,9 @@ +import { LayoutDetailPublishInvestasi } from "@/app_modules/investasi"; +import React from "react"; + +export default async function Layout({children}: {children: React.ReactNode}) { + return<> + {children} + + +} \ No newline at end of file diff --git a/src/app/dev/investasi/detail_portofolio/publish/page.tsx b/src/app/dev/investasi/detail_portofolio/publish/page.tsx new file mode 100644 index 00000000..46e707c3 --- /dev/null +++ b/src/app/dev/investasi/detail_portofolio/publish/page.tsx @@ -0,0 +1,7 @@ +import { DetailPublishInvestasi } from "@/app_modules/investasi"; + +export default async function Page() { + return<> + + +} \ No newline at end of file diff --git a/src/app/dev/investasi/detail_portofolio/reject/layout.tsx b/src/app/dev/investasi/detail_portofolio/reject/layout.tsx new file mode 100644 index 00000000..6d374c05 --- /dev/null +++ b/src/app/dev/investasi/detail_portofolio/reject/layout.tsx @@ -0,0 +1,8 @@ +import { LayoutDetailRejectInvestasi } from "@/app_modules/investasi"; +import React from "react"; + +export default async function Layout({children}: {children: React.ReactNode}) { + return<> + {children} + +} \ No newline at end of file diff --git a/src/app/dev/investasi/detail_portofolio/reject/page.tsx b/src/app/dev/investasi/detail_portofolio/reject/page.tsx new file mode 100644 index 00000000..37ade701 --- /dev/null +++ b/src/app/dev/investasi/detail_portofolio/reject/page.tsx @@ -0,0 +1,7 @@ +import { DetailRejectInvestasi } from "@/app_modules/investasi"; + +export default async function Page() { + return<> + + +} \ No newline at end of file diff --git a/src/app/dev/investasi/detail_portofolio/review/layout.tsx b/src/app/dev/investasi/detail_portofolio/review/layout.tsx new file mode 100644 index 00000000..30869978 --- /dev/null +++ b/src/app/dev/investasi/detail_portofolio/review/layout.tsx @@ -0,0 +1,8 @@ +import { LayoutDetailReviewInvestasi } from "@/app_modules/investasi"; +import React from "react"; + +export default async function Layout({children}: {children: React.ReactNode}) { + return<> + {children} + +} \ No newline at end of file diff --git a/src/app/dev/investasi/detail_portofolio/review/page.tsx b/src/app/dev/investasi/detail_portofolio/review/page.tsx new file mode 100644 index 00000000..46ced138 --- /dev/null +++ b/src/app/dev/investasi/detail_portofolio/review/page.tsx @@ -0,0 +1,7 @@ +import { DetailReviewInvestasi } from "@/app_modules/investasi"; + +export default async function Page() { + return<> + + +} \ No newline at end of file diff --git a/src/app/dev/investasi/main/portofolio/page.tsx b/src/app/dev/investasi/main/portofolio/page.tsx index a8f6cbf2..b388ad27 100644 --- a/src/app/dev/investasi/main/portofolio/page.tsx +++ b/src/app/dev/investasi/main/portofolio/page.tsx @@ -1,6 +1,6 @@ import { PortofolioInvestasi } from "@/app_modules/investasi"; -export default async function Page() { +export default async function Page({params}: {params: {id: string}}) { return<> diff --git a/src/app/dev/investasi/main/saham_saya/page.tsx b/src/app/dev/investasi/main/saham_saya/page.tsx new file mode 100644 index 00000000..4d6b80ec --- /dev/null +++ b/src/app/dev/investasi/main/saham_saya/page.tsx @@ -0,0 +1,9 @@ +import { InvestasiSahamTerbeli } from "@/app_modules/investasi"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/investasi/main/transaksi/page.tsx b/src/app/dev/investasi/main/transaksi/page.tsx new file mode 100644 index 00000000..a5496acb --- /dev/null +++ b/src/app/dev/investasi/main/transaksi/page.tsx @@ -0,0 +1,9 @@ +import { TransaksiInvestasi } from "@/app_modules/investasi"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/investasi/status_transaksi/layout.tsx b/src/app/dev/investasi/status_transaksi/berhasil/layout.tsx similarity index 100% rename from src/app/dev/investasi/status_transaksi/layout.tsx rename to src/app/dev/investasi/status_transaksi/berhasil/layout.tsx diff --git a/src/app/dev/investasi/status_transaksi/page.tsx b/src/app/dev/investasi/status_transaksi/berhasil/page.tsx similarity index 100% rename from src/app/dev/investasi/status_transaksi/page.tsx rename to src/app/dev/investasi/status_transaksi/berhasil/page.tsx diff --git a/src/app/dev/investasi/status_transaksi/gagal/layout.tsx b/src/app/dev/investasi/status_transaksi/gagal/layout.tsx new file mode 100644 index 00000000..d9a96998 --- /dev/null +++ b/src/app/dev/investasi/status_transaksi/gagal/layout.tsx @@ -0,0 +1,16 @@ +import { LayoutStatusTransaksiInvestasi_Gagal } from "@/app_modules/investasi"; +import React from "react"; + +export default async function Layout({ + children, +}: { + children: React.ReactNode; +}) { + return ( + <> + + {children} + + + ); +} diff --git a/src/app/dev/investasi/status_transaksi/gagal/page.tsx b/src/app/dev/investasi/status_transaksi/gagal/page.tsx new file mode 100644 index 00000000..184b345c --- /dev/null +++ b/src/app/dev/investasi/status_transaksi/gagal/page.tsx @@ -0,0 +1,7 @@ +import { StatusTransaksiInvestasi_Gagal } from "@/app_modules/investasi"; + +export default async function Page() { + return <> + + +} \ No newline at end of file diff --git a/src/app/lib/router_hipmi/router_investasi.ts b/src/app/lib/router_hipmi/router_investasi.ts index eba60fb8..44272965 100644 --- a/src/app/lib/router_hipmi/router_investasi.ts +++ b/src/app/lib/router_hipmi/router_investasi.ts @@ -1,12 +1,19 @@ export const RouterInvestasi = { //INVESTASI + main: "/dev/investasi/main", + main_porto: "/dev/investasi/main/portofolio", + main_investasi: "/dev/investasi/main/saham_saya", + main_transaksi: "/dev/investasi/main/transaksi", transfer: "/dev/investasi/transfer", dialog_transaksi: "/dev/investasi/dialog_page/transaksi_saham", dialog_create: "/dev/investasi/dialog_page/create", + // portofolio portofolio: "/dev/investasi/main/portofolio", + // proses beli saham - status_transaksi: "/dev/investasi/status_transaksi", + status_transaksi: "/dev/investasi/status_transaksi/berhasil", + status_transaksi_gagal: "/dev/investasi/status_transaksi/gagal", metode_transfer: "/dev/investasi/metode_transfer", // edit // edit_intro: "/dev/investasi/edit_intro/", @@ -18,8 +25,13 @@ export const RouterInvestasi = { detail_prospektus: "/dev/investasi/detail_prospektus/", detail_dokumen: "/dev/investasi/detail_dokumen/", detail_berita: "/dev/investasi/detail_berita/", + detail_draft: "/dev/investasi/detail_portofolio/draft", + detail_publish: "/dev/investasi/detail_portofolio/publish", + detail_review: "/dev/investasi/detail_portofolio/review", + detail_reject: "/dev/investasi/detail_portofolio/reject", + // berita berita: "/dev/investasi/berita/", create_berita: "/dev/investasi/create_berita", - list_edit_berita: "/dev/investasi/list_edit_berita/" + list_edit_berita: "/dev/investasi/list_edit_berita/", }; diff --git a/src/app_modules/admin/investasi/konfirmasi/view.tsx b/src/app_modules/admin/investasi/konfirmasi/view.tsx index e0864d5f..861ea200 100644 --- a/src/app_modules/admin/investasi/konfirmasi/view.tsx +++ b/src/app_modules/admin/investasi/konfirmasi/view.tsx @@ -18,9 +18,15 @@ import { Button, Text, Image, + Collapse, + Textarea, } from "@mantine/core"; +import { useDisclosure } from "@mantine/hooks"; import { IconBookDownload, + IconChevronDown, + IconChevronLeft, + IconChevronRight, IconFileDescription, IconSpeakerphone, } from "@tabler/icons-react"; @@ -31,6 +37,8 @@ import toast from "react-simple-toasts"; export default function Admin_KonfirmasiInvestasi({ id }: { id: string }) { const router = useRouter(); const [publish, setPublish] = useState(true); + const [opened, { toggle }] = useDisclosure(false); + const listBox = [ { id: 1, @@ -125,7 +133,7 @@ export default function Admin_KonfirmasiInvestasi({ id }: { id: string }) { {/* List Box */} - + {listBox.map((e) => ( -
- {publish ? ( - - ) : ( - - )} -
+ + {/* Button publish dan reject */} + + {/* Publish */} + +
+ {publish ? ( + + ) : ( + + )} +
+
+ {/* Reject */} + +
+ +
+
+
+ + {/* Text area reject */} + + + +