From d575c9c792b9a1bf34937551a2f9998929b0120b Mon Sep 17 00:00:00 2001 From: nico Date: Fri, 25 Apr 2025 10:24:52 +0800 Subject: [PATCH] Create & Read Data : * Menu Desa : Berita & Pengumuman * Kesehatan : Data Kesehatan Warga => Fasilitas Kesehatan --- .../20250423072406_init/migration.sql | 355 ++++++++++++++++++ prisma/migrations/migration_lock.toml | 3 + prisma/schema.prisma | 141 ++++++- src/app/admin/(dashboard)/_state/berita.ts | 1 - .../(dashboard)/_state/kesehatan/kesehatan.ts | 333 ++++++++++++++++ .../data-kesehatan-warga/_com/TextEditor.tsx | 79 ++++ .../_com/buttonSubmit.tsx | 12 + .../_ui/artikel_kesehatan/page.tsx | 26 ++ .../dokterdantenagamedis/listData.tsx | 90 +++++ .../dokterdantenagamedis/page.tsx | 41 ++ .../fasilitas_pendukung/listData.tsx | 21 ++ .../fasilitas_pendukung/page.tsx | 18 + .../informasi_umum/page.tsx | 40 ++ .../layanan_unggulan/layananUnggulanList.tsx | 24 ++ .../layanan_unggulan/page.tsx | 19 + .../_ui/fasilitas_kesehatan/page.tsx | 91 +++++ .../prosedurpendaftaran/listData.tsx | 25 ++ .../prosedurpendaftaran/page.tsx | 18 + .../tarifdanlayanan/listData.tsx | 82 ++++ .../tarifdanlayanan/page.tsx | 33 ++ .../_ui/jadwal_kegiatan/page.tsx | 26 ++ .../kesehatan/data-kesehatan-warga/page.tsx | 15 +- .../dokterDantenagamedis/create.ts | 31 ++ .../dokterDantenagamedis/find-many.ts | 8 + .../dokterDantenagamedis/index.ts | 18 + .../fasilitas_pendukung/create.ts | 29 ++ .../fasilitas_pendukung/find-many.ts | 8 + .../fasilitas_pendukung/index.ts | 16 + .../informasi_umum/create.ts | 31 ++ .../informasi_umum/find-many.ts | 8 + .../informasi_umum/index.ts | 18 + .../layanan_unggulan/create.ts | 28 ++ .../layanan_unggulan/find-many.ts | 8 + .../layanan_unggulan/index.ts | 17 + .../prosedur_pendaftaran/create.ts | 28 ++ .../prosedur_pendaftaran/find-many.ts | 8 + .../prosedur_pendaftaran/index.ts | 15 + .../tarifDanlayanan/create.ts | 30 ++ .../tarifDanlayanan/find-many.ts | 8 + .../tarifDanlayanan/index.ts | 18 + .../api/[[...slugs]]/_lib/kesehatan/index.ts | 20 + .../[[...slugs]]/_lib/landing_page/layanan.ts | 36 -- src/app/api/[[...slugs]]/route.ts | 2 + .../(tambahan)/fasilitas-kesehatan/page.tsx | 2 +- src/app/percobaan/{page.tsx => page.txt} | 0 xx.ts | 3 - xx.txt | 3 + 47 files changed, 1840 insertions(+), 46 deletions(-) create mode 100644 prisma/migrations/20250423072406_init/migration.sql create mode 100644 prisma/migrations/migration_lock.toml create mode 100644 src/app/admin/(dashboard)/_state/kesehatan/kesehatan.ts create mode 100644 src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_com/TextEditor.tsx create mode 100644 src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_com/buttonSubmit.tsx create mode 100644 src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/artikel_kesehatan/page.tsx create mode 100644 src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/dokterdantenagamedis/listData.tsx create mode 100644 src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/dokterdantenagamedis/page.tsx create mode 100644 src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/fasilitas_pendukung/listData.tsx create mode 100644 src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/fasilitas_pendukung/page.tsx create mode 100644 src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/informasi_umum/page.tsx create mode 100644 src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/layanan_unggulan/layananUnggulanList.tsx create mode 100644 src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/layanan_unggulan/page.tsx create mode 100644 src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/page.tsx create mode 100644 src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/prosedurpendaftaran/listData.tsx create mode 100644 src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/prosedurpendaftaran/page.tsx create mode 100644 src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/tarifdanlayanan/listData.tsx create mode 100644 src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/tarifdanlayanan/page.tsx create mode 100644 src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/jadwal_kegiatan/page.tsx create mode 100644 src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/dokterDantenagamedis/create.ts create mode 100644 src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/dokterDantenagamedis/find-many.ts create mode 100644 src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/dokterDantenagamedis/index.ts create mode 100644 src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/fasilitas_pendukung/create.ts create mode 100644 src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/fasilitas_pendukung/find-many.ts create mode 100644 src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/fasilitas_pendukung/index.ts create mode 100644 src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/informasi_umum/create.ts create mode 100644 src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/informasi_umum/find-many.ts create mode 100644 src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/informasi_umum/index.ts create mode 100644 src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/layanan_unggulan/create.ts create mode 100644 src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/layanan_unggulan/find-many.ts create mode 100644 src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/layanan_unggulan/index.ts create mode 100644 src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/prosedur_pendaftaran/create.ts create mode 100644 src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/prosedur_pendaftaran/find-many.ts create mode 100644 src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/prosedur_pendaftaran/index.ts create mode 100644 src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/tarifDanlayanan/create.ts create mode 100644 src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/tarifDanlayanan/find-many.ts create mode 100644 src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/tarifDanlayanan/index.ts create mode 100644 src/app/api/[[...slugs]]/_lib/kesehatan/index.ts delete mode 100644 src/app/api/[[...slugs]]/_lib/landing_page/layanan.ts rename src/app/percobaan/{page.tsx => page.txt} (100%) delete mode 100644 xx.ts create mode 100644 xx.txt diff --git a/prisma/migrations/20250423072406_init/migration.sql b/prisma/migrations/20250423072406_init/migration.sql new file mode 100644 index 00000000..ea8db494 --- /dev/null +++ b/prisma/migrations/20250423072406_init/migration.sql @@ -0,0 +1,355 @@ +-- CreateTable +CREATE TABLE "Layanan" ( + "id" TEXT NOT NULL, + "name" TEXT NOT NULL, + + CONSTRAINT "Layanan_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Potensi" ( + "id" TEXT NOT NULL, + "name" TEXT NOT NULL, + + CONSTRAINT "Potensi_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "LandingPage_Layanan" ( + "id" TEXT NOT NULL, + "deksripsi" TEXT NOT NULL, + + CONSTRAINT "LandingPage_Layanan_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "AppMenu" ( + "id" TEXT NOT NULL, + "name" TEXT NOT NULL, + "link" TEXT NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "deletedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "isActive" BOOLEAN NOT NULL DEFAULT true, + + CONSTRAINT "AppMenu_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "AppMenuChild" ( + "id" TEXT NOT NULL, + "name" TEXT NOT NULL, + "link" TEXT NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "deletedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "isActive" BOOLEAN NOT NULL DEFAULT true, + "appMenuId" TEXT, + + CONSTRAINT "AppMenuChild_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Berita" ( + "id" TEXT NOT NULL, + "judul" TEXT NOT NULL, + "deskripsi" TEXT NOT NULL, + "image" TEXT NOT NULL, + "content" TEXT NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "deletedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "isActive" BOOLEAN NOT NULL DEFAULT true, + "katagoryBeritaId" TEXT, + + CONSTRAINT "Berita_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "KatagoryBerita" ( + "id" TEXT NOT NULL, + "name" TEXT NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "deletedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "isActive" BOOLEAN NOT NULL DEFAULT true, + + CONSTRAINT "KatagoryBerita_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Pengumuman" ( + "id" TEXT NOT NULL, + "judul" TEXT NOT NULL, + "deskripsi" TEXT NOT NULL, + "content" TEXT NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "deletedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "isActive" BOOLEAN NOT NULL DEFAULT true, + "categoryPengumumanId" TEXT, + + CONSTRAINT "Pengumuman_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "CategoryPengumuman" ( + "id" TEXT NOT NULL, + "name" TEXT NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "deletedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "isActive" BOOLEAN NOT NULL DEFAULT true, + + CONSTRAINT "CategoryPengumuman_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Images" ( + "id" TEXT NOT NULL, + "url" TEXT NOT NULL, + "label" TEXT NOT NULL DEFAULT 'null', + "active" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "Images_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Videos" ( + "id" TEXT NOT NULL, + "url" TEXT NOT NULL, + "label" TEXT NOT NULL DEFAULT 'null', + "active" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "Videos_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "GalleryFoto" ( + "id" TEXT NOT NULL, + "name" TEXT NOT NULL, + "image" TEXT NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "deletedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "isActive" BOOLEAN NOT NULL DEFAULT true, + "imagesId" TEXT, + + CONSTRAINT "GalleryFoto_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "GalleryVideo" ( + "id" TEXT NOT NULL, + "name" TEXT NOT NULL, + "video" TEXT NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "deletedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "isActive" BOOLEAN NOT NULL DEFAULT true, + "videosId" TEXT, + + CONSTRAINT "GalleryVideo_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "DataKematian_Kelahiran" ( + "id" SERIAL NOT NULL, + "tahun" TEXT NOT NULL, + "kematianKasar" TEXT NOT NULL, + "kematianBayi" TEXT NOT NULL, + "kelahiranKasar" TEXT NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "DataKematian_Kelahiran_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "FasilitasKesehatan" ( + "id" TEXT NOT NULL, + "name" TEXT NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "deletedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "isActive" BOOLEAN NOT NULL DEFAULT true, + + CONSTRAINT "FasilitasKesehatan_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "InformasiUmum" ( + "id" TEXT NOT NULL, + "fasilitas" TEXT NOT NULL, + "alamat" TEXT NOT NULL, + "jamOperasional" TEXT NOT NULL, + "fasilitasKesehatanId" TEXT NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "deletedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "isActive" BOOLEAN NOT NULL DEFAULT true, + + CONSTRAINT "InformasiUmum_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "LayananUnggulan" ( + "id" TEXT NOT NULL, + "content" TEXT NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "deletedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "isActive" BOOLEAN NOT NULL DEFAULT true, + + CONSTRAINT "LayananUnggulan_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "DokterdanTenagaMedis" ( + "id" TEXT NOT NULL, + "name" TEXT NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "deletedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "isActive" BOOLEAN NOT NULL DEFAULT true, + + CONSTRAINT "DokterdanTenagaMedis_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "FasilitasPendukung" ( + "id" TEXT NOT NULL, + "name" TEXT NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "deletedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "isActive" BOOLEAN NOT NULL DEFAULT true, + + CONSTRAINT "FasilitasPendukung_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "ProsedurPendaftaran" ( + "id" TEXT NOT NULL, + "content" TEXT NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "deletedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "isActive" BOOLEAN NOT NULL DEFAULT true, + + CONSTRAINT "ProsedurPendaftaran_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "_FasilitasKesehatanToLayananUnggulan" ( + "A" TEXT NOT NULL, + "B" TEXT NOT NULL, + + CONSTRAINT "_FasilitasKesehatanToLayananUnggulan_AB_pkey" PRIMARY KEY ("A","B") +); + +-- CreateTable +CREATE TABLE "_FasilitasKesehatanToFasilitasPendukung" ( + "A" TEXT NOT NULL, + "B" TEXT NOT NULL, + + CONSTRAINT "_FasilitasKesehatanToFasilitasPendukung_AB_pkey" PRIMARY KEY ("A","B") +); + +-- CreateTable +CREATE TABLE "_FasilitasKesehatanToProsedurPendaftaran" ( + "A" TEXT NOT NULL, + "B" TEXT NOT NULL, + + CONSTRAINT "_FasilitasKesehatanToProsedurPendaftaran_AB_pkey" PRIMARY KEY ("A","B") +); + +-- CreateTable +CREATE TABLE "_DokterdanTenagaMedisToFasilitasKesehatan" ( + "A" TEXT NOT NULL, + "B" TEXT NOT NULL, + + CONSTRAINT "_DokterdanTenagaMedisToFasilitasKesehatan_AB_pkey" PRIMARY KEY ("A","B") +); + +-- CreateIndex +CREATE UNIQUE INDEX "Layanan_name_key" ON "Layanan"("name"); + +-- CreateIndex +CREATE UNIQUE INDEX "Potensi_name_key" ON "Potensi"("name"); + +-- CreateIndex +CREATE UNIQUE INDEX "AppMenu_name_key" ON "AppMenu"("name"); + +-- CreateIndex +CREATE UNIQUE INDEX "AppMenuChild_name_key" ON "AppMenuChild"("name"); + +-- CreateIndex +CREATE UNIQUE INDEX "KatagoryBerita_name_key" ON "KatagoryBerita"("name"); + +-- CreateIndex +CREATE UNIQUE INDEX "CategoryPengumuman_name_key" ON "CategoryPengumuman"("name"); + +-- CreateIndex +CREATE UNIQUE INDEX "GalleryFoto_imagesId_key" ON "GalleryFoto"("imagesId"); + +-- CreateIndex +CREATE UNIQUE INDEX "GalleryVideo_videosId_key" ON "GalleryVideo"("videosId"); + +-- CreateIndex +CREATE INDEX "_FasilitasKesehatanToLayananUnggulan_B_index" ON "_FasilitasKesehatanToLayananUnggulan"("B"); + +-- CreateIndex +CREATE INDEX "_FasilitasKesehatanToFasilitasPendukung_B_index" ON "_FasilitasKesehatanToFasilitasPendukung"("B"); + +-- CreateIndex +CREATE INDEX "_FasilitasKesehatanToProsedurPendaftaran_B_index" ON "_FasilitasKesehatanToProsedurPendaftaran"("B"); + +-- CreateIndex +CREATE INDEX "_DokterdanTenagaMedisToFasilitasKesehatan_B_index" ON "_DokterdanTenagaMedisToFasilitasKesehatan"("B"); + +-- AddForeignKey +ALTER TABLE "AppMenuChild" ADD CONSTRAINT "AppMenuChild_appMenuId_fkey" FOREIGN KEY ("appMenuId") REFERENCES "AppMenu"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Berita" ADD CONSTRAINT "Berita_katagoryBeritaId_fkey" FOREIGN KEY ("katagoryBeritaId") REFERENCES "KatagoryBerita"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Pengumuman" ADD CONSTRAINT "Pengumuman_categoryPengumumanId_fkey" FOREIGN KEY ("categoryPengumumanId") REFERENCES "CategoryPengumuman"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "GalleryFoto" ADD CONSTRAINT "GalleryFoto_imagesId_fkey" FOREIGN KEY ("imagesId") REFERENCES "Images"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "GalleryVideo" ADD CONSTRAINT "GalleryVideo_videosId_fkey" FOREIGN KEY ("videosId") REFERENCES "Videos"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "InformasiUmum" ADD CONSTRAINT "InformasiUmum_fasilitasKesehatanId_fkey" FOREIGN KEY ("fasilitasKesehatanId") REFERENCES "FasilitasKesehatan"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "_FasilitasKesehatanToLayananUnggulan" ADD CONSTRAINT "_FasilitasKesehatanToLayananUnggulan_A_fkey" FOREIGN KEY ("A") REFERENCES "FasilitasKesehatan"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "_FasilitasKesehatanToLayananUnggulan" ADD CONSTRAINT "_FasilitasKesehatanToLayananUnggulan_B_fkey" FOREIGN KEY ("B") REFERENCES "LayananUnggulan"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "_FasilitasKesehatanToFasilitasPendukung" ADD CONSTRAINT "_FasilitasKesehatanToFasilitasPendukung_A_fkey" FOREIGN KEY ("A") REFERENCES "FasilitasKesehatan"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "_FasilitasKesehatanToFasilitasPendukung" ADD CONSTRAINT "_FasilitasKesehatanToFasilitasPendukung_B_fkey" FOREIGN KEY ("B") REFERENCES "FasilitasPendukung"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "_FasilitasKesehatanToProsedurPendaftaran" ADD CONSTRAINT "_FasilitasKesehatanToProsedurPendaftaran_A_fkey" FOREIGN KEY ("A") REFERENCES "FasilitasKesehatan"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "_FasilitasKesehatanToProsedurPendaftaran" ADD CONSTRAINT "_FasilitasKesehatanToProsedurPendaftaran_B_fkey" FOREIGN KEY ("B") REFERENCES "ProsedurPendaftaran"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "_DokterdanTenagaMedisToFasilitasKesehatan" ADD CONSTRAINT "_DokterdanTenagaMedisToFasilitasKesehatan_A_fkey" FOREIGN KEY ("A") REFERENCES "DokterdanTenagaMedis"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "_DokterdanTenagaMedisToFasilitasKesehatan" ADD CONSTRAINT "_DokterdanTenagaMedisToFasilitasKesehatan_B_fkey" FOREIGN KEY ("B") REFERENCES "FasilitasKesehatan"("id") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/prisma/migrations/migration_lock.toml b/prisma/migrations/migration_lock.toml new file mode 100644 index 00000000..648c57fd --- /dev/null +++ b/prisma/migrations/migration_lock.toml @@ -0,0 +1,3 @@ +# Please do not edit this file manually +# It should be added in your version-control system (e.g., Git) +provider = "postgresql" \ No newline at end of file diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 3833e395..cc61725e 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -46,7 +46,7 @@ model AppMenuChild { AppMenu AppMenu? @relation(fields: [appMenuId], references: [id]) appMenuId String? } - +// ========================================= MENU DESA ========================================= // // ========================================= BERITA ========================================= // model Berita { id String @id @default(cuid()) @@ -95,3 +95,142 @@ model CategoryPengumuman { deletedAt DateTime @default(now()) isActive Boolean @default(true) } + +// ========================================= IMAGES ========================================= // +model Images { + id String @id @default(cuid()) + url String + label String @default("null") + active Boolean @default(true) + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + GalleryFoto GalleryFoto[] +} +// ========================================= VIDEOS ========================================= // +model Videos { + id String @id @default(cuid()) + url String + label String @default("null") + active Boolean @default(true) + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + GalleryVideo GalleryVideo[] +} + + +// ========================================= GALLERY ========================================= // +model GalleryFoto { + id String @id @default(cuid()) + name String + image String + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + deletedAt DateTime @default(now()) + isActive Boolean @default(true) + imagesId String? @unique + imageGalleryFoto Images? @relation(fields: [imagesId], references: [id]) +} + +model GalleryVideo { + id String @id @default(cuid()) + name String + video String + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + deletedAt DateTime @default(now()) + isActive Boolean @default(true) + videosId String? @unique + videosGalleryVideo Videos? @relation(fields: [videosId], references: [id]) +} +// ========================================= MENU KESEHATAN ========================================= // +// ========================================= DATA KESEHATAN WARGA ========================================= // +// ========================================= FASILITAS KESEHATAN ========================================= // +model DataKematian_Kelahiran { + id Int @id @default(autoincrement()) + tahun String + kematianKasar String + kematianBayi String + kelahiranKasar String + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt +} + +model FasilitasKesehatan { + id String @id @default(cuid()) + name String + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + deletedAt DateTime @default(now()) + isActive Boolean @default(true) + InformasiUmum InformasiUmum[] + LayananUnggulan LayananUnggulan[] + DokterdanTenagaMedis DokterdanTenagaMedis[] + FasilitasPendukung FasilitasPendukung[] + ProsedurPendaftaran ProsedurPendaftaran[] + TarifDanLayanan TarifDanLayanan[] +} + +model InformasiUmum{ + id String @id @default(cuid()) + fasilitas String + alamat String + jamOperasional String + FasilitasKesehatan FasilitasKesehatan[] + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + deletedAt DateTime @default(now()) + isActive Boolean @default(true) +} + +model LayananUnggulan{ + id String @id @default(cuid()) + content String + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + deletedAt DateTime @default(now()) + isActive Boolean @default(true) + FasilitasKesehatan FasilitasKesehatan[] +} + +model DokterdanTenagaMedis{ + id String @id @default(cuid()) + name String + specialist String + jadwal String + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + deletedAt DateTime @default(now()) + isActive Boolean @default(true) + FasilitasKesehatan FasilitasKesehatan[] +} + +model FasilitasPendukung{ + id String @id @default(cuid()) + content String + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + deletedAt DateTime @default(now()) + isActive Boolean @default(true) + FasilitasKesehatan FasilitasKesehatan[] +} + +model ProsedurPendaftaran{ + id String @id @default(cuid()) + content String + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + deletedAt DateTime @default(now()) + isActive Boolean @default(true) + FasilitasKesehatan FasilitasKesehatan[] +} + +model TarifDanLayanan{ + id String @id @default(cuid()) + layanan String + tarif String + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + deletedAt DateTime @default(now()) + isActive Boolean @default(true) + FasilitasKesehatan FasilitasKesehatan[] +} \ No newline at end of file diff --git a/src/app/admin/(dashboard)/_state/berita.ts b/src/app/admin/(dashboard)/_state/berita.ts index 9e264257..817c5127 100644 --- a/src/app/admin/(dashboard)/_state/berita.ts +++ b/src/app/admin/(dashboard)/_state/berita.ts @@ -75,7 +75,6 @@ const berita = proxy({ | null, async load() { const res = await ApiFetch.api.desa.berita["find-many"].get(); - console.log(res) if (res.status === 200) { berita.findMany.data = (res.data?.data as any) ?? []; } diff --git a/src/app/admin/(dashboard)/_state/kesehatan/kesehatan.ts b/src/app/admin/(dashboard)/_state/kesehatan/kesehatan.ts new file mode 100644 index 00000000..12e43509 --- /dev/null +++ b/src/app/admin/(dashboard)/_state/kesehatan/kesehatan.ts @@ -0,0 +1,333 @@ +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 Umum */ +const templateInformasiUmum = z.object({ + fasilitas: z.string().min(3, "Fasilitas minimal 3 karakter"), + alamat: z.string().min(3, "Alamat minimal 3 karakter"), + jamOperasional: z.string().min(3, "Jam Operasional minimal 3 karakter"), +}); + +type InfromasiUmum = Prisma.InformasiUmumGetPayload<{ + select: { + fasilitas: true; + alamat: true; + jamOperasional: true; + }; +}>; + +const informasiumum = proxy({ + create: { + form: {} as InfromasiUmum, + loading: false, + async create() { + const cek = templateInformasiUmum.safeParse(informasiumum.create.form); + if (!cek.success) { + const err = `[${cek.error.issues + .map((v) => `${v.path.join(".")}`) + .join("\n")}] required`; + return toast.error(err); + } + try { + informasiumum.create.loading = true; + const res = await ApiFetch.api.kesehatan.informasiumum["create"].post( + informasiumum.create.form + ); + if (res.status === 200) { + informasiumum.findMany.load(); + return toast.success("success create"); + } + return toast.error("failed create"); + } catch (error) { + console.log((error as Error).message); + } finally { + informasiumum.create.loading = false; + } + }, + }, + findMany: { + data: null as + | Prisma.InformasiUmumGetPayload<{ omit: { isActive: true } }>[] + | null, + async load() { + const res = await ApiFetch.api.kesehatan. + informasiumum["find-many"].get(); + if (res.status === 200) { + informasiumum.findMany.data = res.data?.data ?? []; + } + }, + }, +}); +/* ======================================================================= */ + +/* Layanan Unggulan */ +const templateLayananUnggulanForm = z.object({ + content: z.string().min(3, "Content minimal 3 karakter"), +}); + +type LayananUnggulan = Prisma.LayananUnggulanGetPayload<{ + select: { + content: true; + }; +}>; + +const layananunggulan = proxy({ + create: { + form: {} as LayananUnggulan, + loading: false, + async create() { + const cek = templateLayananUnggulanForm.safeParse(layananunggulan.create.form); + if (!cek.success) { + const err = `[${cek.error.issues + .map((v) => `${v.path.join(".")}`) + .join("\n")}] required`; + return toast.error(err); + } + try { + layananunggulan.create.loading = true; + const res = await ApiFetch.api.kesehatan.layananunggulan["create"].post( + layananunggulan.create.form + ); + if (res.status === 200) { + layananunggulan.findMany.load(); + return toast.success("success create"); + } + return toast.error("failed create"); + } catch (error) { + console.log((error as Error).message); + } finally { + layananunggulan.create.loading = false; + } + }, + }, + findMany: { + data: null as + | Prisma.LayananUnggulanGetPayload<{ omit: { isActive: true } }>[] + | null, + async load() { + const res = await ApiFetch.api.kesehatan. + layananunggulan["find-many"].get(); + if (res.status === 200) { + layananunggulan.findMany.data = res.data?.data ?? []; + } + }, + }, +}) +/* ======================================================================= */ + +/* Dokter dan Tenaga Medis */ +const templateDokterdanTenagaMedis = z.object({ + name: z.string().min(3, "Name minimal 3 karakter"), + specialist: z.string().min(3, "Specialist minimal 3 karakter"), + jadwal: z.string().min(3, "Jadwal minimal 3 karakter"), +}) + +type DokterdanTenagaMedis = Prisma.DokterdanTenagaMedisGetPayload<{ + select: { + name: true; + specialist: true; + jadwal: true; + }; +}>; + +const dokterdantenagamedis = proxy({ + create: { + form: {} as DokterdanTenagaMedis, + loading: false, + async create() { + const cek = templateDokterdanTenagaMedis.safeParse(dokterdantenagamedis.create.form); + if (!cek.success) { + const err = `[${cek.error.issues + .map((v) => `${v.path.join(".")}`) + .join("\n")}] required`; + return toast.error(err); + } + try { + dokterdantenagamedis.create.loading = true; + const res = await ApiFetch.api.kesehatan.dokterdantenagamedis["create"].post(dokterdantenagamedis.create.form); + if (res.status === 200) { + dokterdantenagamedis.findMany.load(); + return toast.success("success create"); + } + return toast.error("failed create"); + } catch (error) { + console.log((error as Error).message); + } finally { + dokterdantenagamedis.create.loading = false; + } + }, + }, + findMany: { + data: null as + | Prisma.DokterdanTenagaMedisGetPayload<{ omit: { isActive: true } }>[] + | null, + async load() { + const res = await ApiFetch.api.kesehatan.dokterdantenagamedis["find-many"].get(); + if (res.status === 200) { + dokterdantenagamedis.findMany.data = res.data?.data ?? []; + } + }, + }, +}) +/* ======================================================================= */ + +/* Fasilitas Pendukung */ +const templateFasilitasPendukung = z.object({ + content: z.string().min(3, "Content minimal 3 karakter"), +}) + +type FasilitasPendukung = Prisma.FasilitasPendukungGetPayload<{ + select: { + content: true; + }; +}>; + +const fasilitaspendukung = proxy({ + create: { + form: {} as FasilitasPendukung, + loading: false, + async create() { + const cek = templateFasilitasPendukung.safeParse(fasilitaspendukung.create.form); + if (!cek.success) { + const err = `[${cek.error.issues + .map((v) => `${v.path.join(".")}`) + .join("\n")}] required`; + return toast.error(err); + } + try { + fasilitaspendukung.create.loading = true; + const res = await ApiFetch.api.kesehatan.fasilitaspendukung["create"].post(fasilitaspendukung.create.form); + if (res.status === 200) { + fasilitaspendukung.findMany.load(); + return toast.success("success create"); + } + return toast.error("failed create"); + } catch (error) { + console.log((error as Error).message); + } finally { + fasilitaspendukung.create.loading = false; + } + }, + }, + findMany: { + data: null as + | Prisma.FasilitasPendukungGetPayload<{ omit: { isActive: true } }>[] + | null, + async load() { + const res = await ApiFetch.api.kesehatan. + fasilitaspendukung["find-many"].get(); + if (res.status === 200) { + fasilitaspendukung.findMany.data = res.data?.data ?? []; + } + }, + }, +}) +/* ======================================================================= */ + +/* Tarif dan Layanan */ +const templateTarifDanLayanan = z.object({ + layanan: z.string().min(3, "Layanan minimal 3 karakter"), + tarif: z.string().min(3, "Tarif minimal 3 karakter"), +}) + +const tarifdanlayanan = proxy({ + create: { + form: {} as Prisma.TarifDanLayananGetPayload<{ select: { layanan: true; tarif: true } }>, + loading: false, + async create() { + const cek = templateTarifDanLayanan.safeParse(tarifdanlayanan.create.form); + if (!cek.success) { + const err = `[${cek.error.issues + .map((v) => `${v.path.join(".")}`) + .join("\n")}] required`; + return toast.error(err); + } + try { + tarifdanlayanan.create.loading = true; + const res = await ApiFetch.api.kesehatan.tarifdanlayanan["create"].post(tarifdanlayanan.create.form); + if (res.status === 200) { + tarifdanlayanan.findMany.load(); + return toast.success("success create"); + } + return toast.error("failed create"); + } catch (error) { + console.log((error as Error).message); + } finally { + tarifdanlayanan.create.loading = false; + } + }, + }, + findMany: { + data: null as + | Prisma.TarifDanLayananGetPayload<{ omit: { isActive: true } }>[] + | null, + async load() { + const res = await ApiFetch.api.kesehatan. + tarifdanlayanan["find-many"].get(); + if (res.status === 200) { + tarifdanlayanan.findMany.data = res.data?.data ?? []; + } + }, + }, +}) +/* ======================================================================= */ + +/* Prosedur Pendaftaran */ +const templateProsedurPendaftaran = z.object({ + content: z.string().min(3, "Content minimal 3 karakter"), +}) + +const prosedurpendaftaran = proxy({ + create: { + form: {} as Prisma.ProsedurPendaftaranGetPayload<{ select: { content: true } }>, + loading: false, + async create() { + const cek = templateProsedurPendaftaran.safeParse(prosedurpendaftaran.create.form); + if (!cek.success) { + const err = `[${cek.error.issues + .map((v) => `${v.path.join(".")}`) + .join("\n")}] required`; + return toast.error(err); + } + try { + prosedurpendaftaran.create.loading = true; + const res = await ApiFetch.api.kesehatan.prosedurpendaftaran["create"].post(prosedurpendaftaran.create.form); + if (res.status === 200) { + prosedurpendaftaran.findMany.load(); + return toast.success("success create"); + } + return toast.error("failed create"); + } catch (error) { + console.log((error as Error).message); + } finally { + prosedurpendaftaran.create.loading = false; + } + }, + }, + findMany: { + data: null as + | Prisma.ProsedurPendaftaranGetPayload<{ omit: { isActive: true } }>[] + | null, + async load() { + const res = await ApiFetch.api.kesehatan. + prosedurpendaftaran["find-many"].get(); + if (res.status === 200) { + prosedurpendaftaran.findMany.data = res.data?.data ?? []; + } + }, + }, +}) + +const stateKesehatan = proxy({ + informasiumum, + layananunggulan, + dokterdantenagamedis, + fasilitaspendukung, + tarifdanlayanan, + prosedurpendaftaran +}) + +export default stateKesehatan 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 new file mode 100644 index 00000000..c9905c24 --- /dev/null +++ b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_com/TextEditor.tsx @@ -0,0 +1,79 @@ +'use client' +import { RichTextEditor, Link } from '@mantine/tiptap'; +import { useEditor } from '@tiptap/react'; +import Highlight from '@tiptap/extension-highlight'; +import StarterKit from '@tiptap/starter-kit'; +import Underline from '@tiptap/extension-underline'; +import TextAlign from '@tiptap/extension-text-align'; +import Superscript from '@tiptap/extension-superscript'; +import SubScript from '@tiptap/extension-subscript'; + +const content = + '

Welcome to Mantine rich text editor

RichTextEditor component focuses on usability and is designed to be as simple as possible to bring a familiar editing experience to regular users. RichTextEditor is based on Tiptap.dev and supports all of its features:

'; + +function TextEditor() { + const editor = useEditor({ + extensions: [ + StarterKit, + Underline, + Link, + Superscript, + SubScript, + Highlight, + TextAlign.configure({ types: ['heading', 'paragraph'] }), + ], + content, + }); + + return ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); +} +export default TextEditor \ No newline at end of file diff --git a/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_com/buttonSubmit.tsx b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_com/buttonSubmit.tsx new file mode 100644 index 00000000..a68af3b2 --- /dev/null +++ b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_com/buttonSubmit.tsx @@ -0,0 +1,12 @@ +import { Button } from '@mantine/core'; +import React from 'react'; + +function ButtonSubmit() { + return ( + <> + + + ); +} + +export default ButtonSubmit; diff --git a/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/artikel_kesehatan/page.tsx b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/artikel_kesehatan/page.tsx new file mode 100644 index 00000000..5500822e --- /dev/null +++ b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/artikel_kesehatan/page.tsx @@ -0,0 +1,26 @@ +import { Box, SimpleGrid, Stack, TextInput, Title } from '@mantine/core'; +import React from 'react'; + +function ArtikelKesehatan() { + return ( + + + + Artikel Kesehatan + + + + List Artikel Kesehatan + + + + ); +} + + +export default ArtikelKesehatan; 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 new file mode 100644 index 00000000..4b174dfe --- /dev/null +++ b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/dokterdantenagamedis/listData.tsx @@ -0,0 +1,90 @@ +import stateKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/kesehatan'; +import colors from '@/con/colors'; +import { Center, Stack, Table, TableTbody, TableTd, TableTh, TableThead, TableTr, Text } from '@mantine/core'; +import { useShallowEffect } from '@mantine/hooks'; +import _ from 'lodash'; +import { useProxy } from 'valtio/utils'; + +function DokterdanTenagaMedisList() { + const kesehatanState = useProxy(stateKesehatan.dokterdantenagamedis); + + useShallowEffect(() => { + kesehatanState.findMany.load(); + }, []); + + // Penanganan kasus ketika tidak ada data + if (_.isEmpty(kesehatanState.findMany.data)) { + return ( + + + + + +
Nama
+
+ +
Specialist
+
+ +
Jadwal
+
+
+
+ + + +
+ Tidak ada data +
+
+
+
+
+
+ ); + } + + return ( + + + + + +
Nama
+
+ +
Specialist
+
+ +
Jadwal
+
+
+
+ + {kesehatanState.findMany.data?.map((item) => ( + + {item.name} + Specialist {item.specialist} + {item.jadwal} + + ))} + +
+
+ ); +} + +export default DokterdanTenagaMedisList; \ No newline at end of file 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 new file mode 100644 index 00000000..2f6a7788 --- /dev/null +++ b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/dokterdantenagamedis/page.tsx @@ -0,0 +1,41 @@ +import stateKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/kesehatan'; +import { Box, Button, Text, TextInput } from '@mantine/core'; +import React from 'react'; +import { useProxy } from 'valtio/utils'; + +function DokterDanTenagaMedis() { + const dokterdantenagamedisState = useProxy(stateKesehatan.dokterdantenagamedis) + return ( + + Dokter & Tenaga Medis + { + dokterdantenagamedisState.create.form.name = val.target.value + }} + /> + { + dokterdantenagamedisState.create.form.specialist = val.target.value + }} + /> + { + dokterdantenagamedisState.create.form.jadwal = val.target.value + }} + /> + + + ); +} + +export default DokterDanTenagaMedis; 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 new file mode 100644 index 00000000..991f6421 --- /dev/null +++ b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/fasilitas_pendukung/listData.tsx @@ -0,0 +1,21 @@ +import { Box, Stack, Text } from '@mantine/core'; +import React from 'react'; +import { useProxy } from 'valtio/utils'; +import stateKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/kesehatan'; +import { useShallowEffect } from '@mantine/hooks'; + +function FasilitasPendukungList() { + const fasilitaspendukungState = useProxy(stateKesehatan.fasilitaspendukung) + useShallowEffect(() => { + fasilitaspendukungState.findMany.load() + }, []) + return + {fasilitaspendukungState.findMany.data?.map((item) => ( + + + + ))} + +} + +export default 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 new file mode 100644 index 00000000..8a072e0d --- /dev/null +++ b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/fasilitas_pendukung/page.tsx @@ -0,0 +1,18 @@ +import stateKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/kesehatan'; +import { BeritaEditor } from '@/app/admin/(dashboard)/desa/berita/_com/BeritaEditor'; +import { Box, Text } from '@mantine/core'; +import React from 'react'; +import { useProxy } from 'valtio/utils'; + +function FasilitasPendukung() { + const fasilitaspendukungState = useProxy(stateKesehatan.fasilitaspendukung) + return + Fasilitas Pendukung + { + fasilitaspendukungState.create.form.content = val + fasilitaspendukungState.create.create() + }}/> + +} + +export default FasilitasPendukung; 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 new file mode 100644 index 00000000..02a69e6f --- /dev/null +++ b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/informasi_umum/page.tsx @@ -0,0 +1,40 @@ +'use client' +import stateKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/kesehatan'; +import { Box, Button, Text, TextInput } from '@mantine/core'; +import React from 'react'; +import { useProxy } from 'valtio/utils'; + +function InformasiUmum() { + const infromasiState = useProxy(stateKesehatan) + return + Informasi Umum + { + infromasiState.informasiumum.create.form.fasilitas = val.target.value + }} + /> + { + infromasiState.informasiumum.create.form.alamat = val.target.value + }} + /> + { + infromasiState.informasiumum.create.form.jamOperasional = val.target.value + }} + /> + + +} + +export default InformasiUmum; diff --git a/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/layanan_unggulan/layananUnggulanList.tsx b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/layanan_unggulan/layananUnggulanList.tsx new file mode 100644 index 00000000..e40d772f --- /dev/null +++ b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/layanan_unggulan/layananUnggulanList.tsx @@ -0,0 +1,24 @@ +import stateKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/kesehatan'; +import { Box, Skeleton, Stack, Text } from '@mantine/core'; +import { useShallowEffect } from '@mantine/hooks'; +import { useProxy } from 'valtio/utils'; + +function LayananUnggulanList() { + const layananunggulanstate = useProxy(stateKesehatan.layananunggulan) + useShallowEffect(() => { + layananunggulanstate.findMany.load() + }, []) + + if (!layananunggulanstate.findMany.data) return + {Array.from({ length: 10 }).map((v, k) => )} + + return + {layananunggulanstate.findMany.data?.map((item) => ( + + + + ))} + +} + +export default LayananUnggulanList; 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 new file mode 100644 index 00000000..5f71353c --- /dev/null +++ b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/layanan_unggulan/page.tsx @@ -0,0 +1,19 @@ +'use client' +import { Box, Text } from '@mantine/core'; +import { useProxy } from 'valtio/utils'; +import stateKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/kesehatan'; +import { BeritaEditor } from '@/app/admin/(dashboard)/desa/berita/_com/BeritaEditor'; + +function LayananUnggulan() { + const informasiumumState = useProxy(stateKesehatan.layananunggulan) + return + Layanan Unggulan + { + informasiumumState.create.form.content = val + informasiumumState.create.create() + }} /> + + ; +} + +export default LayananUnggulan; 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 new file mode 100644 index 00000000..2940a638 --- /dev/null +++ b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/page.tsx @@ -0,0 +1,91 @@ +"use client" + +import stateKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/kesehatan'; +import { Box, SimpleGrid, Skeleton, Stack, Text, Title } from '@mantine/core'; +import { useShallowEffect } from '@mantine/hooks'; +import { useProxy } from 'valtio/utils'; +import DokterdanTenagaMedisList from './dokterdantenagamedis/listData'; +import DokterDanTenagaMedis from './dokterdantenagamedis/page'; +import FasilitasPendukungList from './fasilitas_pendukung/listData'; +import FasilitasPendukung from './fasilitas_pendukung/page'; +import InformasiUmum from './informasi_umum/page'; +import LayananUnggulanList from './layanan_unggulan/layananUnggulanList'; +import LayananUnggulan from './layanan_unggulan/page'; +import ProsedurPendaftaran from './prosedurpendaftaran/page'; +import TarifDanLayananList from './tarifdanlayanan/listData'; +import TarifDanLayanan from './tarifdanlayanan/page'; +import ListProsedurPendaftaran from './prosedurpendaftaran/listData'; + + +function FasilitasKesehatan() { + + + + return ( + + + + + Fasilitas Kesehatan + {/* Informasi Umum */} + + {/* Layanan Unggulan */} + + {/* Dokter & Tenaga Medis */} + + {/* Fasilitas Pendukung */} + + {/* Tarif & Layanan */} + + {/* Prosedur Pendaftaran */} + + + + + + + List Fasilitas Kesehatan + Informasi Umum + + Layanan Unggulan + + Dokter & Tenaga Medis + + Fasilitas Pendukung + + Tarif & Layanan + + Prosedur Pendaftaran + + + + + + + ); +} + +function InformasiUmumList(){ + const infromasiState = useProxy(stateKesehatan) + useShallowEffect(() => { + infromasiState.informasiumum.findMany.load() + }, []) + + if (!infromasiState.informasiumum.findMany.data) return + {Array.from({ length: 10 }).map((v, k) => )} + + return + {infromasiState.informasiumum.findMany.data?.map((item) => ( + + + {item.fasilitas} + {item.alamat} + {item.jamOperasional} + + ))} + +} + +export default FasilitasKesehatan; 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 new file mode 100644 index 00000000..1529da3c --- /dev/null +++ b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/prosedurpendaftaran/listData.tsx @@ -0,0 +1,25 @@ +import stateKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/kesehatan'; +import { Box, Skeleton, Stack, Text } from '@mantine/core'; +import { useShallowEffect } from '@mantine/hooks'; +import { useProxy } from 'valtio/utils'; + +function ListProsedurPendaftaran() { + const prosedurpendaftaranState = useProxy(stateKesehatan.prosedurpendaftaran) + useShallowEffect(() => { + prosedurpendaftaranState.findMany.load() + }, []) + + if (!prosedurpendaftaranState.findMany.data)return + {Array.from({ length: 10 }).map((v, k) => )} + + + return + {prosedurpendaftaranState.findMany.data?.map((item) => ( + + + + ))} + +} + +export default ListProsedurPendaftaran; 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 new file mode 100644 index 00000000..bfd54ae9 --- /dev/null +++ b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/prosedurpendaftaran/page.tsx @@ -0,0 +1,18 @@ +import { Box, Text } from '@mantine/core'; +import { BeritaEditor } from '@/app/admin/(dashboard)/desa/berita/_com/BeritaEditor'; +import stateKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/kesehatan'; +import { useProxy } from 'valtio/utils'; + +function ProsedurPendaftaran() { + const prosedurpendaftaranState = useProxy(stateKesehatan.prosedurpendaftaran) + return + Prosedur Pendaftaran + { + prosedurpendaftaranState.create.form.content = val + prosedurpendaftaranState.create.create() + }} /> + + +} + +export default ProsedurPendaftaran; 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 new file mode 100644 index 00000000..d1caea22 --- /dev/null +++ b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/tarifdanlayanan/listData.tsx @@ -0,0 +1,82 @@ +import stateKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/kesehatan'; +import colors from '@/con/colors'; +import { Center, Stack, Table, TableTbody, TableTd, TableTh, TableThead, TableTr, Text } from '@mantine/core'; +import { useShallowEffect } from '@mantine/hooks'; +import _ from 'lodash'; +import { useProxy } from 'valtio/utils'; + +function TarifDanLayananList() { + const tarifdanlayanan = useProxy(stateKesehatan.tarifdanlayanan) + useShallowEffect(() => { + tarifdanlayanan.findMany.load() + }, []) + + if (_.isEmpty(tarifdanlayanan.findMany.data)) { + return ( + + + + + +
Nama
+
+ +
Specialist
+
+ +
Jadwal
+
+
+
+ + + +
+ Tidak ada data +
+
+
+
+
+
+ ); + } + + return + + + + + Layanan + + + Tarif + + + + + {tarifdanlayanan.findMany.data?.map((item) => ( + + {item.layanan} + Rp.{item.tarif} + + ))} + +
+
+} + +export default TarifDanLayananList; 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 new file mode 100644 index 00000000..e70a7f5c --- /dev/null +++ b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/fasilitas_kesehatan/tarifdanlayanan/page.tsx @@ -0,0 +1,33 @@ +import { Box, Button, Text, TextInput } from '@mantine/core'; +import React from 'react'; +import { useProxy } from 'valtio/utils'; +import stateKesehatan from '@/app/admin/(dashboard)/_state/kesehatan/kesehatan'; + +function TarifDanLayanan() { + const tarifdanlayanan = useProxy(stateKesehatan.tarifdanlayanan) + return + Tarif & Layanan + { + tarifdanlayanan.create.form.tarif = val.target.value + }} + /> + { + tarifdanlayanan.create.form.layanan = val.target.value + }} + /> + + +} + +export default TarifDanLayanan; 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 new file mode 100644 index 00000000..1a4dd192 --- /dev/null +++ b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/_ui/jadwal_kegiatan/page.tsx @@ -0,0 +1,26 @@ +import { Box, SimpleGrid, Stack, TextInput, Title } from '@mantine/core'; +import React from 'react'; + +function JadwalKegiatan() { + return ( + + + + Jadwal Kegiatan + + + + List Jadwal Kegiatan + + + + ); +} + + +export default JadwalKegiatan; diff --git a/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/page.tsx b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/page.tsx index 88a0793f..680190b2 100644 --- a/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/page.tsx +++ b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/page.tsx @@ -1,11 +1,18 @@ -import React from 'react'; +import { Stack } from '@mantine/core'; +import ArtikelKesehatan from './_ui/artikel_kesehatan/page'; +import FasilitasKesehatan from './_ui/fasilitas_kesehatan/page'; +import JadwalKegiatan from './_ui/jadwal_kegiatan/page'; + function Page() { return ( -
- Data Kesehatan Warga -
+ + + + + ); } export default Page; +//Fasilitas Kesehatan Jadwal Kegiatan Artikel Kesehatan \ No newline at end of file diff --git a/src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/dokterDantenagamedis/create.ts b/src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/dokterDantenagamedis/create.ts new file mode 100644 index 00000000..44da0e41 --- /dev/null +++ b/src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/dokterDantenagamedis/create.ts @@ -0,0 +1,31 @@ +import prisma from "@/lib/prisma"; +import { Prisma } from "@prisma/client"; +import { Context } from "elysia"; + +type FormCreate = Prisma.DokterdanTenagaMedisGetPayload<{ + select: { + name: true + specialist: true + jadwal: true + } +}> + +async function dokterDantenagamedisCreate(context: Context) { + const body = context.body as FormCreate + + await prisma.dokterdanTenagaMedis.create({ + data: { + name: body.name, + specialist: body.specialist, + jadwal: body.jadwal, + } + }) + return { + success: true, + message: "Success create dokter dan tenaga medis", + data: { + ...body + } + } +} +export default dokterDantenagamedisCreate \ No newline at end of file diff --git a/src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/dokterDantenagamedis/find-many.ts b/src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/dokterDantenagamedis/find-many.ts new file mode 100644 index 00000000..3792ad71 --- /dev/null +++ b/src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/dokterDantenagamedis/find-many.ts @@ -0,0 +1,8 @@ +import prisma from "@/lib/prisma"; + +export default async function dokterDantenagamedisFindMany() { + const res = await prisma.dokterdanTenagaMedis.findMany(); + return { + data: res + } +} \ No newline at end of file diff --git a/src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/dokterDantenagamedis/index.ts b/src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/dokterDantenagamedis/index.ts new file mode 100644 index 00000000..83c75ac8 --- /dev/null +++ b/src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/dokterDantenagamedis/index.ts @@ -0,0 +1,18 @@ +import Elysia, { t } from "elysia"; +import dokterDantenagamedisFindMany from "./find-many"; +import dokterDantenagamedisCreate from "./create"; + +const DokterDantenagamedis = new Elysia({ + prefix: "/dokterdantenagamedis", + tags: ["Dokter dan Tenaga Medis"], +}) +.get("/find-many", dokterDantenagamedisFindMany) +.post("/create", dokterDantenagamedisCreate, { + body: t.Object({ + name: t.String(), + specialist: t.String(), + jadwal: t.String(), + }) +}) + +export default DokterDantenagamedis \ No newline at end of file diff --git a/src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/fasilitas_pendukung/create.ts b/src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/fasilitas_pendukung/create.ts new file mode 100644 index 00000000..8cb74eff --- /dev/null +++ b/src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/fasilitas_pendukung/create.ts @@ -0,0 +1,29 @@ +import prisma from "@/lib/prisma"; +import { Prisma } from "@prisma/client"; +import { Context } from "elysia"; + +type FormCreate = Prisma.FasilitasPendukungGetPayload<{ + select: { + content: true + } +}> + +async function FasilitasPendukungCreate(context: Context){ + const body = context.body as FormCreate + + await prisma.fasilitasPendukung.create({ + data: { + + content: body.content + } + }) + return { + success: true, + message: "Success create fasilitas pendukung", + data: { + ...body + } + } +} + +export default FasilitasPendukungCreate \ No newline at end of file diff --git a/src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/fasilitas_pendukung/find-many.ts b/src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/fasilitas_pendukung/find-many.ts new file mode 100644 index 00000000..941f70e7 --- /dev/null +++ b/src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/fasilitas_pendukung/find-many.ts @@ -0,0 +1,8 @@ +import prisma from "@/lib/prisma"; + +export default async function fasilitasPendukungFindMany() { + const res = await prisma.fasilitasPendukung.findMany(); + return { + data: res + } +} \ No newline at end of file diff --git a/src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/fasilitas_pendukung/index.ts b/src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/fasilitas_pendukung/index.ts new file mode 100644 index 00000000..dfa23e9b --- /dev/null +++ b/src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/fasilitas_pendukung/index.ts @@ -0,0 +1,16 @@ +import Elysia, { t } from "elysia"; +import fasilitasPendukungFindMany from "./find-many"; +import FasilitasPendukungCreate from "./create"; + +const FasilitasPendukung = new Elysia({ + prefix: "/fasilitaspendukung", + tags: ["Fasilitas Pendukung"], +}) + .get("/find-many", fasilitasPendukungFindMany) + .post("/create", FasilitasPendukungCreate, { + body: t.Object({ + content: t.String(), + }), + }); + +export default FasilitasPendukung; diff --git a/src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/informasi_umum/create.ts b/src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/informasi_umum/create.ts new file mode 100644 index 00000000..7b2655fc --- /dev/null +++ b/src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/informasi_umum/create.ts @@ -0,0 +1,31 @@ +import prisma from "@/lib/prisma"; +import { Prisma } from "@prisma/client"; +import { Context } from "elysia"; + +type FormCreate = Prisma.InformasiUmumGetPayload<{ + select: { + fasilitas: true + alamat: true + jamOperasional: true + } +}> +async function informasiUmumCreate(context: Context) { + const body = context.body as FormCreate + + await prisma.informasiUmum.create({ + data: { + fasilitas: body.fasilitas, + alamat: body.alamat, + jamOperasional: body.jamOperasional, + } + }) + return{ + success: true, + message: "Success create informasi umum", + data: { + ...body + } + } +} + +export default informasiUmumCreate diff --git a/src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/informasi_umum/find-many.ts b/src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/informasi_umum/find-many.ts new file mode 100644 index 00000000..cc3b51da --- /dev/null +++ b/src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/informasi_umum/find-many.ts @@ -0,0 +1,8 @@ +import prisma from "@/lib/prisma"; + +export default async function informasiUmumFindMany() { + const res = await prisma.informasiUmum.findMany(); + return { + data: res + } +} \ No newline at end of file diff --git a/src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/informasi_umum/index.ts b/src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/informasi_umum/index.ts new file mode 100644 index 00000000..f40e4ccc --- /dev/null +++ b/src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/informasi_umum/index.ts @@ -0,0 +1,18 @@ +import Elysia, { t } from "elysia"; +import informasiUmumFindMany from "./find-many"; +import informasiUmumCreate from "./create"; + +const InformasiUmum = new Elysia({ + prefix: "/informasiumum", + tags: ["Informasi Umum"], +}) + .get("/find-many", informasiUmumFindMany) + .post("/create", informasiUmumCreate, { + body: t.Object({ + fasilitas: t.String(), + alamat: t.String(), + jamOperasional: t.String(), + }), + }); + +export default InformasiUmum; diff --git a/src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/layanan_unggulan/create.ts b/src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/layanan_unggulan/create.ts new file mode 100644 index 00000000..2e9b1289 --- /dev/null +++ b/src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/layanan_unggulan/create.ts @@ -0,0 +1,28 @@ +import prisma from "@/lib/prisma"; +import { Prisma } from "@prisma/client"; +import { Context } from "elysia"; + +type FormCreate = Prisma.LayananUnggulanGetPayload<{ + select: { + content: true + } +}> + +async function layananUnggulanCreate(context: Context) { + const body = context.body as FormCreate + + await prisma.layananUnggulan.create({ + data: { + content: body.content + } + }) + return { + success: true, + message: "Success create layanan unggulan", + data: { + ...body + } + } +} + +export default layananUnggulanCreate diff --git a/src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/layanan_unggulan/find-many.ts b/src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/layanan_unggulan/find-many.ts new file mode 100644 index 00000000..716a7e54 --- /dev/null +++ b/src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/layanan_unggulan/find-many.ts @@ -0,0 +1,8 @@ +import prisma from "@/lib/prisma"; + +export default async function layananUnggulanFindMany() { + const res = await prisma.layananUnggulan.findMany(); + return { + data: res + } +} \ No newline at end of file diff --git a/src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/layanan_unggulan/index.ts b/src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/layanan_unggulan/index.ts new file mode 100644 index 00000000..5b7f9514 --- /dev/null +++ b/src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/layanan_unggulan/index.ts @@ -0,0 +1,17 @@ +import Elysia, { t } from "elysia"; +import layananUnggulanCreate from "./create"; +import layananUnggulanFindMany from "./find-many"; + +const LayananUnggulan = new Elysia({ + prefix: "/layananunggulan", + tags: ["Layanan Unggulan"] +}) + +.get("/find-many", layananUnggulanFindMany) +.post("/create", layananUnggulanCreate, { + body: t.Object({ + content: t.String() + }) +}) + +export default LayananUnggulan \ No newline at end of file diff --git a/src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/prosedur_pendaftaran/create.ts b/src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/prosedur_pendaftaran/create.ts new file mode 100644 index 00000000..1bc93b08 --- /dev/null +++ b/src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/prosedur_pendaftaran/create.ts @@ -0,0 +1,28 @@ +import prisma from "@/lib/prisma"; +import { Prisma } from "@prisma/client"; +import { Context } from "elysia"; + +type FormCreate = Prisma.ProsedurPendaftaranGetPayload<{ + select: { + content: true + } +}> + +async function prosedurPendaftaranCreate(context: Context) { + const body = context.body as FormCreate + + await prisma.prosedurPendaftaran.create({ + data: { + content: body.content + } + }) + return{ + success: true, + message: "Success create prosedur pendaftaran", + data: { + ...body + } + } +} + +export default prosedurPendaftaranCreate diff --git a/src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/prosedur_pendaftaran/find-many.ts b/src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/prosedur_pendaftaran/find-many.ts new file mode 100644 index 00000000..2da795a6 --- /dev/null +++ b/src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/prosedur_pendaftaran/find-many.ts @@ -0,0 +1,8 @@ +import prisma from "@/lib/prisma"; + +export default async function prosedurPendaftaranFindMany() { + const res = await prisma.prosedurPendaftaran.findMany(); + return { + data: res + } +} \ No newline at end of file diff --git a/src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/prosedur_pendaftaran/index.ts b/src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/prosedur_pendaftaran/index.ts new file mode 100644 index 00000000..5afe1329 --- /dev/null +++ b/src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/prosedur_pendaftaran/index.ts @@ -0,0 +1,15 @@ +import Elysia, { t } from "elysia"; +import prosedurPendaftaranFindMany from "./find-many"; +import prosedurPendaftaranCreate from "./create"; + +const ProsedurPendaftaran = new Elysia({ + prefix: "/prosedurpendaftaran", + tags: ["Prosedur Pendaftaran"], +}) + .get("/find-many", prosedurPendaftaranFindMany) + .post("/create", prosedurPendaftaranCreate, { + body: t.Object({ + content: t.String(), + }), + }); +export default ProsedurPendaftaran; diff --git a/src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/tarifDanlayanan/create.ts b/src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/tarifDanlayanan/create.ts new file mode 100644 index 00000000..8f89cd45 --- /dev/null +++ b/src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/tarifDanlayanan/create.ts @@ -0,0 +1,30 @@ +import prisma from "@/lib/prisma"; +import { Prisma } from "@prisma/client"; +import { Context } from "elysia"; + +type FormCreate = Prisma.TarifDanLayananGetPayload<{ + select: { + layanan: true + tarif: true + } +}> + +async function tarifdanlayananCreate(context: Context) { + const body = context.body as FormCreate + + await prisma.tarifDanLayanan.create({ + data: { + layanan: body.layanan, + tarif: body.tarif, + } + }) + return { + success: true, + message: "Success create tarif dan layanan", + data: { + ...body + } + } +} + +export default tarifdanlayananCreate diff --git a/src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/tarifDanlayanan/find-many.ts b/src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/tarifDanlayanan/find-many.ts new file mode 100644 index 00000000..7dcbfeae --- /dev/null +++ b/src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/tarifDanlayanan/find-many.ts @@ -0,0 +1,8 @@ +import prisma from "@/lib/prisma"; + +export default async function tarifdanlayananFindMany() { + const res = await prisma.tarifDanLayanan.findMany(); + return { + data: res + } +} \ No newline at end of file diff --git a/src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/tarifDanlayanan/index.ts b/src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/tarifDanlayanan/index.ts new file mode 100644 index 00000000..549ce6f9 --- /dev/null +++ b/src/app/api/[[...slugs]]/_lib/kesehatan/data_kesehatan_warga/fasilitas_kesehatan/tarifDanlayanan/index.ts @@ -0,0 +1,18 @@ +import Elysia, { t } from "elysia"; +import tarifdanlayananFindMany from "./find-many"; +import tarifdanlayananCreate from "./create"; + + +const TarifDanLayanan = new Elysia({ + prefix: "/tarifdanlayanan", + tags: ["Tarif dan Layanan"] +}) +.get("/find-many", tarifdanlayananFindMany) +.post("/create", tarifdanlayananCreate, { + body: t.Object({ + layanan: t.String(), + tarif: t.String(), + }) +}) + +export default TarifDanLayanan; \ No newline at end of file diff --git a/src/app/api/[[...slugs]]/_lib/kesehatan/index.ts b/src/app/api/[[...slugs]]/_lib/kesehatan/index.ts new file mode 100644 index 00000000..09baa9e2 --- /dev/null +++ b/src/app/api/[[...slugs]]/_lib/kesehatan/index.ts @@ -0,0 +1,20 @@ +import Elysia from "elysia"; +import InformasiUmum from "./data_kesehatan_warga/fasilitas_kesehatan/informasi_umum"; +import LayananUnggulan from "./data_kesehatan_warga/fasilitas_kesehatan/layanan_unggulan"; +import DokterDantenagamedis from "./data_kesehatan_warga/fasilitas_kesehatan/dokterDantenagamedis"; +import FasilitasPendukung from "./data_kesehatan_warga/fasilitas_kesehatan/fasilitas_pendukung"; +import TarifDanLayanan from "./data_kesehatan_warga/fasilitas_kesehatan/tarifDanlayanan"; +import ProsedurPendaftaran from "./data_kesehatan_warga/fasilitas_kesehatan/prosedur_pendaftaran"; + +const Kesehatan = new Elysia({ + prefix: "/api/kesehatan", + tags: ["Kesehatan"], +}) +.use(InformasiUmum) +.use(LayananUnggulan) +.use(DokterDantenagamedis) +.use(FasilitasPendukung) +.use(TarifDanLayanan) +.use(ProsedurPendaftaran) + +export default Kesehatan; diff --git a/src/app/api/[[...slugs]]/_lib/landing_page/layanan.ts b/src/app/api/[[...slugs]]/_lib/landing_page/layanan.ts deleted file mode 100644 index 702f9775..00000000 --- a/src/app/api/[[...slugs]]/_lib/landing_page/layanan.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { MODEL_LANDING_PAGE_LAYANAN } from "@/app/admin/(dashboard)/landing-page/layanan/lib/interface"; -import prisma from "@/lib/prisma"; -import { NextResponse } from "next/server"; - -export async function layanan_landingpage({req} : {req: MODEL_LANDING_PAGE_LAYANAN}) { - try { - const data = await prisma.landingPage_Layanan.create({ - data: { - id: req.id, - deksripsi: req.deskripsi - }, - select: { - id: true, - deksripsi: true - } - }) - return NextResponse.json( - { - success: true, - message: "Success get collaboration", - data: data, - }, - { status: 200 } - ); - } catch (error) { - console.error("Error create layanan", error); - return NextResponse.json( - { - success: false, - message: "Error create layanan", - reason: (error as Error).message, - }, - { status: 500 } - ); - } -} diff --git a/src/app/api/[[...slugs]]/route.ts b/src/app/api/[[...slugs]]/route.ts index 1a76cdc7..a8913d6d 100644 --- a/src/app/api/[[...slugs]]/route.ts +++ b/src/app/api/[[...slugs]]/route.ts @@ -13,6 +13,7 @@ import { uplCsvSingle } from "./_lib/upl-csv-single"; import uplImg from "./_lib/upl-img"; import { uplImgSingle } from "./_lib/upl-img-single"; import Desa from "./_lib/desa"; +import Kesehatan from "./_lib/kesehatan"; const ROOT = process.cwd(); if (!process.env.WIBU_UPLOAD_DIR) @@ -47,6 +48,7 @@ async function layanan() { const ApiServer = new Elysia() .use(swagger({ path: "/api/docs" })) .use(cors(corsConfig)) + .use(Kesehatan) .use(Desa) .onError(({ code }) => { if (code === "NOT_FOUND") { diff --git a/src/app/darmasaba/(pages)/kesehatan/data-kesehatan-warga/(tambahan)/fasilitas-kesehatan/page.tsx b/src/app/darmasaba/(pages)/kesehatan/data-kesehatan-warga/(tambahan)/fasilitas-kesehatan/page.tsx index a8916391..95443bfb 100644 --- a/src/app/darmasaba/(pages)/kesehatan/data-kesehatan-warga/(tambahan)/fasilitas-kesehatan/page.tsx +++ b/src/app/darmasaba/(pages)/kesehatan/data-kesehatan-warga/(tambahan)/fasilitas-kesehatan/page.tsx @@ -134,7 +134,7 @@ function Page() { {/* Dokter */} - Dokter & Tenaga Medis + Layanan & Tarif diff --git a/src/app/percobaan/page.tsx b/src/app/percobaan/page.txt similarity index 100% rename from src/app/percobaan/page.tsx rename to src/app/percobaan/page.txt diff --git a/xx.ts b/xx.ts deleted file mode 100644 index 3e613202..00000000 --- a/xx.ts +++ /dev/null @@ -1,3 +0,0 @@ -import path from "path"; -// percobaan -console.log(path.basename("/apa/kanar.png", ".png")) diff --git a/xx.txt b/xx.txt new file mode 100644 index 00000000..fe4698ff --- /dev/null +++ b/xx.txt @@ -0,0 +1,3 @@ +// import path from "path"; +// // percobaan +// console.log(path.basename("/apa/kanar.png", ".png"))