From 934d6a3ef1015367bee85779796df4f11c5e779c Mon Sep 17 00:00:00 2001 From: bagasbanuna Date: Mon, 9 Feb 2026 17:34:49 +0800 Subject: [PATCH] feat: update mobile donation API and related dependencies Co-authored-by: Qwen-Coder --- PROMPT-AI.md | 20 +- bun.lock | 19 +- package.json | 1 + .../mobile/donation/[id]/[status]/route.ts | 26 +++ zCoba.js | 178 ++++++++++++++++++ 5 files changed, 239 insertions(+), 5 deletions(-) diff --git a/PROMPT-AI.md b/PROMPT-AI.md index 30e4b0a7..f40844d7 100644 --- a/PROMPT-AI.md +++ b/PROMPT-AI.md @@ -1,5 +1,5 @@ -File utama: src/app/api/mobile/investment/[id]/invoice/route.ts +File utama: src/app/api/mobile/donation/[id]/[status]/route.ts Terapkan pagination pada file "File utama" pada method GET Analisa juga file "File utama", jika belum memiliki page dari seachParams maka terapkan. Juga pastikan take dan skip sudah sesuai dengan pagination. Buat default nya menjadi 10 untuk take data @@ -17,4 +17,20 @@ Gunakan bahasa indonesia pada cli agar saya mudah membacanya. File refrensi: src/app/api/mobile/event/[id]/[status]/route.ts -Anda bisa menggunakan refrensi dari "File refrensi" jika butuh pemahaman dengan tipe fitur yang sama \ No newline at end of file +Anda bisa menggunakan refrensi dari "File refrensi" jika butuh pemahaman dengan tipe fitur yang sama + + + +End-point: src/app/api/mobile/donation/route.ts + +Buatkan auto input untuk method POST dengan data yang dibutuhkan sesuai dengan struktur data yang ada di file tersebut, tidak perlu "temporary" cukup data "permanent" dengan ketentuan sebagai berikut: +- authorId: string ( cmha6wb9w0001cfndwl9fcse6 ) +- title: string +- target: number +- donasiMaster_DurasiId: number ( 3 ) +- donasiMaster_KategoriId: number ( 3 ) +- namaBank: string +- rekening: string +- imageId: number ( cm60j9q3m000xc9dc584v8rh8 ) + +Untuk sisa nya anda bisa bebas mengisi data tersebut. \ No newline at end of file diff --git a/bun.lock b/bun.lock index 5d344aa2..337f8e63 100644 --- a/bun.lock +++ b/bun.lock @@ -39,6 +39,7 @@ "@types/react-dom": "18.2.7", "@types/uuid": "^9.0.4", "autoprefixer": "10.4.14", + "axios": "^1.13.5", "bufferutil": "^4.0.8", "bun": "^1.1.38", "caniuse-lite": "^1.0.30001757", @@ -1324,7 +1325,7 @@ "axe-core": ["axe-core@4.10.2", "", {}, "sha512-RE3mdQ7P3FRSe7eqCWoeQ/Z9QXrtniSjp1wUjt5nRC3WIpz5rSCve6o3fsZ2aCpJtrZjSZgjwXAoTO5k4tEI0w=="], - "axios": ["axios@0.26.1", "", { "dependencies": { "follow-redirects": "^1.14.8" } }, "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA=="], + "axios": ["axios@1.13.5", "", { "dependencies": { "follow-redirects": "^1.15.11", "form-data": "^4.0.5", "proxy-from-env": "^1.1.0" } }, "sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q=="], "axobject-query": ["axobject-query@4.1.0", "", {}, "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ=="], @@ -1882,7 +1883,7 @@ "fn.name": ["fn.name@1.1.0", "", {}, "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw=="], - "follow-redirects": ["follow-redirects@1.15.9", "", {}, "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ=="], + "follow-redirects": ["follow-redirects@1.15.11", "", {}, "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ=="], "fontfaceobserver": ["fontfaceobserver@2.3.0", "", {}, "sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg=="], @@ -1892,7 +1893,7 @@ "foreground-child": ["foreground-child@3.3.1", "", { "dependencies": { "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" } }, "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw=="], - "form-data": ["form-data@4.0.2", "", { "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", "mime-types": "^2.1.12" } }, "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w=="], + "form-data": ["form-data@4.0.5", "", { "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", "hasown": "^2.0.2", "mime-types": "^2.1.12" } }, "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w=="], "form-data-encoder": ["form-data-encoder@1.7.2", "", {}, "sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A=="], @@ -3618,6 +3619,8 @@ "@types/jsonwebtoken/@types/node": ["@types/node@22.19.1", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-LCCV0HdSZZZb34qifBsyWlUmok6W7ouER+oQIGBScS8EsZsQbrtFTUrDX4hOl+CS6p7cnNC4td+qrSVGSCTUfQ=="], + "@types/node-fetch/form-data": ["form-data@4.0.2", "", { "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", "mime-types": "^2.1.12" } }, "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w=="], + "@types/request/@types/node": ["@types/node@22.19.1", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-LCCV0HdSZZZb34qifBsyWlUmok6W7ouER+oQIGBScS8EsZsQbrtFTUrDX4hOl+CS6p7cnNC4td+qrSVGSCTUfQ=="], "@types/request/form-data": ["form-data@2.5.5", "", { "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", "hasown": "^2.0.2", "mime-types": "^2.1.35", "safe-buffer": "^5.2.1" } }, "sha512-jqdObeR2rxZZbPSGL+3VckHMYtu+f9//KXBsVny6JSX/pa38Fy+bGjuG8eW/H6USNQWhLi8Num++cU2yOCNz4A=="], @@ -3630,6 +3633,8 @@ "ast-types/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "autocannon/form-data": ["form-data@4.0.2", "", { "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", "mime-types": "^2.1.12" } }, "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w=="], + "autoprefixer/caniuse-lite": ["caniuse-lite@1.0.30001701", "", {}, "sha512-faRs/AW3jA9nTwmJBSO1PQ6L/EOgsB5HMQQq4iCu5zhPgVVgO/pZRHlmatwijZKetFw8/Pr4q6dEN8sJuq8qTw=="], "babel-plugin-polyfill-corejs2/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], @@ -3810,6 +3815,8 @@ "metro-file-map/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], + "midtrans-client/axios": ["axios@0.26.1", "", { "dependencies": { "follow-redirects": "^1.14.8" } }, "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA=="], + "minipass-flush/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="], "minipass-pipeline/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="], @@ -4190,6 +4197,12 @@ "metro/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], + "midtrans-client/axios/follow-redirects": ["follow-redirects@1.15.9", "", {}, "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ=="], + + "next-dev/axios/follow-redirects": ["follow-redirects@1.15.9", "", {}, "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ=="], + + "next-dev/axios/form-data": ["form-data@4.0.2", "", { "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", "mime-types": "^2.1.12" } }, "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w=="], + "next-dev/react-dom/scheduler": ["scheduler@0.23.2", "", { "dependencies": { "loose-envify": "^1.1.0" } }, "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ=="], "next-scroll-loader/react-dom/scheduler": ["scheduler@0.23.2", "", { "dependencies": { "loose-envify": "^1.1.0" } }, "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ=="], diff --git a/package.json b/package.json index 1f4250d5..fed140e3 100644 --- a/package.json +++ b/package.json @@ -50,6 +50,7 @@ "@types/react-dom": "18.2.7", "@types/uuid": "^9.0.4", "autoprefixer": "10.4.14", + "axios": "^1.13.5", "bufferutil": "^4.0.8", "bun": "^1.1.38", "caniuse-lite": "^1.0.30001757", diff --git a/src/app/api/mobile/donation/[id]/[status]/route.ts b/src/app/api/mobile/donation/[id]/[status]/route.ts index 94fd76f3..b2fb3c26 100644 --- a/src/app/api/mobile/donation/[id]/[status]/route.ts +++ b/src/app/api/mobile/donation/[id]/[status]/route.ts @@ -10,8 +10,14 @@ async function GET( ) { const { id, status } = params; const fixStatus = _.startCase(status); + const { searchParams } = new URL(request.url); + const page = Number(searchParams.get("page")) || 1; + const takeData = 5 + const skipData = page * takeData - takeData; let fixData; + let meta = null; + try { const checkStatus = await prisma.donasiMaster_StatusDonasi.findFirst({ where: { @@ -50,18 +56,38 @@ async function GET( orderBy: { updatedAt: "desc", }, + take: takeData, + skip: skipData, }); + const totalData = await prisma.donasi.count({ + where: { + authorId: id, + donasiMaster_StatusDonasiId: checkStatus.id, + active: true, + }, + }); + + const totalPages = Math.ceil(totalData / takeData); + fixData = res.map((v: any) => ({ ..._.omit(v, ["DonasiMaster_Durasi"]), nameDonasiDurasi: v.DonasiMaster_Durasi.name, })); + meta = { + currentPage: page, + totalData: totalData, + totalPage: totalPages, + dataPerPage: takeData, + }; + return NextResponse.json({ status: 200, success: true, message: "Berhasil mendapatkan data", data: fixData, + ...(meta && { meta }), }); } catch (error) { console.log("[ERROR]", error); diff --git a/zCoba.js b/zCoba.js index 30bcffc3..a2cbde8e 100644 --- a/zCoba.js +++ b/zCoba.js @@ -1,8 +1,186 @@ const { PrismaClient } = require('@prisma/client') +const axios = require('axios') const prisma = new PrismaClient() +// Daftar contoh data +const donationDataList = [ + { + "data": { + "authorId": "cmha6wb9w0001cfndwl9fcse6", + "title": "Bantuan Pendidikan Anak-anak Kurang Mampu", + "target": 50000000, + "donasiMaster_DurasiId": 3, + "donasiMaster_KategoriId": 3, + "namaBank": "Bank Central Asia", + "rekening": "1234567890", + "imageId": "cm60j9q3m000xc9dc584v8rh8", + "pembukaan": "Kami ingin membantu anak-anak kurang mampu mendapatkan pendidikan yang layak.", + "cerita": "Pendidikan adalah hak dasar setiap anak. Namun, banyak anak-anak di pelosok negeri yang tidak bisa menikmati pendidikan karena keterbatasan ekonomi. Melalui kampanye ini, kami ingin mengumpulkan dana untuk membantu biaya pendidikan mereka.", + "imageCeritaId": "cm60j9q3m000xc9dc584v8rj0" + } + }, + { + "data": { + "authorId": "cmha6wb9w0001cfndwl9fcse6", + "title": "Pembangunan Masjid di Desa Terpencil", + "target": 100000000, + "donasiMaster_DurasiId": 3, + "donasiMaster_KategoriId": 3, + "namaBank": "Bank Mandiri", + "rekening": "0987654321", + "imageId": "cm60j9q3m000xc9dc584v8rh8", + "pembukaan": "Membangun masjid untuk masyarakat di daerah terpencil yang belum memiliki tempat ibadah.", + "cerita": "Di sebuah desa terpencil, masyarakat setiap hari harus berjalan jauh untuk bisa melaksanakan sholat berjamaah. Kami ingin membantu membangun masjid di tengah-tengah mereka agar ibadah bisa dilakukan dengan lebih tenang dan khusyuk.", + "imageCeritaId": "cm60j9q3m000xc9dc584v8rj1" + } + }, + { + "data": { + "authorId": "cmha6wb9w0001cfndwl9fcse6", + "title": "Bantuan Korban Bencana Alam", + "target": 75000000, + "donasiMaster_DurasiId": 3, + "donasiMaster_KategoriId": 3, + "namaBank": "Bank Rakyat Indonesia", + "rekening": "5678901234", + "imageId": "cm60j9q3m000xc9dc584v8rh8", + "pembukaan": "Membantu meringankan beban korban bencana alam berupa kebutuhan pokok dan kebutuhan darurat.", + "cerita": "Beberapa wilayah dilanda bencana banjir dan tanah longsor. Masyarakat kehilangan harta benda dan membutuhkan bantuan segera. Dana yang terkumpul akan digunakan untuk menyediakan makanan, obat-obatan, dan kebutuhan pokok lainnya.", + "imageCeritaId": "cm60j9q3m000xc9dc584v8rj2" + } + }, + { + "data": { + "authorId": "cmha6wb9w0001cfndwl9fcse6", + "title": "Pengadaan Alat Medis Rumah Sakit", + "target": 150000000, + "donasiMaster_DurasiId": 3, + "donasiMaster_KategoriId": 3, + "namaBank": "Bank Negara Indonesia", + "rekening": "4321098765", + "imageId": "cm60j9q3m000xc9dc584v8rh8", + "pembukaan": "Meningkatkan kualitas pelayanan kesehatan dengan menyediakan alat medis yang lebih baik.", + "cerita": "Rumah sakit daerah kekurangan alat medis untuk melayani pasien. Melalui donasi ini, kami ingin membantu pengadaan alat-alat medis penting seperti ventilator, USG, dan alat laboratorium untuk meningkatkan kualitas pelayanan kesehatan.", + "imageCeritaId": "cm60j9q3m000xc9dc584v8rj3" + } + }, + { + "data": { + "authorId": "cmha6wb9w0001cfndwl9fcse6", + "title": "Program Beasiswa Mahasiswa Berprestasi", + "target": 80000000, + "donasiMaster_DurasiId": 3, + "donasiMaster_KategoriId": 3, + "namaBank": "Bank Danamon", + "rekening": "1122334455", + "imageId": "cm60j9q3m000xc9dc584v8rh8", + "pembukaan": "Memberikan kesempatan kepada mahasiswa berprestasi untuk melanjutkan pendidikan tanpa beban biaya.", + "cerita": "Banyak mahasiswa berprestasi yang tidak mampu melanjutkan pendidikan karena keterbatasan biaya. Program beasiswa ini akan membantu mereka menyelesaikan kuliah hingga sarjana.", + "imageCeritaId": "cm60j9q3m000xc9dc584v8rj4" + } + }, + { + "data": { + "authorId": "cmha6wb9w0001cfndwl9fcse6", + "title": "Pengadaan Air Bersih untuk Desa Kekeringan", + "target": 60000000, + "donasiMaster_DurasiId": 3, + "donasiMaster_KategoriId": 3, + "namaBank": "Bank Permata", + "rekening": "6677889900", + "imageId": "cm60j9q3m000xc9dc584v8rh8", + "pembukaan": "Menyediakan akses air bersih bagi masyarakat yang tinggal di daerah rawan kekeringan.", + "cerita": "Beberapa desa mengalami kekeringan setiap tahunnya, membuat warga kesulitan mendapatkan air bersih. Kami ingin membangun sumur bor dan sistem distribusi air untuk membantu masyarakat setempat.", + "imageCeritaId": "cm60j9q3m000xc9dc584v8rj5" + } + }, + { + "data": { + "authorId": "cmha6wb9w0001cfndwl9fcse6", + "title": "Pengobatan Gratis untuk Warga Tidak Mampu", + "target": 40000000, + "donasiMaster_DurasiId": 3, + "donasiMaster_KategoriId": 3, + "namaBank": "Bank Panin", + "rekening": "9988776655", + "imageId": "cm60j9q3m000xc9dc584v8rh8", + "pembukaan": "Memberikan layanan kesehatan gratis bagi warga yang tidak mampu membayar biaya pengobatan.", + "cerita": "Banyak warga yang menunda pengobatan karena keterbatasan biaya. Melalui program ini, kami akan menyelenggarakan pengobatan gratis secara berkala di berbagai wilayah.", + "imageCeritaId": "cm60j9q3m000xc9dc584v8rj6" + } + }, + { + "data": { + "authorId": "cmha6wb9w0001cfndwl9fcse6", + "title": "Pembangunan Taman Bacaan Masyarakat", + "target": 35000000, + "donasiMaster_DurasiId": 3, + "donasiMaster_KategoriId": 3, + "namaBank": "Bank Mega", + "rekening": "1357924680", + "imageId": "cm60j9q3m000xc9dc584v8rh8", + "pembukaan": "Membangun taman bacaan untuk meningkatkan minat baca masyarakat di wilayah pedesaan.", + "cerita": "Minat baca masyarakat di pedesaan masih rendah karena keterbatasan akses buku. Taman bacaan ini akan menyediakan ribuan buku gratis dan ruang baca yang nyaman untuk semua usia.", + "imageCeritaId": "cm60j9q3m000xc9dc584v8rj7" + } + }, + { + "data": { + "authorId": "cmha6wb9w0001cfndwl9fcse6", + "title": "Pelatihan Keterampilan untuk Pengangguran", + "target": 55000000, + "donasiMaster_DurasiId": 3, + "donasiMaster_KategoriId": 3, + "namaBank": "Bank CIMB Niaga", + "rekening": "2468135790", + "imageId": "cm60j9q3m000xc9dc584v8rh8", + "pembukaan": "Memberikan pelatihan keterampilan untuk membantu pengangguran mendapatkan pekerjaan atau usaha mandiri.", + "cerita": "Angka pengangguran masih tinggi di beberapa wilayah. Program pelatihan ini akan memberikan keterampilan yang dibutuhkan pasar kerja, seperti menjahit, memasak, teknologi informasi, dan lainnya.", + "imageCeritaId": "cm60j9q3m000xc9dc584v8rj8" + } + }, + { + "data": { + "authorId": "cmha6wb9w0001cfndwl9fcse6", + "title": "Renovasi Gedung Sekolah Rusak", + "target": 90000000, + "donasiMaster_DurasiId": 3, + "donasiMaster_KategoriId": 3, + "namaBank": "Bank OCBC NISP", + "rekening": "1029384756", + "imageId": "cm60j9q3m000xc9dc584v8rh8", + "pembukaan": "Merestrukturasi gedung sekolah yang rusak agar siswa bisa belajar dengan aman dan nyaman.", + "cerita": "Banyak gedung sekolah yang rusak parah dan membahayakan keselamatan siswa. Dana dari kampanye ini akan digunakan untuk renovasi dan perbaikan gedung sekolah yang membutuhkan.", + "imageCeritaId": "cm60j9q3m000xc9dc584v8rj9" + } + } +]; + +async function sendDonationData() { + const baseUrl = 'http://localhost:3000/api/mobile/donation'; // Sesuaikan dengan URL server Anda + const headers = { + 'Content-Type': 'application/json', + }; + + for (let i = 0; i < donationDataList.length; i++) { + try { + console.log(`Mengirim data ke-${i + 1}...`); + const response = await axios.post(`${baseUrl}?category=permanent`, donationDataList[i], { + headers: headers + }); + console.log(`Data ke-${i + 1} berhasil dikirim:`, response.data); + } catch (error) { + console.error(`Error saat mengirim data ke-${i + 1}:`, error.response?.data || error.message); + } + } +} + async function main() { + // Menjalankan fungsi untuk mengirim data donasi + await sendDonationData(); + + // Fungsi asli untuk update notifikasi const result = await prisma.notifikasi.updateMany({ where: { recipientId: 'cmha7p6yc0000cfoe5w2e7gdr',