From e9d94cfa8342bb9e9c1d553eac9a3ec78ab1fedf Mon Sep 17 00:00:00 2001 From: nico Date: Tue, 29 Apr 2025 11:01:09 +0800 Subject: [PATCH] Ngerjain Tabs Jadwal Kegiatan di Data Kesehatan --- prisma/schema.prisma | 2 +- .../fasilitasKesehatan.ts | 0 .../data_kesehatan_warga/jadwalKegiatan.ts | 366 ++++++++++++++++++ .../data-kesehatan-warga/_com/TextEditor.tsx | 1 + .../_com/kesehatanEditor.tsx | 1 + .../dokterdantenagamedis/listData.tsx | 2 +- .../dokterdantenagamedis/page.tsx | 2 +- .../fasilitas_pendukung/listData.tsx | 2 +- .../fasilitas_pendukung/page.tsx | 2 +- .../informasi_umum/page.tsx | 2 +- .../layanan_unggulan/page.tsx | 2 +- .../_ui/fasilitas_kesehatan/page.tsx | 2 +- .../prosedurpendaftaran/listData.tsx | 2 +- .../prosedurpendaftaran/page.tsx | 2 +- .../tarifdanlayanan/listData.tsx | 2 +- .../tarifdanlayanan/page.tsx | 2 +- .../deskripsi_kegiatan/page.tsx | 12 +- .../dokumen_yang_diperlukan/page.tsx | 12 +- .../informasi_kegiatan/page.tsx | 15 + .../layanan_yang_tersedia/page.tsx | 12 +- .../_ui/jadwal_kegiatan/page.tsx | 159 +++++++- .../_ui/jadwal_kegiatan/pendaftaran/page.tsx | 26 ++ .../syarat_dan_ketentuan/page.tsx | 13 +- .../dokterDantenagamedis/index.ts | 2 +- .../fasilitas_pendukung/index.ts | 2 +- .../informasi_umum/index.ts | 2 +- .../layanan_unggulan/index.ts | 2 +- .../prosedur_pendaftaran/index.ts | 2 +- .../tarifDanlayanan/index.ts | 2 +- .../deskripsi_kegiatan/create.ts | 28 ++ .../deskripsi_kegiatan/find-many.ts | 8 + .../deskripsi_kegiatan/index.ts | 16 + .../dokumen_yang_diperlukan/create.ts | 26 ++ .../dokumen_yang_diperlukan/find-many.ts | 8 + .../dokumen_yang_diperlukan/index.ts | 17 + .../informasi_kegiatan/create.ts | 33 ++ .../informasi_kegiatan/find-many.ts | 8 + .../informasi_kegiatan/index.ts | 19 + .../layanan_yang_tersedia/create.ts | 26 ++ .../layanan_yang_tersedia/find-many.ts | 8 + .../layanan_yang_tersedia/index.ts | 17 + .../jadwal_kegiatan/pendaftaran/create.ts | 36 ++ .../jadwal_kegiatan/pendaftaran/find-many.ts | 8 + .../jadwal_kegiatan/pendaftaran/index.ts | 21 + .../syarat_dan_ketentuan/create.ts | 26 ++ .../syarat_dan_ketentuan/find-many.ts | 8 + .../syarat_dan_ketentuan/index.ts | 16 + .../api/[[...slugs]]/_lib/kesehatan/index.ts | 13 +- 48 files changed, 956 insertions(+), 39 deletions(-) rename src/app/admin/(dashboard)/_state/kesehatan/{ => data_kesehatan_warga}/fasilitasKesehatan.ts (100%) create mode 100644 src/app/admin/(dashboard)/_state/kesehatan/data_kesehatan_warga/jadwalKegiatan.ts create mode 100644 src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/jadwal_kegiatan/deskripsi_kegiatan/create.ts create mode 100644 src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/jadwal_kegiatan/deskripsi_kegiatan/find-many.ts create mode 100644 src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/jadwal_kegiatan/deskripsi_kegiatan/index.ts create mode 100644 src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/jadwal_kegiatan/dokumen_yang_diperlukan/create.ts create mode 100644 src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/jadwal_kegiatan/dokumen_yang_diperlukan/find-many.ts create mode 100644 src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/jadwal_kegiatan/dokumen_yang_diperlukan/index.ts create mode 100644 src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/jadwal_kegiatan/informasi_kegiatan/create.ts create mode 100644 src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/jadwal_kegiatan/informasi_kegiatan/find-many.ts create mode 100644 src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/jadwal_kegiatan/informasi_kegiatan/index.ts create mode 100644 src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/jadwal_kegiatan/layanan_yang_tersedia/create.ts create mode 100644 src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/jadwal_kegiatan/layanan_yang_tersedia/find-many.ts create mode 100644 src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/jadwal_kegiatan/layanan_yang_tersedia/index.ts create mode 100644 src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/jadwal_kegiatan/pendaftaran/create.ts create mode 100644 src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/jadwal_kegiatan/pendaftaran/find-many.ts create mode 100644 src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/jadwal_kegiatan/pendaftaran/index.ts create mode 100644 src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/jadwal_kegiatan/syarat_dan_ketentuan/create.ts create mode 100644 src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/jadwal_kegiatan/syarat_dan_ketentuan/find-many.ts create mode 100644 src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/jadwal_kegiatan/syarat_dan_ketentuan/index.ts diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 28777abc..53c29bf3 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -298,7 +298,7 @@ model DokumenJadwalKegiatan{ model PendaftaranJadwalKegiatan{ id String @id @default(cuid()) name String - tanggal String + tanggal DateTime namaOrangtua String nomor String alamat String diff --git a/src/app/admin/(dashboard)/_state/kesehatan/fasilitasKesehatan.ts b/src/app/admin/(dashboard)/_state/kesehatan/data_kesehatan_warga/fasilitasKesehatan.ts similarity index 100% rename from src/app/admin/(dashboard)/_state/kesehatan/fasilitasKesehatan.ts rename to src/app/admin/(dashboard)/_state/kesehatan/data_kesehatan_warga/fasilitasKesehatan.ts diff --git a/src/app/admin/(dashboard)/_state/kesehatan/data_kesehatan_warga/jadwalKegiatan.ts b/src/app/admin/(dashboard)/_state/kesehatan/data_kesehatan_warga/jadwalKegiatan.ts new file mode 100644 index 00000000..4198a18d --- /dev/null +++ b/src/app/admin/(dashboard)/_state/kesehatan/data_kesehatan_warga/jadwalKegiatan.ts @@ -0,0 +1,366 @@ +import ApiFetch from "@/lib/api-fetch"; +import { Prisma } from "@prisma/client"; +import { toast } from "react-toastify"; +import { proxy } from "valtio"; +import { z } from "zod"; + +/* Informasi Kegiatan */ +const templateInformasiKegiatan = z.object({ + name: z.string().min(3, "Name minimal 3 karakter"), + tanggal: z.string().min(3, "Tanggal minimal 3 karakter"), + waktu: z.string().min(3, "Waktu minimal 3 karakter"), + lokasi: z.string().min(3, "Lokasi minimal 3 karakter"), +}); + +type InformasiKegiatan = Prisma.InformasiJadwalKegiatanGetPayload<{ + select: { + name: true; + tanggal: true; + waktu: true; + lokasi: true; + }; +}>; + +const informasiKegiatan = proxy({ + create: { + form: {} as InformasiKegiatan, + loading: false, + async create() { + const cek = templateInformasiKegiatan.safeParse( + informasiKegiatan.create.form + ); + if (!cek.success) { + const err = `[${cek.error.issues + .map((v) => `${v.path.join(".")}`) + .join("\n")}] required`; + return toast.error(err); + } + try { + informasiKegiatan.create.loading = true; + const res = await ApiFetch.api.kesehatan.informasiJadwalKegiatan[ + "create" + ].post(informasiKegiatan.create.form); + if (res.status === 200) { + informasiKegiatan.findMany.load(); + return toast.success("success create"); + } + return toast.error("failed create"); + } catch (error) { + console.log((error as Error).message); + } finally { + informasiKegiatan.create.loading = false; + } + }, + }, + findMany: { + data: null as + | Prisma.InformasiJadwalKegiatanGetPayload<{ omit: { isActive: true } }>[] + | null, + async load() { + const res = await ApiFetch.api.kesehatan.informasiJadwalKegiatan[ + "find-many" + ].get(); + if (res.status === 200) { + informasiKegiatan.findMany.data = res.data?.data ?? []; + } + }, + }, +}); +/* ======================================================================= */ + +/* Deskripsi Kegiatan */ +const templateDeskripsiKegiatan = z.object({ + deskripsi: z.string().min(3, "Content minimal 3 karakter"), +}); + +type DeskripsiKegiatan = Prisma.DeskripsiJadwalKegiatanGetPayload<{ + select: { deskripsi: true }; +}>; + +const deskripsiKegiatan = proxy({ + create: { + form: {} as DeskripsiKegiatan, + loading: false, + async create() { + const cek = templateDeskripsiKegiatan.safeParse( + deskripsiKegiatan.create.form + ); + if (!cek.success) { + const err = `[${cek.error.issues + .map((v) => `${v.path.join(".")}`) + .join("\n")}] required`; + return toast.error(err); + } + try { + deskripsiKegiatan.create.loading = true; + const res = await ApiFetch.api.kesehatan.deskripsikegiatan[ + "create" + ].post(deskripsiKegiatan.create.form); + if (res.status === 200) { + deskripsiKegiatan.findMany.load(); + return toast.success("success create"); + } + return toast.error("failed create"); + } catch (error) { + console.log((error as Error).message); + } finally { + deskripsiKegiatan.create.loading = false; + } + }, + }, + findMany: { + data: null as + | Prisma.DeskripsiJadwalKegiatanGetPayload<{ omit: { isActive: true } }>[] + | null, + async load() { + const res = await ApiFetch.api.kesehatan.deskripsikegiatan[ + "find-many" + ].get(); + if (res.status === 200) { + deskripsiKegiatan.findMany.data = res.data?.data ?? []; + } + }, + }, +}); +/* ======================================================================= */ + +/* Layanan Tersedia */ +const templateLayananTersedia = z.object({ + content: z.string().min(3, "Content minimal 3 karakter"), +}); + +type LayananTersedia = Prisma.LayananJadwalKegiatanGetPayload<{ + select: { content: true }; +}>; + +const layanantersedia = proxy({ + create: { + form: {} as LayananTersedia, + loading: false, + async create() { + const cek = templateLayananTersedia.safeParse( + layanantersedia.create.form + ); + if (!cek.success) { + const err = `[${cek.error.issues + .map((v) => `${v.path.join(".")}`) + .join("\n")}] required`; + return toast.error(err); + } + try { + layanantersedia.create.loading = true; + const res = await ApiFetch.api.kesehatan.layanantersedia["create"].post( + layanantersedia.create.form + ); + if (res.status === 200) { + layanantersedia.findMany.load(); + return toast.success("success create"); + } + return toast.error("failed create"); + } catch (error) { + console.log((error as Error).message); + } finally { + layanantersedia.create.loading = false; + } + }, + }, + findMany: { + data: null as + | Prisma.LayananJadwalKegiatanGetPayload<{ omit: { isActive: true } }>[] + | null, + async load() { + const res = await ApiFetch.api.kesehatan.layanantersedia[ + "find-many" + ].get(); + if (res.status === 200) { + layanantersedia.findMany.data = res.data?.data ?? []; + } + }, + }, +}); +/* ======================================================================= */ + +/* Syarat dan Ketentuan */ +const templateSyaratKetentuan = z.object({ + content: z.string().min(3, "Content minimal 3 karakter"), +}); + +type SyaratKetentuan = Prisma.SyaratKetentuanJadwalKegiatanGetPayload<{ + select: { content: true }; +}>; + +const syaratketentuan = proxy({ + create: { + form: {} as SyaratKetentuan, + loading: false, + async create() { + const cek = templateSyaratKetentuan.safeParse( + syaratketentuan.create.form + ); + if (!cek.success) { + const err = `[${cek.error.issues + .map((v) => `${v.path.join(".")}`) + .join("\n")}] required`; + return toast.error(err); + } + try { + syaratketentuan.create.loading = true; + const res = await ApiFetch.api.kesehatan.syaratketentuan[ + "create" + ].post(syaratketentuan.create.form); + if (res.status === 200) { + syaratketentuan.findMany.load(); + return toast.success("success create"); + } + return toast.error("failed create"); + } catch (error) { + console.log((error as Error).message); + } finally { + syaratketentuan.create.loading = false; + } + }, + }, + findMany: { + data: null as + | Prisma.SyaratKetentuanJadwalKegiatanGetPayload<{ omit: { isActive: true } }>[] + | null, + async load() { + const res = await ApiFetch.api.kesehatan.syaratketentuan[ + "find-many" + ].get(); + if (res.status === 200) { + syaratketentuan.findMany.data = res.data?.data ?? []; + } + }, + }, +}); +/* ======================================================================= */ + +/* Dokumen Yang Diperlukan */ +const templateDokumenDiperlukan = z.object({ + content: z.string().min(3, "Content minimal 3 karakter"), +}); + +type DokumenDiperlukan = Prisma.DokumenJadwalKegiatanGetPayload<{ + select: { content: true }; +}>; + +const dokumenjadwalkegiatan = proxy({ + create: { + form: {} as DokumenDiperlukan, + loading: false, + async create() { + const cek = templateDokumenDiperlukan.safeParse( + dokumenjadwalkegiatan.create.form + ); + if (!cek.success) { + const err = `[${cek.error.issues + .map((v) => `${v.path.join(".")}`) + .join("\n")}] required`; + return toast.error(err); + } + try { + dokumenjadwalkegiatan.create.loading = true; + const res = await ApiFetch.api.kesehatan.dokumendiperlukan[ + "create" + ].post(dokumenjadwalkegiatan.create.form); + if (res.status === 200) { + dokumenjadwalkegiatan.findMany.load(); + return toast.success("success create"); + } + return toast.error("failed create"); + } catch (error) { + console.log((error as Error).message); + } finally { + dokumenjadwalkegiatan.create.loading = false; + } + }, + }, + findMany: { + data: null as + | Prisma.DokumenJadwalKegiatanGetPayload<{ omit: { isActive: true } }>[] + | null, + async load() { + const res = await ApiFetch.api.kesehatan.dokumendiperlukan[ + "find-many" + ].get(); + if (res.status === 200) { + dokumenjadwalkegiatan.findMany.data = res.data?.data ?? []; + } + }, + }, +}); +/* ======================================================================= */ + +/* Pendaftaran */ +const templatePendaftaran = z.object({ + name: z.string().min(3, "Nama minimal 3 karakter"), + tanggal: z.string().min(1), + namaOrangtua: z.string().min(3, "Nama minimal 3 karakter"), + nomor: z.string().min(9, "Nama minimal 9 karakter"), + alamat: z.string().min(7, "Alamat minimal 7 karakter"), + catatan: z.string().min(3, "Catatan minimal 3 karakter"), +}) + +type Pendaftaran = Prisma.PendaftaranJadwalKegiatanGetPayload<{ + select: { + name: true; + tanggal: true; + namaOrangtua: true; + nomor: true; + alamat: true; + catatan: true; + } +}> + +const pendaftaranjadwal = proxy({ + create: { + form: {} as Pendaftaran, + loading: false, + async create() { + const cek = templatePendaftaran.safeParse(pendaftaranjadwal.create.form); + if(!cek.success) { + const err = `[${cek.error.issues + .map((v) => `${v.path.join(".")}`) + .join("\n")}] required`; + return toast.error(err); + } + try { + pendaftaranjadwal.create.loading = true; + const res = await ApiFetch.api.kesehatan.pendaftaranJadwalKegiatan["create"].post( + pendaftaranjadwal.create.form); + if (res.status === 200) { + pendaftaranjadwal.findMany.load(); + return toast.success("success create") + } + return toast.error("failed create") + } catch (error) { + console.log((error as Error).message) + } finally { + pendaftaranjadwal.create.loading = false; + } + } + }, + findMany: { + data: null as + | Prisma.PendaftaranJadwalKegiatanGetPayload<{omit: {isActive: true}}>[] + | null, + async load() { + const res = await ApiFetch.api.kesehatan. + pendaftaranJadwalKegiatan["find-many"].get(); + if(res.status === 200) { + pendaftaranjadwal.findMany.data = res.data?.data ?? []; + } + } + } +}) + +const stateJadwalKegiatan = proxy({ + informasiKegiatan, + deskripsiKegiatan, + layanantersedia, + syaratketentuan, + dokumenjadwalkegiatan, + pendaftaranjadwal +}); +export default stateJadwalKegiatan; diff --git a/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_com/TextEditor.tsx b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_com/TextEditor.tsx index c9905c24..c52391d2 100644 --- a/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_com/TextEditor.tsx +++ b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_com/TextEditor.tsx @@ -22,6 +22,7 @@ function TextEditor() { Highlight, TextAlign.configure({ types: ['heading', 'paragraph'] }), ], + immediatelyRender: false, content, }); diff --git a/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_com/kesehatanEditor.tsx b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_com/kesehatanEditor.tsx index 20d11099..b9740692 100644 --- a/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_com/kesehatanEditor.tsx +++ b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_com/kesehatanEditor.tsx @@ -26,6 +26,7 @@ export function KesehatanEditor({ onSubmit, onChange, showSubmit = true }: { Highlight, TextAlign.configure({ types: ['heading', 'paragraph'] }), ], + immediatelyRender: false, content, onUpdate : ({editor}) => { onChange(editor.getHTML()) diff --git a/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/dokterdantenagamedis/listData.tsx b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/dokterdantenagamedis/listData.tsx index d97b21f9..ae79ddeb 100644 --- a/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/dokterdantenagamedis/listData.tsx +++ b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/dokterdantenagamedis/listData.tsx @@ -1,4 +1,4 @@ -import stateFasilitasKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/fasilitasKesehatan'; +import stateFasilitasKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/data_kesehatan_warga/fasilitasKesehatan'; import colors from '@/con/colors'; import { Center, Stack, Table, TableTbody, TableTd, TableTh, TableThead, TableTr, Text } from '@mantine/core'; import { useShallowEffect } from '@mantine/hooks'; diff --git a/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/dokterdantenagamedis/page.tsx b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/dokterdantenagamedis/page.tsx index 71310e4a..1c4b9c9e 100644 --- a/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/dokterdantenagamedis/page.tsx +++ b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/dokterdantenagamedis/page.tsx @@ -1,4 +1,4 @@ -import stateFasilitasKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/fasilitasKesehatan'; +import stateFasilitasKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/data_kesehatan_warga/fasilitasKesehatan'; import { Box, Text, TextInput } from '@mantine/core'; import { useProxy } from 'valtio/utils'; diff --git a/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/fasilitas_pendukung/listData.tsx b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/fasilitas_pendukung/listData.tsx index e0d5946b..8d315b88 100644 --- a/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/fasilitas_pendukung/listData.tsx +++ b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/fasilitas_pendukung/listData.tsx @@ -1,7 +1,7 @@ import { Box, Stack, Text } from '@mantine/core'; import React from 'react'; import { useProxy } from 'valtio/utils'; -import stateFasilitasKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/fasilitasKesehatan'; +import stateFasilitasKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/data_kesehatan_warga/fasilitasKesehatan'; import { useShallowEffect } from '@mantine/hooks'; function FasilitasPendukungList() { diff --git a/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/fasilitas_pendukung/page.tsx b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/fasilitas_pendukung/page.tsx index 8ae321a5..95ceb64a 100644 --- a/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/fasilitas_pendukung/page.tsx +++ b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/fasilitas_pendukung/page.tsx @@ -1,4 +1,4 @@ -import stateFasilitasKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/fasilitasKesehatan'; +import stateFasilitasKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/data_kesehatan_warga/fasilitasKesehatan'; import { Box, Text } from '@mantine/core'; import { useProxy } from 'valtio/utils'; import { KesehatanEditor } from '../../../_com/kesehatanEditor'; diff --git a/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/informasi_umum/page.tsx b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/informasi_umum/page.tsx index 6903dec7..8e785f17 100644 --- a/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/informasi_umum/page.tsx +++ b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/informasi_umum/page.tsx @@ -1,5 +1,5 @@ 'use client' -import stateFasilitasKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/fasilitasKesehatan'; +import stateFasilitasKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/data_kesehatan_warga/fasilitasKesehatan'; import { Box, Text, TextInput } from '@mantine/core'; import { useProxy } from 'valtio/utils'; diff --git a/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/layanan_unggulan/page.tsx b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/layanan_unggulan/page.tsx index fc869faf..6dfc2c27 100644 --- a/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/layanan_unggulan/page.tsx +++ b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/layanan_unggulan/page.tsx @@ -1,5 +1,5 @@ 'use client' -import stateFasilitasKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/fasilitasKesehatan'; +import stateFasilitasKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/data_kesehatan_warga/fasilitasKesehatan'; import { Box, Text } from '@mantine/core'; import { useProxy } from 'valtio/utils'; import { KesehatanEditor } from '../../../_com/kesehatanEditor'; diff --git a/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/page.tsx b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/page.tsx index 60e38f09..38264c06 100644 --- a/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/page.tsx +++ b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/page.tsx @@ -1,6 +1,6 @@ "use client" -import stateFasilitasKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/fasilitasKesehatan'; +import stateFasilitasKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/data_kesehatan_warga/fasilitasKesehatan'; import colors from '@/con/colors'; import { Box, Button, Center, SimpleGrid, Skeleton, Stack, Table, TableTbody, TableTd, TableTh, TableThead, TableTr, Text, Title } from '@mantine/core'; import { useShallowEffect } from '@mantine/hooks'; diff --git a/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/prosedurpendaftaran/listData.tsx b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/prosedurpendaftaran/listData.tsx index 2d319c96..4692b479 100644 --- a/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/prosedurpendaftaran/listData.tsx +++ b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/prosedurpendaftaran/listData.tsx @@ -1,4 +1,4 @@ -import stateFasilitasKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/fasilitasKesehatan'; +import stateFasilitasKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/data_kesehatan_warga/fasilitasKesehatan'; import { Box, Skeleton, Stack, Text } from '@mantine/core'; import { useShallowEffect } from '@mantine/hooks'; import { useProxy } from 'valtio/utils'; diff --git a/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/prosedurpendaftaran/page.tsx b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/prosedurpendaftaran/page.tsx index 781cf965..17a42a30 100644 --- a/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/prosedurpendaftaran/page.tsx +++ b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/prosedurpendaftaran/page.tsx @@ -1,4 +1,4 @@ -import stateFasilitasKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/fasilitasKesehatan'; +import stateFasilitasKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/data_kesehatan_warga/fasilitasKesehatan'; import { Box, Text } from '@mantine/core'; import { useProxy } from 'valtio/utils'; import { KesehatanEditor } from '../../../_com/kesehatanEditor'; diff --git a/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/tarifdanlayanan/listData.tsx b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/tarifdanlayanan/listData.tsx index 38d83948..1675952e 100644 --- a/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/tarifdanlayanan/listData.tsx +++ b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/tarifdanlayanan/listData.tsx @@ -1,4 +1,4 @@ -import stateFasilitasKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/fasilitasKesehatan'; +import stateFasilitasKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/data_kesehatan_warga/fasilitasKesehatan'; import colors from '@/con/colors'; import { Center, Stack, Table, TableTbody, TableTd, TableTh, TableThead, TableTr, Text } from '@mantine/core'; import { useShallowEffect } from '@mantine/hooks'; diff --git a/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/tarifdanlayanan/page.tsx b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/tarifdanlayanan/page.tsx index 7f3ae8e7..6622c5c6 100644 --- a/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/tarifdanlayanan/page.tsx +++ b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/tarifdanlayanan/page.tsx @@ -1,4 +1,4 @@ -import stateFasilitasKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/fasilitasKesehatan'; +import stateFasilitasKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/data_kesehatan_warga/fasilitasKesehatan'; import { Box, Text, TextInput } from '@mantine/core'; import { useProxy } from 'valtio/utils'; diff --git a/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/jadwal_kegiatan/deskripsi_kegiatan/page.tsx b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/jadwal_kegiatan/deskripsi_kegiatan/page.tsx index 8f812bf8..9d751bb5 100644 --- a/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/jadwal_kegiatan/deskripsi_kegiatan/page.tsx +++ b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/jadwal_kegiatan/deskripsi_kegiatan/page.tsx @@ -1,11 +1,19 @@ +import stateJadwalKegiatan from '@/app/admin/(dashboard)/_state/kesehatan/data_kesehatan_warga/jadwalKegiatan'; import { Box, Text } from '@mantine/core'; -import TextEditor from '../../../_com/TextEditor'; +import { useProxy } from 'valtio/utils'; +import { KesehatanEditor } from '../../../_com/kesehatanEditor'; function DeskripsiKegiatan() { + const deskripsiKegiatanState = useProxy(stateJadwalKegiatan.deskripsiKegiatan) return ( Deskripsi Kegiatan - + { + deskripsiKegiatanState.create.form.deskripsi = val + }} + /> ); } diff --git a/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/jadwal_kegiatan/dokumen_yang_diperlukan/page.tsx b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/jadwal_kegiatan/dokumen_yang_diperlukan/page.tsx index fb3601e8..aa4d59a1 100644 --- a/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/jadwal_kegiatan/dokumen_yang_diperlukan/page.tsx +++ b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/jadwal_kegiatan/dokumen_yang_diperlukan/page.tsx @@ -1,11 +1,19 @@ +import stateJadwalKegiatan from '@/app/admin/(dashboard)/_state/kesehatan/data_kesehatan_warga/jadwalKegiatan'; import { Box, Text } from '@mantine/core'; -import TextEditor from '../../../_com/TextEditor'; +import { useProxy } from 'valtio/utils'; +import { KesehatanEditor } from '../../../_com/kesehatanEditor'; function DokumenYangDiperlukan() { + const dokumenDiperlukan = useProxy(stateJadwalKegiatan.dokumenjadwalkegiatan) return ( Dokumen Yang Diperlukan - + { + dokumenDiperlukan.create.form.content = val; + }} + /> ); } diff --git a/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/jadwal_kegiatan/informasi_kegiatan/page.tsx b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/jadwal_kegiatan/informasi_kegiatan/page.tsx index 96446524..e07b5e2a 100644 --- a/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/jadwal_kegiatan/informasi_kegiatan/page.tsx +++ b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/jadwal_kegiatan/informasi_kegiatan/page.tsx @@ -1,24 +1,39 @@ +import stateJadwalKegiatan from '@/app/admin/(dashboard)/_state/kesehatan/data_kesehatan_warga/jadwalKegiatan'; import { Box, Text, TextInput } from '@mantine/core'; +import { useProxy } from 'valtio/utils'; function InformasiKegiatan() { + const informasiKegiatanState = useProxy(stateJadwalKegiatan.informasiKegiatan) return ( Informasi Kegiatan { + informasiKegiatanState.create.form.name = val.target.value + }} /> { + informasiKegiatanState.create.form.tanggal = val.target.value + }} /> { + informasiKegiatanState.create.form.waktu = val.target.value + }} /> { + informasiKegiatanState.create.form.lokasi = val.target.value + }} /> ); diff --git a/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/jadwal_kegiatan/layanan_yang_tersedia/page.tsx b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/jadwal_kegiatan/layanan_yang_tersedia/page.tsx index 21290d69..e3d2b28b 100644 --- a/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/jadwal_kegiatan/layanan_yang_tersedia/page.tsx +++ b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/jadwal_kegiatan/layanan_yang_tersedia/page.tsx @@ -1,11 +1,19 @@ +import stateJadwalKegiatan from '@/app/admin/(dashboard)/_state/kesehatan/data_kesehatan_warga/jadwalKegiatan'; import { Box, Text } from '@mantine/core'; -import TextEditor from '../../../_com/TextEditor'; +import { useProxy } from 'valtio/utils'; +import { KesehatanEditor } from '../../../_com/kesehatanEditor'; function LayananTersedia() { + const layananTersediaState = useProxy(stateJadwalKegiatan.layanantersedia) return ( Layanan Yang Tersedia - + { + layananTersediaState.create.form.content = val; + }} + /> ); } diff --git a/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/jadwal_kegiatan/page.tsx b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/jadwal_kegiatan/page.tsx index 3ec356d1..d3006d90 100644 --- a/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/jadwal_kegiatan/page.tsx +++ b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/jadwal_kegiatan/page.tsx @@ -1,12 +1,53 @@ -import { Box, Button, SimpleGrid, Stack, Title } from '@mantine/core'; -import InformasiKegiatan from './informasi_kegiatan/page'; +'use client' +import stateJadwalKegiatan from '@/app/admin/(dashboard)/_state/kesehatan/data_kesehatan_warga/jadwalKegiatan'; +import { Box, Button, SimpleGrid, Skeleton, Stack, Text, Title } from '@mantine/core'; +import { useShallowEffect } from '@mantine/hooks'; +import { useProxy } from 'valtio/utils'; import DeskripsiKegiatan from './deskripsi_kegiatan/page'; -import LayananTersedia from './layanan_yang_tersedia/page'; -import SyaratDanKetentuan from './syarat_dan_ketentuan/page'; import DokumenYangDiperlukan from './dokumen_yang_diperlukan/page'; +import InformasiKegiatan from './informasi_kegiatan/page'; +import LayananTersedia from './layanan_yang_tersedia/page'; import Pendaftaran from './pendaftaran/page'; +import SyaratDanKetentuan from './syarat_dan_ketentuan/page'; function JadwalKegiatan() { + const allState = useProxy(stateJadwalKegiatan) + const submitAllForms = () => { + + if (allState.informasiKegiatan.create.form.name && + allState.informasiKegiatan.create.form.tanggal && + allState.informasiKegiatan.create.form.waktu && + allState.informasiKegiatan.create.form.lokasi) { + allState.informasiKegiatan.create.create() + } + if (allState.deskripsiKegiatan.create.form.deskripsi) { + allState.deskripsiKegiatan.create.create(); + } + + if (allState.layanantersedia.create.form.content) { + allState.layanantersedia.create.create(); + } + + if (allState.syaratketentuan.create.form.content) { + allState.syaratketentuan.create.create(); + } + + if (allState.dokumenjadwalkegiatan.create.form.content) { + allState.dokumenjadwalkegiatan.create.create(); + } + + if (allState.pendaftaranjadwal.create.form.name && + allState.pendaftaranjadwal.create.form.tanggal && + allState.pendaftaranjadwal.create.form.namaOrangtua && + allState.pendaftaranjadwal.create.form.nomor && + allState.pendaftaranjadwal.create.form.alamat && + allState.pendaftaranjadwal.create.form.catatan + ) { + allState.pendaftaranjadwal.create.create(); + } + } + + return ( Jadwal Kegiatan - - - - - - - + + + + + + + + List Jadwal Kegiatan + ); } +function AllList() { + const allList = useProxy(stateJadwalKegiatan) + + useShallowEffect(() => { + allList.informasiKegiatan.findMany.load() + allList.deskripsiKegiatan.findMany.load() + allList.layanantersedia.findMany.load() + allList.syaratketentuan.findMany.load() + allList.dokumenjadwalkegiatan.findMany.load() + }) + + const isLoading = !allList.informasiKegiatan.findMany.data || + !allList.deskripsiKegiatan.findMany.data || + !allList.layanantersedia.findMany.data || + !allList.syaratketentuan.findMany.data || + !allList.dokumenjadwalkegiatan.findMany.data + + if (isLoading) { + return ( + + Informasi Kegiatan + {Array.from({ length: 10 }).map((_, k) => )} + + ); + } + return ( + + Informasi Kegiatan + {allList.informasiKegiatan.findMany.data?.map((item) => { + return ( + + {item.name} + {item.tanggal} + {item.waktu} + {item.lokasi} + + ) + })} + + Deskripsi Kegiatan + {allList.deskripsiKegiatan.findMany.data?.map((item) => { + return ( + + + + ) + })} + + Layanan Yang Tersedia + {allList.layanantersedia.findMany.data?.map((item) => { + return ( + + + + ) + })} + + Syarat dan Ketentuan + {allList.syaratketentuan.findMany.data?.map((item) => { + return ( + + + + ) + })} + + Dokumen Yang Diperlukan + {allList.dokumenjadwalkegiatan.findMany.data?.map((item) => { + return ( + + + + ) + })} + + Pendaftaran + {allList.pendaftaranjadwal.findMany.data?.map((item) => { + return ( + + {item.name} + {item.tanggal} + {item.namaOrangtua} + {item.nomor} + {item.alamat} + {item.catatan} + + ) + })} + + ) +} + export default JadwalKegiatan; diff --git a/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/jadwal_kegiatan/pendaftaran/page.tsx b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/jadwal_kegiatan/pendaftaran/page.tsx index b57f4e02..8541a65a 100644 --- a/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/jadwal_kegiatan/pendaftaran/page.tsx +++ b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/jadwal_kegiatan/pendaftaran/page.tsx @@ -1,45 +1,71 @@ 'use client' +import stateJadwalKegiatan from '@/app/admin/(dashboard)/_state/kesehatan/data_kesehatan_warga/jadwalKegiatan'; import { ActionIcon, Box, Text, Textarea, TextInput } from '@mantine/core'; import { DateInput } from '@mantine/dates'; import { IconCalendar } from '@tabler/icons-react'; import { useState } from 'react'; +import { useProxy } from 'valtio/utils'; function Pendaftaran() { + const pendaftaran = useProxy(stateJadwalKegiatan.pendaftaranjadwal) const [dateInputOpened, setDateInputOpened] = useState(false); const pickerControl = ( setDateInputOpened(true)} variant="subtle" color="gray"> ); + + const formatDate = (date: Date | null): string => { if (!date) return ""; return date.toISOString().split('T')[0]; } + return ( Pendaftaran { + pendaftaran.create.form.name = val.target.value + }} /> { + pendaftaran.create.form.tanggal = formatDate(val); + }} /> { + pendaftaran.create.form.namaOrangtua = val.target.value + }} /> { + pendaftaran.create.form.nomor = val.target.value + }} /> { + pendaftaran.create.form.alamat = val.target.value + }} />