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 92b2f709..a158080a 100644 Binary files a/public/file/644b58c8-a9a9-4896-9a70-a582f10738be.pdf and b/public/file/644b58c8-a9a9-4896-9a70-a582f10738be.pdf differ 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 ? (