From 5fcf46122dcf91f75be4829493506eb15d8145aa Mon Sep 17 00:00:00 2001 From: Bagasbanuna02 Date: Tue, 20 Aug 2024 14:28:29 +0800 Subject: [PATCH] Test foto server --- package.json | 5 + prisma/schema.prisma | 9 +- .../644b58c8-a9a9-4896-9a70-a582f10738be.pdf | Bin 11940 -> 55840 bytes src/app/dev/admin/map/page.tsx | 1 - src/app/dev/investasi/file-view/[id]/page.tsx | 14 + .../investasi/status_pesanan/[id]/page.tsx | 2 +- .../transaksi/metode-pembayaran/[id]/page.tsx | 14 + .../transaksi/pembelian/[id]/page.tsx | 13 + src/app/globals.css | 32 +- src/app/layout.tsx | 1 + src/app/lib/router_hipmi/router_investasi.ts | 13 +- .../_global/fun/get/fun_get_all_bank.ts | 15 + .../fun/update/fun_udpate_status_bank.ts | 2 +- .../fun/update/fun_update_data_bank.ts | 2 +- .../admin/app_info/main/info_bank.tsx | 2 +- .../_component/detail_gambar_investasi.tsx | 4 +- .../investasi/_component/ui_detail_file.tsx | 6 +- .../admin/investasi/bukti_transfer/view.tsx | 2 +- .../admin/investasi/detail/detail_publish.tsx | 12 +- .../admin/investasi/detail/detail_reject.tsx | 8 +- .../admin/investasi/detail/detail_review.tsx | 14 +- .../fun/edit/fun_status_publish_by_id.ts | 4 +- .../admin/investasi/main/table_publish.tsx | 6 +- .../admin/investasi/main/table_reject.tsx | 6 +- .../admin/investasi/main/table_review.tsx | 6 +- src/app_modules/admin/investasi/main/view.tsx | 5 +- .../admin/map/component/drawer.tsx | 37 - .../admin/map/component/drawer_detail_map.tsx | 120 +++ src/app_modules/admin/map/component/index.ts | 2 +- .../admin/map/fun/fun_get_one_by_id.ts | 25 + src/app_modules/admin/map/ui/ui_map_view.tsx | 2 +- src/app_modules/admin/map/view/view.tsx | 1 + src/app_modules/donasi/model/interface.ts | 2 +- .../proses_donasi/metode_pembayaran/index.tsx | 20 +- .../_component/file_view/frame_file_view.tsx | 50 ++ .../_component/file_view/styles.module.css | 17 + src/app_modules/investasi/_component/index.ts | 7 + .../transaksi/box_metode_pembayaran.tsx | 78 ++ .../_component/transaksi/box_pembelian.tsx | 136 +++ .../_fun/get/fun_get_file_by_prospek_id.ts | 13 + .../investasi/_fun/get/fun_get_one_by_id.ts | 27 + src/app_modules/investasi/_fun/index.ts | 5 + .../model_investasi.ts => _lib/interface.ts} | 8 +- src/app_modules/investasi/_ui/file_view.tsx | 63 ++ src/app_modules/investasi/_ui/index.ts | 7 + .../_ui/transaksi/metode_pembayaran.tsx | 17 + .../_ui/transaksi/proses_transaksi.tsx | 22 + src/app_modules/investasi/berita/view.tsx | 10 +- .../component/detail/card_status.tsx | 8 +- .../detail/detai_data_non_publish.tsx | 12 +- src/app_modules/investasi/create/view.tsx | 4 +- src/app_modules/investasi/detail/view.tsx | 65 +- .../investasi/detail_berita/view.tsx | 6 +- .../investasi/detail_dokumen/view.tsx | 4 +- .../detail_portofolio/draft/index.tsx | 8 +- .../detail_portofolio/draft/layout.tsx | 8 +- .../detail_portofolio/publish/index.tsx | 14 +- .../detail_portofolio/reject/index.tsx | 10 +- .../detail_portofolio/review/index.tsx | 10 +- .../investasi/detail_prospektus/view.tsx | 92 +- .../investasi/detail_saham_terbeli/view.tsx | 12 +- .../investasi/dialog_page/create/layout.tsx | 4 +- .../dialog_page/transaksi_saham/layout.tsx | 4 +- .../dialog_page/transaksi_saham/view.tsx | 4 +- src/app_modules/investasi/edit/view.tsx | 8 +- .../investasi/edit_berita/layout.tsx | 2 +- .../investasi/edit_berita/view.tsx | 8 +- .../investasi/edit_dokumen/layout.tsx | 4 +- .../investasi/edit_dokumen/view.tsx | 4 +- src/app_modules/investasi/edit_intro/view.tsx | 8 +- .../investasi/edit_propektus/layout.tsx | 4 +- .../investasi/edit_propektus/view.tsx | 10 +- .../fun/edit/fun_edit_status_by_id.ts | 4 +- .../investasi/fun/fun_cek_sisa_waktu.ts | 2 +- .../investasi/fun/fun_countdown_investasi.ts | 2 +- .../investasi/fun/fun_create_berita.ts | 6 +- .../investasi/fun/fun_create_investasi.ts | 8 +- .../investasi/fun/fun_create_transaksi.ts | 2 +- .../investasi/fun/fun_delete_berita.ts | 2 +- .../investasi/fun/fun_delete_investasi.ts | 4 +- .../investasi/fun/fun_edit_berita.ts | 2 +- .../investasi/fun/fun_edit_investasi.ts | 8 +- .../investasi/fun/fun_ganti_status.ts | 6 +- .../fun/fun_ganti_status_transaksi.ts | 4 +- .../investasi/fun/fun_load_data.ts | 2 +- .../investasi/fun/fun_update_investasi.ts | 10 +- .../investasi/fun/fun_update_payment.ts | 6 +- .../fun/fun_update_progres_persen.ts | 4 +- .../investasi/fun/fun_update_progres_waktu.ts | 4 +- .../investasi/fun/fun_upload_dokumen.ts | 4 +- .../investasi/fun/fun_upload_prospek.ts | 4 +- .../fun/get_list_all_transaksi_by_id.ts | 2 +- .../investasi/list_edit_berita/layout.tsx | 4 +- .../investasi/list_edit_berita/view.tsx | 10 +- src/app_modules/investasi/main/layout.tsx | 10 +- src/app_modules/investasi/main/view.tsx | 12 +- .../investasi/metode_transfer/view.tsx | 10 +- .../investasi/portofolio/draft.tsx | 8 +- .../investasi/portofolio/publish.tsx | 10 +- .../investasi/portofolio/reject.tsx | 8 +- .../investasi/portofolio/review.tsx | 8 +- src/app_modules/investasi/portofolio/view.tsx | 2 +- .../investasi/proses_investasi/view.tsx | 6 +- .../investasi/proses_transaksi/view.jsx | 6 +- .../investasi/saham_saya/saham_saya.tsx | 8 +- .../investasi/status_pesanan/view.tsx | 6 +- .../status_transaksi/gagal/layout.tsx | 6 +- .../investasi/status_transaksi/gagal/view.tsx | 2 +- .../investasi/status_transaksi/layout.tsx | 6 +- src/app_modules/investasi/transaksi/view.tsx | 14 +- src/app_modules/investasi/transfer/layout.tsx | 4 +- src/app_modules/investasi/transfer/view.tsx | 10 +- .../component/detail_data_drawer_map.tsx | 3 + .../katalog/portofolio/model/interface.ts | 33 +- .../katalog/portofolio/ui/ui_detail_map.tsx | 31 +- .../portofolio/ui/ui_detail_portofolio.tsx | 8 +- .../map/_component/detail_data.tsx | 20 +- src/app_modules/map/_component/index.ts | 1 + .../map/_component/skeleton_detail_data.tsx | 36 + .../notifikasi/component/path/investasi.ts | 4 +- yarn.lock | 834 +++++++++++++++++- 121 files changed, 1924 insertions(+), 462 deletions(-) create mode 100644 src/app/dev/investasi/file-view/[id]/page.tsx create mode 100644 src/app/dev/investasi/transaksi/metode-pembayaran/[id]/page.tsx create mode 100644 src/app/dev/investasi/transaksi/pembelian/[id]/page.tsx create mode 100644 src/app_modules/_global/fun/get/fun_get_all_bank.ts delete mode 100644 src/app_modules/admin/map/component/drawer.tsx create mode 100644 src/app_modules/admin/map/component/drawer_detail_map.tsx create mode 100644 src/app_modules/admin/map/fun/fun_get_one_by_id.ts create mode 100644 src/app_modules/investasi/_component/file_view/frame_file_view.tsx create mode 100644 src/app_modules/investasi/_component/file_view/styles.module.css create mode 100644 src/app_modules/investasi/_component/index.ts create mode 100644 src/app_modules/investasi/_component/transaksi/box_metode_pembayaran.tsx create mode 100644 src/app_modules/investasi/_component/transaksi/box_pembelian.tsx create mode 100644 src/app_modules/investasi/_fun/get/fun_get_file_by_prospek_id.ts create mode 100644 src/app_modules/investasi/_fun/get/fun_get_one_by_id.ts create mode 100644 src/app_modules/investasi/_fun/index.ts rename src/app_modules/investasi/{model/model_investasi.ts => _lib/interface.ts} (93%) create mode 100644 src/app_modules/investasi/_ui/file_view.tsx create mode 100644 src/app_modules/investasi/_ui/index.ts create mode 100644 src/app_modules/investasi/_ui/transaksi/metode_pembayaran.tsx create mode 100644 src/app_modules/investasi/_ui/transaksi/proses_transaksi.tsx create mode 100644 src/app_modules/map/_component/skeleton_detail_data.tsx diff --git a/package.json b/package.json index b3f80c59..4413abcd 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,8 @@ "lint": "next lint" }, "dependencies": { + "@bounceapp/iframe": "^0.3.0", + "@cyntler/react-doc-viewer": "^1.16.6", "@emotion/react": "^11.11.1", "@emotion/server": "^11.11.0", "@hookstate/core": "^4.0.1", @@ -25,6 +27,7 @@ "@mantine/notifications": "^6.0.17", "@mantine/tiptap": "^7.5.3", "@prisma/client": "^5.0.0", + "@react-pdf/renderer": "^3.4.4", "@tabler/icons-react": "^2.38.0", "@tiptap/extension-highlight": "^2.2.3", "@tiptap/extension-link": "^2.2.3", @@ -66,9 +69,11 @@ "react-easy-infinite-scroll-hook": "^2.1.4", "react-fast-marquee": "^1.6.4", "react-icons": "^5.0.1", + "react-iframe": "^1.8.5", "react-infinite-scroll-component": "^6.1.0", "react-international-phone": "^4.2.6", "react-map-gl": "^7.1.7", + "react-pdf": "^9.1.0", "react-quill": "^2.0.0", "react-responsive-carousel": "^3.2.23", "react-simple-toasts": "^5.10.0", diff --git a/prisma/schema.prisma b/prisma/schema.prisma index ff99d8c2..15cfd506 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -114,7 +114,8 @@ model Images { Donasi_Invoice Donasi_Invoice[] Portofolio Portofolio[] Job Job[] - BusinessMaps BusinessMaps[] + Image_Map BusinessMaps[] @relation("ImageMap") + Image_Pin BusinessMaps[] @relation("ImagePin") } model ImagesBackground { @@ -886,6 +887,8 @@ model BusinessMaps { authorId String? Portofolio Portofolio? @relation(fields: [portofolioId], references: [id]) portofolioId String? @unique - Images Images? @relation(fields: [imagesId], references: [id]) - imagesId String? + ImageMap Images? @relation("ImageMap", fields: [imagesMapId], references: [id], map: "MapImage") + imagesMapId String? + ImagePin Images? @relation("ImagePin", fields: [imagePinId], references: [id], map: "PinImage") + imagePinId String? } diff --git a/public/file/644b58c8-a9a9-4896-9a70-a582f10738be.pdf b/public/file/644b58c8-a9a9-4896-9a70-a582f10738be.pdf index 92b2f709be163f3e25535ef6d6b946668a2b8232..a158080a491bdb548199c98ed8244e1b9be895d4 100644 GIT binary patch literal 55840 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 U80?=5M_MNY6u`%)u7?8r3w!h}+yDRo delta 10858 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 A6951J diff --git a/src/app/dev/admin/map/page.tsx b/src/app/dev/admin/map/page.tsx index efacf8ee..7e503f27 100644 --- a/src/app/dev/admin/map/page.tsx +++ b/src/app/dev/admin/map/page.tsx @@ -1,6 +1,5 @@ import { AdminMap_View } from "@/app_modules/admin/map/view"; - export default async function Page() { return ( <> diff --git a/src/app/dev/investasi/file-view/[id]/page.tsx b/src/app/dev/investasi/file-view/[id]/page.tsx new file mode 100644 index 00000000..e37dcb81 --- /dev/null +++ b/src/app/dev/investasi/file-view/[id]/page.tsx @@ -0,0 +1,14 @@ +import { investasi_funGetProspekById } from "@/app_modules/investasi/_fun"; +import { Investasi_UiFileView } from "@/app_modules/investasi/_ui"; + +export default async function Page({ params }: { params: { id: string } }) { + const prospekId = params.id; + const dataProspek = await investasi_funGetProspekById({ prospekId: prospekId }); + + + return ( + <> + + + ); +} diff --git a/src/app/dev/investasi/status_pesanan/[id]/page.tsx b/src/app/dev/investasi/status_pesanan/[id]/page.tsx index f5f6c5c7..5180bca2 100644 --- a/src/app/dev/investasi/status_pesanan/[id]/page.tsx +++ b/src/app/dev/investasi/status_pesanan/[id]/page.tsx @@ -1,4 +1,4 @@ -import { RouterInvestasi } from "@/app/lib/router_hipmi/router_investasi"; +import { RouterInvestasi_OLD } from "@/app/lib/router_hipmi/router_investasi"; import { StatusPesananInvetsatsi } from "@/app_modules/investasi"; import getOneTransaksiByIdInvestasi from "@/app_modules/investasi/fun/get_one_transaksi_by_id"; import getTransaksiByIdInvestasi from "@/app_modules/investasi/fun/get_transaksi_investasi"; diff --git a/src/app/dev/investasi/transaksi/metode-pembayaran/[id]/page.tsx b/src/app/dev/investasi/transaksi/metode-pembayaran/[id]/page.tsx new file mode 100644 index 00000000..b55c3045 --- /dev/null +++ b/src/app/dev/investasi/transaksi/metode-pembayaran/[id]/page.tsx @@ -0,0 +1,14 @@ +import { funGlobal_getAllBank } from "@/app_modules/_global/fun/get/fun_get_all_bank"; +import { Investasi_UiMetodePembayaran } from "@/app_modules/investasi/_ui"; +import getMaster_NamaBank from "@/app_modules/investasi/fun/master/get_nama_bank"; + +export default async function Page({ params }: { params: { id: string } }) { + const investasiId = params.id; + const listBank = await funGlobal_getAllBank(); + + return ( + <> + + + ); +} diff --git a/src/app/dev/investasi/transaksi/pembelian/[id]/page.tsx b/src/app/dev/investasi/transaksi/pembelian/[id]/page.tsx new file mode 100644 index 00000000..c8c5754a --- /dev/null +++ b/src/app/dev/investasi/transaksi/pembelian/[id]/page.tsx @@ -0,0 +1,13 @@ +import { investasi_funGetOneInvestasiById } from "@/app_modules/investasi/_fun"; +import { Investasi_UiProsesTransaksi } from "@/app_modules/investasi/_ui"; + +export default async function Page({ params }: { params: { id: string } }) { + const investasiId = params.id; + const dataInvestasi = await investasi_funGetOneInvestasiById({ investasiId }); + + return ( + <> + + + ); +} diff --git a/src/app/globals.css b/src/app/globals.css index fd81e885..fee2695d 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -1,27 +1,5 @@ -@tailwind base; -@tailwind components; -@tailwind utilities; - -:root { - --foreground-rgb: 0, 0, 0; - --background-start-rgb: 214, 219, 220; - --background-end-rgb: 255, 255, 255; -} - -@media (prefers-color-scheme: dark) { - :root { - --foreground-rgb: 255, 255, 255; - --background-start-rgb: 0, 0, 0; - --background-end-rgb: 0, 0, 0; - } -} - -body { - color: rgb(var(--foreground-rgb)); - background: linear-gradient( - to bottom, - transparent, - rgb(var(--background-end-rgb)) - ) - rgb(var(--background-start-rgb)); -} +.lebar-full { + width: 100%; + /* padding: 30px; */ + background-color: aqua; +} \ No newline at end of file diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 60515f79..18f8eb90 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,6 +1,7 @@ import MqttLoader from "@/util/mqtt_loader"; import RootStyleRegistry from "./emotion"; import { Container } from "@mantine/core"; +import './globals.css' export default function RootLayout({ children, diff --git a/src/app/lib/router_hipmi/router_investasi.ts b/src/app/lib/router_hipmi/router_investasi.ts index 35d57616..c3933bf9 100644 --- a/src/app/lib/router_hipmi/router_investasi.ts +++ b/src/app/lib/router_hipmi/router_investasi.ts @@ -1,4 +1,13 @@ -export const RouterInvestasi = { +export const NEW_RouterInvestasi = { + // Transaksi + pembelian: "/dev/investasi/transaksi/pembelian/", + metode_pembayaran: "/dev/investasi/transaksi/metode-pembayaran/", + + // file view + file_view: "/dev/investasi/file-view/", +} + +export const RouterInvestasi_OLD = { api_gambar: "/api/investasi/gambar/", api_file_prospektus: "/api/investasi/prospektus/", api_file_dokumen: "/api/investasi/dokumen/", @@ -53,3 +62,5 @@ export const RouterInvestasi = { upload_prospektus: "/dev/investasi/upload_prospektus/", upload_dokumen: "/dev/investasi/upload_dokumen/", }; + + diff --git a/src/app_modules/_global/fun/get/fun_get_all_bank.ts b/src/app_modules/_global/fun/get/fun_get_all_bank.ts new file mode 100644 index 00000000..4092a121 --- /dev/null +++ b/src/app_modules/_global/fun/get/fun_get_all_bank.ts @@ -0,0 +1,15 @@ +"use server"; + +import prisma from "@/app/lib/prisma"; + +export async function funGlobal_getAllBank() { + const data = await prisma.masterBank.findMany({ + orderBy: { + id: "asc", + }, + where: { + active: true, + }, + }); + return data; +} diff --git a/src/app_modules/admin/app_info/fun/update/fun_udpate_status_bank.ts b/src/app_modules/admin/app_info/fun/update/fun_udpate_status_bank.ts index 0832f690..402b0081 100644 --- a/src/app_modules/admin/app_info/fun/update/fun_udpate_status_bank.ts +++ b/src/app_modules/admin/app_info/fun/update/fun_udpate_status_bank.ts @@ -1,7 +1,7 @@ "use server"; import prisma from "@/app/lib/prisma"; -import { MODEL_DATA_BANK } from "@/app_modules/investasi/model/model_investasi"; +import { MODEL_DATA_BANK } from "@/app_modules/investasi/_lib/interface"; export default async function adminAppInformation_updateStatusBankById({ data, diff --git a/src/app_modules/admin/app_info/fun/update/fun_update_data_bank.ts b/src/app_modules/admin/app_info/fun/update/fun_update_data_bank.ts index 652ceeb9..be90087e 100644 --- a/src/app_modules/admin/app_info/fun/update/fun_update_data_bank.ts +++ b/src/app_modules/admin/app_info/fun/update/fun_update_data_bank.ts @@ -1,7 +1,7 @@ "use server"; import prisma from "@/app/lib/prisma"; -import { MODEL_DATA_BANK } from "@/app_modules/investasi/model/model_investasi"; +import { MODEL_DATA_BANK } from "@/app_modules/investasi/_lib/interface"; export default async function adminAppInformation_updateDataBankById({ data, diff --git a/src/app_modules/admin/app_info/main/info_bank.tsx b/src/app_modules/admin/app_info/main/info_bank.tsx index be6d5e55..7af9e22e 100644 --- a/src/app_modules/admin/app_info/main/info_bank.tsx +++ b/src/app_modules/admin/app_info/main/info_bank.tsx @@ -1,6 +1,6 @@ "use client"; -import { MODEL_DATA_BANK } from "@/app_modules/investasi/model/model_investasi"; +import { MODEL_DATA_BANK } from "@/app_modules/investasi/_lib/interface"; import { ActionIcon, Button, diff --git a/src/app_modules/admin/investasi/_component/detail_gambar_investasi.tsx b/src/app_modules/admin/investasi/_component/detail_gambar_investasi.tsx index 358da08b..526f1853 100644 --- a/src/app_modules/admin/investasi/_component/detail_gambar_investasi.tsx +++ b/src/app_modules/admin/investasi/_component/detail_gambar_investasi.tsx @@ -1,4 +1,4 @@ -import { RouterInvestasi } from "@/app/lib/router_hipmi/router_investasi"; +import { RouterInvestasi_OLD } from "@/app/lib/router_hipmi/router_investasi"; import { Paper, Stack, Title, AspectRatio, Center, Image } from "@mantine/core"; export function ComponentAdminInvestasi_DetailGambar({imagesId}: {imagesId: any}) { @@ -17,7 +17,7 @@ export function ComponentAdminInvestasi_DetailGambar({imagesId}: {imagesId: any} radius={"md"} width={200} alt="" - src={RouterInvestasi.api_gambar + `${imagesId}`} + src={RouterInvestasi_OLD.api_gambar + `${imagesId}`} /> diff --git a/src/app_modules/admin/investasi/_component/ui_detail_file.tsx b/src/app_modules/admin/investasi/_component/ui_detail_file.tsx index 6f6608c1..ccafb4fa 100644 --- a/src/app_modules/admin/investasi/_component/ui_detail_file.tsx +++ b/src/app_modules/admin/investasi/_component/ui_detail_file.tsx @@ -1,4 +1,4 @@ -import { RouterInvestasi } from "@/app/lib/router_hipmi/router_investasi"; +import { RouterInvestasi_OLD } from "@/app/lib/router_hipmi/router_investasi"; import { SimpleGrid, Paper, @@ -50,7 +50,7 @@ export function ComponentAdminInvestasi_UIDetailFile({ @@ -78,7 +78,7 @@ export function ComponentAdminInvestasi_UIDetailFile({ diff --git a/src/app_modules/admin/investasi/bukti_transfer/view.tsx b/src/app_modules/admin/investasi/bukti_transfer/view.tsx index 7b62b166..c67e4f39 100644 --- a/src/app_modules/admin/investasi/bukti_transfer/view.tsx +++ b/src/app_modules/admin/investasi/bukti_transfer/view.tsx @@ -1,7 +1,7 @@ "use client"; import { RouterAdminInvestasi_OLD } from "@/app/lib/router_hipmi/router_admin"; -import { RouterInvestasi } from "@/app/lib/router_hipmi/router_investasi"; +import { RouterInvestasi_OLD } from "@/app/lib/router_hipmi/router_investasi"; import { Avatar, Badge, diff --git a/src/app_modules/admin/investasi/detail/detail_publish.tsx b/src/app_modules/admin/investasi/detail/detail_publish.tsx index ab7ae43b..ee6a4306 100644 --- a/src/app_modules/admin/investasi/detail/detail_publish.tsx +++ b/src/app_modules/admin/investasi/detail/detail_publish.tsx @@ -1,6 +1,6 @@ "use client"; -import { MODEL_Investasi } from "@/app_modules/investasi/model/model_investasi"; +import { MODEL_INVESTASI } from "@/app_modules/investasi/_lib/interface"; import { AspectRatio, Box, @@ -16,14 +16,14 @@ import { Title, } from "@mantine/core"; import ComponentAdminGlobal_BackButton from "../../_admin_global/back_button"; -import { RouterInvestasi } from "@/app/lib/router_hipmi/router_investasi"; +import { RouterInvestasi_OLD } from "@/app/lib/router_hipmi/router_investasi"; import { IconCircleCheck, IconHome } from "@tabler/icons-react"; import investasi from "../../notifikasi/route_setting/investasi"; export function AdminInvestasi_DetailPublish({ data, }: { - data: MODEL_Investasi; + data: MODEL_INVESTASI; }) { return ( <> @@ -38,7 +38,7 @@ export function AdminInvestasi_DetailPublish({ ); } -function InformasiAuthor({ data }: { data: MODEL_Investasi }) { +function InformasiAuthor({ data }: { data: MODEL_INVESTASI }) { return ( <> @@ -55,7 +55,7 @@ function InformasiAuthor({ data }: { data: MODEL_Investasi }) { radius={"md"} width={250} alt="" - src={RouterInvestasi.api_gambar + `${data.imagesId}`} + src={RouterInvestasi_OLD.api_gambar + `${data.imagesId}`} /> @@ -84,7 +84,7 @@ function InformasiAuthor({ data }: { data: MODEL_Investasi }) { ); } -function InformasiDataInvestasi({ data }: { data: MODEL_Investasi }) { +function InformasiDataInvestasi({ data }: { data: MODEL_INVESTASI }) { return ( <> diff --git a/src/app_modules/admin/investasi/detail/detail_reject.tsx b/src/app_modules/admin/investasi/detail/detail_reject.tsx index fa3015c6..afcc7ff2 100644 --- a/src/app_modules/admin/investasi/detail/detail_reject.tsx +++ b/src/app_modules/admin/investasi/detail/detail_reject.tsx @@ -1,6 +1,6 @@ "use client"; -import { MODEL_Investasi } from "@/app_modules/investasi/model/model_investasi"; +import { MODEL_INVESTASI } from "@/app_modules/investasi/_lib/interface"; import { Paper, SimpleGrid, @@ -14,11 +14,7 @@ import { ComponentAdminInvestasi_DetailData } from "../_component/detail_data_in import { ComponentAdminInvestasi_DetailGambar } from "../_component/detail_gambar_investasi"; import { ComponentAdminInvestasi_UIDetailFile } from "../_component/ui_detail_file"; -export function AdminInvestasi_DetailReject({ - data, -}: { - data: MODEL_Investasi; -}) { +export function AdminInvestasi_DetailReject({ data }: { data: MODEL_INVESTASI }) { return ( <> diff --git a/src/app_modules/admin/investasi/detail/detail_review.tsx b/src/app_modules/admin/investasi/detail/detail_review.tsx index 3d2dfd26..e1b08d31 100644 --- a/src/app_modules/admin/investasi/detail/detail_review.tsx +++ b/src/app_modules/admin/investasi/detail/detail_review.tsx @@ -1,9 +1,9 @@ "use client"; import { RouterAdminInvestasi } from "@/app/lib/router_admin/router_admin_investasi"; -import { RouterInvestasi } from "@/app/lib/router_hipmi/router_investasi"; +import { RouterInvestasi_OLD } from "@/app/lib/router_hipmi/router_investasi"; import { BeritaInvestasi } from "@/app_modules/investasi"; -import { MODEL_Investasi } from "@/app_modules/investasi/model/model_investasi"; +import { MODEL_INVESTASI } from "@/app_modules/investasi/_lib/interface"; import mqtt_client from "@/util/mqtt_client"; import { AspectRatio, @@ -49,7 +49,7 @@ import getOneInvestasiById from "@/app_modules/investasi/fun/get_one_investasi_b export default function AdminInvestasi_DetailReview({ dataInvestasi, }: { - dataInvestasi: MODEL_Investasi; + dataInvestasi: MODEL_INVESTASI; }) { const router = useRouter(); const [data, setData] = useState(dataInvestasi); @@ -263,7 +263,7 @@ export default function AdminInvestasi_DetailReview({ @@ -370,7 +370,7 @@ export default function AdminInvestasi_DetailReview({ {e.title} + + + ); +} diff --git a/src/app_modules/investasi/_component/transaksi/box_pembelian.tsx b/src/app_modules/investasi/_component/transaksi/box_pembelian.tsx new file mode 100644 index 00000000..c414697f --- /dev/null +++ b/src/app_modules/investasi/_component/transaksi/box_pembelian.tsx @@ -0,0 +1,136 @@ +import { + AccentColor, + MainColor, +} from "@/app_modules/_global/color/color_pallet"; +import { + Box, + Button, + Center, + Divider, + Group, + NumberInput, + Text, + TextInput, +} from "@mantine/core"; +import { useFocusTrap, useLocalStorage } from "@mantine/hooks"; +import { useAtom } from "jotai"; +import { useRouter } from "next/navigation"; +import { useState } from "react"; +import { MODEL_INVESTASI } from "../../_lib/interface"; +import { gs_investas_menu } from "../../g_state"; +import { NEW_RouterInvestasi } from "../../../../app/lib/router_hipmi/router_investasi"; + +export function ComponentInvestasi_BoxPembelian({ + dataInvestasi, +}: { + dataInvestasi: MODEL_INVESTASI; +}) { + const router = useRouter(); + const focusTrapRef = useFocusTrap(); + const [data, setData] = useState(dataInvestasi); + const [maxPembelian, setMaxPembelian] = useState(Number(data.sisaLembar)); + const [total, setTotal] = useLocalStorage({ + key: "total_investasi", + defaultValue: 0, + }); + const [jumlah, setJumlah] = useLocalStorage({ + key: "jumlah_investasi", + defaultValue: 0, + }); + const [hotmenu, setHotmenu] = useAtom(gs_investas_menu); + + return ( + <> + + {/* Sisa Lembar Saham */} + + Sisa Lembar Saham + + {new Intl.NumberFormat("id-ID", { + maximumFractionDigits: 10, + }).format(+data.sisaLembar)}{" "} + + + + {/* Harga perlembar saham */} + + Harga Perlembar + + Rp.{" "} + {new Intl.NumberFormat("id-ID", { + maximumFractionDigits: 10, + }).format(+data.hargaLembar)}{" "} + + + + {/* Lembar saham */} + + + Jumlah Pembelian + + minimal pembelian 10 lembar + + + { + setTotal(val * +data.hargaLembar); + setJumlah(val); + // console.log(val); + }} + /> + + + + + + + Total Harga + + + Rp.{" "} + {new Intl.NumberFormat("id-ID", { + maximumFractionDigits: 10, + }).format(total)} + + + +
+ +
+
+ + ); +} diff --git a/src/app_modules/investasi/_fun/get/fun_get_file_by_prospek_id.ts b/src/app_modules/investasi/_fun/get/fun_get_file_by_prospek_id.ts new file mode 100644 index 00000000..43fc99ad --- /dev/null +++ b/src/app_modules/investasi/_fun/get/fun_get_file_by_prospek_id.ts @@ -0,0 +1,13 @@ +"use server" + +import prisma from "@/app/lib/prisma" + +export async function investasi_funGetProspekById({prospekId}: {prospekId: string}) { + const data = await prisma.prospektusInvestasi.findFirst({ + where: { + id: prospekId + } + }) + + return data +} \ No newline at end of file diff --git a/src/app_modules/investasi/_fun/get/fun_get_one_by_id.ts b/src/app_modules/investasi/_fun/get/fun_get_one_by_id.ts new file mode 100644 index 00000000..beeacaca --- /dev/null +++ b/src/app_modules/investasi/_fun/get/fun_get_one_by_id.ts @@ -0,0 +1,27 @@ +"use server"; +import prisma from "@/app/lib/prisma"; + +export async function investasi_funGetOneInvestasiById({investasiId}: {investasiId: string}) { + const data = await prisma.investasi.findUnique({ + where: { + id: investasiId, + }, + include: { + author: { + include: { + Profile: true, + }, + }, + MasterStatusInvestasi: true, + BeritaInvestasi: true, + DokumenInvestasi: true, + ProspektusInvestasi: true, + MasterPembagianDeviden: true, + MasterPencarianInvestor: true, + MasterPeriodeDeviden: true, + MasterProgresInvestasi: true, + }, + }); + + return data; +} diff --git a/src/app_modules/investasi/_fun/index.ts b/src/app_modules/investasi/_fun/index.ts new file mode 100644 index 00000000..9157bc36 --- /dev/null +++ b/src/app_modules/investasi/_fun/index.ts @@ -0,0 +1,5 @@ +import { investasi_funGetProspekById } from "./get/fun_get_file_by_prospek_id"; +import { investasi_funGetOneInvestasiById } from "./get/fun_get_one_by_id"; + +export { investasi_funGetOneInvestasiById }; +export { investasi_funGetProspekById }; diff --git a/src/app_modules/investasi/model/model_investasi.ts b/src/app_modules/investasi/_lib/interface.ts similarity index 93% rename from src/app_modules/investasi/model/model_investasi.ts rename to src/app_modules/investasi/_lib/interface.ts index 5937f05f..fd99f7e6 100644 --- a/src/app_modules/investasi/model/model_investasi.ts +++ b/src/app_modules/investasi/_lib/interface.ts @@ -1,6 +1,6 @@ import { MODEL_PROFILE_OLD } from "@/app_modules/home/model/user_profile"; -export interface MODEL_Investasi { +export interface MODEL_INVESTASI { id: string; title: string; targetDana: string; @@ -19,7 +19,7 @@ export interface MODEL_Investasi { MasterStatusInvestasi: MODEL_Status_investasi; BeritaInvestasi: Model_Berita_Investasi[]; DokumenInvestasi: Model_Dokumen_Investasi[]; - ProspektusInvestasi: Model_Prospektus_Investasi; + ProspektusInvestasi: MODEl_PROSPEKTUS_INVESTASI; MasterPembagianDeviden: Model_All_Master; MasterPencarianInvestor: Model_All_Master; MasterPeriodeDeviden: Model_All_Master; @@ -52,7 +52,7 @@ export interface MODEL_Transaksi_Investasi { Author: MODEL_PROFILE_OLD; masterStatusTransaksiInvestasiId: string; investasiId: string; - Investasi: MODEL_Investasi; + Investasi: MODEL_INVESTASI; } export interface MODEL_Status_investasi { @@ -77,7 +77,7 @@ export interface Model_Berita_Investasi { updatedAt: Date; } -export interface Model_Prospektus_Investasi { +export interface MODEl_PROSPEKTUS_INVESTASI { id: string; url: string; active: boolean; diff --git a/src/app_modules/investasi/_ui/file_view.tsx b/src/app_modules/investasi/_ui/file_view.tsx new file mode 100644 index 00000000..75a7075f --- /dev/null +++ b/src/app_modules/investasi/_ui/file_view.tsx @@ -0,0 +1,63 @@ +"use client"; + +import UIGlobal_LayoutHeaderTamplate from "@/app_modules/_global/ui/ui_header_tamplate"; +import UIGlobal_LayoutTamplate from "@/app_modules/_global/ui/ui_layout_tamplate"; +import { ComponentInvestasi_FrameFileView } from "../_component"; +import { MODEl_PROSPEKTUS_INVESTASI } from "../_lib/interface"; +import { RouterInvestasi_OLD } from "@/app/lib/router_hipmi/router_investasi"; +import { ActionIcon, Box, Container, Group, Header, rem } from "@mantine/core"; +import { MainColor } from "@/app_modules/_global/color/color_pallet"; +import { IconChevronLeft, IconX } from "@tabler/icons-react"; +import { useRouter } from "next/navigation"; + +export function Investasi_UiFileView({ prospekId }: { prospekId: string }) { + return ( + <> + {/* } + > + + */} + + + + + + + + + ); +} + +function HeaderView() { + const router = useRouter(); + return ( + <> +
+ + router.back()}> + + + +
+ + ); +} diff --git a/src/app_modules/investasi/_ui/index.ts b/src/app_modules/investasi/_ui/index.ts new file mode 100644 index 00000000..a016b178 --- /dev/null +++ b/src/app_modules/investasi/_ui/index.ts @@ -0,0 +1,7 @@ +import { Investasi_UiFileView } from "./file_view"; +import { Investasi_UiMetodePembayaran } from "./transaksi/metode_pembayaran"; +import { Investasi_UiProsesTransaksi } from "./transaksi/proses_transaksi"; + +export { Investasi_UiProsesTransaksi }; +export { Investasi_UiMetodePembayaran }; +export { Investasi_UiFileView }; diff --git a/src/app_modules/investasi/_ui/transaksi/metode_pembayaran.tsx b/src/app_modules/investasi/_ui/transaksi/metode_pembayaran.tsx new file mode 100644 index 00000000..3edd4321 --- /dev/null +++ b/src/app_modules/investasi/_ui/transaksi/metode_pembayaran.tsx @@ -0,0 +1,17 @@ +"use client"; + +import UIGlobal_LayoutHeaderTamplate from "@/app_modules/_global/ui/ui_header_tamplate"; +import UIGlobal_LayoutTamplate from "@/app_modules/_global/ui/ui_layout_tamplate"; +import { ComponentInvestasi_BoxMetodePembayaran } from "../../_component"; + +export function Investasi_UiMetodePembayaran({ listBank }: { listBank: any[] }) { + return ( + <> + } + > + + + + ); +} diff --git a/src/app_modules/investasi/_ui/transaksi/proses_transaksi.tsx b/src/app_modules/investasi/_ui/transaksi/proses_transaksi.tsx new file mode 100644 index 00000000..587460a2 --- /dev/null +++ b/src/app_modules/investasi/_ui/transaksi/proses_transaksi.tsx @@ -0,0 +1,22 @@ +"use client"; + +import UIGlobal_LayoutHeaderTamplate from "@/app_modules/_global/ui/ui_header_tamplate"; +import UIGlobal_LayoutTamplate from "@/app_modules/_global/ui/ui_layout_tamplate"; +import { ComponentInvestasi_BoxPembelian } from "../../_component"; + + +export function Investasi_UiProsesTransaksi({ + dataInvestasi, +}: { + dataInvestasi: any; +}) { + return ( + <> + } + > + + + + ); +} diff --git a/src/app_modules/investasi/berita/view.tsx b/src/app_modules/investasi/berita/view.tsx index 2d05c685..424d62eb 100644 --- a/src/app_modules/investasi/berita/view.tsx +++ b/src/app_modules/investasi/berita/view.tsx @@ -1,6 +1,6 @@ "use client"; -import { RouterInvestasi } from "@/app/lib/router_hipmi/router_investasi"; +import { RouterInvestasi_OLD } from "@/app/lib/router_hipmi/router_investasi"; import { AspectRatio, Box, @@ -16,7 +16,7 @@ import { } from "@mantine/core"; import moment from "moment"; import { useRouter } from "next/navigation"; -import { MODEL_Investasi } from "../model/model_investasi"; +import { MODEL_INVESTASI } from "../_lib/interface"; import { useState } from "react"; import _ from "lodash"; import ComponentGlobal_IsEmptyData from "@/app_modules/_global/component/is_empty_data"; @@ -25,7 +25,7 @@ import { AccentColor } from "@/app_modules/_global/color/color_pallet"; export default function BeritaInvestasi({ dataInvestasi, }: { - dataInvestasi: MODEL_Investasi; + dataInvestasi: MODEL_INVESTASI; }) { const router = useRouter(); const [berita, setBerita] = useState(dataInvestasi); @@ -45,7 +45,7 @@ export default function BeritaInvestasi({ marginBottom: "15px", }} onClick={() => - router.push(RouterInvestasi.detail_berita + `${e.id}`) + router.push(RouterInvestasi_OLD.detail_berita + `${e.id}`) } > @@ -66,7 +66,7 @@ export default function BeritaInvestasi({ diff --git a/src/app_modules/investasi/component/detail/card_status.tsx b/src/app_modules/investasi/component/detail/card_status.tsx index a72b3500..85b79514 100644 --- a/src/app_modules/investasi/component/detail/card_status.tsx +++ b/src/app_modules/investasi/component/detail/card_status.tsx @@ -1,8 +1,8 @@ -import { RouterInvestasi } from "@/app/lib/router_hipmi/router_investasi"; +import { RouterInvestasi_OLD } from "@/app/lib/router_hipmi/router_investasi"; import { Paper, Grid, Stack, AspectRatio, Text, Image } from "@mantine/core"; import _ from "lodash"; -import { MODEL_Investasi } from "../../model/model_investasi"; +import { MODEL_INVESTASI } from "../../_lib/interface"; import { AccentColor } from "@/app_modules/_global/color/color_pallet"; import { useRouter } from "next/navigation"; @@ -10,7 +10,7 @@ export function ComponentInvestasi_CardStatus({ data, path, }: { - data: MODEL_Investasi; + data: MODEL_INVESTASI; path: string; }) { const router = useRouter(); @@ -49,7 +49,7 @@ export function ComponentInvestasi_CardStatus({ diff --git a/src/app_modules/investasi/component/detail/detai_data_non_publish.tsx b/src/app_modules/investasi/component/detail/detai_data_non_publish.tsx index f88f5019..d2ed1c53 100644 --- a/src/app_modules/investasi/component/detail/detai_data_non_publish.tsx +++ b/src/app_modules/investasi/component/detail/detai_data_non_publish.tsx @@ -1,4 +1,4 @@ -import { RouterInvestasi } from "@/app/lib/router_hipmi/router_investasi"; +import { RouterInvestasi_OLD } from "@/app/lib/router_hipmi/router_investasi"; import { AccentColor } from "@/app_modules/_global/color/color_pallet"; import { Stack, @@ -15,14 +15,14 @@ import { SimpleGrid, } from "@mantine/core"; import _ from "lodash"; -import { MODEL_Investasi } from "../../model/model_investasi"; +import { MODEL_INVESTASI } from "../../_lib/interface"; import { IconBookDownload, IconFileDescription } from "@tabler/icons-react"; import { useRouter } from "next/navigation"; export function ComponentInvestasi_DetailDataNonPublish({ data, }: { - data: MODEL_Investasi; + data: MODEL_INVESTASI; }) { const router = useRouter(); const listBox = [ @@ -30,13 +30,13 @@ export function ComponentInvestasi_DetailDataNonPublish({ id: 1, name: "Prospektus", icon: , - route: RouterInvestasi.detail_prospektus, + route: RouterInvestasi_OLD.detail_prospektus, }, { id: 2, name: "Dokumen", icon: , - route: RouterInvestasi.detail_dokumen, + route: RouterInvestasi_OLD.detail_dokumen, }, ]; @@ -55,7 +55,7 @@ export function ComponentInvestasi_DetailDataNonPublish({ , - route: RouterInvestasi.detail_prospektus, + route: RouterInvestasi_OLD.detail_prospektus, }, { id: 2, name: "Dokumen", icon: , - route: RouterInvestasi.detail_dokumen, + route: RouterInvestasi_OLD.detail_dokumen, }, { id: 3, name: "Berita", icon: , - route: RouterInvestasi.berita, + route: RouterInvestasi_OLD.berita, }, ]; async function onSubmit() { - router.push(RouterInvestasi.proses_transaksi + `${investasi.id}`); + //NEW + // router.push(NEW_RouterInvestasi.pembelian + data.id, { scroll: false }); + + // OLD + router.push(RouterInvestasi_OLD.proses_transaksi + `${data.id}`); setTransaksiValue({ ...transaksiValue, lembarTerbeli: "", @@ -114,15 +121,15 @@ export default function DetailInvestasi({ profileId={dataUser?.Profile?.id} /> - {investasi.MasterProgresInvestasi.id === "1" ? ( + {data.MasterProgresInvestasi.id === "1" ? ( Sisa waktu:{" "} - {Number(investasi.MasterPencarianInvestor.name) - + {Number(data.MasterPencarianInvestor.name) - moment(new Date()).diff( - new Date(investasi.countDown), + new Date(data.countDown), "days" )}{" "} Hari @@ -132,7 +139,7 @@ export default function DetailInvestasi({ ) : ( - {investasi.MasterProgresInvestasi.id === "2" ? ( + {data.MasterProgresInvestasi.id === "2" ? ( - {investasi.title} + {data.title} @@ -224,16 +229,16 @@ export default function DetailInvestasi({ Rp.{" "} {new Intl.NumberFormat("id-ID", { maximumSignificantDigits: 10, - }).format(+investasi.hargaLembar)} + }).format(+data.hargaLembar)} Jadwal Pembagian - {investasi.MasterPembagianDeviden.name} bulan + {data.MasterPembagianDeviden.name} bulan Pembagian Deviden - {investasi.MasterPeriodeDeviden.name} + {data.MasterPeriodeDeviden.name} @@ -249,14 +254,14 @@ export default function DetailInvestasi({ ROI - {investasi.roi}% + {data.roi}% Total Lembar {new Intl.NumberFormat("id-ID", { maximumSignificantDigits: 10, - }).format(+investasi.totalLembar)}{" "} + }).format(+data.totalLembar)}{" "} lembar @@ -265,7 +270,7 @@ export default function DetailInvestasi({ {new Intl.NumberFormat("id-ID", { maximumSignificantDigits: 10, - }).format(+investasi.sisaLembar)}{" "} + }).format(+data.sisaLembar)}{" "} lembar @@ -293,7 +298,7 @@ export default function DetailInvestasi({ loading={isLoadingBox && e?.id === boxId ? true : false} variant="transparent" size={60} - onClick={() => router.push(e.route + `${investasi.id}`)} + onClick={() => router.push(e.route + `${data.id}`)} > {e.icon} @@ -303,9 +308,9 @@ export default function DetailInvestasi({ - {investasi.sisaLembar === "0" || - Number(investasi.MasterPencarianInvestor.name) - - moment(new Date()).diff(new Date(investasi.countDown), "days") <= + {data.sisaLembar === "0" || + Number(data.MasterPencarianInvestor.name) - + moment(new Date()).diff(new Date(data.countDown), "days") <= 0 ? (
) : ( - {loginUserId === investasi.authorId ? ( + {loginUserId === data.authorId ? (