Save
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
/*
|
||||
Warnings:
|
||||
|
||||
- You are about to drop the column `deletedAt` on the `KontakDarurat` table. All the data in the column will be lost.
|
||||
- You are about to drop the column `deskripsi` on the `KontakDarurat` table. All the data in the column will be lost.
|
||||
- You are about to drop the column `imageId` on the `KontakDarurat` table. All the data in the column will be lost.
|
||||
- You are about to drop the column `isActive` on the `KontakDarurat` table. All the data in the column will be lost.
|
||||
- You are about to drop the column `name` on the `KontakDarurat` table. All the data in the column will be lost.
|
||||
- Added the required column `nama` to the `KontakDarurat` table without a default value. This is not possible if the table is not empty.
|
||||
|
||||
*/
|
||||
-- DropForeignKey
|
||||
ALTER TABLE "KontakDarurat" DROP CONSTRAINT "KontakDarurat_imageId_fkey";
|
||||
|
||||
-- AlterTable
|
||||
ALTER TABLE "KontakDarurat" DROP COLUMN "deletedAt",
|
||||
DROP COLUMN "deskripsi",
|
||||
DROP COLUMN "imageId",
|
||||
DROP COLUMN "isActive",
|
||||
DROP COLUMN "name",
|
||||
ADD COLUMN "icon" TEXT,
|
||||
ADD COLUMN "nama" TEXT NOT NULL,
|
||||
ADD COLUMN "urutan" INTEGER;
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "KontakItem" (
|
||||
"id" TEXT NOT NULL,
|
||||
"nama" TEXT NOT NULL,
|
||||
"nomorTelepon" TEXT NOT NULL,
|
||||
"icon" TEXT,
|
||||
"kategoriId" TEXT NOT NULL,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
|
||||
CONSTRAINT "KontakItem_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "PasarDesa" (
|
||||
"id" TEXT NOT NULL,
|
||||
"nama" TEXT NOT NULL,
|
||||
"harga" INTEGER NOT NULL,
|
||||
"satuan" TEXT NOT NULL,
|
||||
"alamat" TEXT NOT NULL,
|
||||
"imageId" TEXT NOT NULL,
|
||||
"rating" DOUBLE PRECISION 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,
|
||||
"kategoriId" TEXT NOT NULL,
|
||||
|
||||
CONSTRAINT "PasarDesa_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "KategoriMakanan" (
|
||||
"id" TEXT NOT NULL,
|
||||
"nama" TEXT NOT NULL,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
"deletedAt" TIMESTAMP(3),
|
||||
"isActive" BOOLEAN NOT NULL DEFAULT true,
|
||||
|
||||
CONSTRAINT "KategoriMakanan_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "KontakItem" ADD CONSTRAINT "KontakItem_kategoriId_fkey" FOREIGN KEY ("kategoriId") REFERENCES "KontakDarurat"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "PasarDesa" ADD CONSTRAINT "PasarDesa_imageId_fkey" FOREIGN KEY ("imageId") REFERENCES "FileStorage"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "PasarDesa" ADD CONSTRAINT "PasarDesa_kategoriId_fkey" FOREIGN KEY ("kategoriId") REFERENCES "KategoriMakanan"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
@@ -0,0 +1,38 @@
|
||||
/*
|
||||
Warnings:
|
||||
|
||||
- You are about to drop the column `icon` on the `KontakDarurat` table. All the data in the column will be lost.
|
||||
- You are about to drop the column `nama` on the `KontakDarurat` table. All the data in the column will be lost.
|
||||
- You are about to drop the column `urutan` on the `KontakDarurat` table. All the data in the column will be lost.
|
||||
- You are about to drop the column `deletedAt` on the `KontakDaruratKeamanan` table. All the data in the column will be lost.
|
||||
- You are about to drop the column `isActive` on the `KontakDaruratKeamanan` table. All the data in the column will be lost.
|
||||
- You are about to drop the column `kontak` on the `KontakDaruratKeamanan` table. All the data in the column will be lost.
|
||||
- Added the required column `deskripsi` to the `KontakDarurat` table without a default value. This is not possible if the table is not empty.
|
||||
- Added the required column `imageId` to the `KontakDarurat` table without a default value. This is not possible if the table is not empty.
|
||||
- Added the required column `name` to the `KontakDarurat` table without a default value. This is not possible if the table is not empty.
|
||||
|
||||
*/
|
||||
-- DropForeignKey
|
||||
ALTER TABLE "KontakItem" DROP CONSTRAINT "KontakItem_kategoriId_fkey";
|
||||
|
||||
-- AlterTable
|
||||
ALTER TABLE "KontakDarurat" DROP COLUMN "icon",
|
||||
DROP COLUMN "nama",
|
||||
DROP COLUMN "urutan",
|
||||
ADD COLUMN "deletedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
ADD COLUMN "deskripsi" TEXT NOT NULL,
|
||||
ADD COLUMN "imageId" TEXT NOT NULL,
|
||||
ADD COLUMN "isActive" BOOLEAN NOT NULL DEFAULT true,
|
||||
ADD COLUMN "name" TEXT NOT NULL;
|
||||
|
||||
-- AlterTable
|
||||
ALTER TABLE "KontakDaruratKeamanan" DROP COLUMN "deletedAt",
|
||||
DROP COLUMN "isActive",
|
||||
DROP COLUMN "kontak",
|
||||
ADD COLUMN "urutan" INTEGER;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "KontakDarurat" ADD CONSTRAINT "KontakDarurat_imageId_fkey" FOREIGN KEY ("imageId") REFERENCES "FileStorage"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "KontakItem" ADD CONSTRAINT "KontakItem_kategoriId_fkey" FOREIGN KEY ("kategoriId") REFERENCES "KontakDaruratKeamanan"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
@@ -84,6 +84,10 @@ model FileStorage {
|
||||
Pelapor Pelapor[]
|
||||
|
||||
PasarDesa PasarDesa[]
|
||||
|
||||
KontakDaruratKeamanan KontakDaruratKeamanan[]
|
||||
|
||||
KontakItem KontakItem[]
|
||||
}
|
||||
|
||||
//========================================= MENU PPID ========================================= //
|
||||
@@ -928,14 +932,25 @@ model LayananPolsek {
|
||||
|
||||
// ========================================= KONTAK DARURAT ========================================= //
|
||||
model KontakDaruratKeamanan {
|
||||
id String @id @default(cuid())
|
||||
nama String // contoh: "Polisi", "Ambulans", "Pemadam Kebakaran"
|
||||
kontak String // contoh: "081xxxxxxxxxx"
|
||||
icon String? // opsional, untuk simpan nama icon-nya jika mau
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
deletedAt DateTime @default(now())
|
||||
isActive Boolean @default(true)
|
||||
id String @id @default(uuid())
|
||||
nama String // contoh: "Layanan Darurat", "Fasilitas Kesehatan"
|
||||
image FileStorage? @relation(fields: [imageId], references: [id])
|
||||
imageId String?
|
||||
kontakItems KontakItem[]
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
}
|
||||
|
||||
model KontakItem {
|
||||
id String @id @default(uuid())
|
||||
nama String // contoh: "Polisi", "Ambulans", "Puskesmas Darmasaba"
|
||||
nomorTelepon String
|
||||
image FileStorage? @relation(fields: [imageId], references: [id])
|
||||
imageId String?
|
||||
kategori KontakDaruratKeamanan @relation(fields: [kategoriId], references: [id])
|
||||
kategoriId String
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
}
|
||||
|
||||
// ========================================= PENCEGAHAN KRIMINALITAS ========================================= //
|
||||
|
||||
@@ -5,16 +5,16 @@ import { proxy } from "valtio";
|
||||
import { z } from "zod";
|
||||
|
||||
const templateForm = z.object({
|
||||
nama: z.string().min(3, "Nama minimal 3 karakter"),
|
||||
jarakKeDesa: z.string().min(3, "Jarak minimal 3 karakter"),
|
||||
alamat: z.string().min(3, "Alamat minimal 3 karakter"),
|
||||
nomorTelepon: z.string().min(3, "Nomor Telepon minimal 3 karakter"),
|
||||
jamOperasional: z.string().min(3, "Jam Operasional minimal 3 karakter"),
|
||||
embedMapUrl: z.string().min(3, "Embed Map Url minimal 3 karakter"),
|
||||
namaTempatMaps: z.string().min(3, "Nama Tempat Maps minimal 3 karakter"),
|
||||
alamatMaps: z.string().min(3, "Alamat Maps minimal 3 karakter"),
|
||||
linkPetunjukArah: z.string().min(3, "Link Petunjuk Arah minimal 3 karakter"),
|
||||
layananPolsekId: z.string().min(3, "Layanan Polsek Id minimal 3 karakter"),
|
||||
nama: z.string().min(1, "Nama minimal 1 karakter"),
|
||||
jarakKeDesa: z.string().min(1, "Jarak minimal 1 karakter"),
|
||||
alamat: z.string().min(1, "Alamat minimal 1 karakter"),
|
||||
nomorTelepon: z.string().min(1, "Nomor Telepon minimal 1 karakter"),
|
||||
jamOperasional: z.string().min(1, "Jam Operasional minimal 1 karakter"),
|
||||
embedMapUrl: z.string().min(1, "Embed Map Url minimal 1 karakter"),
|
||||
namaTempatMaps: z.string().min(1, "Nama Tempat Maps minimal 1 karakter"),
|
||||
alamatMaps: z.string().min(1, "Alamat Maps minimal 1 karakter"),
|
||||
linkPetunjukArah: z.string().min(1, "Link Petunjuk Arah minimal 1 karakter"),
|
||||
layananPolsekId: z.string().min(1, "Layanan Polsek Id minimal 1 karakter"),
|
||||
});
|
||||
|
||||
const defaultForm = {
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
import Elysia from "elysia";
|
||||
import KeamananLingkungan from "./keamanan-lingkungan";
|
||||
import PolsekTerdekat from "./polsek-terdekat";
|
||||
import KontakDarurat from "./kontak-darurat";
|
||||
import PencegahanKriminalitas from "./pencegahan-kriminalitas";
|
||||
import MenuTipsKeamanan from "./tips-keamanan";
|
||||
import LaporanPublik from "./laporan-publik";
|
||||
import LayananPolsek from "./layanan-polsek";
|
||||
import KontakDaruratKeamanan from "./kontak-darurat-keamanan";
|
||||
|
||||
const Keamanan = new Elysia({ prefix: "/api/keamanan", tags: ["Keamanan"] })
|
||||
.use(KeamananLingkungan)
|
||||
.use(PolsekTerdekat)
|
||||
.use(KontakDarurat)
|
||||
.use(PencegahanKriminalitas)
|
||||
.use(MenuTipsKeamanan)
|
||||
.use(LaporanPublik)
|
||||
.use(LayananPolsek)
|
||||
.use(KontakDaruratKeamanan)
|
||||
export default Keamanan;
|
||||
|
||||
@@ -1,22 +1,28 @@
|
||||
import prisma from "@/lib/prisma";
|
||||
import { Prisma } from "@prisma/client";
|
||||
import { Context } from "elysia";
|
||||
|
||||
type FormCreate = Prisma.KontakDaruratKeamananGetPayload<{
|
||||
select: {
|
||||
nama: true,
|
||||
kontak: true,
|
||||
icon: true,
|
||||
}
|
||||
}>
|
||||
type FormCreate = {
|
||||
nama: string,
|
||||
imageId?: string,
|
||||
kontakItems: {
|
||||
nama: string,
|
||||
nomorTelepon: string,
|
||||
imageId?: string
|
||||
}[]
|
||||
}
|
||||
export default async function kontakDaruratKeamananCreate(context: Context){
|
||||
const body = context.body as FormCreate
|
||||
|
||||
await prisma.kontakDaruratKeamanan.create({
|
||||
data: {
|
||||
nama: body.nama,
|
||||
kontak: body.kontak,
|
||||
icon: body.icon,
|
||||
imageId: body.imageId,
|
||||
kontakItems: {
|
||||
create: body.kontakItems,
|
||||
},
|
||||
},
|
||||
include: {
|
||||
kontakItems: true,
|
||||
}
|
||||
})
|
||||
return {
|
||||
@@ -11,6 +11,12 @@ export default async function kontakDaruratKeamananDelete(context: Context){
|
||||
};
|
||||
}
|
||||
|
||||
await prisma.kontakItem.deleteMany({
|
||||
where: {
|
||||
kategoriId: id,
|
||||
},
|
||||
});
|
||||
|
||||
const kontakDaruratKeamanan = await prisma.kontakDaruratKeamanan.findUnique({
|
||||
where: { id },
|
||||
});
|
||||
@@ -3,7 +3,13 @@ import prisma from "@/lib/prisma";
|
||||
export default async function kontakDaruratKeamananFindMany() {
|
||||
try {
|
||||
const data = await prisma.kontakDaruratKeamanan.findMany({
|
||||
where: { isActive: true },
|
||||
include: {
|
||||
kontakItems: true,
|
||||
image: true,
|
||||
},
|
||||
orderBy: {
|
||||
createdAt: "desc",
|
||||
}
|
||||
});
|
||||
|
||||
return {
|
||||
@@ -0,0 +1,69 @@
|
||||
import prisma from "@/lib/prisma";
|
||||
|
||||
export default async function kontakDaruratKeamananFindUnique(
|
||||
request: Request
|
||||
) {
|
||||
const url = new URL(request.url);
|
||||
const pathSegments = url.pathname.split("/");
|
||||
const id = pathSegments[pathSegments.length - 1];
|
||||
|
||||
if (!id) {
|
||||
return Response.json(
|
||||
{
|
||||
success: false,
|
||||
message: "ID tidak boleh kosong",
|
||||
},
|
||||
{ status: 400 }
|
||||
);
|
||||
}
|
||||
|
||||
try {
|
||||
if (typeof id !== "string") {
|
||||
return Response.json(
|
||||
{
|
||||
success: false,
|
||||
message: "ID tidak valid",
|
||||
},
|
||||
{ status: 400 }
|
||||
);
|
||||
}
|
||||
|
||||
const data = await prisma.kontakDaruratKeamanan.findUnique({
|
||||
where: { id },
|
||||
include: {
|
||||
kontakItems: true,
|
||||
image: true,
|
||||
},
|
||||
});
|
||||
|
||||
if (!data) {
|
||||
return Response.json(
|
||||
{
|
||||
success: false,
|
||||
message: "Kontak darurat keamanan tidak ditemukan",
|
||||
},
|
||||
{ status: 404 }
|
||||
);
|
||||
}
|
||||
|
||||
return Response.json(
|
||||
{
|
||||
success: true,
|
||||
message: "Success fetch kontak darurat keamanan by ID",
|
||||
data,
|
||||
},
|
||||
{ status: 200 }
|
||||
);
|
||||
} catch (error) {
|
||||
console.error("Find by ID error:", error);
|
||||
return Response.json(
|
||||
{
|
||||
success: false,
|
||||
message:
|
||||
"Gagal mengambil kontak darurat keamanan: " +
|
||||
(error instanceof Error ? error.message : "Unknown error"),
|
||||
},
|
||||
{ status: 500 }
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
import Elysia, { t } from "elysia";
|
||||
import kontakDaruratKeamananCreate from "./create";
|
||||
import kontakDaruratKeamananDelete from "./del";
|
||||
import kontakDaruratKeamananFindMany from "./findMany";
|
||||
import kontakDaruratKeamananFindUnique from "./findUnique";
|
||||
import kontakDaruratKeamananUpdate from "./updt";
|
||||
|
||||
const KontakDaruratKeamanan = new Elysia({
|
||||
prefix: "/kontak-darurat-keamanan",
|
||||
tags: ["Keamanan/Kontak Darurat"],
|
||||
})
|
||||
.get("/find-many", kontakDaruratKeamananFindMany)
|
||||
.get("/:id", async (context) => {
|
||||
const response = await kontakDaruratKeamananFindUnique(
|
||||
new Request(context.request)
|
||||
);
|
||||
return response;
|
||||
})
|
||||
.post("/create", kontakDaruratKeamananCreate, {
|
||||
body: t.Object({
|
||||
nama: t.String(),
|
||||
imageId: t.Optional(t.String()),
|
||||
kontakItems: t.Array(
|
||||
t.Object({
|
||||
nama: t.String(),
|
||||
nomorTelepon: t.String(),
|
||||
imageId: t.Optional(t.String()),
|
||||
})
|
||||
),
|
||||
}),
|
||||
})
|
||||
.delete("/del/:id", kontakDaruratKeamananDelete)
|
||||
.put(
|
||||
"/:id",
|
||||
async (context) => {
|
||||
const response = await kontakDaruratKeamananUpdate(context);
|
||||
return response;
|
||||
},
|
||||
{
|
||||
body: t.Object({
|
||||
nama: t.String(),
|
||||
imageId: t.Optional(t.String()),
|
||||
kontakItems: t.Array(
|
||||
t.Object({
|
||||
nama: t.String(),
|
||||
nomorTelepon: t.String(),
|
||||
imageId: t.Optional(t.String()),
|
||||
})
|
||||
),
|
||||
}),
|
||||
}
|
||||
);
|
||||
export default KontakDaruratKeamanan;
|
||||
@@ -0,0 +1,57 @@
|
||||
import prisma from "@/lib/prisma";
|
||||
import { Context } from "elysia";
|
||||
|
||||
type FormUpdate = {
|
||||
nama: string;
|
||||
imageId?: string;
|
||||
kontakItems: {
|
||||
nama: string;
|
||||
nomorTelepon: string;
|
||||
imageId?: string;
|
||||
}[];
|
||||
};
|
||||
|
||||
export default async function kontakDaruratKeamananUpdate(context: Context){
|
||||
try {
|
||||
const { id } = context.params as { id: string };
|
||||
const body = context.body as FormUpdate;
|
||||
|
||||
// Hapus kontakItems lama
|
||||
await prisma.kontakItem.deleteMany({
|
||||
where: {
|
||||
kategoriId: id,
|
||||
},
|
||||
});
|
||||
|
||||
// Update utama
|
||||
const updated = await prisma.kontakDaruratKeamanan.update({
|
||||
where: { id },
|
||||
data: {
|
||||
nama: body.nama,
|
||||
imageId: body.imageId,
|
||||
kontakItems: {
|
||||
create: body.kontakItems,
|
||||
},
|
||||
},
|
||||
include: {
|
||||
kontakItems: true,
|
||||
},
|
||||
});
|
||||
|
||||
return {
|
||||
success: true,
|
||||
message: "Success update kontak darurat keamanan",
|
||||
data: updated,
|
||||
};
|
||||
} catch (error) {
|
||||
console.error("Error updating kontak darurat keamanan:", error);
|
||||
return Response.json({
|
||||
success: false,
|
||||
message: "Terjadi kesalahan saat mengupdate kontak darurat keamanan",
|
||||
}, { status: 500 ,
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -1,46 +0,0 @@
|
||||
import prisma from "@/lib/prisma";
|
||||
|
||||
export default async function kontakDaruratKeamananFindUnique(request: Request){
|
||||
const url = new URL(request.url);
|
||||
const pathSegments = url.pathname.split('/');
|
||||
const id = pathSegments[pathSegments.length - 1];
|
||||
|
||||
if(!id){
|
||||
return Response.json({
|
||||
success: false,
|
||||
message: "ID tidak boleh kosong",
|
||||
}, { status: 400 });
|
||||
}
|
||||
|
||||
try {
|
||||
if (typeof id !== 'string') {
|
||||
return Response.json({
|
||||
success: false,
|
||||
message: "ID tidak valid",
|
||||
}, { status: 400 });
|
||||
}
|
||||
|
||||
const data = await prisma.kontakDaruratKeamanan.findUnique({
|
||||
where: { id },
|
||||
});
|
||||
|
||||
if (!data) {
|
||||
return Response.json({
|
||||
success: false,
|
||||
message: "Kontak darurat keamanan tidak ditemukan",
|
||||
}, { status: 404 });
|
||||
}
|
||||
|
||||
return Response.json({
|
||||
success: true,
|
||||
message: "Success fetch kontak darurat keamanan by ID",
|
||||
data,
|
||||
}, { status: 200 });
|
||||
} catch (error) {
|
||||
console.error("Find by ID error:", error);
|
||||
return Response.json({
|
||||
success: false,
|
||||
message: "Gagal mengambil kontak darurat keamanan: " + (error instanceof Error ? error.message : 'Unknown error'),
|
||||
}, { status: 500 });
|
||||
}
|
||||
}
|
||||
@@ -1,32 +0,0 @@
|
||||
import Elysia, { t } from "elysia";
|
||||
import kontakDaruratKeamananFindMany from "./findMany";
|
||||
import kontakDaruratKeamananFindUnique from "./findUnique";
|
||||
import kontakDaruratKeamananCreate from "./create";
|
||||
import kontakDaruratKeamananDelete from "./del";
|
||||
|
||||
const kontakDaruratKeamanan = new Elysia({ prefix: "/kontak-darurat", tags: ["Keamanan/Kontak Darurat"] })
|
||||
.get("/find-many", kontakDaruratKeamananFindMany)
|
||||
.get("/:id", async (context) => {
|
||||
const response = await kontakDaruratKeamananFindUnique(new Request(context.request));
|
||||
return response;
|
||||
})
|
||||
.post("/create", kontakDaruratKeamananCreate, {
|
||||
body: t.Object({
|
||||
nama: t.String(),
|
||||
kontak: t.String(),
|
||||
icon: t.String(),
|
||||
}),
|
||||
})
|
||||
.delete("/del/:id", kontakDaruratKeamananDelete)
|
||||
.put("/:id", async (context) => {
|
||||
const response = await kontakDaruratKeamananCreate(context);
|
||||
return response;
|
||||
},
|
||||
{
|
||||
body: t.Object({
|
||||
nama: t.String(),
|
||||
kontak: t.String(),
|
||||
icon: t.String(),
|
||||
}),
|
||||
})
|
||||
export default kontakDaruratKeamanan;
|
||||
@@ -1,61 +0,0 @@
|
||||
import prisma from "@/lib/prisma";
|
||||
import { Prisma } from "@prisma/client";
|
||||
import { Context } from "elysia";
|
||||
|
||||
type FormUpdate = Prisma.KontakDaruratKeamananGetPayload<{
|
||||
select: {
|
||||
nama: true;
|
||||
kontak: true;
|
||||
icon: true;
|
||||
}
|
||||
}>
|
||||
export default async function kontakDaruratUpdate(context: Context){
|
||||
try {
|
||||
const id = context.params?.id;
|
||||
const body = (await context.body) as Omit<FormUpdate, "id">;
|
||||
|
||||
const {nama, kontak, icon} = body;
|
||||
|
||||
if(!id){
|
||||
return Response.json({
|
||||
success: false,
|
||||
message: "ID tidak diberikan",
|
||||
}, { status: 400 });
|
||||
}
|
||||
|
||||
const existing = await prisma.kontakDaruratKeamanan.findUnique({
|
||||
where: { id },
|
||||
});
|
||||
|
||||
if (!existing) {
|
||||
return Response.json({
|
||||
success: false,
|
||||
message: "Kontak darurat keamanan tidak ditemukan",
|
||||
}, { status: 404 });
|
||||
}
|
||||
const updated = await prisma.kontakDaruratKeamanan.update({
|
||||
where: { id },
|
||||
data: {
|
||||
nama,
|
||||
kontak,
|
||||
icon,
|
||||
},
|
||||
});
|
||||
|
||||
return Response.json({
|
||||
success: true,
|
||||
message: "Success update kontak darurat keamanan",
|
||||
data: updated,
|
||||
}, { status: 200 });
|
||||
} catch (error) {
|
||||
console.error("Error updating kontak darurat keamanan:", error);
|
||||
return Response.json({
|
||||
success: false,
|
||||
message: "Terjadi kesalahan saat mengupdate kontak darurat keamanan",
|
||||
}, { status: 500 ,
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -9,7 +9,7 @@ import BackButton from '../../desa/layanan/_com/BackButto';
|
||||
function Page() {
|
||||
const allList = useProxy(stateProfilePPID)
|
||||
useShallowEffect(() => {
|
||||
allList.profile.load("1") // Assuming "1" is your default ID, adjust as needed
|
||||
allList.profile.load("edit") // Assuming "1" is your default ID, adjust as needed
|
||||
}, [])
|
||||
|
||||
if (!allList.profile.data) return <Stack bg={colors.Bg} py={"xl"} gap={"22"}>
|
||||
@@ -47,7 +47,7 @@ function Page() {
|
||||
<Paper p={"xl"} bg={colors['white-trans-1']}>
|
||||
<Box px={{ base: "md", md: 100 }}>
|
||||
<Flex align={"center"} gap={50}>
|
||||
<Image src={"/api/img/darmasaba-icon.png"} h={{ base: 80, md: 150 }} alt='' />
|
||||
<Image src={"/darmasaba-icon.png"} h={{ base: 80, md: 150 }} alt='' />
|
||||
<Text fz={{ base: "1.4rem", md: "2rem", lg: "2.5rem", xl: "3rem" }} fw={'bold'}>PROFIL PIMPINAN BADAN PUBLIK DESA DARMASABA </Text>
|
||||
</Flex>
|
||||
</Box>
|
||||
|
||||
@@ -134,7 +134,7 @@ function LandingPage() {
|
||||
p={"sm"}
|
||||
>
|
||||
<Image
|
||||
src={"/assets/images/darmasaba-icon.png"}
|
||||
src={"/darmasaba-icon.png"}
|
||||
alt="icon"
|
||||
sizes="100%"
|
||||
/>
|
||||
@@ -163,7 +163,7 @@ function LandingPage() {
|
||||
bg={"white"}
|
||||
>
|
||||
<Image
|
||||
src={"/api/img/pudak-icon.png"}
|
||||
src={"/pudak-icon.png"}
|
||||
alt="icon"
|
||||
sizes={"100%"}
|
||||
fit="contain"
|
||||
|
||||
Reference in New Issue
Block a user