Skip to content

Commit

Permalink
update API dashboard admin
Browse files Browse the repository at this point in the history
  • Loading branch information
GesangPJ committed Aug 12, 2024
1 parent 33f2414 commit 77c8fae
Showing 1 changed file with 65 additions and 58 deletions.
123 changes: 65 additions & 58 deletions src/app/api/dashboard-admin/route.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,67 +26,74 @@ export async function GET(req) {

console.log(userId)

try {
const kasbons = await prisma.kasbon.findMany({
select: {
id: true,
userId: true,
adminId: true,
jumlah: true,
status_r: true,
status_b: true,
keterangan: true,
metode: true,
createdAt: true,
updatedAt: true,
user: {
select: {
name: true, // Mengambil nama karyawan
try{
const transaksis = await prisma.transaksi.findMany({
select:{
id:true,
status:true,
jumlahTotal:true,
transaksidetail:{
select:{
produkId:true,
jumlah:true,
produk:{
select:{
nama:true,
},
},
},
},
admin: {
select: {
name: true, // Mengambil nama admin
},
},
},

}
})

const produks = await prisma.produk.findMany({
select:{
id:true,
}
})

// Konversi tanggal ke format ISO dan tambahkan nama karyawan dan admin
const formattedKasbons = kasbons.map(kasbon => ({
...kasbon,
createdAt: kasbon.createdAt.toISOString(),
updatedAt: kasbon.updatedAt.toISOString(),
namaKaryawan: kasbon.user?.name || '-',
namaAdmin: kasbon.admin?.name || '-',
}))

// Menghitung jumlah total, total setuju, total lunas, dan belum lunas
const jumlahTotal = kasbons.reduce((acc, kasbon) => acc + kasbon.jumlah, 0)

// Kasbon Yang Disetujui
const TotalSetuju = kasbons
.filter(kasbon => kasbon.status_r === 'SETUJU')
.reduce((acc, kasbon) => acc + kasbon.jumlah, 0)

// Kasbon yang sudah LUNAS
const TotalLunas = kasbons
.filter(kasbon => kasbon.status_b === 'LUNAS')
.reduce((acc, kasbon) => acc + kasbon.jumlah, 0)

// Kasbon yang Belum Lunas
const belumLunas = jumlahTotal - TotalLunas

return NextResponse.json({
kasbons: formattedKasbons,
jumlahTotal,
TotalSetuju,
TotalLunas,
belumLunas
}, { status: 200 })
} catch (error) {
console.error('Error fetching kasbon data:', error)

return NextResponse.json({ error: 'Terjadi kesalahan saat mengambil data kasbon' }, { status: 500 })
// Hitung jumlah produk
const jumlahProduk = produks.length

// Menghitung jumlah transaksi
const jumlahTransaksi = transaksis.length

// Menghitung total pemasukan
const totalPemasukan = transaksis.reduce((acc, transaksi) => acc + transaksi.jumlahTotal, 0)

// Menghitung jumlah produk yang paling sering dibeli
const produkMap = {}

transaksis.forEach(transaksi => {
transaksi.transaksidetail.forEach(detail => {
const namaProduk = detail.produk.nama

if (!produkMap[namaProduk]) {
produkMap[namaProduk] = 0
}

produkMap[namaProduk] += detail.jumlah
})
})

// Menemukan produk yang paling sering dibeli
const produkSeringDibeli = Object.keys(produkMap).reduce((a, b) => produkMap[a] > produkMap[b] ? a : b)

const result = {
jumlahProduk,
jumlahTransaksi,
totalPemasukan,
produkSeringDibeli,
}

return NextResponse.json(result, { status: 200 })

}
catch(error){
console.error("Error mengolah data transaksi :", error)

return NextResponse.json({error:"Error Mengolah data transaksi"}, {status:500})

}
}

0 comments on commit 77c8fae

Please sign in to comment.