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 */}
+
+
+ : }
+ >
+ Reject
+
+
+
+
+
+ {/* Text area reject */}
+
+
+
+
+
+
+
+
+
+
+
>
);
}
diff --git a/src/app_modules/admin/investasi/main/view.tsx b/src/app_modules/admin/investasi/main/view.tsx
index ad7c2d80..45a3eb46 100644
--- a/src/app_modules/admin/investasi/main/view.tsx
+++ b/src/app_modules/admin/investasi/main/view.tsx
@@ -52,7 +52,7 @@ const listTable = [
id: 2,
status: {
id: 2,
- name: "Menunggu Konfirmasi",
+ name: "Review",
},
name: "Event MCD",
},
@@ -60,7 +60,7 @@ const listTable = [
id: 3,
status: {
id: 2,
- name: " Menunggu Konfirmasi",
+ name: " Review",
},
name: "Villa Batubulan",
},
diff --git a/src/app_modules/crowd/main/view.tsx b/src/app_modules/crowd/main/view.tsx
index 74683046..3507253c 100644
--- a/src/app_modules/crowd/main/view.tsx
+++ b/src/app_modules/crowd/main/view.tsx
@@ -36,7 +36,7 @@ export default function MainCrowd() {
color="green"
onClick={() => {
router.push("/dev/investasi/main");
- setChangeColor(false);
+ setChangeColor(0);
}}
>
Investasi
diff --git a/src/app_modules/investasi/create/view.tsx b/src/app_modules/investasi/create/view.tsx
index 6a54ff28..f6c90571 100644
--- a/src/app_modules/investasi/create/view.tsx
+++ b/src/app_modules/investasi/create/view.tsx
@@ -22,7 +22,8 @@ import { funCreateInvestasi } from "../fun/fun_create_investasi";
import toast from "react-simple-toasts";
import { RouterInvestasi } from "@/app/lib/router_hipmi/router_investasi";
import { useAtom } from "jotai";
-import { gs_investasiFooter } from "../g_state";
+import { gs_TabPortoInvestasi, gs_investasiFooter } from "../g_state";
+import { useShallowEffect } from "@mantine/hooks";
export default function InvestasiCreate({
id,
@@ -38,7 +39,10 @@ export default function InvestasiCreate({
const router = useRouter();
const [fl, setFl] = useState(null);
const [img, setImg] = useState();
- const [changeColor, setChangeColor] = useAtom(gs_investasiFooter)
+ const [changeColor, setChangeColor] = useAtom(gs_investasiFooter);
+ const [activeTab, setActiveTab] = useAtom(gs_TabPortoInvestasi)
+
+
const [value, setValue] = useState({
title: "",
targetDana: "",
@@ -63,10 +67,10 @@ export default function InvestasiCreate({
masterPencarianInvestorId: value.pencarianInvestorId,
};
// toast("Berhasil disimpan")
- setChangeColor(true)
+ setChangeColor(1);
+ setActiveTab("Draft")
return setTimeout(() => router.push(RouterInvestasi.dialog_create), 1000);
-
// if (_.values(body).includes("")) return toast("Lengkapi data");
// if (!fl) return toast("File Kosong");
@@ -105,10 +109,11 @@ export default function InvestasiCreate({
>
{(props) => (