Donasi Info Admni

# feat
- info admin
- hapus admin
## Issue: Loading data belum untuk versi alfa
This commit is contained in:
2024-01-15 11:29:39 +08:00
parent 4af3f74a97
commit 01da30bdb5
128 changed files with 2316 additions and 507 deletions

View File

@@ -19,6 +19,8 @@ export async function Donasi_funCreate(req: MODEL_DONASI, file: FormData) {
donasiMaster_KategoriId: body.donasiMaster_KategoriId,
imagesId: body.imagesId,
authorId: body.authorId,
namaBank: body.namaBank,
rekening: body.rekening
},
});

View File

@@ -12,39 +12,55 @@ export async function Donasi_funCreateKabar(
req: MODEL_DONASI_KABAR | any,
file: FormData
) {
const dataImage: any = file.get("file");
const fileName = dataImage.name;
const fileExtension = _.lowerCase(dataImage.name.split(".").pop());
const fRandomName = v4(fileName) + "." + fileExtension;
const upload = await prisma.images.create({
data: {
url: fRandomName,
label: "DONASI_KABAR"
},
select: {
id: true,
url: true,
},
});
if (!upload) return { status: 400, message: "Gagal upload gambar" };
const uploadFolder = Buffer.from(await dataImage.arrayBuffer());
fs.writeFileSync(`./public/donasi/kabar/${upload.url}`, uploadFolder);
const create = await prisma.donasi_Kabar.create({
data: {
title: req.title,
deskripsi: req.deskripsi,
donasiId: req.donasiId,
imagesId: upload.id
},
});
if(!create) return {status: 400, message: "Gagal membuat data"}
revalidatePath("/dev/donasi/list_kabar")
return{
status: 200,
message: "Berhasil disimpan"
if (!create) return { status: 400, message: "Gagal membuat data" };
const dataImage: any = file.get("file");
if (dataImage !== "null") {
const fileName = dataImage.name;
const fileExtension = _.lowerCase(dataImage.name.split(".").pop());
const fRandomName = v4(fileName) + "." + fileExtension;
const upload = await prisma.images.create({
data: {
url: fRandomName,
label: "DONASI_KABAR",
},
select: {
id: true,
url: true,
},
});
if (!upload) return { status: 400, message: "Gagal upload gambar" };
const uploadFolder = Buffer.from(await dataImage.arrayBuffer());
fs.writeFileSync(`./public/donasi/kabar/${upload.url}`, uploadFolder);
const updateKabar = await prisma.donasi_Kabar.update({
where: {
id: create.id,
},
data: {
imagesId: upload.id,
},
});
if (!updateKabar) return { status: 400, message: "Gagal upload gambar" };
}
revalidatePath("/dev/donasi/list_kabar");
return {
status: 200,
message: "Berhasil disimpan",
kabarId: create.id
};
}

View File

@@ -0,0 +1,41 @@
"use server";
import prisma from "@/app/lib/prisma";
import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi";
import _ from "lodash";
import { revalidatePath } from "next/cache";
export async function Donasi_funCreateNotif(donasiId: string, kabarId: string) {
const dataDonatur = await prisma.donasi_Invoice.findMany({
where: {
donasiId: donasiId,
},
select: {
id: true,
authorId: true,
},
});
const group = _.map(_.groupBy(dataDonatur, "authorId"), (v: any) => ({
authorId: v[0].authorId,
}));
// console.log(donasiId,dataDonatur, group);
const createNotif = group.map(
async (e) =>
await prisma.donasi_Notif.create({
data: {
userId: e.authorId,
donasi_KabarId: kabarId,
},
})
);
if (!createNotif) return { status: 400, message: "Gagal membuat notif" };
revalidatePath(RouterDonasi.main_beranda);
return {
status: 200,
message: "Notif terkirim",
};
}

View File

@@ -0,0 +1,97 @@
"use server";
import prisma from "@/app/lib/prisma";
import fs from "fs";
export async function Donasi_funDeleteDonasiById(donasiId: string) {
const findDonasi = await prisma.donasi.findFirst({
where: {
id: donasiId,
},
select: {
imagesId: true,
CeritaDonasi: {
select: {
id: true,
imagesId: true,
},
},
},
});
if (!findDonasi) return { status: 400, message: "Data tidak ditemukan" };
// const findGambar = await prisma.images.findFirst({
// where: {
// id: findDonasi.imagesId as any,
// },
// select: {
// url: true,
// },
// });
// const findGambarCerita = await prisma.images.findFirst({
// where: {
// id: findDonasi.CeritaDonasi?.imagesId as any,
// },
// select: {
// url: true,
// },
// });
if (findDonasi.imagesId !== null) {
const delGambar = await prisma.images.delete({
where: {
id: findDonasi.imagesId as any,
},
select: {
url: true,
},
});
const delFromFileGambar = fs.unlinkSync(
`./public/donasi/image/${delGambar?.url}`
);
if (delFromFileGambar as any)
return { status: 400, message: "Gagal hapus gambar" };
}
if (findDonasi.CeritaDonasi?.imagesId !== null) {
const delGambarCerita = await prisma.images.delete({
where: {
id: findDonasi.CeritaDonasi?.imagesId as any,
},
select: {
url: true,
},
});
const delFromFileGambarCerita = fs.unlinkSync(
`./public/donasi/image_cerita/${delGambarCerita?.url}`
);
if (delFromFileGambarCerita as any)
return { status: 400, message: "Gagal hapus gambar cerita" };
}
const delCerita = await prisma.donasi_Cerita.delete({
where: {
id: findDonasi.CeritaDonasi?.id,
},
});
if(!delCerita) return {status: 400, message: "Gagal hapus data cerita"}
const delDonasi = await prisma.donasi.delete({
where: {
id: donasiId,
},
});
if (!delDonasi) return { status: 400, message: "Gagal hapus data donasi" };
return {
status: 200,
message: "Berhasil hapus",
};
}

View File

@@ -5,7 +5,7 @@ import fs from "fs";
import { revalidatePath } from "next/cache";
export async function Donasi_funDeleteKabar(kabarId: string) {
const del = await prisma.donasi_Kabar.delete({
const dataKabar = await prisma.donasi_Kabar.findFirst({
where: {
id: kabarId,
},
@@ -13,21 +13,37 @@ export async function Donasi_funDeleteKabar(kabarId: string) {
imagesId: true,
},
});
if (!del) return { status: 400, message: "Gagal hapus data" };
const delImg = await prisma.images.delete({
if (dataKabar?.imagesId !== null) {
const delImg = await prisma.images.delete({
where: {
id: dataKabar?.imagesId,
},
select: {
url: true,
},
});
if (!delImg) return { status: 400, message: "Gagal hapus gambar" };
if (delImg) fs.unlinkSync(`./public/donasi/kabar/${delImg.url}`);
revalidatePath("/dev/donasi/list_kabar");
}
const delNotif = await prisma.donasi_Notif.deleteMany({
where: {
id: del.imagesId as any,
},
select: {
url: true,
donasi_KabarId: kabarId,
},
});
if (!delNotif) return { status: 400, message: "Gagal hapus notif" };
if (!delImg) return { status: 400, message: "Gagal hapus gambar" };
if (delImg) fs.unlinkSync(`./public/donasi/kabar/${delImg.url}`);
revalidatePath("/dev/donasi/list_kabar");
const del = await prisma.donasi_Kabar.delete({
where: {
id: kabarId,
},
});
if (!del) return { status: 400, message: "Gagal hapus data" };
revalidatePath("/dev/donasi/notif_page");
return {
status: 200,
message: "Berhasl hapus",

View File

@@ -0,0 +1,22 @@
"use server";
import prisma from "@/app/lib/prisma";
export async function Donasi_findDonaturByTokenId(
donasiId: string,
userId: string
) {
const data = await prisma.donasi_Invoice.count({
where: {
donasiId: donasiId,
authorId: userId,
},
});
if (data > 0) {
return true;
} else {
return false;
}
}

View File

@@ -0,0 +1,15 @@
"use server"
import prisma from "@/app/lib/prisma"
export async function Donasi_getListPencairanDanaById(donasiId:string) {
const data = await prisma.donasi_PencairanDana.findMany({
where: {
donasiId: donasiId
}
})
// console.log(data)
return data
}

View File

@@ -0,0 +1,32 @@
"use server";
import prisma from "@/app/lib/prisma";
export async function Donasi_getNotifByUserId(userId: string) {
const dataInvoice = await prisma.donasi_Invoice.findFirst({
where: {
authorId: userId
}
})
// console.log(dataInvoice)
// return null
const dataNotif = await prisma.donasi_Notif.findMany({
orderBy: {
createdAt: "desc"
},
where: {
userId: userId,
},
select: {
id: true,
isRead: true,
active: true,
createdAt: true,
donasi_KabarId: true,
Donasi_Kabar: true,
},
});
return dataNotif;
}

View File

@@ -20,6 +20,8 @@ export async function Donasi_getOneById(donasiId: string) {
progres: true,
terkumpul: true,
imagesId: true,
namaBank: true,
rekening: true,
donasiMaster_KategoriId: true,
donasiMaster_DurasiId: true,
donasiMaster_StatusDonasiId: true,

View File

@@ -12,6 +12,7 @@ export async function Donasi_getOneInvoiceById(invoiceId: string) {
id: true,
nominal: true,
donasiId: true,
createdAt: true,
donasiMaster_BankId: true,
donasiMaster_StatusInvoiceId: true,
Donasi: {

View File

@@ -0,0 +1,19 @@
"use server";
import prisma from "@/app/lib/prisma";
export async function Donasi_getTotalPencairanDanaById(donasiId: string) {
const data = await prisma.donasi.findFirst({
where: {
id: donasiId,
},
select: {
id: true,
totalPencairan: true,
akumulasiPencairan: true,
authorId: true
},
});
return data;
}

View File

@@ -0,0 +1,47 @@
"use server";
import prisma from "@/app/lib/prisma";
import _ from "lodash";
import { v4 } from "uuid";
import fs from "fs";
export async function Donasi_funUploadBuktiTransferById(
invoiceId: string,
file: FormData
) {
// console.log(file);
const gambar: any = file.get("file");
const fileName = gambar.name;
const fileExtension = _.lowerCase(gambar.name.split(".").pop());
const fileRandomName = v4(fileName) + "." + fileExtension;
const upload = await prisma.images.create({
data: {
url: fileRandomName,
label: "DONASI_INVOICE"
},
select: {
id: true,
url: true,
},
});
if (!upload) return { status: 400, message: "Gagal upload gambar" };
const uploadFolder = Buffer.from(await gambar.arrayBuffer());
fs.writeFileSync(`./public/donasi/invoice/${upload.url}`, uploadFolder);
const updateFile = await prisma.donasi_Invoice.update({
where: {
id: invoiceId,
},
data: {
imagesId: upload.id,
},
});
if (!updateFile) return { status: 400, message: "Gagal update gambar" };
return {
status: 200,
message: "Berhasil upload",
};
}

View File

@@ -0,0 +1,21 @@
"use server";
import prisma from "@/app/lib/prisma";
import { revalidatePath } from "next/cache";
export async function Donasi_funUpdateNotifById(notifId: string) {
const updateNotif = await prisma.donasi_Notif.update({
where: {
id: notifId,
},
data: {
isRead: true,
},
});
if (!updateNotif) return { status: 400, message: "Update notif gagal" };
revalidatePath("/dev/donasi/notif_page");
return {
status: 200,
message: "Berhasil update notif",
};
}

View File

@@ -0,0 +1,23 @@
"use server";
import prisma from "@/app/lib/prisma";
import { MODEL_DONASI } from "../../model/interface";
export async function Donasi_funUpdateRekening(data: MODEL_DONASI) {
// console.log(data)
const res = await prisma.donasi.update({
where: {
id: data.id,
},
data: {
namaBank: data.namaBank,
rekening: data.rekening,
},
});
if (!res) return { status: 400, message: "Gagal update rekening" };
return {
status: 200,
message: "Berhasil update",
};
}