Progres dan Bursa Investasi

# fix:
- Bar progres berfungsi
- Urutan bursa investasi
# No issue
This commit is contained in:
2023-12-19 15:47:54 +08:00
parent 8ee62b875d
commit 414cf8f776
104 changed files with 1307 additions and 513 deletions

View File

@@ -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);

View File

@@ -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,
};
}
}

View File

@@ -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",

View File

@@ -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",
};
}
}
}

View 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;
}
}

View 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;
}
}

View 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;
}

View File

@@ -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
}
}

View File

@@ -30,6 +30,7 @@ export default async function getOneInvestasiById(id: string) {
MasterPembagianDeviden: true,
MasterPencarianInvestor: true,
MasterPeriodeDeviden: true,
MasterProgresInvestasi: true,
author: true,
countDown: true
},

View File

@@ -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,
},
});

View File

@@ -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,
};
}

View File

@@ -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,