diff --git a/.env b/.env index e327da6c..85072cdf 100644 --- a/.env +++ b/.env @@ -5,4 +5,6 @@ # See the documentation for all the connection string options: https://pris.ly/d/connection-strings DATABASE_URL="postgresql://bip:Production_123@localhost:5433/hipmi?schema=public" -PWD="QWERTYUIOPLKJHGFDSAZXCVBNMQAZWSXEDCRFVTGBYHNUJMIKOLPPOIUYTREWQLKJHGFDSAMNBVCXZlghvftyguhijknhbgvcfytguu8okjnhbgvfty7u8oilkjnhgvtygu7u8ojilnkhbgvhujnkhghvjhukjnhb" \ No newline at end of file +PWD="QWERTYUIOPLKJHGFDSAZXCVBNMQAZWSXEDCRFVTGBYHNUJMIKOLPPOIUYTREWQLKJHGFDSAMNBVCXZlghvftyguhijknhbgvcfytguu8okjnhbgvfty7u8oilkjnhgvtygu7u8ojilnkhbgvhujnkhghvjhukjnhb" +Client_KEY="SB-Mid-client-9NDTxltqdZrEB9m-" +Server_KEY="SB-Mid-server-NyltU-U7fLVQd1nv1LWBKylr" \ No newline at end of file diff --git a/package.json b/package.json index a3147b4a..46263582 100644 --- a/package.json +++ b/package.json @@ -30,6 +30,7 @@ "iron-session": "^6.3.1", "jotai": "^2.4.3", "lodash": "^4.17.21", + "midtrans-client": "^1.3.1", "moment": "^2.29.4", "next": "^13.5.4-canary.8", "postcss": "8.4.27", diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 915f63dd..d0086387 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -100,21 +100,23 @@ model MasterBidangBisnis { // -------------------- INVESTASI --------------------- // // Table investasi / saham model Investasi { - id String @id @default(cuid()) - title String - targetDana String - hargaLembar String - totalLembar String - roi String - active Boolean @default(true) - createdAt DateTime @default(now()) - updatedAt DateTime @default(now()) @updatedAt - author User? @relation(fields: [authorId], references: [id]) + id String @id @default(cuid()) + title String + targetDana String + hargaLembar String + totalLembar String + roi String + active Boolean @default(true) + + countDown DateTime? + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + author User? @relation(fields: [authorId], references: [id]) authorId String? catatan String? sisaLembar String - lembarTerbeli String? @default("0") - progress String? @default("0") + lembarTerbeli String? @default("0") + progress String? @default("0") MasterPeriodeDeviden MasterPeriodeDeviden? @relation(fields: [masterPeriodeDevidenId], references: [id]) masterPeriodeDevidenId String? @@ -218,16 +220,31 @@ model MasterBank { } model TransaksiInvestasi { - id String @id @default(cuid()) - Investasi Investasi? @relation(fields: [investasiId], references: [id]) - investasiId String? - Author User? @relation(fields: [authorId], references: [id]) - authorId String? + id String @id @default(cuid()) + Investasi Investasi @relation(fields: [investasiId], references: [id]) + investasiId String + Author User @relation(fields: [authorId], references: [id]) + authorId String + + namaBank String? + nomorRekening String? + token String? + redirect_url String? + quantity String + price String + gross_amount String + merchant_name String + status_code String? + status_message String? + transaction_id String? + order_id String? + payment_type String? + transaction_time String? + transaction_status String? + fraud_status String? + pdf_url String? + finish_redirect_url String? - namaBank String - nomorRekening String - lembarTerbeli String - totalTransfer String active Boolean @default(true) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt diff --git a/public/aset/investasi/home-hipmi.png b/public/aset/investasi/home-hipmi.png new file mode 100644 index 00000000..ad584afc Binary files /dev/null and b/public/aset/investasi/home-hipmi.png differ diff --git a/public/file/07ff2276-c08d-4e4e-8ab1-09bd3da614e4.pdf b/public/file/07ff2276-c08d-4e4e-8ab1-09bd3da614e4.pdf new file mode 100644 index 00000000..8bf49b6b Binary files /dev/null and b/public/file/07ff2276-c08d-4e4e-8ab1-09bd3da614e4.pdf differ diff --git a/public/file/2077d4a2-6a2a-4ee6-97b9-f385ebd81b9f.pdf b/public/file/2077d4a2-6a2a-4ee6-97b9-f385ebd81b9f.pdf deleted file mode 100644 index 92b2f709..00000000 Binary files a/public/file/2077d4a2-6a2a-4ee6-97b9-f385ebd81b9f.pdf and /dev/null differ diff --git a/public/investasi/4d7588e7-72e3-43ea-967b-debe550cf815.png b/public/file/207b634c-1e43-41e4-9b1e-4838a3ca7b4f.pdf similarity index 100% rename from public/investasi/4d7588e7-72e3-43ea-967b-debe550cf815.png rename to public/file/207b634c-1e43-41e4-9b1e-4838a3ca7b4f.pdf diff --git a/public/file/2382858f-5586-40d5-a63f-aa3f4cb35bb5.pdf b/public/file/2382858f-5586-40d5-a63f-aa3f4cb35bb5.pdf new file mode 100644 index 00000000..e90a28f2 Binary files /dev/null and b/public/file/2382858f-5586-40d5-a63f-aa3f4cb35bb5.pdf differ diff --git a/public/file/2e4f2d30-e190-40b7-9719-c114c2816786.pdf b/public/file/2e4f2d30-e190-40b7-9719-c114c2816786.pdf new file mode 100644 index 00000000..6b87abcb Binary files /dev/null and b/public/file/2e4f2d30-e190-40b7-9719-c114c2816786.pdf differ diff --git a/public/file/3525303f-3537-4278-a7b9-b08f8210e62e.pdf b/public/file/3525303f-3537-4278-a7b9-b08f8210e62e.pdf new file mode 100644 index 00000000..1bcf8cea Binary files /dev/null and b/public/file/3525303f-3537-4278-a7b9-b08f8210e62e.pdf differ diff --git a/public/file/468be397-9d62-4460-9bb6-faccfd8eb281.pdf b/public/file/468be397-9d62-4460-9bb6-faccfd8eb281.pdf deleted file mode 100644 index 92b2f709..00000000 Binary files a/public/file/468be397-9d62-4460-9bb6-faccfd8eb281.pdf and /dev/null differ diff --git a/public/investasi/0e342233-59cd-4fae-9857-9896aa7880e7.png b/public/file/6dba0c6a-af24-4838-9b49-a741431e5a06.pdf similarity index 100% rename from public/investasi/0e342233-59cd-4fae-9857-9896aa7880e7.png rename to public/file/6dba0c6a-af24-4838-9b49-a741431e5a06.pdf diff --git a/public/file/77f3b86b-9a8f-40d6-abcc-3da54b5e18a5.pdf b/public/file/77f3b86b-9a8f-40d6-abcc-3da54b5e18a5.pdf new file mode 100644 index 00000000..66e914cb Binary files /dev/null and b/public/file/77f3b86b-9a8f-40d6-abcc-3da54b5e18a5.pdf differ diff --git a/public/file/a30d0a2f-9100-4050-ae97-98dc0a2e65e7.pdf b/public/file/783ed0ae-bd83-4063-83f9-a7be505de602.pdf similarity index 100% rename from public/file/a30d0a2f-9100-4050-ae97-98dc0a2e65e7.pdf rename to public/file/783ed0ae-bd83-4063-83f9-a7be505de602.pdf diff --git a/public/investasi/7d2a8cf7-87c3-4cc4-909f-bd7be4c39455.jpeg b/public/file/7a4ec42c-a41c-4160-963c-e1adc15713ce.pdf similarity index 100% rename from public/investasi/7d2a8cf7-87c3-4cc4-909f-bd7be4c39455.jpeg rename to public/file/7a4ec42c-a41c-4160-963c-e1adc15713ce.pdf diff --git a/public/file/8eada122-415d-4e47-b272-ca386da87de2.pdf b/public/file/8eada122-415d-4e47-b272-ca386da87de2.pdf new file mode 100644 index 00000000..d0c9754c Binary files /dev/null and b/public/file/8eada122-415d-4e47-b272-ca386da87de2.pdf differ diff --git a/public/file/141f0ac6-35da-4fab-85ff-00b45a5309cd.pdf b/public/file/9f65f1ba-8eda-4126-9275-58a0295e8637.pdf similarity index 100% rename from public/file/141f0ac6-35da-4fab-85ff-00b45a5309cd.pdf rename to public/file/9f65f1ba-8eda-4126-9275-58a0295e8637.pdf diff --git a/public/file/a936677b-e936-4858-83bd-ad6ca561fa75.pdf b/public/file/a936677b-e936-4858-83bd-ad6ca561fa75.pdf new file mode 100644 index 00000000..8bf49b6b Binary files /dev/null and b/public/file/a936677b-e936-4858-83bd-ad6ca561fa75.pdf differ diff --git a/public/file/abd76cdd-0e65-4f16-a140-c6deba83dd03.pdf b/public/file/abd76cdd-0e65-4f16-a140-c6deba83dd03.pdf deleted file mode 100644 index 92b2f709..00000000 Binary files a/public/file/abd76cdd-0e65-4f16-a140-c6deba83dd03.pdf and /dev/null differ diff --git a/public/investasi/1cd23a7f-cc3c-462e-8ebe-6a0685ce3ce5.png b/public/file/b8744958-ed2a-4a3b-8d28-06995fa842db.pdf similarity index 100% rename from public/investasi/1cd23a7f-cc3c-462e-8ebe-6a0685ce3ce5.png rename to public/file/b8744958-ed2a-4a3b-8d28-06995fa842db.pdf diff --git a/public/file/baf07727-04e6-4d0f-992c-127a1ed4507b.pdf b/public/file/baf07727-04e6-4d0f-992c-127a1ed4507b.pdf deleted file mode 100644 index b4ae6d4a..00000000 Binary files a/public/file/baf07727-04e6-4d0f-992c-127a1ed4507b.pdf and /dev/null differ diff --git a/public/file/bc01912d-857b-4223-b7be-cad8e941fe55.pdf b/public/file/bc01912d-857b-4223-b7be-cad8e941fe55.pdf new file mode 100644 index 00000000..ab4bd256 Binary files /dev/null and b/public/file/bc01912d-857b-4223-b7be-cad8e941fe55.pdf differ diff --git a/public/file/efba92c1-8046-40bb-8d3b-26798bcb8f66.pdf b/public/file/c9d1124e-801f-4b74-a891-f8d13df20ef9.pdf similarity index 100% rename from public/file/efba92c1-8046-40bb-8d3b-26798bcb8f66.pdf rename to public/file/c9d1124e-801f-4b74-a891-f8d13df20ef9.pdf diff --git a/public/file/dcf5d2e5-99aa-4317-b6e7-114f22cdd530.pdf b/public/file/dcf5d2e5-99aa-4317-b6e7-114f22cdd530.pdf new file mode 100644 index 00000000..8bf49b6b Binary files /dev/null and b/public/file/dcf5d2e5-99aa-4317-b6e7-114f22cdd530.pdf differ diff --git a/public/file/582a646d-d759-43d6-b13f-3eb53a6ec163.pdf b/public/file/eacaceb0-07b7-4502-8895-92e5d38d831d.pdf similarity index 100% rename from public/file/582a646d-d759-43d6-b13f-3eb53a6ec163.pdf rename to public/file/eacaceb0-07b7-4502-8895-92e5d38d831d.pdf diff --git a/public/file/f1e236c5-e9c6-4fd8-9359-690fcc831172.pdf b/public/file/f1e236c5-e9c6-4fd8-9359-690fcc831172.pdf new file mode 100644 index 00000000..e0896cad Binary files /dev/null and b/public/file/f1e236c5-e9c6-4fd8-9359-690fcc831172.pdf differ diff --git a/public/file/index.ts b/public/file/index.ts new file mode 100644 index 00000000..e50a6f8e --- /dev/null +++ b/public/file/index.ts @@ -0,0 +1 @@ +// Image for file \ No newline at end of file diff --git a/public/investasi/06be991a-5cae-4f43-aff7-6633a74ca1d2.png b/public/investasi/06be991a-5cae-4f43-aff7-6633a74ca1d2.png deleted file mode 100644 index 1bebbd56..00000000 Binary files a/public/investasi/06be991a-5cae-4f43-aff7-6633a74ca1d2.png and /dev/null differ diff --git a/public/investasi/096dd9a5-9c99-40bc-a965-6e5cbbbac65c.png b/public/investasi/096dd9a5-9c99-40bc-a965-6e5cbbbac65c.png new file mode 100644 index 00000000..24d01eeb Binary files /dev/null and b/public/investasi/096dd9a5-9c99-40bc-a965-6e5cbbbac65c.png differ diff --git a/public/investasi/0d8dff94-0f13-412d-b629-2ccdaa5eb0cd.png b/public/investasi/0d8dff94-0f13-412d-b629-2ccdaa5eb0cd.png new file mode 100644 index 00000000..e0896cad Binary files /dev/null and b/public/investasi/0d8dff94-0f13-412d-b629-2ccdaa5eb0cd.png differ diff --git a/public/investasi/0f380d71-f1d7-4d36-a303-8f5e35e2f4a9.jpeg b/public/investasi/0f380d71-f1d7-4d36-a303-8f5e35e2f4a9.jpeg new file mode 100644 index 00000000..e90a28f2 Binary files /dev/null and b/public/investasi/0f380d71-f1d7-4d36-a303-8f5e35e2f4a9.jpeg differ diff --git a/public/investasi/122c806d-00f2-45eb-a7f0-b03f96a8d065.png b/public/investasi/122c806d-00f2-45eb-a7f0-b03f96a8d065.png new file mode 100644 index 00000000..d0c9754c Binary files /dev/null and b/public/investasi/122c806d-00f2-45eb-a7f0-b03f96a8d065.png differ diff --git a/public/investasi/c7cb7f17-abd1-46e2-8d0b-e789f5f6a67f.jpeg b/public/investasi/19a66ae5-0e25-4cb4-b339-a16f3f70f61f.jpeg similarity index 100% rename from public/investasi/c7cb7f17-abd1-46e2-8d0b-e789f5f6a67f.jpeg rename to public/investasi/19a66ae5-0e25-4cb4-b339-a16f3f70f61f.jpeg diff --git a/public/investasi/1a18c5f1-7cae-4a30-9a58-9a4d4080cd7e.png b/public/investasi/1a18c5f1-7cae-4a30-9a58-9a4d4080cd7e.png new file mode 100644 index 00000000..1bcf8cea Binary files /dev/null and b/public/investasi/1a18c5f1-7cae-4a30-9a58-9a4d4080cd7e.png differ diff --git a/public/investasi/1ab54dd8-b475-48e8-9b6e-5accaea2e5f1.png b/public/investasi/1ab54dd8-b475-48e8-9b6e-5accaea2e5f1.png deleted file mode 100644 index 1bebbd56..00000000 Binary files a/public/investasi/1ab54dd8-b475-48e8-9b6e-5accaea2e5f1.png and /dev/null differ diff --git a/public/investasi/1cf3bcf1-23cf-46ca-9376-706e38ad6232.jpeg b/public/investasi/1cf3bcf1-23cf-46ca-9376-706e38ad6232.jpeg new file mode 100644 index 00000000..8bf49b6b Binary files /dev/null and b/public/investasi/1cf3bcf1-23cf-46ca-9376-706e38ad6232.jpeg differ diff --git a/public/investasi/23aa0fd6-5479-4c8e-b5a3-4370739496de.jpeg b/public/investasi/23aa0fd6-5479-4c8e-b5a3-4370739496de.jpeg new file mode 100644 index 00000000..8bf49b6b Binary files /dev/null and b/public/investasi/23aa0fd6-5479-4c8e-b5a3-4370739496de.jpeg differ diff --git a/public/investasi/2e2e21c5-233a-4982-99cb-944f3732c7ce.jpeg b/public/investasi/2e2e21c5-233a-4982-99cb-944f3732c7ce.jpeg new file mode 100644 index 00000000..326da9f2 Binary files /dev/null and b/public/investasi/2e2e21c5-233a-4982-99cb-944f3732c7ce.jpeg differ diff --git a/public/investasi/3071eb24-6c32-4933-b910-86f4708dea33.png b/public/investasi/3071eb24-6c32-4933-b910-86f4708dea33.png new file mode 100644 index 00000000..d0c9754c Binary files /dev/null and b/public/investasi/3071eb24-6c32-4933-b910-86f4708dea33.png differ diff --git a/public/investasi/31c56c35-62ad-4d99-9759-79b8041526b0.png b/public/investasi/31c56c35-62ad-4d99-9759-79b8041526b0.png new file mode 100644 index 00000000..24d01eeb Binary files /dev/null and b/public/investasi/31c56c35-62ad-4d99-9759-79b8041526b0.png differ diff --git a/public/investasi/2d54c02e-35e6-4550-8281-cdfc4a6b5669.png b/public/investasi/45aae76b-f076-4fe0-92c1-10f7d3a4f162.png similarity index 100% rename from public/investasi/2d54c02e-35e6-4550-8281-cdfc4a6b5669.png rename to public/investasi/45aae76b-f076-4fe0-92c1-10f7d3a4f162.png diff --git a/public/investasi/493f29c7-cb05-4da9-857a-af723081e50c.png b/public/investasi/493f29c7-cb05-4da9-857a-af723081e50c.png deleted file mode 100644 index 1bebbd56..00000000 Binary files a/public/investasi/493f29c7-cb05-4da9-857a-af723081e50c.png and /dev/null differ diff --git a/public/investasi/4c94a52d-e7ba-4206-ae3f-e0224ed250b1.jpeg b/public/investasi/4c94a52d-e7ba-4206-ae3f-e0224ed250b1.jpeg new file mode 100644 index 00000000..803e3c56 Binary files /dev/null and b/public/investasi/4c94a52d-e7ba-4206-ae3f-e0224ed250b1.jpeg differ diff --git a/public/investasi/504a0838-2150-42cd-b676-35911b6cb8c4.png b/public/investasi/504a0838-2150-42cd-b676-35911b6cb8c4.png deleted file mode 100644 index 1bebbd56..00000000 Binary files a/public/investasi/504a0838-2150-42cd-b676-35911b6cb8c4.png and /dev/null differ diff --git a/public/investasi/5121f1ac-0f77-4e6b-9efd-9a720a428a90.png b/public/investasi/5121f1ac-0f77-4e6b-9efd-9a720a428a90.png new file mode 100644 index 00000000..e0896cad Binary files /dev/null and b/public/investasi/5121f1ac-0f77-4e6b-9efd-9a720a428a90.png differ diff --git a/public/investasi/a8c86b04-3ef6-46f4-9429-b045f0eb2f2e.png b/public/investasi/5acac2f1-faaf-43e4-a1c4-473decb03eda.png similarity index 100% rename from public/investasi/a8c86b04-3ef6-46f4-9429-b045f0eb2f2e.png rename to public/investasi/5acac2f1-faaf-43e4-a1c4-473decb03eda.png diff --git a/public/investasi/765a62b7-6ee1-4f12-8e5d-3086915069db.png b/public/investasi/5b5c6e05-7bd3-477e-abed-6cb04caa514f.png similarity index 100% rename from public/investasi/765a62b7-6ee1-4f12-8e5d-3086915069db.png rename to public/investasi/5b5c6e05-7bd3-477e-abed-6cb04caa514f.png diff --git a/public/investasi/cd94b40e-749c-44c0-9206-c6487c748ae3.png b/public/investasi/5c4c827e-8035-472c-81d3-98d1b2539f1f.png similarity index 100% rename from public/investasi/cd94b40e-749c-44c0-9206-c6487c748ae3.png rename to public/investasi/5c4c827e-8035-472c-81d3-98d1b2539f1f.png diff --git a/public/investasi/6aed26d9-05a7-4221-8bd8-962423ddb0cf.jpeg b/public/investasi/6aed26d9-05a7-4221-8bd8-962423ddb0cf.jpeg deleted file mode 100644 index 5d676195..00000000 Binary files a/public/investasi/6aed26d9-05a7-4221-8bd8-962423ddb0cf.jpeg and /dev/null differ diff --git a/public/investasi/7536ab7e-6e83-4a67-890e-b8310fd34489.png b/public/investasi/7536ab7e-6e83-4a67-890e-b8310fd34489.png new file mode 100644 index 00000000..24d01eeb Binary files /dev/null and b/public/investasi/7536ab7e-6e83-4a67-890e-b8310fd34489.png differ diff --git a/public/investasi/7c89447d-c0bb-43a5-be74-6a5af2f64c46.jpeg b/public/investasi/7c89447d-c0bb-43a5-be74-6a5af2f64c46.jpeg new file mode 100644 index 00000000..b62f7486 Binary files /dev/null and b/public/investasi/7c89447d-c0bb-43a5-be74-6a5af2f64c46.jpeg differ diff --git a/public/investasi/8a7ba77a-c9eb-4414-9b5d-9818fa1fdfe0.jpeg b/public/investasi/8a7ba77a-c9eb-4414-9b5d-9818fa1fdfe0.jpeg new file mode 100644 index 00000000..8bf49b6b Binary files /dev/null and b/public/investasi/8a7ba77a-c9eb-4414-9b5d-9818fa1fdfe0.jpeg differ diff --git a/public/investasi/8ea21c1a-dfe4-477a-b2ad-645d1ca629d5.jpeg b/public/investasi/8ea21c1a-dfe4-477a-b2ad-645d1ca629d5.jpeg deleted file mode 100644 index 5d676195..00000000 Binary files a/public/investasi/8ea21c1a-dfe4-477a-b2ad-645d1ca629d5.jpeg and /dev/null differ diff --git a/public/investasi/968362f6-c34e-4873-afd7-57e2c954bf0a.jpeg b/public/investasi/968362f6-c34e-4873-afd7-57e2c954bf0a.jpeg new file mode 100644 index 00000000..8bf49b6b Binary files /dev/null and b/public/investasi/968362f6-c34e-4873-afd7-57e2c954bf0a.jpeg differ diff --git a/public/investasi/9c22717f-2882-438b-8d1b-70ddb88ed305.jpeg b/public/investasi/9c22717f-2882-438b-8d1b-70ddb88ed305.jpeg deleted file mode 100644 index 5d676195..00000000 Binary files a/public/investasi/9c22717f-2882-438b-8d1b-70ddb88ed305.jpeg and /dev/null differ diff --git a/public/investasi/9faf04ce-7621-4b2d-8c4f-fb447aa71ecc.png b/public/investasi/9faf04ce-7621-4b2d-8c4f-fb447aa71ecc.png new file mode 100644 index 00000000..98983643 Binary files /dev/null and b/public/investasi/9faf04ce-7621-4b2d-8c4f-fb447aa71ecc.png differ diff --git a/public/investasi/b6b5f6f8-0c08-466c-adb2-4e06973dc744.png b/public/investasi/b6b5f6f8-0c08-466c-adb2-4e06973dc744.png new file mode 100644 index 00000000..d0c9754c Binary files /dev/null and b/public/investasi/b6b5f6f8-0c08-466c-adb2-4e06973dc744.png differ diff --git a/public/investasi/c85e75fe-33cd-4063-8941-bf9607f3b1f6.jpeg b/public/investasi/c85e75fe-33cd-4063-8941-bf9607f3b1f6.jpeg deleted file mode 100644 index b4ae6d4a..00000000 Binary files a/public/investasi/c85e75fe-33cd-4063-8941-bf9607f3b1f6.jpeg and /dev/null differ diff --git a/public/investasi/cbe1b9b4-db4d-4774-8347-73898ffbeb6d.jpeg b/public/investasi/cbe1b9b4-db4d-4774-8347-73898ffbeb6d.jpeg new file mode 100644 index 00000000..8bf49b6b Binary files /dev/null and b/public/investasi/cbe1b9b4-db4d-4774-8347-73898ffbeb6d.jpeg differ diff --git a/public/investasi/d5520b3e-1cd0-47b0-bdcd-1bcb61a18ad4.png b/public/investasi/d5520b3e-1cd0-47b0-bdcd-1bcb61a18ad4.png new file mode 100644 index 00000000..24d01eeb Binary files /dev/null and b/public/investasi/d5520b3e-1cd0-47b0-bdcd-1bcb61a18ad4.png differ diff --git a/public/investasi/d7676dc6-7213-47aa-9a69-31078d8b038b.jpeg b/public/investasi/d7676dc6-7213-47aa-9a69-31078d8b038b.jpeg new file mode 100644 index 00000000..66e914cb Binary files /dev/null and b/public/investasi/d7676dc6-7213-47aa-9a69-31078d8b038b.jpeg differ diff --git a/public/investasi/db3fafcd-cefe-4d24-8cc8-bf34d35f9d2d.png b/public/investasi/db3fafcd-cefe-4d24-8cc8-bf34d35f9d2d.png new file mode 100644 index 00000000..98983643 Binary files /dev/null and b/public/investasi/db3fafcd-cefe-4d24-8cc8-bf34d35f9d2d.png differ diff --git a/public/investasi/dd37b54c-8d1a-4c17-aa2c-ebf18f6ff3cf.jpeg b/public/investasi/dd37b54c-8d1a-4c17-aa2c-ebf18f6ff3cf.jpeg new file mode 100644 index 00000000..8bf49b6b Binary files /dev/null and b/public/investasi/dd37b54c-8d1a-4c17-aa2c-ebf18f6ff3cf.jpeg differ diff --git a/public/investasi/e071a6c4-c9c2-4df1-9f36-b5c0176646a5.png b/public/investasi/e071a6c4-c9c2-4df1-9f36-b5c0176646a5.png new file mode 100644 index 00000000..d0c9754c Binary files /dev/null and b/public/investasi/e071a6c4-c9c2-4df1-9f36-b5c0176646a5.png differ diff --git a/public/investasi/e290bf5c-8062-4e4f-a5ee-54b731f2d0b8.jpeg b/public/investasi/e290bf5c-8062-4e4f-a5ee-54b731f2d0b8.jpeg deleted file mode 100644 index 5d676195..00000000 Binary files a/public/investasi/e290bf5c-8062-4e4f-a5ee-54b731f2d0b8.jpeg and /dev/null differ diff --git a/public/investasi/e5ed3b6d-7215-4018-84c7-3f90c0c92552.jpeg b/public/investasi/e5ed3b6d-7215-4018-84c7-3f90c0c92552.jpeg new file mode 100644 index 00000000..803e3c56 Binary files /dev/null and b/public/investasi/e5ed3b6d-7215-4018-84c7-3f90c0c92552.jpeg differ diff --git a/public/investasi/ab83c188-53ac-464a-affe-a07abb120cb6.jpeg b/public/investasi/eb0d32ba-5f8d-4ae4-ac01-5b15a288d28d.jpeg similarity index 100% rename from public/investasi/ab83c188-53ac-464a-affe-a07abb120cb6.jpeg rename to public/investasi/eb0d32ba-5f8d-4ae4-ac01-5b15a288d28d.jpeg diff --git a/public/investasi/ed11274a-a1ea-47da-bd06-96cffbb5945c.jpeg b/public/investasi/ed11274a-a1ea-47da-bd06-96cffbb5945c.jpeg new file mode 100644 index 00000000..326da9f2 Binary files /dev/null and b/public/investasi/ed11274a-a1ea-47da-bd06-96cffbb5945c.jpeg differ diff --git a/public/investasi/f365bf66-febb-4d48-aec8-acd7f3f59cbe.png b/public/investasi/f365bf66-febb-4d48-aec8-acd7f3f59cbe.png new file mode 100644 index 00000000..d0c9754c Binary files /dev/null and b/public/investasi/f365bf66-febb-4d48-aec8-acd7f3f59cbe.png differ diff --git a/public/investasi/f769c96d-5787-42ac-965d-96c65be604cd.jpeg b/public/investasi/f769c96d-5787-42ac-965d-96c65be604cd.jpeg new file mode 100644 index 00000000..8bf49b6b Binary files /dev/null and b/public/investasi/f769c96d-5787-42ac-965d-96c65be604cd.jpeg differ diff --git a/public/investasi/index.ts b/public/investasi/index.ts new file mode 100644 index 00000000..21598c3d --- /dev/null +++ b/public/investasi/index.ts @@ -0,0 +1 @@ +// Image for investasi \ No newline at end of file diff --git a/src/app/api/investasi/prospektus/[id]/route.ts b/src/app/api/investasi/prospektus/[id]/route.ts index 156cde3e..5b095111 100644 --- a/src/app/api/investasi/prospektus/[id]/route.ts +++ b/src/app/api/investasi/prospektus/[id]/route.ts @@ -6,6 +6,7 @@ export async function GET( req: NextRequest, { params }: { params: { id: string } } ) { + console.log(params.id) const data = await prisma.prospektusInvestasi.findUnique({ where: { id: params.id }, select: { diff --git a/src/app/dev/admin/investasi/main/page.tsx b/src/app/dev/admin/investasi/main/page.tsx index caffdf70..fdeee026 100644 --- a/src/app/dev/admin/investasi/main/page.tsx +++ b/src/app/dev/admin/investasi/main/page.tsx @@ -1,7 +1,7 @@ import { Admin_Investasi } from "@/app_modules/admin/investasi"; import Admin_CountStatusInvestasi from "@/app_modules/admin/investasi/fun/count_status"; import Admin_funGetAllInvestasi from "@/app_modules/admin/investasi/fun/get_all_investasi"; -import Admin_getTargetTerbesarInvestasi from "@/app_modules/admin/investasi/fun/get_target_terbesar"; +import Admin_getPublishProgresInvestasi from "@/app_modules/admin/investasi/fun/get_publish_progres"; import Admin_getTotalInvestasiByUser from "@/app_modules/admin/investasi/fun/get_total_investasi_by_user"; export default async function Page() { @@ -11,8 +11,8 @@ export default async function Page() { const countPublish = await Admin_CountStatusInvestasi(3); const countReject = await Admin_CountStatusInvestasi(4); const totalInvestasiByUser = await Admin_getTotalInvestasiByUser() - const targetTerbesar = await Admin_getTargetTerbesarInvestasi() - // console.log(totalInvestasi) + const publishProgres = await Admin_getPublishProgresInvestasi() + // console.log(targetTerbesar) return ( <> @@ -23,6 +23,7 @@ export default async function Page() { countPublish={countPublish} countReject={countReject} totalInvestasiByUser={totalInvestasiByUser} + publishProgres={publishProgres} /> {/*
{JSON.stringify(totalInvestasiByUser, null,2)}
*/} diff --git a/src/app/dev/admin/investasi/table_status/publish/page.tsx b/src/app/dev/admin/investasi/table_status/publish/page.tsx new file mode 100644 index 00000000..1d9f989c --- /dev/null +++ b/src/app/dev/admin/investasi/table_status/publish/page.tsx @@ -0,0 +1,10 @@ +import { Admin_TablePublishInvestasi } from "@/app_modules/admin/investasi"; +import Admin_funGetAllInvestasi from "@/app_modules/admin/investasi/fun/get_all_investasi"; + +export default async function Page() { + const listInvestasi = await Admin_funGetAllInvestasi(); + + return<> + + +} \ No newline at end of file diff --git a/src/app/dev/admin/investasi/table_status/reject/page.tsx b/src/app/dev/admin/investasi/table_status/reject/page.tsx new file mode 100644 index 00000000..55092f60 --- /dev/null +++ b/src/app/dev/admin/investasi/table_status/reject/page.tsx @@ -0,0 +1,10 @@ +import { Admin_TableRejectInvestasi } from "@/app_modules/admin/investasi"; +import Admin_funGetAllInvestasi from "@/app_modules/admin/investasi/fun/get_all_investasi"; + +export default async function Page() { + const dataInvestsi = await Admin_funGetAllInvestasi() + return <> + + + +} \ No newline at end of file diff --git a/src/app/dev/admin/investasi/table_status/review/page.tsx b/src/app/dev/admin/investasi/table_status/review/page.tsx new file mode 100644 index 00000000..350245f7 --- /dev/null +++ b/src/app/dev/admin/investasi/table_status/review/page.tsx @@ -0,0 +1,9 @@ +import { Admin_TableReviewInvestasi } from "@/app_modules/admin/investasi"; +import Admin_funGetAllInvestasi from "@/app_modules/admin/investasi/fun/get_all_investasi"; + +export default async function Page() { + const dataInvestsi = await Admin_funGetAllInvestasi() + return <> + + +} \ No newline at end of file diff --git a/src/app/dev/investasi/detail_prospektus/[id]/page.tsx b/src/app/dev/investasi/detail_prospektus/[id]/page.tsx index fbf7ce92..492bdad5 100644 --- a/src/app/dev/investasi/detail_prospektus/[id]/page.tsx +++ b/src/app/dev/investasi/detail_prospektus/[id]/page.tsx @@ -1,11 +1,12 @@ import { DetailPropektus } from "@/app_modules/investasi"; import getOneInvestasiById from "@/app_modules/investasi/fun/get_one_investasi_by_id"; -export default async function Page({params}:{params: {id: string}}) { - const dataInvestasi = await getOneInvestasiById(params.id) - +export default async function Page({ params }: { params: { id: string } }) { + const dataInvestasi = await getOneInvestasiById(params.id); - return<> - + return ( + <> + -} \ No newline at end of file + ); +} diff --git a/src/app/dev/investasi/detail_saham_terbeli/[id]/page.tsx b/src/app/dev/investasi/detail_saham_terbeli/[id]/page.tsx index a5a27e81..a2dd72bf 100644 --- a/src/app/dev/investasi/detail_saham_terbeli/[id]/page.tsx +++ b/src/app/dev/investasi/detail_saham_terbeli/[id]/page.tsx @@ -1,5 +1,13 @@ import { DetailSahamTerbeli } from "@/app_modules/investasi"; +import funTotalInvestorByIdInvestasi from "@/app_modules/investasi/fun/fun_total_investor_by_id"; +import getOneTransaksiBerhasilByIdInvestasi from "@/app_modules/investasi/fun/get_one_transaksi_berhasil_by_id"; export default async function Page({ params }: { params: { id: string } }) { - return ; + const dataTransaksi = await getOneTransaksiBerhasilByIdInvestasi(params.id); + const investor = await funTotalInvestorByIdInvestasi( + dataTransaksi?.Investasi.id as any + ); + // console.log(investor); + + return ; } diff --git a/src/app/dev/investasi/main/saham_saya/page.tsx b/src/app/dev/investasi/main/saham_saya/page.tsx index 4d6b80ec..9601e2b8 100644 --- a/src/app/dev/investasi/main/saham_saya/page.tsx +++ b/src/app/dev/investasi/main/saham_saya/page.tsx @@ -1,9 +1,23 @@ import { InvestasiSahamTerbeli } from "@/app_modules/investasi"; +import getListTransaksiBerhasilInvestasi from "@/app_modules/investasi/fun/get_list_transaksi_berhasil_by_id"; +import yaml from "yaml"; +import fs from "fs"; +import { cookies } from "next/headers"; +import { unsealData } from "iron-session"; +const config = yaml.parse(fs.readFileSync("config.yaml").toString()); export default async function Page() { + const c = cookies().get("ssn"); + const user = JSON.parse( + await unsealData(c?.value as string, { + password: config.server.password, + }) + ); + const listTransaksi = await getListTransaksiBerhasilInvestasi(user.id) + // console.log(listTransaksi) return ( <> - + ); } diff --git a/src/app/dev/investasi/main/transaksi/page.tsx b/src/app/dev/investasi/main/transaksi/page.tsx index 9827d215..525a1a51 100644 --- a/src/app/dev/investasi/main/transaksi/page.tsx +++ b/src/app/dev/investasi/main/transaksi/page.tsx @@ -20,6 +20,7 @@ export default async function Page() { const userId = tkn.id; const statusTransaksi = await getMaster_StatusTransaksiInvestasi(); const listTransaksi = await getListAllTransaksiById_Investasi(userId); + // console.log(listTransaksi) return ( <> diff --git a/src/app/dev/investasi/proses_transaksi/[id]/layout.tsx b/src/app/dev/investasi/proses_transaksi/[id]/layout.tsx new file mode 100644 index 00000000..733d73b5 --- /dev/null +++ b/src/app/dev/investasi/proses_transaksi/[id]/layout.tsx @@ -0,0 +1,12 @@ +import { LayoutProsesTransaksiInvestasi } 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/proses_transaksi/[id]/page.tsx b/src/app/dev/investasi/proses_transaksi/[id]/page.tsx new file mode 100644 index 00000000..83bc2e3f --- /dev/null +++ b/src/app/dev/investasi/proses_transaksi/[id]/page.tsx @@ -0,0 +1,29 @@ +import { ProsesTransaksiInvestasi } from "@/app_modules/investasi"; +import getOneInvestasiById from "@/app_modules/investasi/fun/get_one_investasi_by_id"; +import { unsealData } from "iron-session"; +import { cookies } from "next/headers"; +import { funGetUserProfile } from "@/app_modules/fun/get_user_profile"; +import yaml from "yaml"; +import fs from "fs"; +const config = yaml.parse(fs.readFileSync("config.yaml").toString()); + +export default async function Page({ params }: { params: { id: string } }) { + const c = cookies().get("ssn"); + const user = JSON.parse( + await unsealData(c?.value as string, { + password: config.server.password, + }) + ); + + const userLogin = await funGetUserProfile(user.id); + const dataInvestasi = await getOneInvestasiById(params.id); + // console.log(userLogin); + return ( + <> + + + ); +} diff --git a/src/app/lib/router_hipmi/router_admin.ts b/src/app/lib/router_hipmi/router_admin.ts index d249b221..a34b4710 100644 --- a/src/app/lib/router_hipmi/router_admin.ts +++ b/src/app/lib/router_hipmi/router_admin.ts @@ -8,7 +8,10 @@ export const RouterAdminInvestasi = { halaman_aksi: "/dev/admin/investasi/halaman_aksi/", konfirmasi: "/dev/admin/investasi/konfirmasi/", bukti_transfer: "/dev/admin/investasi/bukti_transfer", - status_transfer: "/dev/admin/investasi/status_transfer" + status_transfer: "/dev/admin/investasi/status_transfer", + table_status_publish: "/dev/admin/investasi/table_status/publish", + table_status_review: "/dev/admin/investasi/table_status/review", + table_status_reject: "/dev/admin/investasi/table_status/reject", }; export const RouterAdminAward = { diff --git a/src/app/lib/router_hipmi/router_investasi.ts b/src/app/lib/router_hipmi/router_investasi.ts index ab36ac01..b7f9c63c 100644 --- a/src/app/lib/router_hipmi/router_investasi.ts +++ b/src/app/lib/router_hipmi/router_investasi.ts @@ -18,6 +18,7 @@ export const RouterInvestasi = { // proses beli saham proses_investasi: "/dev/investasi/proses_investasi/", + proses_transaksi: "/dev/investasi/proses_transaksi/", status_transaksi: "/dev/investasi/status_transaksi/berhasil", status_transaksi_gagal: "/dev/investasi/status_transaksi/gagal/", metode_transfer: "/dev/investasi/metode_transfer/", @@ -30,6 +31,7 @@ export const RouterInvestasi = { edit_berita: "/dev/investasi/edit_berita/", // detail // + detail: "/dev/investasi/detail/", detail_portofolio: "", detail_saham_terbeli: "/dev/investasi/detail_saham_terbeli/", detail_prospektus: "/dev/investasi/detail_prospektus/", diff --git a/src/app_modules/admin/award/main.tsx b/src/app_modules/admin/award/main.tsx index 031390ae..9dbebbf7 100644 --- a/src/app_modules/admin/award/main.tsx +++ b/src/app_modules/admin/award/main.tsx @@ -1,9 +1,15 @@ "use client" -import { Title } from "@mantine/core" +import { Divider, Stack, Title } from "@mantine/core" export default function Admin_Award(){ return<> - halaman award + + Award + + + Cooming Soon !! + + } \ No newline at end of file diff --git a/src/app_modules/admin/investasi/fun/get_all_investasi.ts b/src/app_modules/admin/investasi/fun/get_all_investasi.ts index 9f0945e1..69504d5c 100644 --- a/src/app_modules/admin/investasi/fun/get_all_investasi.ts +++ b/src/app_modules/admin/investasi/fun/get_all_investasi.ts @@ -1,36 +1,39 @@ -"use server" +"use server"; -import prisma from "@/app/lib/prisma" +import prisma from "@/app/lib/prisma"; export default async function Admin_funGetAllInvestasi() { - const res = await prisma.investasi.findMany({ - where: { - MasterStatusInvestasi: { - name: { - not: "Draft" - } - } + const res = await prisma.investasi.findMany({ + where: { + MasterStatusInvestasi: { + name: { + not: "Draft", }, - select: { - id: true, - title: true, - authorId: true, - hargaLembar: true, - targetDana: true, - totalLembar: true, - roi: true, - active: true, - imagesId: true, - catatan: true, - MasterStatusInvestasi: true, - BeritaInvestasi: true, - DokumenInvestasi: true, - ProspektusInvestasi: true, - MasterPembagianDeviden: true, - MasterPencarianInvestor: true, - MasterPeriodeDeviden: true, - }, - }) - // console.log(res) - return res -} \ No newline at end of file + }, + }, + select: { + id: true, + title: true, + authorId: true, + hargaLembar: true, + targetDana: true, + totalLembar: true, + roi: true, + active: true, + imagesId: true, + catatan: true, + MasterStatusInvestasi: true, + BeritaInvestasi: true, + DokumenInvestasi: true, + ProspektusInvestasi: true, + MasterPembagianDeviden: true, + MasterPencarianInvestor: true, + MasterPeriodeDeviden: true, + author: true, + progress: true, + sisaLembar: true + }, + }); + // console.log(res) + return res; +} diff --git a/src/app_modules/admin/investasi/fun/get_target_terbesar.ts b/src/app_modules/admin/investasi/fun/get_publish_progres.ts similarity index 50% rename from src/app_modules/admin/investasi/fun/get_target_terbesar.ts rename to src/app_modules/admin/investasi/fun/get_publish_progres.ts index 1409ce07..d920aa62 100644 --- a/src/app_modules/admin/investasi/fun/get_target_terbesar.ts +++ b/src/app_modules/admin/investasi/fun/get_publish_progres.ts @@ -3,20 +3,31 @@ import prisma from "@/app/lib/prisma"; import _ from "lodash"; -export default async function Admin_getTargetTerbesarInvestasi() { +export default async function Admin_getPublishProgresInvestasi() { const data = await prisma.investasi.findMany({ orderBy: { - targetDana: "desc", + updatedAt: "desc" }, + where: { + MasterStatusInvestasi: { + name: "Publish", + }, + }, + select: { + id: true, + author: { select: { username: true, }, }, + updatedAt: true, targetDana: true, + progress: true, }, }); -// console.log(data) + // console.log(data) + return data; } diff --git a/src/app_modules/admin/investasi/index.tsx b/src/app_modules/admin/investasi/index.tsx index 79fc0b57..1bd2d83e 100644 --- a/src/app_modules/admin/investasi/index.tsx +++ b/src/app_modules/admin/investasi/index.tsx @@ -7,6 +7,9 @@ import Admin_BuktiTransferInvestasi from "./bukti_transfer/view"; import Admin_LayoutBuktiTransferInvestasi from "./bukti_transfer/layout"; import Admin_StatusTransferInvesatasi from "./status_transfer/view"; import Admin_LayoutStatusTransferInvesatasi from "./status_transfer/layout"; +import Admin_TableReviewInvestasi from "./main/table_review"; +import Admin_TablePublishInvestasi from "./main/table_publish"; +import Admin_TableRejectInvestasi from "./main/table_reject"; export { Admin_Investasi, @@ -18,4 +21,7 @@ export { Admin_LayoutBuktiTransferInvestasi, Admin_StatusTransferInvesatasi, Admin_LayoutStatusTransferInvesatasi, + Admin_TablePublishInvestasi, + Admin_TableReviewInvestasi, + Admin_TableRejectInvestasi, }; diff --git a/src/app_modules/admin/investasi/konfirmasi/view.tsx b/src/app_modules/admin/investasi/konfirmasi/view.tsx index f9ab4c1d..b685ae97 100644 --- a/src/app_modules/admin/investasi/konfirmasi/view.tsx +++ b/src/app_modules/admin/investasi/konfirmasi/view.tsx @@ -51,8 +51,13 @@ import _ from "lodash"; import Link from "next/link"; import { useRouter } from "next/navigation"; import { useState } from "react"; -import toast from "react-simple-toasts"; +import toast, { toastConfig } from "react-simple-toasts"; import Admin_funRejectInvestasi from "../fun/fun_reject_investasi"; +import { RouterAdminInvestasi } from "@/app/lib/router_hipmi/router_admin"; +import "react-simple-toasts/dist/theme/dark.css"; +import { BeritaInvestasi } from "@/app_modules/investasi"; + +toastConfig({ theme: "dark" }); export default function Admin_KonfirmasiInvestasi({ dataInvestasi, @@ -101,13 +106,14 @@ export default function Admin_KonfirmasiInvestasi({ async function onReject() { const body = { id: investasi.id, - catatan: catatan, + catatan: investasi.catatan, status: "4", }; if (_.isEmpty(body.catatan)) return toast("Lengkapi alasan"); await Admin_funRejectInvestasi(body).then((res) => { if (res.status === 200) { toast(res.message); + router.back(); toggle(); } else { toast(res.message); @@ -116,9 +122,13 @@ export default function Admin_KonfirmasiInvestasi({ } async function onPublish() { - const res = await funGantiStatusInvestasi(investasi.id, "3"); - setTimeout(() => setPublish(false), 1000); - toast("Proyek Investasi Di Publish"); + await funGantiStatusInvestasi(investasi.id, "3").then((res) => { + if (res.status === 200) { + setTimeout(() => setPublish(false), 1000); + router.push(RouterAdminInvestasi.table_status_review); + toast("Proyek Investasi Di Publish"); + } + }); } return ( @@ -146,6 +156,18 @@ export default function Admin_KonfirmasiInvestasi({ {!publish || investasi.MasterStatusInvestasi.id === "4" ? ( "" ) : ( + // - // )} {investasi.MasterStatusInvestasi.id === "3" ? ( @@ -191,7 +201,7 @@ export default function Admin_KonfirmasiInvestasi({ - + {/* Title */}
@@ -209,17 +219,27 @@ export default function Admin_KonfirmasiInvestasi({ </Grid.Col> {/* Rincian Data */} - <Grid.Col span={4}> - <Grid p={"md"} mb={"md"}> + <Grid.Col span={6}> + <Grid mt={"md"}> <Grid.Col span={6}> <Stack> <Box> <Text>Dana Dibutuhkan</Text> - <Text>Rp. {investasi.targetDana}</Text> + <Text> + Rp.{" "} + {new Intl.NumberFormat("id-ID", { + maximumFractionDigits: 10, + }).format(+investasi.targetDana)} + </Text> </Box> <Box> <Text>Harga Per Lembar</Text> - <Text>Rp.{investasi.hargaLembar} </Text> + <Text> + Rp.{" "} + {new Intl.NumberFormat("id-ID", { + maximumFractionDigits: 10, + }).format(+investasi.hargaLembar)}{" "} + </Text> </Box> <Box> <Text>Jadwal Pembagian</Text> @@ -239,7 +259,13 @@ export default function Admin_KonfirmasiInvestasi({ </Box> <Box> <Text>Total Lembar</Text> - <Text> {investasi.totalLembar} lembar</Text> + <Text> + {" "} + {new Intl.NumberFormat("id-ID", { + maximumFractionDigits: 10, + }).format(+investasi.totalLembar)}{" "} + lembar + </Text> </Box> <Box> <Text>Pembagian Deviden</Text> @@ -249,11 +275,14 @@ export default function Admin_KonfirmasiInvestasi({ </Grid.Col> </Grid> </Grid.Col> + </Grid> - {/* Note dan dokumen */} - <Grid.Col span={4}> - <Stack> - {/* Note */} + <Grid> + <Grid.Col span={6}> + {/* Note */} + {!publish || investasi.MasterStatusInvestasi.id === "4" ? ( + "" + ) : ( <Stack spacing={0}> <Text fw={"bold"}>Note :</Text> <Text fw={"lighter"} fs={"italic"}> @@ -263,6 +292,18 @@ export default function Admin_KonfirmasiInvestasi({ kekurangnya. </Text> </Stack> + )} + {publish && + investasi.MasterStatusInvestasi.id === "3" && + _.isEmpty(investasi.BeritaInvestasi) ? ( + <BeritaInvestasi dataInvestasi={investasi} /> + ) : ( + "" + )} + </Grid.Col> + {/* Note dan dokumen */} + <Grid.Col span={6}> + <Stack> {/* File file */} <Stack> {/* Prospektus */} @@ -336,7 +377,13 @@ export default function Admin_KonfirmasiInvestasi({ autosize minRows={2} maxRows={4} - onChange={(val) => setCatatan(val.target.value)} + value={investasi.catatan === null ? [] : investasi.catatan} + onChange={(val) => + setInvestasi({ + ...investasi, + catatan: val.target.value, + }) + } /> <Group position="right"> <Button radius={50} compact onClick={() => onReject()}> diff --git a/src/app_modules/admin/investasi/main/table_publikasi_progres.tsx b/src/app_modules/admin/investasi/main/table_publikasi_progres.tsx new file mode 100644 index 00000000..195567a7 --- /dev/null +++ b/src/app_modules/admin/investasi/main/table_publikasi_progres.tsx @@ -0,0 +1,76 @@ +"use client"; + +import { + Paper, + Stack, + Center, + Title, + Table, + Group, + Avatar, +} from "@mantine/core"; +import _ from "lodash"; +import moment from "moment"; + +export default function TablePublikasiProgresInvestasi({ + publishProgres, +}: { + publishProgres: any[]; +}) { + return ( + <> + <Paper + radius={"md"} + bg={"gray.4"} + p={"sm"} + h={400} + // sx={{ borderStyle: "solid", borderColor: "teal" }} + > + <Stack spacing={"xl"}> + <Center> + <Title order={4}>Publikasi & Progres Investasi +
+ + + + + + + + + + + {_.isEmpty(publishProgres) + ? [] + : publishProgres.map((e) => ( + + + + + + + ))} + +
+
Username
+
+
Publis
+
+
Progres
+
+ + {" "} + {e.author.username} + + +
+ {moment(e.updatedAt).format("DD MMM YYYY")}{" "} +
+
+
{e.progress} %
+
+
+ + + ); +} diff --git a/src/app_modules/admin/investasi/main/table_publish.tsx b/src/app_modules/admin/investasi/main/table_publish.tsx index f4fbf1ab..1437c2b6 100644 --- a/src/app_modules/admin/investasi/main/table_publish.tsx +++ b/src/app_modules/admin/investasi/main/table_publish.tsx @@ -1,3 +1,4 @@ +"use client"; import { RouterAdminInvestasi } from "@/app/lib/router_hipmi/router_admin"; import { MODEL_Investasi } from "@/app_modules/investasi/model/model_investasi"; import { @@ -7,13 +8,18 @@ import { ScrollArea, Table, Tooltip, + Stack, + Avatar, + Group, + Text, + Center, } from "@mantine/core"; -import { IconEyeCheck } from "@tabler/icons-react"; +import { IconChevronLeft, IconEyeCheck } from "@tabler/icons-react"; import { IconEdit, IconEye } from "@tabler/icons-react"; import { useRouter } from "next/navigation"; import { useState } from "react"; -export default function TablePublish({ +export default function Admin_TablePublishInvestasi({ dataInvestsi, }: { dataInvestsi: MODEL_Investasi[]; @@ -21,30 +27,41 @@ export default function TablePublish({ const [investasi, setInvestasi] = useState(dataInvestsi); const router = useRouter(); + // console.log(investasi); + const tableBody = investasi.map((e) => e.MasterStatusInvestasi.id === "3" ? ( + + + + {e.author.username} + + {e.title} - {e.MasterStatusInvestasi.id === "3" ? ( - - {e.MasterStatusInvestasi.name} - - ) : ( - "-" - )} +
{e.progress} %
- - - router.push(RouterAdminInvestasi.konfirmasi + `${e.id}`) - } - > - - - +
{new Intl.NumberFormat("id-ID", {maximumFractionDigits: 10}).format(+e.sisaLembar)}
+ + +
{new Intl.NumberFormat("id-ID", {maximumFractionDigits: 10}).format(+e.totalLembar)}
+ + + +
+ + + router.push(RouterAdminInvestasi.konfirmasi + `${e.id}`) + } + > + + + +
) : ( @@ -54,26 +71,48 @@ export default function TablePublish({ return ( <> - - - {/* + <Stack> + <ActionIcon variant="outline" onClick={() => router.push(RouterAdminInvestasi.main_investasi)}> + + <IconChevronLeft /> + </ActionIcon> + <Box> + <ScrollArea w={"100%"}> + {/* <Title order={5} mb={5}> List Publish */} - - Publish - - - - - - - - - - {tableBody} -
Nama Proyek InvestasiStatusAksi
-
-
+ + Publish + + + + + + + + + + + + + {tableBody} +
UsernameNama Proyek Investasi +
Progres
+
+
Sisa Saham
+
+
Total Saham
+
+
Aksi
+
+ + + ); } diff --git a/src/app_modules/admin/investasi/main/table_reject.tsx b/src/app_modules/admin/investasi/main/table_reject.tsx index eb4f1979..08781012 100644 --- a/src/app_modules/admin/investasi/main/table_reject.tsx +++ b/src/app_modules/admin/investasi/main/table_reject.tsx @@ -1,3 +1,4 @@ +"use client"; import { RouterAdminInvestasi } from "@/app/lib/router_hipmi/router_admin"; import { MODEL_Investasi } from "@/app_modules/investasi/model/model_investasi"; import { @@ -7,12 +8,18 @@ import { ScrollArea, Table, Tooltip, + Stack, + Center, + Avatar, + Group, + Text, } from "@mantine/core"; -import { IconEdit } from "@tabler/icons-react"; +import { IconChevronLeft, IconEdit } from "@tabler/icons-react"; +import _ from "lodash"; import { useRouter } from "next/navigation"; import { useState } from "react"; -export default function TableReject({ +export default function Admin_TableRejectInvestasi({ dataInvestsi, }: { dataInvestsi: MODEL_Investasi[]; @@ -23,28 +30,27 @@ export default function TableReject({ const tableBody = investasi.map((e) => e.MasterStatusInvestasi.id === "4" ? ( - {e.title} - {e.MasterStatusInvestasi.id === "4" ? ( - - {e.MasterStatusInvestasi.name} - - ) : ( - "-" - )} + + + {e.author.username} + + {_.capitalize(e.title)} {e.catatan} - - - router.push(RouterAdminInvestasi.konfirmasi + `${e.id}`) - } - > - - - +
+ + + router.push(RouterAdminInvestasi.konfirmasi + `${e.id}`) + } + > + + + +
) : ( @@ -54,24 +60,37 @@ export default function TableReject({ return ( <> - - - - Reject - - - - - - - - - - - {tableBody} -
Nama Proyek InvestasiStatusCatatanAksi
-
-
+ + router.push(RouterAdminInvestasi.main_investasi)}> + + + + + + + Reject + + + + + + + + + + + {tableBody} +
UsernameNama Proyek InvestasiCatatan +
Aksi
+
+
+
+
); } diff --git a/src/app_modules/admin/investasi/main/table_review.tsx b/src/app_modules/admin/investasi/main/table_review.tsx index 15511339..8900969d 100644 --- a/src/app_modules/admin/investasi/main/table_review.tsx +++ b/src/app_modules/admin/investasi/main/table_review.tsx @@ -1,3 +1,4 @@ +"use client"; import { RouterAdminInvestasi } from "@/app/lib/router_hipmi/router_admin"; import { MODEL_Investasi } from "@/app_modules/investasi/model/model_investasi"; import { @@ -7,12 +8,17 @@ import { ScrollArea, Table, Tooltip, + Stack, + Group, + Avatar, + Text, + Center, } from "@mantine/core"; -import { IconEdit } from "@tabler/icons-react"; +import { IconChevronLeft, IconEdit } from "@tabler/icons-react"; import { useRouter } from "next/navigation"; import { useState } from "react"; -export default function TableReview({ +export default function Admin_TableReviewInvestasi({ dataInvestsi, }: { dataInvestsi: MODEL_Investasi[]; @@ -23,17 +29,28 @@ export default function TableReview({ const tableBody = investasi.map((e) => e.MasterStatusInvestasi.id === "2" ? ( - {e.title} - {e.MasterStatusInvestasi.id === "2" ? ( - - {e.MasterStatusInvestasi.name} - - ) : ( - "-" - )} + + + {e.author.username} + + {e.title} + + +
+ {e.ProspektusInvestasi === null ? ( + Unavailable + ) : ( + + Available + + )} +
+ + +
- + +
) : ( @@ -52,23 +70,29 @@ export default function TableReview({ ); return ( <> - - - - Review - - - - - - - - - - {tableBody} -
Nama Proyek InvestasiStatusAksi
-
-
+ + router.push(RouterAdminInvestasi.main_investasi)}> + + + + + + Review + + + + + + + + + + + {tableBody} +
UsernameNama Proyek Investasi
File Prospektus
Aksi
+
+
+
); } diff --git a/src/app_modules/admin/investasi/main/table_total_investasi.tsx b/src/app_modules/admin/investasi/main/table_total_investasi.tsx new file mode 100644 index 00000000..3d55cc86 --- /dev/null +++ b/src/app_modules/admin/investasi/main/table_total_investasi.tsx @@ -0,0 +1,61 @@ +"use client"; + +import { + Paper, + Stack, + Center, + Title, + Table, + Group, + Avatar, +} from "@mantine/core"; + +export default function TableTotalInvestasi({ + totalInvestasiByUser, +}: { + totalInvestasiByUser: any[]; +}) { + return ( + <> + + +
+ Total Investasi Pengguna +
+ + + + + + + + + {totalInvestasiByUser.map((e) => ( + + + + + ))} + +
+
Username
+
+
Total
+
+ + {e.username} + + +
{e._count.Investasi}
+
+
+
+ + ); +} diff --git a/src/app_modules/admin/investasi/main/view.tsx b/src/app_modules/admin/investasi/main/view.tsx index 39736a75..7a858a6b 100644 --- a/src/app_modules/admin/investasi/main/view.tsx +++ b/src/app_modules/admin/investasi/main/view.tsx @@ -18,12 +18,25 @@ import { Text, Title, } from "@mantine/core"; -import { IconEdit } from "@tabler/icons-react"; +import { + IconArrowBadgeRight, + IconArrowBigRightLine, + IconArrowsMaximize, + IconCaretRight, + IconChevronsDownRight, + IconChevronsRight, + IconEdit, + IconZoomCheck, +} from "@tabler/icons-react"; import { useRouter } from "next/navigation"; import { useState } from "react"; -import TablePublish from "./table_publish"; -import TableReview from "./table_review"; -import TableReject from "./table_reject"; +import Admin_TablePublishInvestasi from "./table_publish"; +import Admin_TableReviewInvestasi from "./table_review"; +import Admin_TableRejectInvestasi from "./table_reject"; +import moment from "moment"; +import _ from "lodash"; +import TableTotalInvestasi from "./table_total_investasi"; +import TablePublikasiProgresInvestasi from "./table_publikasi_progres"; export default function Admin_Investasi({ listInvestasi, @@ -32,6 +45,7 @@ export default function Admin_Investasi({ countPublish, countReject, totalInvestasiByUser, + publishProgres, }: { listInvestasi: MODEL_Investasi[]; countDraft: number | any; @@ -39,6 +53,7 @@ export default function Admin_Investasi({ countPublish: number | any; countReject: number | any; totalInvestasiByUser: any[]; + publishProgres: any[]; }) { const [investasi, setInvestasi] = useState(listInvestasi); const router = useRouter(); @@ -48,84 +63,81 @@ export default function Admin_Investasi({ id: 1, name: "Draft", jumlah: countDraft, - color: "yellow" + link: "", + color: "yellow", }, { id: 2, name: "Review", jumlah: countReview, - color: "orange" - + link: RouterAdminInvestasi.table_status_review, + color: "orange", }, { id: 3, name: "Publish", jumlah: countPublish, - color: "green" - + link: RouterAdminInvestasi.table_status_publish, + color: "green", }, { id: 4, name: "Reject", jumlah: countReject, - color: "red" - + link: RouterAdminInvestasi.table_status_reject, + color: "red", }, ]; return ( <> - Investasi - - - {listBox.map((e) => ( - - -
- - {e.name} -
- - {e.jumlah} - -
+ + Investasi + + {/* Status box */} + + {listBox.map((e) => ( + + + + {e.name} + + {e.jumlah} + -
-
-
- ))} -
+ + {e.link === "" ? ( + + {/* */} + + ) : ( + router.push(e.link)} + > + + + )} + + + + ))} + - - - Total Investasi Per User - - - - - - - - - {totalInvestasiByUser.map((e) => ( - - - - - ))} - -
Username
Total
{e.username}
{e._count.Investasi}
-
-
- {/* - - */} - {/*
{JSON.stringify(totalInvestasiByUser, null, 2)}
*/} + {/* Table Total & Progres */} + {/* + + + + + + + */} + ); } diff --git a/src/app_modules/admin/main/view.tsx b/src/app_modules/admin/main/view.tsx index 4bb1c6b6..d5a651e7 100644 --- a/src/app_modules/admin/main/view.tsx +++ b/src/app_modules/admin/main/view.tsx @@ -1,13 +1,18 @@ "use client"; -import { Title } from "@mantine/core"; +import { Center, Divider, Stack, Title } from "@mantine/core"; import Admin_Investasi from "../investasi/main/view"; - export default function AdminMain() { return ( <> - Main Dashboard + + Main Dashboard + + + Cooming Soon !! + + ); } diff --git a/src/app_modules/crowd/main/view.tsx b/src/app_modules/crowd/main/view.tsx index 3e13b16d..e61853a6 100644 --- a/src/app_modules/crowd/main/view.tsx +++ b/src/app_modules/crowd/main/view.tsx @@ -57,7 +57,7 @@ export default function MainCrowd() { toast("Cooming Soon Feature...")} diff --git a/src/app_modules/home/view.tsx b/src/app_modules/home/view.tsx index bdc8e8d7..b716ff10 100644 --- a/src/app_modules/home/view.tsx +++ b/src/app_modules/home/view.tsx @@ -131,7 +131,7 @@ export default function HomeView({ user }: { user: MODEL_User_profile }) { - logo + logo {/*
{JSON.stringify(stateUser, null, 2)}
*/} diff --git a/src/app_modules/investasi/create/view.tsx b/src/app_modules/investasi/create/view.tsx index 602363c1..3a5d3fb4 100644 --- a/src/app_modules/investasi/create/view.tsx +++ b/src/app_modules/investasi/create/view.tsx @@ -152,7 +152,7 @@ export default function InvestasiCreate({
) : ( - {pdf.name} + {pdf.name} )} {/* {JSON.stringify(filePdf)} */} diff --git a/src/app_modules/investasi/detail/view.tsx b/src/app_modules/investasi/detail/view.tsx index 5b92fb9b..65524e5d 100644 --- a/src/app_modules/investasi/detail/view.tsx +++ b/src/app_modules/investasi/detail/view.tsx @@ -73,7 +73,7 @@ export default function DetailInvestasi({ ]; async function onSubmit() { - router.push(RouterInvestasi.proses_investasi + `${investasi.id}`); + router.push(RouterInvestasi.proses_transaksi + `${investasi.id}`); setTransaksiValue({ ...transaksiValue, lembarTerbeli: "", @@ -224,7 +224,7 @@ export default function DetailInvestasi({ onSubmit() }} > - Investasi + Beli Saham )} diff --git a/src/app_modules/investasi/detail_prospektus/view.tsx b/src/app_modules/investasi/detail_prospektus/view.tsx index 638bb0cc..97f82cfc 100644 --- a/src/app_modules/investasi/detail_prospektus/view.tsx +++ b/src/app_modules/investasi/detail_prospektus/view.tsx @@ -8,6 +8,7 @@ import { Model_Prospektus_Investasi, } from "../model/model_investasi"; import { useState } from "react"; +import { RouterInvestasi } from "@/app/lib/router_hipmi/router_investasi"; export default function DetailPropektus({ dataInvestasi, @@ -16,23 +17,16 @@ export default function DetailPropektus({ }) { const [prospek, setProspek] = useState(dataInvestasi); - return ( <> {prospek.ProspektusInvestasi !== null ? ( - - ""} - > + + Prospektus_{prospek.title} diff --git a/src/app_modules/investasi/detail_saham_terbeli/view.tsx b/src/app_modules/investasi/detail_saham_terbeli/view.tsx index 1bb8b855..04370656 100644 --- a/src/app_modules/investasi/detail_saham_terbeli/view.tsx +++ b/src/app_modules/investasi/detail_saham_terbeli/view.tsx @@ -15,6 +15,7 @@ import { Group, Image, Paper, + Progress, Slider, Stack, Text, @@ -22,13 +23,24 @@ import { } from "@mantine/core"; import { IconBookDownload, + IconCircleCheck, IconFileDescription, IconSpeakerphone, } from "@tabler/icons-react"; import { useRouter } from "next/navigation"; +import { MODEL_Transaksi_Investasi } from "../model/model_investasi"; +import { useState } from "react"; +import moment from "moment"; -export default function DetailSahamTerbeli({id}: {id: string}) { +export default function DetailSahamTerbeli({ + dataTransaksi, + investor +}: { + dataTransaksi: MODEL_Transaksi_Investasi; + investor: number +}) { const router = useRouter(); + const [investasi, setINvestasi] = useState(dataTransaksi); const listBox = [ { id: 1, @@ -54,50 +66,104 @@ export default function DetailSahamTerbeli({id}: {id: string}) { - Username + {investasi.Investasi.author.username} - Sisa waktu : 20 Hari + {(() => { + if ( + Number(investasi.Investasi.MasterPencarianInvestor.name) - + moment(new Date()).diff(new Date(investasi.createdAt), "days") <= + 0 + ) { + return ( + <> + + + Selesai + + + ); + } else { + return ( + <> + + Sisa waktu: + + {Number(investasi.Investasi.MasterPencarianInvestor.name) - + moment(new Date()).diff( + new Date(investasi.Investasi.countDown), + "days" + )}{" "} + Hari + + + + ); + } + })()} {/* Gambar Investasi */} - + {/* Title dan Persentase */} - Judul Proyek + {investasi.Investasi.title} - + {/* Rincian Data */} - + {/* Terkumpul Rp. - + */} Dana Dibutuhkan - Rp. + Rp. {new Intl.NumberFormat("id-ID", { + maximumSignificantDigits: 10, + }).format(+investasi.Investasi.targetDana)} Harga Per Lembar - Rp. + Rp. {new Intl.NumberFormat("id-ID", { + maximumSignificantDigits: 10, + }).format(+investasi.Investasi.hargaLembar)} Jadwal Pembagian - 3 Bulan + {investasi.Investasi.MasterPembagianDeviden.name} bulan + + + Pembagian Deviden + {investasi.Investasi.MasterPeriodeDeviden.name} @@ -105,19 +171,23 @@ export default function DetailSahamTerbeli({id}: {id: string}) { Investor - 4657 + {investor} pengguna ROI - % + {investasi.Investasi.roi}% Total Lembar - 0 + {new Intl.NumberFormat("id-ID", { + maximumSignificantDigits: 10, + }).format(+investasi.Investasi.totalLembar)} lembar - Pembagian Deviden - Selamanya + Sisa Lembar + {new Intl.NumberFormat("id-ID", { + maximumSignificantDigits: 10, + }).format(+investasi.Investasi.sisaLembar)} lembar @@ -135,7 +205,9 @@ export default function DetailSahamTerbeli({id}: {id: string}) { Total Pembelian - Rp. 0 + Rp. {new Intl.NumberFormat("id-ID", { + maximumSignificantDigits: 10, + }).format(+investasi.gross_amount)} @@ -143,7 +215,9 @@ export default function DetailSahamTerbeli({id}: {id: string}) { Lembar Dibeli - 100 + {new Intl.NumberFormat("id-ID", { + maximumSignificantDigits: 10, + }).format(+investasi.quantity)} lembar @@ -153,7 +227,11 @@ export default function DetailSahamTerbeli({id}: {id: string}) { {/* List Box */} {listBox.map((e) => ( - router.push(e.route + `${id}`)}> + router.push(e.route + `${investasi.Investasi.id}`)} + >
diff --git a/src/app_modules/investasi/fun/fun_create_investasi.ts b/src/app_modules/investasi/fun/fun_create_investasi.ts index 68b7cc0a..0ba89451 100644 --- a/src/app_modules/investasi/fun/fun_create_investasi.ts +++ b/src/app_modules/investasi/fun/fun_create_investasi.ts @@ -11,7 +11,7 @@ import { MODEL_Investasi } from "../model/model_investasi"; export async function funCreateInvestasi( gamabar: FormData, filePdf: FormData, - data: MODEL_Investasi | any + data: MODEL_Investasi ) { // Function upload gambar const file: any = gamabar.get("file"); @@ -32,7 +32,7 @@ export async function funCreateInvestasi( if (!uploadImage) return { status: 400, - message: "File Kosong", + message: "Gambar Kosong", }; const upFolder = Buffer.from(await file.arrayBuffer()); @@ -67,23 +67,21 @@ export async function funCreateInvestasi( const pdfExt = _.lowerCase(dataPdf.name.split(".").pop()); const pdfRandomName = v4(pdfName) + "." + pdfExt; - const uploadFile = await prisma.prospektusInvestasi.upsert({ - where: { - investasiId: createInvest.id, - }, - update: { - url: pdfRandomName, - }, - create: { + const uploadFile = await prisma.prospektusInvestasi.create({ + data: { investasiId: createInvest.id, url: pdfRandomName, }, + select: { + id: true, + url: true, + }, }); - if(!uploadFile) return {status: 400, message: "Gagal Upload"} - const upPdfFolder = Buffer.from(await file.arrayBuffer()) - fs.writeFileSync(`./public/file/${uploadFile.url}`, upPdfFolder) + if (!uploadFile) return { status: 400, message: "File Kosong" }; + const upPdfFolder = Buffer.from(await file.arrayBuffer()); + fs.writeFileSync(`./public/file/${uploadFile.url}`, upPdfFolder); revalidatePath(RouterInvestasi.main_porto); diff --git a/src/app_modules/investasi/fun/fun_create_transaksi.ts b/src/app_modules/investasi/fun/fun_create_transaksi.ts index ef297d52..bfe1f946 100644 --- a/src/app_modules/investasi/fun/fun_create_transaksi.ts +++ b/src/app_modules/investasi/fun/fun_create_transaksi.ts @@ -12,10 +12,12 @@ export default async function funCreateTransaksiInvestasi( data: { namaBank: data.namaBank, nomorRekening: data.nomorRekening, - lembarTerbeli: "" + data.lembarTerbeli, - totalTransfer: "" + data.totalTransfer, investasiId: invesId, authorId: authorId, + gross_amount: "", + merchant_name:"", + price: "", + quantity: "" }, }); if (!res) return { status: 400, message: "Gagal disimpan" }; diff --git a/src/app_modules/investasi/fun/fun_ganti_status.ts b/src/app_modules/investasi/fun/fun_ganti_status.ts index 7fec9998..8adcdd83 100644 --- a/src/app_modules/investasi/fun/fun_ganti_status.ts +++ b/src/app_modules/investasi/fun/fun_ganti_status.ts @@ -3,24 +3,31 @@ import prisma from "@/app/lib/prisma"; import { RouterAdminInvestasi } from "@/app/lib/router_hipmi/router_admin"; import { RouterInvestasi } from "@/app/lib/router_hipmi/router_investasi"; +import moment from "moment"; import { revalidatePath } from "next/cache"; export default async function funGantiStatusInvestasi(id: string, val: string) { + const publishCD = new Date const data = await prisma.investasi.update({ where: { id: id, }, data: { - masterStatusInvestasiId: val, + MasterStatusInvestasi: { + connect: { + id: val, + }, + }, + countDown: publishCD, }, }); - if(!data) return {status: 400} + if (!data) return { status: 400 }; - revalidatePath(RouterInvestasi.portofolio) - revalidatePath(RouterAdminInvestasi.main_investasi) + revalidatePath(RouterInvestasi.portofolio); + revalidatePath(RouterAdminInvestasi.main_investasi); return { - status: 200 - } + status: 200, + }; } diff --git a/src/app_modules/investasi/fun/fun_ganti_status_transaksi.ts b/src/app_modules/investasi/fun/fun_ganti_status_transaksi.ts index 26834d42..1c9fce06 100644 --- a/src/app_modules/investasi/fun/fun_ganti_status_transaksi.ts +++ b/src/app_modules/investasi/fun/fun_ganti_status_transaksi.ts @@ -19,7 +19,6 @@ export default async function funGantiStatusTransaksi_Investasi( select: { id: true, namaBank: true, - totalTransfer: true, Investasi: true, MasterStatusTransaksiInvestasi: true } diff --git a/src/app_modules/investasi/fun/fun_total_investor_by_id.ts b/src/app_modules/investasi/fun/fun_total_investor_by_id.ts new file mode 100644 index 00000000..8eb8febe --- /dev/null +++ b/src/app_modules/investasi/fun/fun_total_investor_by_id.ts @@ -0,0 +1,16 @@ +"use server"; + +import prisma from "@/app/lib/prisma"; + +export default async function funTotalInvestorByIdInvestasi(id: string) { + // console.log(id) + const data = await prisma.transaksiInvestasi.count({ + where: { + investasiId: id, + status_code: "200" + }, + }); + + return data; +} +// belum ke hitungg diff --git a/src/app_modules/investasi/fun/fun_update_investasi.ts b/src/app_modules/investasi/fun/fun_update_investasi.ts new file mode 100644 index 00000000..dc03a678 --- /dev/null +++ b/src/app_modules/investasi/fun/fun_update_investasi.ts @@ -0,0 +1,23 @@ +"use server"; + +import prisma from "@/app/lib/prisma"; +import { MODEL_Investasi } from "../model/model_investasi"; + +export default async function funUpdateInvestasi(data: MODEL_Investasi) { + // console.log(data) + const res = await prisma.investasi.update({ + where: { + id: data.id, + }, + data: { + sisaLembar: "" + data.sisaLembar, + + }, + }); + + if (!res) return { status: 400, message: "Gagal update" }; + return { + status: 200, + message: "Update berhasil", + }; +} diff --git a/src/app_modules/investasi/fun/fun_update_payment.ts b/src/app_modules/investasi/fun/fun_update_payment.ts new file mode 100644 index 00000000..f86efd44 --- /dev/null +++ b/src/app_modules/investasi/fun/fun_update_payment.ts @@ -0,0 +1,96 @@ +"use server"; + +import prisma from "@/app/lib/prisma"; +import { MODEL_Investasi } from "../model/model_investasi"; +import { revalidatePath } from "next/cache"; +import { RouterInvestasi } from "@/app/lib/router_hipmi/router_investasi"; + +export interface Model_Midtrans_Success { + status_code: string; + status_message: string; + transaction_id: string; + order_id: string; + gross_amount: string; + payment_type: string; + transaction_time: string; + transaction_status: string; + fraud_status: string; + va_numbers: [{ bank: string; va_number: string }]; + pdf_url: string; + finish_redirect_url: string; +} + +export default async function funUpdatePaymentInvestasi( + data: Model_Midtrans_Success, + idPay: any, +) { + console.log(data) + if (data.status_code === "200") { + const res = await prisma.transaksiInvestasi.update({ + where: { + id: idPay, + }, + data: { + status_code: data.status_code, + status_message: data.status_message, + order_id: data.order_id, + fraud_status: data.fraud_status, + payment_type: data.payment_type, + transaction_id: data.transaction_id, + transaction_status: data.transaction_status, + transaction_time: data.transaction_time, + pdf_url: data.pdf_url, + finish_redirect_url: data.finish_redirect_url, + namaBank: data.va_numbers[0].bank, + nomorRekening: data.va_numbers[0].va_number, + }, + }); + + if (!res) return { status: 400, message: "Gagal update transaksi" }; + + // const jumlah = Number(res.quantity); + // const sisa = Number(investasi?.sisaLembar); + // const hasil = sisa - jumlah; + + // const updateTransaksi = await prisma.investasi.update({ + // where: { + // id: investasi?.id, + // }, + // data: { + // sisaLembar: hasil.toString(), + // }, + // }); + + // console.log(updateTransaksi); + // if (!updateTransaksi) + // return { status: 400, message: "Gagal update investasi" }; + + revalidatePath(RouterInvestasi.main_transaksi) + + return { + status: 200, + message: "Process", + }; + } else { + if (data.status_code === "201") { + const res = await prisma.transaksiInvestasi.update({ + where: { + id: idPay, + }, + data: { + status_code: "201", + }, + }); + return { + message: "Success", + }; + } else { + if ((!data.status_code as any) === "400") + return { status: 400, message: "Update Gagal" }; + return { + status: 200, + message: "Berhasil Update", + }; + } + } +} diff --git a/src/app_modules/investasi/fun/get_list_all_publish.ts b/src/app_modules/investasi/fun/get_list_all_publish.ts index 0252d4d1..25c4e1ea 100644 --- a/src/app_modules/investasi/fun/get_list_all_publish.ts +++ b/src/app_modules/investasi/fun/get_list_all_publish.ts @@ -14,8 +14,8 @@ export async function getListAllPublish() { }, }, AND: { - active: true - } + active: true, + }, }, select: { id: true, @@ -38,7 +38,7 @@ export async function getListAllPublish() { MasterPembagianDeviden: true, MasterPencarianInvestor: true, MasterPeriodeDeviden: true, - + countDown: true, }, }); diff --git a/src/app_modules/investasi/fun/get_list_all_transaksi_by_id.ts b/src/app_modules/investasi/fun/get_list_all_transaksi_by_id.ts index ad748c67..ea2ed9d6 100644 --- a/src/app_modules/investasi/fun/get_list_all_transaksi_by_id.ts +++ b/src/app_modules/investasi/fun/get_list_all_transaksi_by_id.ts @@ -19,17 +19,22 @@ export default async function getListAllTransaksiById_Investasi( id: true, namaBank: true, nomorRekening: true, - totalTransfer: true, - lembarTerbeli: true, active: true, createdAt: true, updatedAt: true, authorId: true, + quantity: true, + price: true, + gross_amount: true, + merchant_name: true, + redirect_url: true, + token: true, + + Author: true, masterStatusTransaksiInvestasiId: true, MasterStatusTransaksiInvestasi: true, investasiId: true, Investasi: true, - // Author:true, }, }); @@ -59,17 +64,21 @@ export default async function getListAllTransaksiById_Investasi( id: true, namaBank: true, nomorRekening: true, - totalTransfer: true, - lembarTerbeli: true, active: true, createdAt: true, updatedAt: true, authorId: true, + quantity: true, + price: true, + gross_amount: true, + merchant_name: true, + redirect_url: true, + token: true, + Author: true, masterStatusTransaksiInvestasiId: true, MasterStatusTransaksiInvestasi: true, investasiId: true, Investasi: true, - // Author:true, }, }); diff --git a/src/app_modules/investasi/fun/get_list_transaksi_berhasil_by_id.ts b/src/app_modules/investasi/fun/get_list_transaksi_berhasil_by_id.ts new file mode 100644 index 00000000..894eb092 --- /dev/null +++ b/src/app_modules/investasi/fun/get_list_transaksi_berhasil_by_id.ts @@ -0,0 +1,26 @@ +"use server"; + +import prisma from "@/app/lib/prisma"; + +export default async function getListTransaksiBerhasilInvestasi( + idAuthor: string +) { + const data = await prisma.transaksiInvestasi.findMany({ + orderBy: { + createdAt: "desc" + }, + where: { + authorId: idAuthor, + status_code: "200", + }, + select: { + id: true, + Investasi: true, + Author: true, + gross_amount: true, + quantity: true, + }, + }); + + return data; +} diff --git a/src/app_modules/investasi/fun/get_one_investasi_by_id.ts b/src/app_modules/investasi/fun/get_one_investasi_by_id.ts index c6df7562..6cb1480f 100644 --- a/src/app_modules/investasi/fun/get_one_investasi_by_id.ts +++ b/src/app_modules/investasi/fun/get_one_investasi_by_id.ts @@ -30,6 +30,8 @@ export default async function getOneInvestasiById(id: string) { MasterPembagianDeviden: true, MasterPencarianInvestor: true, MasterPeriodeDeviden: true, + author: true, + countDown: true }, }); diff --git a/src/app_modules/investasi/fun/get_one_transaksi_berhasil_by_id.ts b/src/app_modules/investasi/fun/get_one_transaksi_berhasil_by_id.ts new file mode 100644 index 00000000..2599a635 --- /dev/null +++ b/src/app_modules/investasi/fun/get_one_transaksi_berhasil_by_id.ts @@ -0,0 +1,42 @@ +"use server"; + +import prisma from "@/app/lib/prisma"; + +export default async function getOneTransaksiBerhasilByIdInvestasi( + idTransaksi: string +) { + const data = await prisma.transaksiInvestasi.findUnique({ + + where: { + id: idTransaksi, + }, + select: { + Investasi: { + select: { + + author: true, + BeritaInvestasi: true, + DokumenInvestasi: true, + ProspektusInvestasi: true, + MasterPembagianDeviden: true, + MasterPencarianInvestor: true, + MasterPeriodeDeviden: true, + id: true, + title: true, + countDown: true, + imagesId: true, + roi: true, + targetDana: true, + totalLembar: true, + sisaLembar: true, + hargaLembar: true, + }, + }, + id: true, + gross_amount: true, + quantity: true, + }, + }); + + return data; +} diff --git a/src/app_modules/investasi/fun/get_porto_status_by_id.ts b/src/app_modules/investasi/fun/get_porto_status_by_id.ts index 55ecc479..778207ce 100644 --- a/src/app_modules/investasi/fun/get_porto_status_by_id.ts +++ b/src/app_modules/investasi/fun/get_porto_status_by_id.ts @@ -78,6 +78,7 @@ export default async function getPortoByStatusId(id: string, statusId: number) { updatedAt: true, targetDana: true, MasterPencarianInvestor: true, + countDown: true, }, }); return data; diff --git a/src/app_modules/investasi/fun/get_token_transaksi.js b/src/app_modules/investasi/fun/get_token_transaksi.js new file mode 100644 index 00000000..87200106 --- /dev/null +++ b/src/app_modules/investasi/fun/get_token_transaksi.js @@ -0,0 +1,113 @@ +"use server"; + +import prisma from "@/app/lib/prisma"; +import MidTrans from "midtrans-client"; + +// const midtransClient = require("midtrans-client"); + +// const snap = new midtransClient.Snap({ +// isProduction: false, +// serverKey: process.env.Server_KEY, +// clientKey: process.env.Client_KEY, +// }); + +const snap = new MidTrans.Snap({ + isProduction: false, + serverKey: process.env.Server_KEY, + clientKey: process.env.Client_KEY, +}); + +export default async function getTokenTransaksi(data) { + const body = await data; + // console.log(body); + + const date = new Date(); + const randomId = date.getTime(); + + const params = { + transaction_details: { + order_id: "hipmi_" + randomId, + gross_amount: body.gross_amount, + }, + item_details: [ + { + id: "item_hipmi_" + randomId, + name: body.item_name, + price: body.price, + quantity: body.quantity, + merchant_name: body.merchant_name, + }, + ], + customer_details: { + first_name: body.customer_name, + phone: body.phone, + // email: "test@midtrans.com", + }, + enabled_payments: [ + "permata_va", + "bca_va", + "bni_va", + "bri_va", + "cimb_va", + "other_va", + "shopeepay", + ], + bca_va: { + va_number: "82340374411111", + sub_company_code: "00000", + free_text: { + inquiry: [ + { + en: "text in English", + id: "text in Bahasa Indonesia", + }, + ], + payment: [ + { + en: "text in English", + id: "text in Bahasa Indonesia", + }, + ], + }, + }, + }; + + const token = await new Promise(async (res) => { + try { + const transaksi = await snap.createTransaction(params); + // console.log(transaksi); + res({ + status: 200, + value: transaksi, + }); + } catch (error) { + // console.log(error); + res({ + status: 400, + value: error, + }); + } + }); + + if (token.status === 400) { + return { token: token }; + } + + const newTransaksi = await prisma.transaksiInvestasi.create({ + data: { + gross_amount: "" + data.gross_amount, + merchant_name: data.merchant_name, + price: "" + data.price, + quantity: "" + data.quantity, + token: token.value.token, + redirect_url: token.value.redirect_url, + authorId: data.authorId, + investasiId: data.investasiId, + }, + }); + + return { + token: token, + dataTransaksi: newTransaksi, + }; +} diff --git a/src/app_modules/investasi/fun/get_transaksi_investasi.ts b/src/app_modules/investasi/fun/get_transaksi_investasi.ts index 24f47ff1..e8846deb 100644 --- a/src/app_modules/investasi/fun/get_transaksi_investasi.ts +++ b/src/app_modules/investasi/fun/get_transaksi_investasi.ts @@ -11,8 +11,6 @@ export default async function getTransaksiByIdInvestasi(id: string) { id: true, namaBank: true, nomorRekening: true, - lembarTerbeli: true, - totalTransfer: true, active: true, createdAt: true, updatedAt: true, diff --git a/src/app_modules/investasi/index.ts b/src/app_modules/investasi/index.ts index 70da1e0e..9d6a0911 100644 --- a/src/app_modules/investasi/index.ts +++ b/src/app_modules/investasi/index.ts @@ -63,6 +63,8 @@ import UploadProspektusInvestasi from "./upload_prospektus/view"; import LayoutUploadProspektusInvestasi from "./upload_prospektus/layout"; import UploadDokumenInvestasi from "./upload_dokumen/view"; import LayoutUploadDokumenInvestasi from "./upload_dokumen/layout"; +import ProsesTransaksiInvestasi from "./proses_transaksi/view"; +import LayoutProsesTransaksiInvestasi from "./proses_transaksi/layout"; export { MainInvestasi, @@ -130,4 +132,6 @@ export { LayoutUploadProspektusInvestasi, UploadDokumenInvestasi, LayoutUploadDokumenInvestasi, + ProsesTransaksiInvestasi, + LayoutProsesTransaksiInvestasi, }; diff --git a/src/app_modules/investasi/main/layout.tsx b/src/app_modules/investasi/main/layout.tsx index a063fafa..f39c0e75 100644 --- a/src/app_modules/investasi/main/layout.tsx +++ b/src/app_modules/investasi/main/layout.tsx @@ -50,7 +50,7 @@ export default function LayoutMainInvestasi({ }, { id: 3, - name: "Investasi", + name: "Saham Saya", route: RouterInvestasi.main_investasi, icon: , }, @@ -75,7 +75,7 @@ export default function LayoutMainInvestasi({ } footer={
- + {/* Tampilan Bursa */} {listFooter.map((e, k) => ( - - {dataDummy.map((e) => ( + {/* {investasi.map((e) => ( - router.push(RouterInvestasi.detail_saham_terbeli + `${e.id}`) - } + bg={"green.3"} > - - - - - Username - - - - + - {/* {e.imagesId ? ( - - ) : ( - - )} */} - + + {e.Investasi.imagesId ? ( + + ) : ( + + )} + - - - {e.title} - - - - - - - - - - Dana Dibutuhkan - Rp. {e.targetDana} - - - Harga Per Lembar - Rp. {e.hargaLembar} - - - - - - - ROI - {e.roi}% - - - Total Lembar - {e.totalLembar} - - - - - - - - - - {e.statusSaham.id === 1 ? ( - {e.statusSaham.status} - ) : ( - - {e.statusSaham.status} - - )} - {(() => { - if ( - e.masterPencarianInvestorId - - moment(new Date()).diff(new Date(e.createdAt), "days") <= - 0 - ) { - return ( - <> - - - Selesai - - - ); - } else { - return ( - <> - - Sisa waktu: - - {e.masterPencarianInvestorId - - moment(new Date()).diff( - new Date(e.createdAt), - "days" - )} - - Hari - - - ); + + +
+ {e.Investasi.title} +
+ + value={ + +( + ((+e.Investasi.totalLembar - +e.Investasi.sisaLembar) / + +e.Investasi.totalLembar) * + 100 + ).toFixed(2) + } + color="teal" + size="xl" + radius="xl" + /> +
+ + + + + Saham Terbeli : + {new Intl.NumberFormat("id-ID", {maximumFractionDigits: 10}).format(+ e.quantity)} Lembar + + + Total Pembelian : + Rp. {new Intl.NumberFormat("id-ID", {maximumFractionDigits: 10}).format(+ e.gross_amount)} + + + + + + + + +
- ))} + ))} */} + + + + + + Username + + + + + +
+ Judul Investasi +
+ + +
+ + +
); } diff --git a/src/app_modules/investasi/main/view.tsx b/src/app_modules/investasi/main/view.tsx index c25f8e04..ea1472cc 100644 --- a/src/app_modules/investasi/main/view.tsx +++ b/src/app_modules/investasi/main/view.tsx @@ -30,6 +30,8 @@ import { MODEL_Investasi } from "../model/model_investasi"; import _ from "lodash"; import { useState } from "react"; import { useShallowEffect } from "@mantine/hooks"; +import { RouterInvestasi } from "@/app/lib/router_hipmi/router_investasi"; +import { Warna } from "@/app/lib/warna"; export default function MainInvestasi({ listData, @@ -44,6 +46,18 @@ export default function MainInvestasi({ }) { const router = useRouter(); const [investasi, setInvestasi] = useState(listData); + const [progres, setProgres] = useState(0); + + async function onProgres(data: MODEL_Investasi) { + // console.log(data) + const total = Number(data.totalLembar); + const sisa = Number(data.sisaLembar); + const beli = total - sisa; + const hasil = (beli / total) * 100; + const progres = Math.round(hasil).toFixed(2); + // console.log(progres) + return progres; + } if (_.isEmpty(investasi)) return ( @@ -62,19 +76,20 @@ export default function MainInvestasi({ {investasi.map((e) => ( router.push(`/dev/investasi/detail/${e.id}`)} + bg={"dark.1"} > - + - {e.imagesId ? ( - - ) : ( - - )} + + {e.imagesId ? ( + + ) : ( + + )} + @@ -83,12 +98,23 @@ export default function MainInvestasi({ {e.title} @@ -99,14 +125,18 @@ export default function MainInvestasi({ Dana Dibutuhkan - Rp. {new Intl.NumberFormat("id-ID", { + + Rp.{" "} + {new Intl.NumberFormat("id-ID", { maximumSignificantDigits: 10, - }).format(+e.targetDana)} + }).format(+e.targetDana)} + Harga Per Lembar - Rp. {new Intl.NumberFormat("id-ID", { + Rp.{" "} + {new Intl.NumberFormat("id-ID", { maximumSignificantDigits: 10, }).format(+e.hargaLembar)} {/* {e.hargaLembar} */} @@ -121,17 +151,19 @@ export default function MainInvestasi({ {e.roi}% - Total Lembar - {new Intl.NumberFormat("id-ID").format(+e.totalLembar)} + Sisa Lembar + + {new Intl.NumberFormat("id-ID").format(+e.sisaLembar)} +
- + - + {/* {e.SahamTerbeli === null ? ( "" @@ -141,18 +173,36 @@ export default function MainInvestasi({ )} */} + {(() => { if ( Number(e.MasterPencarianInvestor.name) - - moment(new Date()).diff(new Date(e.createdAt), "days") <= + moment(new Date()).diff(new Date(e.countDown), "days") <= 0 ) { return ( <> - + - Selesai + + Waktu Habis + ); @@ -164,7 +214,7 @@ export default function MainInvestasi({ {Number(e.MasterPencarianInvestor.name) - moment(new Date()).diff( - new Date(e.updatedAt), + new Date(e.countDown), "days" )} @@ -174,7 +224,7 @@ export default function MainInvestasi({ ); } })()} - + ))} diff --git a/src/app_modules/investasi/model/model_investasi.ts b/src/app_modules/investasi/model/model_investasi.ts index c6896e15..830f64fd 100644 --- a/src/app_modules/investasi/model/model_investasi.ts +++ b/src/app_modules/investasi/model/model_investasi.ts @@ -26,21 +26,27 @@ export interface MODEL_Investasi { masterPeriodeDevidenId: string; masterPembagianDevidenId: string; masterPencarianInvestorId: string; + author: MODEL_User_profile; + countDown: Date } export interface MODEL_Transaksi_Investasi { id: string; namaBank: string; nomorRekening: string; - totalTransfer: string; - lembarTerbeli: string; active: boolean; createdAt: Date; updatedAt: Date; - investasiId: string; authorId: string; + quantity: string; + price: string; + gross_amount: string; + merchant_name: string; + redirect_url: string; + token: string; + Author: MODEL_User_profile; masterStatusTransaksiInvestasiId: string; - MasterStatusTransaksiInvestasi: Model_Status_Transaksi_Investasi; + investasiId: string; Investasi: MODEL_Investasi; } diff --git a/src/app_modules/investasi/portofolio/publish.tsx b/src/app_modules/investasi/portofolio/publish.tsx index 82b5fb13..de52eae2 100644 --- a/src/app_modules/investasi/portofolio/publish.tsx +++ b/src/app_modules/investasi/portofolio/publish.tsx @@ -24,11 +24,12 @@ import { import _ from "lodash"; import moment from "moment"; import { useState } from "react"; -import { IconCircleCheck } from "@tabler/icons-react"; +import { IconChecklist, IconCircleCheck } from "@tabler/icons-react"; export default function Publish({ data }: { data: MODEL_Investasi[] }) { const router = useRouter(); const [sisaWaktu, setSisaWaktu] = useState(); + if (_.isEmpty(data)) return ( <> @@ -74,7 +75,7 @@ export default function Publish({ data }: { data: MODEL_Investasi[] }) {
- + {Number(e.MasterPencarianInvestor.name) - moment(new Date()).diff(new Date(e.updatedAt), "days") <= @@ -88,12 +89,22 @@ export default function Publish({ data }: { data: MODEL_Investasi[] }) { {/* Publish */} - - Sisa Waktu :{" "} + {Number(e.MasterPencarianInvestor.name) - - moment(new Date()).diff(new Date(e.updatedAt), "days")}{" "} - hari - + moment(new Date()).diff(new Date(e.countDown), "days") <= + 0 ? ( + + + Selesai + + ) : ( + + Sisa Waktu : {} + {Number(e.MasterPencarianInvestor.name) - + moment(new Date()).diff(new Date(e.countDown), "days")} hari + + )} + )} diff --git a/src/app_modules/investasi/portofolio/view.tsx b/src/app_modules/investasi/portofolio/view.tsx index 4cb11ab2..9646981a 100644 --- a/src/app_modules/investasi/portofolio/view.tsx +++ b/src/app_modules/investasi/portofolio/view.tsx @@ -80,8 +80,8 @@ export default function PortofolioInvestasi({ + ) : ( + + )} +
+ + + ); +} diff --git a/src/app_modules/investasi/status_transaksi/gagal/view.tsx b/src/app_modules/investasi/status_transaksi/gagal/view.tsx index 1d1dcf7a..f9cff712 100644 --- a/src/app_modules/investasi/status_transaksi/gagal/view.tsx +++ b/src/app_modules/investasi/status_transaksi/gagal/view.tsx @@ -55,11 +55,11 @@ export default function StatusTransaksiInvestasi_Gagal({ Jumlah Transfer - Rp. {transaksi.totalTransfer} + {/* Rp. {transaksi.totalTransfer} */} Jumlah Lembar - {transaksi.lembarTerbeli} + {/* {transaksi.lembarTerbeli} */} diff --git a/src/app_modules/investasi/transaksi/view.tsx b/src/app_modules/investasi/transaksi/view.tsx index a6652b0d..415130e3 100644 --- a/src/app_modules/investasi/transaksi/view.tsx +++ b/src/app_modules/investasi/transaksi/view.tsx @@ -1,7 +1,16 @@ "use client"; import { RouterInvestasi } from "@/app/lib/router_hipmi/router_investasi"; -import { Badge, Center, Group, Paper, Stack, Text, Title } from "@mantine/core"; +import { + Badge, + Box, + Center, + Group, + Paper, + Stack, + Text, + Title, +} from "@mantine/core"; import { useRouter } from "next/navigation"; import toast from "react-simple-toasts"; import { @@ -14,6 +23,7 @@ import funCountDown from "../fun/fun_countdown_investasi"; import funGantiStatusTransaksi_Investasi from "../fun/fun_ganti_status_transaksi"; import { useInterval, useShallowEffect } from "@mantine/hooks"; import _ from "lodash"; +import Link from "next/link"; export default function TransaksiInvestasi({ statusTransaksi, @@ -25,7 +35,6 @@ export default function TransaksiInvestasi({ const router = useRouter(); const [status, setStatus] = useState(statusTransaksi); const [transaksi, setTransaksi] = useState(listTransaksi); - async function onKlik(statusId: string, transaksiId: string) { // console.log(id) @@ -46,34 +55,38 @@ export default function TransaksiInvestasi({ } } - if(_.isEmpty(transaksi)) - return <> -
- Tidak Ada Transaksi -
- - + if (_.isEmpty(transaksi)) + return ( + <> +
+ Tidak Ada Transaksi +
+ + ); return ( <> {transaksi.map((e) => ( - onKlik(e.masterStatusTransaksiInvestasiId, e.id)} - > - - {e.Investasi.title} - Rp.{e.totalTransfer} - - - - Bank {e.namaBank} - {moment(e.createdAt).format("ll")} - - {(() => { + + + + + {e.Investasi.title} + + Rp. + {new Intl.NumberFormat("id-ID", { + maximumFractionDigits: 10, + }).format(+e.gross_amount)} + + + + + {/* Bank {e.namaBank} */} + {moment(e.createdAt).format("ll")} + + {e.quantity} Lembar + {/* {(() => { if (e.masterStatusTransaksiInvestasiId === "1") { return ( <> @@ -125,9 +138,11 @@ export default function TransaksiInvestasi({ } } } - })()} - - + })()} */} + + + + ))} {/*
{JSON.stringify(transaksi, null, 2)}
*/} diff --git a/src/app_modules/investasi/transfer/view.tsx b/src/app_modules/investasi/transfer/view.tsx index 0955a4c1..3e95d5c9 100644 --- a/src/app_modules/investasi/transfer/view.tsx +++ b/src/app_modules/investasi/transfer/view.tsx @@ -190,11 +190,11 @@ export default function TransferInvestasi({ > - Rp. {transaksi.totalTransfer} + {/* Rp. {transaksi.totalTransfer} */}
- + {/* {({ copied, copy }) => (
diff --git a/src/bin/seeder/investasi/pembagian_deviden.json b/src/bin/seeder/investasi/pembagian_deviden.json index cd594c5e..c15d09b1 100644 --- a/src/bin/seeder/investasi/pembagian_deviden.json +++ b/src/bin/seeder/investasi/pembagian_deviden.json @@ -6,9 +6,5 @@ { "id": "2", "name": "6" - }, - { - "id": "3", - "name": "12" } ] diff --git a/tsconfig.json b/tsconfig.json index eb0b41d9..a8c45b75 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -23,6 +23,6 @@ "@/*": ["./src/*"] } }, - "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts", "src/app_modules/investasi/proses_transaksi/view.jsx"], "exclude": ["node_modules"] } diff --git a/yarn.lock b/yarn.lock index 5e9d1417..57859e4f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1023,6 +1023,13 @@ axe-core@^4.6.2: resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.8.2.tgz#2f6f3cde40935825cf4465e3c1c9e77b240ff6ae" integrity sha512-/dlp0fxyM3R8YW7MFzaHWXrf4zzbr0vaYb23VBFCl83R7nWNPg/yaQw2Dc8jzCMmDVLhSdzH8MjrsuIUuvX+6g== +axios@^0.26.0: + version "0.26.1" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.26.1.tgz#1ede41c51fcf51bbbd6fd43669caaa4f0495aaa9" + integrity sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA== + dependencies: + follow-redirects "^1.14.8" + axobject-query@^3.1.1: version "3.2.1" resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.2.1.tgz#39c378a6e3b06ca679f29138151e45b2b32da62a" @@ -1832,6 +1839,11 @@ flatted@^3.2.9: resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf" integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== +follow-redirects@^1.14.8: + version "1.15.3" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.3.tgz#fe2f3ef2690afce7e82ed0b44db08165b207123a" + integrity sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q== + for-each@^0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" @@ -2523,6 +2535,14 @@ micromatch@^4.0.4, micromatch@^4.0.5: braces "^3.0.2" picomatch "^2.3.1" +midtrans-client@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/midtrans-client/-/midtrans-client-1.3.1.tgz#2cec3cfbbea35529c99683d3cee7fe21e5e3aa25" + integrity sha512-GoT2j9m0yHct9aBGeHLTYW9KWyaqep29gzbky8npffyMJfld/Y8OD9eBGM2hT4QNhe1M2e4XqyK/iyjU+KJMYA== + dependencies: + axios "^0.26.0" + lodash "^4.17.21" + minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" diff --git a/zCoba.js b/zCoba.js new file mode 100644 index 00000000..dcd2b8ff --- /dev/null +++ b/zCoba.js @@ -0,0 +1,8 @@ +const moment = require("moment"); + +function Coba() { + const tgl = new Date + console.log(tgl) +} + +Coba();