Progres dan Bursa Investasi
# fix: - Bar progres berfungsi - Urutan bursa investasi # No issue
This commit is contained in:
@@ -7,11 +7,12 @@ import fs from "fs";
|
||||
import { revalidatePath } from "next/cache";
|
||||
import { RouterInvestasi } from "@/app/lib/router_hipmi/router_investasi";
|
||||
import { MODEL_Investasi } from "../model/model_investasi";
|
||||
import funUploadProspektusInvestasi from "./fun_upload_prospek";
|
||||
|
||||
export async function funCreateInvestasi(
|
||||
gamabar: FormData,
|
||||
filePdf: FormData,
|
||||
data: MODEL_Investasi
|
||||
data: MODEL_Investasi
|
||||
) {
|
||||
// Function upload gambar
|
||||
const file: any = gamabar.get("file");
|
||||
@@ -47,8 +48,8 @@ export async function funCreateInvestasi(
|
||||
totalLembar: data.totalLembar.toString(),
|
||||
sisaLembar: data.totalLembar.toString(),
|
||||
roi: data.roi.toString(),
|
||||
masterPembagianDevidenId: data.masterPeriodeDevidenId,
|
||||
masterPeriodeDevidenId: data.masterPembagianDevidenId,
|
||||
masterPembagianDevidenId: data.masterPembagianDevidenId,
|
||||
masterPeriodeDevidenId: data.masterPeriodeDevidenId,
|
||||
masterPencarianInvestorId: data.masterPencarianInvestorId,
|
||||
imagesId: uploadImage.id,
|
||||
masterStatusInvestasiId: "2",
|
||||
@@ -62,26 +63,31 @@ export async function funCreateInvestasi(
|
||||
};
|
||||
|
||||
// File upload function
|
||||
const dataPdf: any = filePdf.get("file");
|
||||
const pdfName = dataPdf.name;
|
||||
const pdfExt = _.lowerCase(dataPdf.name.split(".").pop());
|
||||
const pdfRandomName = v4(pdfName) + "." + pdfExt;
|
||||
// const dataPdf: any = filePdf.get("file");
|
||||
// const pdfName = dataPdf.name;
|
||||
// const pdfExt = _.lowerCase(dataPdf.name.split(".").pop());
|
||||
// const pdfRandomName = v4(pdfName) + "." + pdfExt;
|
||||
|
||||
const uploadFile = await prisma.prospektusInvestasi.create({
|
||||
data: {
|
||||
investasiId: createInvest.id,
|
||||
url: pdfRandomName,
|
||||
},
|
||||
select: {
|
||||
id: true,
|
||||
url: true,
|
||||
},
|
||||
});
|
||||
// const uploadFile = await prisma.prospektusInvestasi.create({
|
||||
// data: {
|
||||
// investasiId: createInvest.id,
|
||||
// url: pdfRandomName,
|
||||
// },
|
||||
// select: {
|
||||
// id: true,
|
||||
// url: true,
|
||||
// },
|
||||
// });
|
||||
|
||||
// if (!uploadFile) return { status: 400, message: "File Kosong" };
|
||||
// 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);
|
||||
const updloadPDF = await funUploadProspektusInvestasi(
|
||||
filePdf,
|
||||
createInvest.id
|
||||
);
|
||||
// console.log(updloadPDF);
|
||||
|
||||
revalidatePath(RouterInvestasi.main_porto);
|
||||
|
||||
|
||||
@@ -6,28 +6,64 @@ 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: {
|
||||
MasterStatusInvestasi: {
|
||||
connect: {
|
||||
id: val,
|
||||
export default async function funGantiStatusInvestasi(
|
||||
id: string,
|
||||
statusInves: string,
|
||||
statusProgres?: string
|
||||
) {
|
||||
console.log(statusProgres)
|
||||
if (statusProgres === '1') {
|
||||
const publishCD = new Date();
|
||||
const data = await prisma.investasi.update({
|
||||
where: {
|
||||
id: id,
|
||||
},
|
||||
data: {
|
||||
MasterStatusInvestasi: {
|
||||
connect: {
|
||||
id: statusInves,
|
||||
},
|
||||
},
|
||||
countDown: publishCD,
|
||||
MasterProgresInvestasi: {
|
||||
connect: {
|
||||
id: statusProgres,
|
||||
},
|
||||
},
|
||||
},
|
||||
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,
|
||||
};
|
||||
return {
|
||||
status: 200,
|
||||
};
|
||||
} else {
|
||||
const publishCD = new Date();
|
||||
const data = await prisma.investasi.update({
|
||||
where: {
|
||||
id: id,
|
||||
},
|
||||
data: {
|
||||
MasterStatusInvestasi: {
|
||||
connect: {
|
||||
id: statusInves,
|
||||
},
|
||||
},
|
||||
countDown: publishCD,
|
||||
},
|
||||
});
|
||||
|
||||
if (!data) return { status: 400 };
|
||||
|
||||
revalidatePath(RouterInvestasi.portofolio);
|
||||
revalidatePath(RouterAdminInvestasi.main_investasi);
|
||||
|
||||
return {
|
||||
status: 200,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,20 +2,67 @@
|
||||
|
||||
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 default async function funUpdateInvestasi(
|
||||
dataLembarSaham: MODEL_Investasi,
|
||||
dataInvestasi: MODEL_Investasi
|
||||
) {
|
||||
|
||||
|
||||
const investasi = dataInvestasi;
|
||||
// console.log(investasi)
|
||||
const progres =
|
||||
((+investasi.totalLembar - +dataLembarSaham.sisaLembar) /
|
||||
+investasi.totalLembar) *
|
||||
100;
|
||||
const jumlahTerbeli = +investasi.totalLembar - +dataLembarSaham.sisaLembar;
|
||||
|
||||
export default async function funUpdateInvestasi(data: MODEL_Investasi) {
|
||||
// console.log(data)
|
||||
const res = await prisma.investasi.update({
|
||||
where: {
|
||||
id: data.id,
|
||||
id: dataLembarSaham.id,
|
||||
},
|
||||
data: {
|
||||
sisaLembar: "" + data.sisaLembar,
|
||||
|
||||
sisaLembar: "" + dataLembarSaham.sisaLembar,
|
||||
progress: "" + progres,
|
||||
lembarTerbeli: "" + jumlahTerbeli,
|
||||
},
|
||||
});
|
||||
|
||||
if (!res) return { status: 400, message: "Gagal update" };
|
||||
|
||||
if (res.progress === "100") {
|
||||
const updateStatusProgres = await prisma.investasi.update({
|
||||
where: {
|
||||
id: res.id,
|
||||
},
|
||||
data: {
|
||||
masterProgresInvestasiId: "2",
|
||||
},
|
||||
});
|
||||
|
||||
// console.log(updateStatusProgres)
|
||||
|
||||
try {
|
||||
await fetch(
|
||||
`https://wa.wibudev.com/code?nom=${investasi.author.nomor}&text=Selamat !! , Project Investasi ${investasi.title} Anda Sukses`
|
||||
);
|
||||
return {
|
||||
status: 200,
|
||||
message: "Berhasil, kirim pesan ke Author"
|
||||
}
|
||||
} catch (error) {
|
||||
return {
|
||||
status: 400,
|
||||
message: "Tidak Terkirim ke Author"
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
revalidatePath(RouterInvestasi.main);
|
||||
|
||||
return {
|
||||
status: 200,
|
||||
message: "Update berhasil",
|
||||
|
||||
@@ -20,17 +20,39 @@ export interface Model_Midtrans_Success {
|
||||
finish_redirect_url: string;
|
||||
}
|
||||
|
||||
interface Model_Body {
|
||||
authorId: string;
|
||||
customer_name: string;
|
||||
phone: string;
|
||||
gross_amount: number;
|
||||
item_name: string;
|
||||
price: number;
|
||||
quantity: number;
|
||||
merchant_name: string;
|
||||
investasiId: string;
|
||||
}
|
||||
|
||||
interface Model_Token {
|
||||
token: string;
|
||||
redirect_url: string;
|
||||
}
|
||||
|
||||
export default async function funUpdatePaymentInvestasi(
|
||||
data: Model_Midtrans_Success,
|
||||
idPay: any,
|
||||
body: Model_Body,
|
||||
token: Model_Token
|
||||
) {
|
||||
console.log(data)
|
||||
if (data.status_code === "200") {
|
||||
const res = await prisma.transaksiInvestasi.update({
|
||||
where: {
|
||||
id: idPay,
|
||||
},
|
||||
const res = await prisma.transaksiInvestasi.create({
|
||||
data: {
|
||||
gross_amount: "" + body.gross_amount,
|
||||
merchant_name: body.merchant_name,
|
||||
price: "" + body.price,
|
||||
quantity: "" + body.quantity,
|
||||
token: token.token,
|
||||
redirect_url: token.redirect_url,
|
||||
authorId: body.authorId,
|
||||
investasiId: body.investasiId,
|
||||
status_code: data.status_code,
|
||||
status_message: data.status_message,
|
||||
order_id: data.order_id,
|
||||
@@ -48,49 +70,12 @@ export default async function funUpdatePaymentInvestasi(
|
||||
|
||||
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)
|
||||
revalidatePath(RouterInvestasi.main_transaksi);
|
||||
|
||||
return {
|
||||
status: 200,
|
||||
message: "Process",
|
||||
message: "Berhasil",
|
||||
data: res,
|
||||
};
|
||||
} 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",
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
20
src/app_modules/investasi/fun/fun_update_progres_persen.ts
Normal file
20
src/app_modules/investasi/fun/fun_update_progres_persen.ts
Normal file
@@ -0,0 +1,20 @@
|
||||
"use server";
|
||||
import { MODEL_Investasi } from "../model/model_investasi";
|
||||
import moment from "moment";
|
||||
import prisma from "@/app/lib/prisma";
|
||||
|
||||
export default async function funUpadteProgresPersenInvestasi(data: MODEL_Investasi) {
|
||||
// console.log(data)
|
||||
if (data.MasterProgresInvestasi.id !== "2" && data.progress === "100") {
|
||||
const res = await prisma.investasi.update({
|
||||
where: {
|
||||
id: data.id,
|
||||
},
|
||||
data: {
|
||||
masterProgresInvestasiId: "2",
|
||||
},
|
||||
});
|
||||
// console.log(res);
|
||||
return res;
|
||||
}
|
||||
}
|
||||
23
src/app_modules/investasi/fun/fun_update_progres_waktu.ts
Normal file
23
src/app_modules/investasi/fun/fun_update_progres_waktu.ts
Normal file
@@ -0,0 +1,23 @@
|
||||
"use server";
|
||||
import { MODEL_Investasi } from "../model/model_investasi";
|
||||
import moment from "moment";
|
||||
import prisma from "@/app/lib/prisma";
|
||||
|
||||
export default async function funUpadteProgresWaktuInvestasi(data: MODEL_Investasi) {
|
||||
|
||||
const pencarian = data.MasterPencarianInvestor.name;
|
||||
const countD = moment(new Date()).diff(new Date(data.countDown), "days");
|
||||
|
||||
if (+pencarian - +countD <= 0) {
|
||||
const res = await prisma.investasi.update({
|
||||
where: {
|
||||
id: data.id,
|
||||
},
|
||||
data: {
|
||||
masterProgresInvestasiId: "3",
|
||||
},
|
||||
});
|
||||
// console.log(res);
|
||||
return res;
|
||||
}
|
||||
}
|
||||
45
src/app_modules/investasi/fun/get_list_all_investasi.ts
Normal file
45
src/app_modules/investasi/fun/get_list_all_investasi.ts
Normal file
@@ -0,0 +1,45 @@
|
||||
"use server";
|
||||
|
||||
import prisma from "@/app/lib/prisma";
|
||||
|
||||
export default async function getAllDataPublishInvestasi() {
|
||||
const data = await prisma.investasi.findMany({
|
||||
orderBy: [
|
||||
{
|
||||
masterProgresInvestasiId: "asc",
|
||||
},
|
||||
{
|
||||
countDown: "desc",
|
||||
},
|
||||
],
|
||||
where: {
|
||||
MasterStatusInvestasi: {
|
||||
name: {
|
||||
equals: "Publish",
|
||||
},
|
||||
},
|
||||
},
|
||||
select: {
|
||||
id: true,
|
||||
title: true,
|
||||
authorId: true,
|
||||
hargaLembar: true,
|
||||
targetDana: true,
|
||||
totalLembar: true,
|
||||
sisaLembar: true,
|
||||
progress: true,
|
||||
roi: true,
|
||||
active: true,
|
||||
createdAt: true,
|
||||
updatedAt: true,
|
||||
imagesId: true,
|
||||
ProspektusInvestasi: true,
|
||||
MasterPembagianDeviden: true,
|
||||
MasterPencarianInvestor: true,
|
||||
MasterPeriodeDeviden: true,
|
||||
MasterProgresInvestasi: true,
|
||||
countDown: true,
|
||||
},
|
||||
});
|
||||
return data;
|
||||
}
|
||||
@@ -1,46 +1,142 @@
|
||||
"use server";
|
||||
|
||||
import prisma from "@/app/lib/prisma";
|
||||
/**
|
||||
*
|
||||
* @param status progres > 1 - 3
|
||||
* @type string
|
||||
* @returns data publish menurut status progresnya
|
||||
*/
|
||||
export async function getListAllPublish(status : string) {
|
||||
|
||||
export async function getListAllPublish() {
|
||||
const data = await prisma.investasi.findMany({
|
||||
orderBy: {
|
||||
countDown: "asc",
|
||||
},
|
||||
where: {
|
||||
MasterStatusInvestasi: {
|
||||
name: {
|
||||
equals: "Publish",
|
||||
if (status === "1") {
|
||||
const data = await prisma.investasi.findMany({
|
||||
orderBy: {
|
||||
countDown: "asc",
|
||||
},
|
||||
where: {
|
||||
MasterStatusInvestasi: {
|
||||
name: {
|
||||
equals: "Publish",
|
||||
},
|
||||
},
|
||||
AND: {
|
||||
MasterProgresInvestasi: {
|
||||
id: "1",
|
||||
},
|
||||
},
|
||||
},
|
||||
AND: {
|
||||
select: {
|
||||
id: true,
|
||||
title: true,
|
||||
authorId: true,
|
||||
hargaLembar: true,
|
||||
targetDana: true,
|
||||
totalLembar: true,
|
||||
sisaLembar: true,
|
||||
progress: true,
|
||||
roi: true,
|
||||
active: true,
|
||||
createdAt: true,
|
||||
updatedAt: true,
|
||||
imagesId: true,
|
||||
// MasterStatusInvestasi: true,
|
||||
// BeritaInvestasi: true,
|
||||
// DokumenInvestasi: true,
|
||||
ProspektusInvestasi: true,
|
||||
MasterPembagianDeviden: true,
|
||||
MasterPencarianInvestor: true,
|
||||
MasterPeriodeDeviden: true,
|
||||
MasterProgresInvestasi: true,
|
||||
countDown: true,
|
||||
},
|
||||
},
|
||||
select: {
|
||||
id: true,
|
||||
title: true,
|
||||
authorId: true,
|
||||
hargaLembar: true,
|
||||
targetDana: true,
|
||||
totalLembar: true,
|
||||
sisaLembar: true,
|
||||
progress: true,
|
||||
roi: true,
|
||||
active: true,
|
||||
createdAt: true,
|
||||
updatedAt: true,
|
||||
imagesId: true,
|
||||
MasterStatusInvestasi: true,
|
||||
BeritaInvestasi: true,
|
||||
DokumenInvestasi: true,
|
||||
ProspektusInvestasi: true,
|
||||
MasterPembagianDeviden: true,
|
||||
MasterPencarianInvestor: true,
|
||||
MasterPeriodeDeviden: true,
|
||||
countDown: true,
|
||||
},
|
||||
});
|
||||
|
||||
return data;
|
||||
});
|
||||
return data;
|
||||
}
|
||||
if (status === "2") {
|
||||
const data = await prisma.investasi.findMany({
|
||||
orderBy: {
|
||||
masterPencarianInvestorId: "asc",
|
||||
},
|
||||
where: {
|
||||
MasterStatusInvestasi: {
|
||||
name: {
|
||||
equals: "Publish",
|
||||
},
|
||||
},
|
||||
AND: {
|
||||
MasterProgresInvestasi: {
|
||||
id: "2",
|
||||
},
|
||||
},
|
||||
},
|
||||
select: {
|
||||
id: true,
|
||||
title: true,
|
||||
authorId: true,
|
||||
hargaLembar: true,
|
||||
targetDana: true,
|
||||
totalLembar: true,
|
||||
sisaLembar: true,
|
||||
progress: true,
|
||||
roi: true,
|
||||
active: true,
|
||||
createdAt: true,
|
||||
updatedAt: true,
|
||||
imagesId: true,
|
||||
// MasterStatusInvestasi: true,
|
||||
// BeritaInvestasi: true,
|
||||
// DokumenInvestasi: true,
|
||||
ProspektusInvestasi: true,
|
||||
MasterPembagianDeviden: true,
|
||||
MasterPencarianInvestor: true,
|
||||
MasterPeriodeDeviden: true,
|
||||
countDown: true,
|
||||
},
|
||||
});
|
||||
return data
|
||||
}
|
||||
if (status === "3") {
|
||||
const data = await prisma.investasi.findMany({
|
||||
orderBy: {
|
||||
masterPencarianInvestorId: "asc",
|
||||
},
|
||||
where: {
|
||||
MasterStatusInvestasi: {
|
||||
name: {
|
||||
equals: "Publish",
|
||||
},
|
||||
},
|
||||
AND: {
|
||||
MasterProgresInvestasi: {
|
||||
id: "3",
|
||||
},
|
||||
},
|
||||
},
|
||||
select: {
|
||||
id: true,
|
||||
title: true,
|
||||
authorId: true,
|
||||
hargaLembar: true,
|
||||
targetDana: true,
|
||||
totalLembar: true,
|
||||
sisaLembar: true,
|
||||
progress: true,
|
||||
roi: true,
|
||||
active: true,
|
||||
createdAt: true,
|
||||
updatedAt: true,
|
||||
imagesId: true,
|
||||
// MasterStatusInvestasi: true,
|
||||
// BeritaInvestasi: true,
|
||||
// DokumenInvestasi: true,
|
||||
ProspektusInvestasi: true,
|
||||
MasterPembagianDeviden: true,
|
||||
MasterPencarianInvestor: true,
|
||||
MasterPeriodeDeviden: true,
|
||||
countDown: true,
|
||||
},
|
||||
});
|
||||
return data
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,6 +30,7 @@ export default async function getOneInvestasiById(id: string) {
|
||||
MasterPembagianDeviden: true,
|
||||
MasterPencarianInvestor: true,
|
||||
MasterPeriodeDeviden: true,
|
||||
MasterProgresInvestasi: true,
|
||||
author: true,
|
||||
countDown: true
|
||||
},
|
||||
|
||||
@@ -6,15 +6,18 @@ export default async function getOneTransaksiBerhasilByIdInvestasi(
|
||||
idTransaksi: string
|
||||
) {
|
||||
const data = await prisma.transaksiInvestasi.findUnique({
|
||||
|
||||
where: {
|
||||
id: idTransaksi,
|
||||
},
|
||||
select: {
|
||||
Investasi: {
|
||||
select: {
|
||||
|
||||
author: true,
|
||||
author: {
|
||||
select: {
|
||||
nomor: true,
|
||||
username: true,
|
||||
}
|
||||
},
|
||||
BeritaInvestasi: true,
|
||||
DokumenInvestasi: true,
|
||||
ProspektusInvestasi: true,
|
||||
@@ -35,6 +38,10 @@ export default async function getOneTransaksiBerhasilByIdInvestasi(
|
||||
id: true,
|
||||
gross_amount: true,
|
||||
quantity: true,
|
||||
transaction_id: true,
|
||||
status_message: true,
|
||||
payment_type: true,
|
||||
namaBank: true,
|
||||
},
|
||||
});
|
||||
|
||||
@@ -33,7 +33,6 @@ export default async function getTokenTransaksi(data) {
|
||||
customer_details: {
|
||||
first_name: body.customer_name,
|
||||
phone: body.phone,
|
||||
// email: "test@midtrans.com",
|
||||
},
|
||||
enabled_payments: [
|
||||
"permata_va",
|
||||
@@ -45,7 +44,7 @@ export default async function getTokenTransaksi(data) {
|
||||
"shopeepay",
|
||||
],
|
||||
bca_va: {
|
||||
va_number: "82340374411111",
|
||||
va_number: "7725699636222",
|
||||
sub_company_code: "00000",
|
||||
free_text: {
|
||||
inquiry: [
|
||||
@@ -81,25 +80,15 @@ export default async function getTokenTransaksi(data) {
|
||||
}
|
||||
});
|
||||
|
||||
// console.log(token)
|
||||
|
||||
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,
|
||||
// dataTransaksi: newTransaksi,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -11,6 +11,10 @@ export default async function getTransaksiByIdInvestasi(id: string) {
|
||||
id: true,
|
||||
namaBank: true,
|
||||
nomorRekening: true,
|
||||
transaction_id: true,
|
||||
quantity: true,
|
||||
gross_amount: true,
|
||||
status_message: true,
|
||||
active: true,
|
||||
createdAt: true,
|
||||
updatedAt: true,
|
||||
|
||||
Reference in New Issue
Block a user