Fitur transaksi

# feat:
- Load data sesuai dengan status
- Countdown setelah pembelian
### issue: menyambungkan ke xendit
This commit is contained in:
2023-11-27 09:12:37 +08:00
parent 812f47fbf9
commit 821ec71c34
21 changed files with 556 additions and 292 deletions

View File

@@ -0,0 +1,33 @@
"use server";
import moment from "moment";
import { MODEL_Transaksi_Investasi } from "../model/model_investasi";
import funGantiStatusTransaksi_Investasi from "./fun_ganti_status_transaksi";
export default async function funCekSisaWaktuTransaksiInvestasi(
data: MODEL_Transaksi_Investasi[]
) {
const listData = data;
for (let e of listData) {
cekWaktu(e)
}
async function cekWaktu(data: MODEL_Transaksi_Investasi) {
// console.log(data)
const selesai = moment(data.createdAt).add(1, "days").format();
// let durasi = moment.duration(moment(selesai).diff(new Date()));
const skrng = moment(new Date());
const sisaWaktu = moment(selesai).diff(skrng);
if (sisaWaktu <= 0) {
await funGantiStatusTransaksi_Investasi(data.id, "4")
.then((res) => {
// console.log(res.data)
});
}
}
}

View File

@@ -0,0 +1,30 @@
"use server";
import prisma from "@/app/lib/prisma";
import moment from "moment";
import funGantiStatusTransaksi_Investasi from "./fun_ganti_status_transaksi";
import { MODEL_Transaksi_Investasi } from "../model/model_investasi";
export default async function funCountDown(data: MODEL_Transaksi_Investasi) {
// const res = await prisma.transaksiInvestasi.findMany({
// where: {
// id: data.id,
// },
// });
// if (!res) return { status: 400 };
// const selesai = moment(data.createdAt).add(1, "days").format();
// let durasi = moment.duration(moment(selesai).diff(new Date()));
// const timer = setInterval(() => {
// durasi = moment.duration(+durasi - 1000, "milliseconds");
// // console.log(d.days(), "=", d.hours(), d.minutes(), d.seconds());
// if (durasi.hours() <= 0 && durasi.minutes() <= 0 && durasi.seconds() <= 0) {
// funGantiStatusTransaksi_Investasi(data.id, "4");
// clearInterval(timer);
// return {
// status: 200,
// };
// }
// }, 1000);
}

View File

@@ -0,0 +1,38 @@
"use server";
import prisma from "@/app/lib/prisma";
import { RouterInvestasi } from "@/app/lib/router_hipmi/router_investasi";
import { revalidatePath } from "next/cache";
export default async function funGantiStatusTransaksi_Investasi(
transaksiId: string,
status: string
) {
// console.log(transaksiId, "hehe", status)
const data = await prisma.transaksiInvestasi.update({
where: {
id: transaksiId,
},
data: {
masterStatusTransaksiInvestasiId: status,
},
select: {
id: true,
namaBank: true,
totalTransfer: true,
Investasi: true,
MasterStatusTransaksiInvestasi: true
}
});
if (!data) return { status: 400, message: "Status Gagal Diubah" };
revalidatePath(RouterInvestasi.main_transaksi)
return {
data: data,
status: 200,
message: "Status Diubah",
};
}

View File

@@ -0,0 +1,77 @@
"use server";
import prisma from "@/app/lib/prisma";
import moment from "moment";
import { MODEL_Transaksi_Investasi } from "../model/model_investasi";
import funGantiStatusTransaksi_Investasi from "./fun_ganti_status_transaksi";
export default async function getListAllTransaksiById_Investasi(
userId: string
) {
const data = await prisma.transaksiInvestasi.findMany({
orderBy: {
updatedAt: "desc",
},
where: {
authorId: userId,
},
select: {
id: true,
namaBank: true,
nomorRekening: true,
totalTransfer: true,
lembarTerbeli: true,
active: true,
createdAt: true,
updatedAt: true,
authorId: true,
masterStatusTransaksiInvestasiId: true,
MasterStatusTransaksiInvestasi: true,
investasiId: true,
Investasi: true,
// Author:true,
},
});
for (let e of data) {
cekWaktu(e as any)
}
async function cekWaktu(data: MODEL_Transaksi_Investasi) {
// console.log(data)
const selesai = moment(data.createdAt).add(1, "days").format();
const skrng = moment(new Date());
const sisaWaktu = moment(selesai).diff(skrng);
if (sisaWaktu <= 0) {
await funGantiStatusTransaksi_Investasi(data.id, "4")
}
}
const dataBaru = await prisma.transaksiInvestasi.findMany({
orderBy: {
createdAt: "desc",
},
where: {
authorId: userId,
},
select: {
id: true,
namaBank: true,
nomorRekening: true,
totalTransfer: true,
lembarTerbeli: true,
active: true,
createdAt: true,
updatedAt: true,
authorId: true,
masterStatusTransaksiInvestasiId: true,
MasterStatusTransaksiInvestasi: true,
investasiId: true,
Investasi: true,
// Author:true,
},
});
return dataBaru
}

View File

@@ -2,7 +2,7 @@
import prisma from "@/app/lib/prisma"
export default async function getTransaksiInvestasi(id: string) {
export default async function getTransaksiByIdInvestasi(id: string) {
const data = await prisma.transaksiInvestasi.findUnique({
where: {
id: id

View File

@@ -0,0 +1,8 @@
"use server"
import prisma from "@/app/lib/prisma"
export default async function getMaster_StatusTransaksiInvestasi() {
const data = await prisma.masterStatusTransaksiInvestasi.findMany()
return data
}