import { RoleCreate, RoleUpdate } from '@/services/manajemen/role-service'
import { useFormik } from 'formik'
import { Button } from 'primereact/button'
import { Dialog } from 'primereact/dialog'
import { InputText } from 'primereact/inputtext'
import { Tree } from 'primereact/tree'
export default function FormRole({ dialogForm, setDialogForm, dataEdit, setDataEdit, refresh, toast }) {
const formik = useFormik({
initialValues: {
role_id: dataEdit.role_id || '',
nama: dataEdit.nama || '',
access: dataEdit.access || [],
},
validate: (data) => {
let errors = {}
if (!data.nama) errors.nama = 'Nama is required.'
if (!data.access) errors.access = 'Nama is required.'
return errors
},
onSubmit: (data) => {
Object.assign(data, { access: JSON.stringify(data.access) })
if (data.role_id) {
RoleUpdate(data).then((res) => {
if (res.status === 'success') {
refresh(Math.random)
formik.resetForm()
setDataEdit([])
setDialogForm(false)
toast.current.show({
severity: 'success',
detail: res.message,
closable: false,
})
} else {
setDialogForm(false)
toast.current.show({
severity: 'error',
detail: res.message,
closable: false,
})
}
})
} else {
RoleCreate(data).then((res) => {
if (res.status === 'success') {
refresh(Math.random)
formik.resetForm()
setDataEdit([])
setDialogForm(false)
toast.current.show({
severity: 'success',
detail: res.message,
closable: false,
})
} else {
setDialogForm(false)
toast.current.show({
severity: 'error',
detail: res.message,
closable: false,
})
}
})
}
},
})
const isFieldValid = (field) => !!(formik.touched[field] && formik.errors[field])
const errorFieldMessage = (field) => {
return (
isFieldValid(field) && (
{formik.errors[field]}
)
)
}
const dialogFooter = (
)
const data = [
{
key: 'dashboard',
label: 'Dashboard',
icon: 'pi pi-fw pi-home',
},
{
key: 'referensi',
label: 'Referensi',
icon: 'pi pi-fw pi-database',
children: [
{ key: 'referensi/jenis-tagihan', label: 'Jenis Tagihan' },
{ key: 'referensi/jenis-belanja', label: 'Jenis Belanja' },
{ key: 'referensi/jenis-kegiatan', label: 'Jenis Kegiatan' },
{ key: 'referensi/akun', label: 'Akun' },
{ key: 'referensi/persyaratan', label: 'Persyaratan' },
{ key: 'referensi/unit-kerja', label: 'Unit Kerja' },
{ key: 'referensi/verifikator', label: 'Verifikator' },
],
},
{
key: 'pengajuan-tagihan',
label: 'Pengajuan Tagihan',
icon: 'pi pi-fw pi-dollar',
},
{
key: 'laporan',
label: 'Laporan',
icon: 'pi pi-fw pi-chart-line',
children: [
{ key: 'laporan/per-user', label: 'Per User (Verifikator, kasub verif)' },
// { key: 'laporan/approval', label: 'Approval (Kabag verif, bendahara, ppspm)' },
{ key: 'laporan/rekap-bulanan-per-user', label: 'Rekapitulasi bulanan per user' },
{ key: 'laporan/rekap-verif-per-bulan', label: 'Rekapitulasi hasil verifikasi per bulan' },
{ key: 'laporan/rekap-per-unit-kerja', label: 'Rekapitulasi per unit kerja' },
{ key: 'laporan/rekap-per-jenis-belanja', label: 'Rekapitulasi per jenis belanja (BAS)' },
{ key: 'laporan/verif-per-bulan', label: 'Hasil verifikasi per bulan (detail)' },
{
key: 'laporan/pengendalian-waktu-penyelesaian',
label: 'Pengendalian waktu penyelesaian tagihan per unit per bulan',
},
{
key: 'laporan/pengendalian-waktu-penyelesaian-detail',
label: 'Pengendalian waktu penyelesaian tagihan per unit per bulan (detail)',
},
],
},
{
key: 'otorisasi',
label: 'Otorisasi',
icon: 'pi pi-fw pi-lock',
children: [
{ key: 'otorisasi/verifikasi', label: 'verifikasi' },
{ key: 'otorisasi/rekomendasi', label: 'rekomendasi' },
{ key: 'otorisasi/persetujuan', label: 'persetujuan' },
{ key: 'otorisasi/pengesahan', label: 'pengesahan' },
{ key: 'otorisasi/spm', label: 'spm' },
],
},
{
key: 'manajemen',
label: 'Manajemen',
icon: 'pi pi-fw pi-database',
children: [
{ key: 'manajemen/user', label: 'user' },
{ key: 'manajemen/role', label: 'role' },
{ key: 'manajemen/jam-kerja', label: 'jam kerja' },
],
},
]
return (
<>
>
)
}