Fix Dibagian Data Kesehatan Warga

This commit is contained in:
2025-06-28 00:10:45 +08:00
parent 6d5b8dcf64
commit 41181d4cb3
18 changed files with 184 additions and 118 deletions

View File

@@ -39,15 +39,15 @@ const grafikkepuasan = proxy({
const res = await ApiFetch.api.kesehatan.grafikkepuasan["create"].post(grafikkepuasan.create.form);
if (res.status === 200) {
const uuid = res.data?.data?.uuid;
if (uuid) {
const id = res.data?.data?.id;
if (id) {
toast.success("Success create");
grafikkepuasan.create.form = {
label: "",
jumlah: "",
};
grafikkepuasan.findMany.load();
return uuid;
return id;
}
}
toast.error("failed create");
@@ -77,9 +77,9 @@ const grafikkepuasan = proxy({
data: null as Prisma.GrafikKepuasanGetPayload<{
omit: { isActive: true }
}> | null,
async load(uuid: string) {
async load(id: string) {
try {
const res = await fetch(`/api/kesehatan/grafikkepuasan/${uuid}`);
const res = await fetch(`/api/kesehatan/grafikkepuasan/${id}`);
if (res.ok) {
const data = await res.json();
grafikkepuasan.findUnique.data = data.data ?? null;
@@ -94,14 +94,14 @@ const grafikkepuasan = proxy({
},
},
update: {
uuid: "",
id: "",
form: {...defaultForm},
loading: false,
async byId() {
},
async submit() {
const uuid = this.uuid;
if (!uuid) {
const id = this.id;
if (!id) {
toast.warn("ID tidak valid");
return null;
}
@@ -114,7 +114,7 @@ const grafikkepuasan = proxy({
}
try {
this.loading = true;
const response = await fetch(`/api/kesehatan/grafikkepuasan/${uuid}`, {
const response = await fetch(`/api/kesehatan/grafikkepuasan/${id}`, {
method: "PUT",
headers: {
"Content-Type": "application/json",
@@ -143,14 +143,14 @@ const grafikkepuasan = proxy({
},
delete: {
loading: false,
async byId(uuid: string) {
if (!uuid) {
async byId(id: string) {
if (!id) {
return toast.warn("ID tidak valid");
}
try {
grafikkepuasan.delete.loading = true;
const response = await fetch(`/api/kesehatan/grafikkepuasan/del/${uuid}`, {
const response = await fetch(`/api/kesehatan/grafikkepuasan/del/${id}`, {
method: "DELETE",
headers: {
"Content-Type": "application/json",

View File

@@ -45,12 +45,12 @@ const persentasekelahiran = proxy({
);
if (res.status === 200) {
const uuid = res.data?.data?.uuid;
if (uuid) {
const id = res.data?.data?.id;
if (id) {
toast.success("Success create");
persentasekelahiran.create.form = { ...defaultForm };
persentasekelahiran.findMany.load();
return uuid;
return id;
}
}
toast.error("failed create");
@@ -80,9 +80,9 @@ const persentasekelahiran = proxy({
data: null as Prisma.DataKematian_KelahiranGetPayload<{
omit: { isActive: true };
}> | null,
async load(uuid: string) {
async load(id: string) {
try {
const res = await fetch(`/api/kesehatan/persentasekelahiran/${uuid}`);
const res = await fetch(`/api/kesehatan/persentasekelahiran/${id}`);
if (res.ok) {
const data = await res.json();
persentasekelahiran.findUnique.data = data.data ?? null;
@@ -98,13 +98,13 @@ const persentasekelahiran = proxy({
},
update: {
uuid: "",
id: "",
form: { ...defaultForm },
loading: false,
async submit() {
const uuid = this.uuid;
if (!uuid) {
toast.warn("UUID tidak valid");
const id = this.id;
if (!id) {
toast.warn("ID tidak valid");
return null;
}
@@ -126,7 +126,7 @@ update: {
try {
this.loading = true;
const res = await fetch(`/api/kesehatan/persentasekelahiran/${uuid}`, {
const res = await fetch(`/api/kesehatan/persentasekelahiran/${id}`, {
method: "PUT",
headers: {
"Content-Type": "application/json",
@@ -156,13 +156,13 @@ update: {
delete: {
loading: false,
async byId(uuid: string) {
if (!uuid) return toast.warn("UUID tidak valid");
async byId(id: string) {
if (!id) return toast.warn("ID tidak valid");
try {
persentasekelahiran.delete.loading = true;
const response = await fetch(`/api/kesehatan/persentasekelahiran/del/${uuid}`, {
const response = await fetch(`/api/kesehatan/persentasekelahiran/del/${id}`, {
method: "DELETE",
headers: {
"Content-Type": "application/json",
@@ -177,7 +177,7 @@ update: {
} else {
toast.error(result?.message || "Gagal menghapus persentase kelahiran");
}
} catch (error) {
} catch (error) {
console.error("Gagal delete:", error);
toast.error("Terjadi kesalahan saat menghapus persentase kelahiran");
} finally {

View File

@@ -11,15 +11,15 @@ import { useProxy } from 'valtio/utils';
function EditGrafikHasilKepuasan() {
const router = useRouter()
const params = useParams() as { uuid: string }
const params = useParams() as { id: string }
const stateGrafikKepuasan = useProxy(grafikkepuasan)
const uuid = params.uuid
const id = params.id
// Load data saat komponen mount
useEffect(() => {
if (uuid) {
stateGrafikKepuasan.findUnique.load(uuid).then(() => {
if (id) {
stateGrafikKepuasan.findUnique.load(id).then(() => {
const data = stateGrafikKepuasan.findUnique.data
if (data) {
stateGrafikKepuasan.update.form = {
@@ -29,11 +29,11 @@ function EditGrafikHasilKepuasan() {
}
})
}
}, [uuid])
}, [id])
const handleSubmit = async () => {
// Set the ID before submitting
stateGrafikKepuasan.update.uuid = uuid;
stateGrafikKepuasan.update.id = id;
await stateGrafikKepuasan.update.submit();
router.push('/admin/kesehatan/data-kesehatan-warga/grafik_hasil_kepuasan')
}

View File

@@ -45,7 +45,7 @@ function GrafikHasilKepuasanMasyarakat() {
setMounted(true);
if (stateGrafikKepuasan.findMany.data) {
setChartData(stateGrafikKepuasan.findMany.data.map((item) => ({
id: item.uuid,
id: item.id,
label: item.label,
jumlah: Number(item.jumlah),
})));
@@ -82,11 +82,11 @@ function GrafikHasilKepuasanMasyarakat() {
</TableThead>
<TableTbody>
{stateGrafikKepuasan.findMany.data?.map((item) => (
<TableTr key={item.uuid}>
<TableTr key={item.id}>
<TableTd>{item.label}</TableTd>
<TableTd>{item.jumlah}</TableTd>
<TableTd>
<Button color='green' onClick={() => router.push(`/admin/kesehatan/data-kesehatan-warga/grafik_hasil_kepuasan/${item.uuid}`)}>
<Button color='green' onClick={() => router.push(`/admin/kesehatan/data-kesehatan-warga/grafik_hasil_kepuasan/${item.id}`)}>
<IconEdit size={20} />
</Button>
</TableTd>
@@ -95,7 +95,7 @@ function GrafikHasilKepuasanMasyarakat() {
color='red'
disabled={stateGrafikKepuasan.delete.loading}
onClick={() => {
setSelectedId(item.uuid)
setSelectedId(item.id)
setModalHapus(true)
}}>
<IconTrash size={20} />

View File

@@ -12,16 +12,16 @@ import { useProxy } from 'valtio/utils';
function EditPersentaseDataKelahiranKematian() {
const router = useRouter()
const params = useParams() as { uuid: string }
const params = useParams() as { id: string }
const statePresentase = useProxy(persentasekelahiran)
const id = params.uuid
const id = params.id
// Load data saat komponen mount
// Di file page.tsx, ubah useEffect-nya menjadi:
useEffect(() => {
if (!id) return;
statePresentase.update.uuid = id;
statePresentase.update.id = id;
statePresentase.findUnique.load(id)
.then(() => {
const data = statePresentase.findUnique.data;
@@ -43,7 +43,7 @@ useEffect(() => {
// Di handleSubmit, ubah menjadi:
const handleSubmit = async () => {
try {
statePresentase.update.uuid = id;
statePresentase.update.id = id;
await statePresentase.update.submit();
toast.success('Data berhasil diperbarui');
router.push('/admin/kesehatan/data-kesehatan-warga/persentase_data_kelahiran_kematian');

View File

@@ -13,7 +13,7 @@ import { ModalKonfirmasiHapus } from '../../../_com/modalKonfirmasiHapus';
function PersentaseDataKelahiranKematian() {
type PDKMGrafik = {
uuid: string;
id: string;
tahun: string;
kematianKasar: number;
kematianBayi: number;
@@ -47,7 +47,7 @@ function PersentaseDataKelahiranKematian() {
setMounted(true);
if (statePersentase.findMany.data) {
setChartData(statePersentase.findMany.data.map((item) => ({
uuid: item.uuid,
id: item.id,
tahun: item.tahun,
kematianKasar: Number(item.kematianKasar),
kematianBayi: Number(item.kematianBayi),
@@ -88,13 +88,13 @@ function PersentaseDataKelahiranKematian() {
</TableThead>
<TableTbody>
{statePersentase.findMany.data?.map((item) => (
<TableTr key={item.uuid}>
<TableTr key={item.id}>
<TableTd>{item.tahun}</TableTd>
<TableTd>{item.kematianKasar}</TableTd>
<TableTd>{item.kematianBayi}</TableTd>
<TableTd>{item.kelahiranKasar}</TableTd>
<TableTd>
<Button color='green' onClick={() => router.push(`/admin/kesehatan/data-kesehatan-warga/persentase_data_kelahiran_kematian/${item.uuid}`)}>
<Button color='green' onClick={() => router.push(`/admin/kesehatan/data-kesehatan-warga/persentase_data_kelahiran_kematian/${item.id}`)}>
<IconEdit size={20} />
</Button>
</TableTd>
@@ -103,7 +103,7 @@ function PersentaseDataKelahiranKematian() {
color='red'
disabled={statePersentase.delete.loading}
onClick={() => {
setSelectedId(item.uuid)
setSelectedId(item.id)
setModalHapus(true)
}}>
<IconTrash size={20} />