upd: api kategori pengajuan surat
Deskripsi: - menambahkan link tambah disetiap kategori - perbaikan list kategori karena berubah struktur NO Issues
This commit is contained in:
@@ -11,10 +11,9 @@ import {
|
|||||||
Modal,
|
Modal,
|
||||||
Stack,
|
Stack,
|
||||||
Table,
|
Table,
|
||||||
TagsInput,
|
|
||||||
Text,
|
Text,
|
||||||
Title,
|
Title,
|
||||||
Tooltip,
|
Tooltip
|
||||||
} from "@mantine/core";
|
} from "@mantine/core";
|
||||||
import { useDisclosure, useShallowEffect } from "@mantine/hooks";
|
import { useDisclosure, useShallowEffect } from "@mantine/hooks";
|
||||||
import { IconEdit, IconEye, IconPlus, IconTrash } from "@tabler/icons-react";
|
import { IconEdit, IconEye, IconPlus, IconTrash } from "@tabler/icons-react";
|
||||||
@@ -44,13 +43,13 @@ export default function KategoriPelayananSurat({
|
|||||||
const [dataChoose, setDataChoose] = useState({
|
const [dataChoose, setDataChoose] = useState({
|
||||||
id: "",
|
id: "",
|
||||||
name: "",
|
name: "",
|
||||||
syaratDokumen: [{ name: "", desc: "" }],
|
syaratDokumen: [{ key: "", name: "", desc: "" }],
|
||||||
dataText: [""],
|
dataPelengkap: [{ key: "", name: "", desc: "" }],
|
||||||
});
|
});
|
||||||
const [dataTambah, setDataTambah] = useState({
|
const [dataTambah, setDataTambah] = useState({
|
||||||
name: "",
|
name: "",
|
||||||
syaratDokumen: [{ name: "", desc: "" }],
|
syaratDokumen: [{ key: "", name: "", desc: "" }],
|
||||||
dataText: [""],
|
dataPelengkap: [{ key: "", name: "", desc: "" }],
|
||||||
});
|
});
|
||||||
|
|
||||||
useShallowEffect(() => {
|
useShallowEffect(() => {
|
||||||
@@ -60,8 +59,8 @@ export default function KategoriPelayananSurat({
|
|||||||
async function handleCreate() {
|
async function handleCreate() {
|
||||||
try {
|
try {
|
||||||
setBtnLoading(true);
|
setBtnLoading(true);
|
||||||
const cleanedDataText = dataTambah.dataText
|
const cleanedDataText = dataTambah.dataPelengkap
|
||||||
.map((v) => v.trim())
|
.map((v) => v.name.trim())
|
||||||
.filter((v) => v !== "");
|
.filter((v) => v !== "");
|
||||||
const cleanedSyarat = dataTambah.syaratDokumen
|
const cleanedSyarat = dataTambah.syaratDokumen
|
||||||
.map((item) => ({
|
.map((item) => ({
|
||||||
@@ -82,8 +81,8 @@ export default function KategoriPelayananSurat({
|
|||||||
closeTambah();
|
closeTambah();
|
||||||
setDataTambah({
|
setDataTambah({
|
||||||
name: "",
|
name: "",
|
||||||
syaratDokumen: [{ name: "", desc: "" }],
|
syaratDokumen: [{ key: "", name: "", desc: "" }],
|
||||||
dataText: [""],
|
dataPelengkap: [{ key: "", name: "", desc: "" }],
|
||||||
});
|
});
|
||||||
notification({
|
notification({
|
||||||
title: "Success",
|
title: "Success",
|
||||||
@@ -112,8 +111,8 @@ export default function KategoriPelayananSurat({
|
|||||||
async function handleEdit() {
|
async function handleEdit() {
|
||||||
try {
|
try {
|
||||||
setBtnLoading(true);
|
setBtnLoading(true);
|
||||||
const cleanedDataText = dataChoose.dataText
|
const cleanedDataText = dataChoose.dataPelengkap
|
||||||
.map((v) => v.trim())
|
.map((v) => v.name.trim())
|
||||||
.filter((v) => v !== "");
|
.filter((v) => v !== "");
|
||||||
const cleanedSyarat = dataChoose.syaratDokumen
|
const cleanedSyarat = dataChoose.syaratDokumen
|
||||||
.map((item) => ({
|
.map((item) => ({
|
||||||
@@ -191,7 +190,7 @@ export default function KategoriPelayananSurat({
|
|||||||
function handleAddSyarat() {
|
function handleAddSyarat() {
|
||||||
setDataChoose({
|
setDataChoose({
|
||||||
...dataChoose,
|
...dataChoose,
|
||||||
syaratDokumen: [...dataChoose.syaratDokumen, { name: "", desc: "" }],
|
syaratDokumen: [...dataChoose.syaratDokumen, { key: "", name: "", desc: "" }],
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -204,7 +203,7 @@ export default function KategoriPelayananSurat({
|
|||||||
|
|
||||||
function handleEditSyarat(
|
function handleEditSyarat(
|
||||||
index: number,
|
index: number,
|
||||||
data: { name: string; desc: string },
|
data: { key: string; name: string; desc: string },
|
||||||
) {
|
) {
|
||||||
setDataChoose({
|
setDataChoose({
|
||||||
...dataChoose,
|
...dataChoose,
|
||||||
@@ -233,15 +232,15 @@ export default function KategoriPelayananSurat({
|
|||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
</Input.Wrapper>
|
</Input.Wrapper>
|
||||||
<TagsInput
|
{/* <TagsInput
|
||||||
label="Data Pelengkap"
|
label="Data Pelengkap"
|
||||||
placeholder="Tambah data pelengkap"
|
placeholder="Tambah data pelengkap"
|
||||||
splitChars={[","]}
|
splitChars={[","]}
|
||||||
value={dataChoose.dataText}
|
value={dataChoose.dataPelengkap}
|
||||||
onChange={(value) =>
|
onChange={(value) =>
|
||||||
setDataChoose({ ...dataChoose, dataText: value })
|
setDataChoose({ ...dataChoose, dataPelengkap: value })
|
||||||
}
|
}
|
||||||
/>
|
/> */}
|
||||||
<Flex direction={"column"} gap={"md"}>
|
<Flex direction={"column"} gap={"md"}>
|
||||||
<Group>
|
<Group>
|
||||||
<Text size="sm" c={"white"}>
|
<Text size="sm" c={"white"}>
|
||||||
@@ -295,6 +294,7 @@ export default function KategoriPelayananSurat({
|
|||||||
value={v.name}
|
value={v.name}
|
||||||
onChange={(e) =>
|
onChange={(e) =>
|
||||||
handleEditSyarat(i, {
|
handleEditSyarat(i, {
|
||||||
|
key: v.key,
|
||||||
name: e.target.value,
|
name: e.target.value,
|
||||||
desc: v.desc,
|
desc: v.desc,
|
||||||
})
|
})
|
||||||
@@ -308,6 +308,7 @@ export default function KategoriPelayananSurat({
|
|||||||
value={v.desc}
|
value={v.desc}
|
||||||
onChange={(e) =>
|
onChange={(e) =>
|
||||||
handleEditSyarat(i, {
|
handleEditSyarat(i, {
|
||||||
|
key: v.key,
|
||||||
name: v.name,
|
name: v.name,
|
||||||
desc: e.target.value,
|
desc: e.target.value,
|
||||||
})
|
})
|
||||||
@@ -347,7 +348,7 @@ export default function KategoriPelayananSurat({
|
|||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
</Input.Wrapper>
|
</Input.Wrapper>
|
||||||
<TagsInput
|
{/* <TagsInput
|
||||||
label="Data Pelengkap"
|
label="Data Pelengkap"
|
||||||
placeholder="Tambah data pelengkap"
|
placeholder="Tambah data pelengkap"
|
||||||
splitChars={[","]}
|
splitChars={[","]}
|
||||||
@@ -355,7 +356,7 @@ export default function KategoriPelayananSurat({
|
|||||||
onChange={(value) =>
|
onChange={(value) =>
|
||||||
setDataTambah({ ...dataTambah, dataText: value })
|
setDataTambah({ ...dataTambah, dataText: value })
|
||||||
}
|
}
|
||||||
/>
|
/> */}
|
||||||
<Flex direction={"column"} gap={"md"}>
|
<Flex direction={"column"} gap={"md"}>
|
||||||
<Group>
|
<Group>
|
||||||
<Text size="sm" c={"white"}>
|
<Text size="sm" c={"white"}>
|
||||||
@@ -372,7 +373,7 @@ export default function KategoriPelayananSurat({
|
|||||||
...dataTambah,
|
...dataTambah,
|
||||||
syaratDokumen: [
|
syaratDokumen: [
|
||||||
...dataTambah.syaratDokumen,
|
...dataTambah.syaratDokumen,
|
||||||
{ name: "", desc: "" },
|
{ key: "", name: "", desc: "" },
|
||||||
],
|
],
|
||||||
});
|
});
|
||||||
}}
|
}}
|
||||||
@@ -524,8 +525,8 @@ export default function KategoriPelayananSurat({
|
|||||||
Data Pelengkap
|
Data Pelengkap
|
||||||
</Text>
|
</Text>
|
||||||
<List>
|
<List>
|
||||||
{dataChoose?.dataText?.map((v: any) => (
|
{dataChoose?.dataPelengkap?.map((v: any) => (
|
||||||
<List.Item key={v.id}>{v}</List.Item>
|
<List.Item key={v.id}>{v.name}</List.Item>
|
||||||
))}
|
))}
|
||||||
</List>
|
</List>
|
||||||
</Flex>
|
</Flex>
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import { getLastUpdated } from "../lib/get-last-updated"
|
|||||||
import { generateNoPengajuanSurat } from "../lib/no-pengajuan-surat"
|
import { generateNoPengajuanSurat } from "../lib/no-pengajuan-surat"
|
||||||
import { isValidPhone, normalizePhoneNumber } from "../lib/normalizePhone"
|
import { isValidPhone, normalizePhoneNumber } from "../lib/normalizePhone"
|
||||||
import { prisma } from "../lib/prisma"
|
import { prisma } from "../lib/prisma"
|
||||||
|
import { toSlug } from "../lib/slug_converter"
|
||||||
|
|
||||||
|
|
||||||
const PelayananRoute = new Elysia({
|
const PelayananRoute = new Elysia({
|
||||||
@@ -20,9 +21,21 @@ const PelayananRoute = new Elysia({
|
|||||||
},
|
},
|
||||||
orderBy: {
|
orderBy: {
|
||||||
name: "asc"
|
name: "asc"
|
||||||
|
},
|
||||||
|
select: {
|
||||||
|
id: true,
|
||||||
|
name: true,
|
||||||
|
syaratDokumen: true,
|
||||||
|
dataPelengkap: true,
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
return data
|
|
||||||
|
const dataFix = data.map(item => ({
|
||||||
|
...item,
|
||||||
|
link: `${process.env.BUN_PUBLIC_BASE_URL}/darmasaba/surat?jenis=${toSlug(item.name)}`
|
||||||
|
}));
|
||||||
|
|
||||||
|
return dataFix
|
||||||
}, {
|
}, {
|
||||||
detail: {
|
detail: {
|
||||||
summary: "List Kategori Pelayanan Surat",
|
summary: "List Kategori Pelayanan Surat",
|
||||||
|
|||||||
Reference in New Issue
Block a user