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" ? (
""
) : (
+ // }
+ // bg={"orange"}
+ // color="orange"
+ // onClick={() => {
+ // setTimeout(() => setPublish(true), 1000);
+ // toast("Proyek Investasi Di Non-Aktifkan");
+ // }}
+ // >
+ // Non - aktifkan
+ //
- // }
- // bg={"orange"}
- // color="orange"
- // onClick={() => {
- // setTimeout(() => setPublish(true), 1000);
- // toast("Proyek Investasi Di Non-Aktifkan");
- // }}
- // >
- // Non - aktifkan
- //
)}
{investasi.MasterStatusInvestasi.id === "3" ? (
@@ -191,7 +201,7 @@ export default function Admin_KonfirmasiInvestasi({
-
+
{/* Title */}
@@ -209,17 +219,27 @@ export default function Admin_KonfirmasiInvestasi({
{/* Rincian Data */}
-
-
+
+
Dana Dibutuhkan
- Rp. {investasi.targetDana}
+
+ Rp.{" "}
+ {new Intl.NumberFormat("id-ID", {
+ maximumFractionDigits: 10,
+ }).format(+investasi.targetDana)}
+
Harga Per Lembar
- Rp.{investasi.hargaLembar}
+
+ Rp.{" "}
+ {new Intl.NumberFormat("id-ID", {
+ maximumFractionDigits: 10,
+ }).format(+investasi.hargaLembar)}{" "}
+
Jadwal Pembagian
@@ -239,7 +259,13 @@ export default function Admin_KonfirmasiInvestasi({
Total Lembar
- {investasi.totalLembar} lembar
+
+ {" "}
+ {new Intl.NumberFormat("id-ID", {
+ maximumFractionDigits: 10,
+ }).format(+investasi.totalLembar)}{" "}
+ lembar
+
Pembagian Deviden
@@ -249,11 +275,14 @@ export default function Admin_KonfirmasiInvestasi({
+
- {/* Note dan dokumen */}
-
-
- {/* Note */}
+
+
+ {/* Note */}
+ {!publish || investasi.MasterStatusInvestasi.id === "4" ? (
+ ""
+ ) : (
Note :
@@ -263,6 +292,18 @@ export default function Admin_KonfirmasiInvestasi({
kekurangnya.
+ )}
+ {publish &&
+ investasi.MasterStatusInvestasi.id === "3" &&
+ _.isEmpty(investasi.BeritaInvestasi) ? (
+
+ ) : (
+ ""
+ )}
+
+ {/* Note dan dokumen */}
+
+
{/* File file */}
{/* 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,
+ })
+ }
/>
>
);
}
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
-
-
-
-
- | Nama Proyek Investasi |
- Status |
- Catatan |
- Aksi |
-
-
- {tableBody}
-
-
-
+
+ router.push(RouterAdminInvestasi.main_investasi)}>
+
+
+
+
+
+
+ Reject
+
+
+
+
+ | Username |
+ Nama Proyek Investasi |
+ Catatan |
+
+ Aksi
+ |
+
+
+ {tableBody}
+
+
+
+
>
);
}
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
-
-
-
-
- | Nama Proyek Investasi |
- Status |
- Aksi |
-
-
- {tableBody}
-
-
-
+
+ router.push(RouterAdminInvestasi.main_investasi)}>
+
+
+
+
+
+ Review
+
+
+
+
+ | Username |
+ Nama Proyek Investasi |
+ File Prospektus |
+ Aksi |
+
+
+ {tableBody}
+
+
+
+
>
);
}
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
+
+
+
+
+ |
+ Username
+ |
+
+ Total
+ |
+
+
+
+ {totalInvestasiByUser.map((e) => (
+
+ |
+
+ {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
-
-
-
- | Username |
- Total |
-
-
-
- {totalInvestasiByUser.map((e) => (
-
- | {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 }) {
-
+
{/* {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={
-
+
{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({
}
onClick={() => router.push(RouterInvestasi.create)}
>
diff --git a/src/app_modules/investasi/proses_investasi/view.tsx b/src/app_modules/investasi/proses_investasi/view.tsx
index 307ed783..5463d7eb 100644
--- a/src/app_modules/investasi/proses_investasi/view.tsx
+++ b/src/app_modules/investasi/proses_investasi/view.tsx
@@ -49,29 +49,64 @@ export default function ProsesInvestasi({
);
const [transferValue, setTransferValue] = useAtom(gs_TransferValue);
- async function onBeli() {
- setTransferValue({
- ...transferValue,
- totalTransfer: total as any,
- lembarTerbeli: jumlah as any,
- });
- router.push(RouterInvestasi.metode_transfer + `${investasi.id}`);
+ // async function onBeli() {
+ // setTransferValue({
+ // ...transferValue,
+ // totalTransfer: total as any,
+ // lembarTerbeli: jumlah as any,
+ // });
+ // router.push(RouterInvestasi.metode_transfer + `${investasi.id}`);
+ // }
+ const date = new Date();
+ const randomId = date.getTime();
+
+ async function onProses() {
+
+ const body = {
+ transaction_details: {
+ order_id: "hipmi_" + `${randomId}`,
+ gross_amount: total,
+ },
+ item_details: [
+ {
+ id: "item_"+ `${randomId}`,
+ name: investasi.title,
+ price: Number(investasi.hargaLembar),
+ quantity: transferValue.lembarTerbeli,
+ merchant_name: "Transaksi Saham",
+ },
+ ],
+ customer_details: {
+ first_name: "",
+ email: "test@midtrans.com",
+ phone: "+628123456",
+ },
+ };
}
return (
<>
- {/* {JSON.stringify(transferValue, null, 2)} */}
+ {/* {JSON.stringify(investasi, null, 2)} */}
{/* Sisa Lembar Saham */}
Sisa Lembar Saham
- {investasi.totalLembar}
+
+ {new Intl.NumberFormat("id-ID", {
+ maximumFractionDigits: 10,
+ }).format(+investasi.totalLembar)}{" "}
+
{/* Harga perlembar saham */}
Harga Perlembar
- Rp.{investasi.hargaLembar}
+
+ Rp.{" "}
+ {new Intl.NumberFormat("id-ID", {
+ maximumFractionDigits: 10,
+ }).format(+investasi.hargaLembar)}{" "}
+
{/* Lembar saham */}
@@ -118,7 +153,8 @@ export default function ProsesInvestasi({
radius={50}
bg={Warna.biru}
onClick={() => {
- onBeli();
+ // onBeli();
+ onProses();
}}
>
Beli Saham
diff --git a/src/app_modules/investasi/proses_transaksi/layout.tsx b/src/app_modules/investasi/proses_transaksi/layout.tsx
new file mode 100644
index 00000000..2fff0683
--- /dev/null
+++ b/src/app_modules/investasi/proses_transaksi/layout.tsx
@@ -0,0 +1,19 @@
+"use client";
+
+import HeaderTamplate from "@/app_modules/component/header_tamplate";
+import { AppShell } from "@mantine/core";
+import React from "react";
+
+export default function LayoutProsesTransaksiInvestasi({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ return (
+ <>
+ }>
+ {children}
+
+ >
+ );
+}
diff --git a/src/app_modules/investasi/proses_transaksi/view.jsx b/src/app_modules/investasi/proses_transaksi/view.jsx
new file mode 100644
index 00000000..37e2c9d8
--- /dev/null
+++ b/src/app_modules/investasi/proses_transaksi/view.jsx
@@ -0,0 +1,218 @@
+"use client";
+
+import { Warna } from "@/app/lib/warna";
+import {
+ Box,
+ Group,
+ NumberInput,
+ Divider,
+ Center,
+ Button,
+ Text,
+} from "@mantine/core";
+import { useFocusTrap } from "@mantine/hooks";
+import { useRouter } from "next/navigation";
+import { MODEL_Investasi } from "../model/model_investasi";
+import { MODEL_User_profile } from "@/app_modules/home/models/user_profile";
+import { useEffect, useState } from "react";
+import getTokenTransaksi from "../fun/get_token_transaksi";
+import toast from "react-simple-toasts";
+import funUpdatePaymentInvestasi from "../fun/fun_update_payment";
+import { RouterInvestasi } from "@/app/lib/router_hipmi/router_investasi";
+import { useAtom } from "jotai";
+import { gs_investasiFooter } from "../g_state";
+import funUpdateInvestasi from "../fun/fun_update_investasi";
+
+export default function ProsesTransaksiInvestasi({ dataInvestasi, userLogin }) {
+ const router = useRouter();
+ const focusTrapRef = useFocusTrap();
+ const [investasi, setInvestasi] = useState(dataInvestasi);
+ const [user, setUser] = useState(userLogin);
+ const [maxPembelian, setMaxPembelian] = useState(
+ Number(investasi.sisaLembar)
+ );
+ const [total, setTotal] = useState(0);
+ const [jumlah, setJumlah] = useState(0);
+ const [hotmenu, setHotmenu] = useAtom(gs_investasiFooter);
+
+ // console.log(userLogin.id);
+ // console.log(investasi);
+
+ async function onProses() {
+ const body = {
+ // customer_details
+ authorId: userLogin.id,
+ customer_name: userLogin.username,
+ phone: userLogin.nomor,
+ // transaction_details
+ gross_amount: total,
+ // item_details
+ item_name: "Saham" + " " + investasi.title,
+ price: +investasi.hargaLembar,
+ quantity: jumlah,
+ merchant_name: investasi.author.username,
+ // investasi
+ investasiId: investasi.id,
+ };
+
+ await getTokenTransaksi(body).then(async (res) => {
+ if (res.token.status === 200) {
+ // console.log(res.token.value.token)
+ snap.pay(res.token.value.token, {
+ onSuccess: async function (result) {
+ console.log(result);
+ // console.log("success");
+ await funUpdatePaymentInvestasi(result, res.dataTransaksi.id).then(
+ async (resUp) => {
+ if (resUp.status === 200) {
+ const hasil =
+ investasi.sisaLembar - res.dataTransaksi.quantity;
+
+ const body = {
+ id: investasi.id,
+ sisaLembar: hasil,
+ };
+
+ await funUpdateInvestasi(body);
+ toast(res.message);
+ router.push(RouterInvestasi.main_transaksi);
+ setHotmenu(3);
+ } else {
+ toast(res.message);
+ }
+ }
+ );
+ },
+ onPending: async function (result) {
+ await funUpdatePaymentInvestasi(result, res.dataTransaksi.id);
+ router.push(RouterInvestasi.main_transaksi);
+
+ console.log("pending");
+ console.log(result);
+ },
+ onError: async function (result) {
+ await funUpdatePaymentInvestasi(result, res.dataTransaksi.id);
+ router.push(RouterInvestasi.main_transaksi);
+
+ console.log("error");
+ console.log(result);
+ },
+ onClose: async function (result) {
+ if (result === undefined) {
+ const data = {
+ status_code: "400",
+ };
+ await funUpdatePaymentInvestasi(data, res.dataTransaksi.id);
+ router.push(RouterInvestasi.main_transaksi);
+
+ // router.push(RouterPay.home);
+ console.log(data);
+ }
+ },
+ });
+ } else {
+ toast("Gagal Membuat Token");
+ }
+ });
+ }
+
+ useEffect(() => {
+ const midTransURl = "https://app.sandbox.midtrans.com/snap/snap.js";
+ let script = document.createElement("script");
+ const midTransClientKey = process.env.Client_KEY;
+
+ script.src = midTransURl;
+ script.setAttribute("data-client-key", midTransClientKey);
+ script.async = true;
+
+ document.body.appendChild(script);
+
+ return () => {
+ document.body.removeChild(script);
+ };
+ }, []);
+
+ return (
+ <>
+
+ {/* Sisa Lembar Saham */}
+
+ Sisa Lembar Saham
+
+ {new Intl.NumberFormat("id-ID", {
+ maximumFractionDigits: 10,
+ }).format(+investasi.sisaLembar)}{" "}
+
+
+
+ {/* Harga perlembar saham */}
+
+ Harga Perlembar
+
+ Rp.{" "}
+ {new Intl.NumberFormat("id-ID", {
+ maximumFractionDigits: 10,
+ }).format(+investasi.hargaLembar)}{" "}
+
+
+
+ {/* Lembar saham */}
+
+
+ Jumlah Pembelian
+
+ minimal pembelian 10 lembar
+
+ {/*
+ maximal pembelian {maxPembelian} lembar
+ */}
+
+ {
+ setTotal(val * +investasi.hargaLembar);
+ setJumlah(val);
+ // console.log(val);
+ }}
+ />
+
+
+
+
+
+
+ Total Harga
+
+
+ Rp.{" "}
+ {new Intl.NumberFormat("id-ID", {
+ maximumFractionDigits: 10,
+ }).format(total)}
+
+
+
+
+ {jumlah < 10 ? (
+
+ ) : (
+
+ )}
+
+
+ >
+ );
+}
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();