diff --git a/app/(admin)/admin/master-role/create/page.tsx b/app/(admin)/admin/master-role/create/page.tsx new file mode 100644 index 0000000..ab2c6f9 --- /dev/null +++ b/app/(admin)/admin/master-role/create/page.tsx @@ -0,0 +1,10 @@ +import FormMasterUserRole from '@/components/form/form-master-user-role' +import { Card } from '@nextui-org/react' + +export default function CreateMasterUserRolePage() { + return ( + + + + ) +} diff --git a/app/(admin)/admin/master-role/page.tsx b/app/(admin)/admin/master-role/page.tsx new file mode 100644 index 0000000..6abf18b --- /dev/null +++ b/app/(admin)/admin/master-role/page.tsx @@ -0,0 +1,24 @@ +"use client" +import { AddIcon } from "@/components/icons"; +import MasterRoleTable from "@/components/table/master-role-table"; +import { Button, Card } from "@nextui-org/react"; +import Link from "next/link"; + +export default function MasterRolePage() { + return ( +
+
+ + + + + + + + +
+
+ ); +} diff --git a/components/form/form-master-user-role.tsx b/components/form/form-master-user-role.tsx new file mode 100644 index 0000000..0d2a685 --- /dev/null +++ b/components/form/form-master-user-role.tsx @@ -0,0 +1,164 @@ +'use client' +import { error } from '@/config/swal'; +import { createMasterUser } from '@/service/master-user'; +import { createMasterUserRole } from '@/service/master-user-role'; +import { MasterUser } from '@/types/globals'; +import { zodResolver } from '@hookform/resolvers/zod'; +import { Button, Card, Input, Radio, RadioGroup, Select, SelectItem, Selection, Textarea } from '@nextui-org/react' +import Link from 'next/link'; +import { useRouter } from 'next/navigation'; +import React, { useState } from 'react' +import { useForm } from 'react-hook-form'; +import Swal from 'sweetalert2'; +import withReactContent from 'sweetalert2-react-content'; +import { z } from 'zod'; + +const masterUserSchema = z.object({ + code: z.string().min(1, { message: "Required" }), + description: z.string().min(1, { message: "Required" }), + levelNumber: z.string().min(1, { message: "Required" }), + name: z.string().min(1, { message: "Required" }), +}); + +export default function FormMasterUserRole() { + const router = useRouter(); + const MySwal = withReactContent(Swal); + const [code, setCode] = useState(); + const [description, setDescription] = useState(); + const [levelNumber, setLevelNumber] = useState(1); + const [name, setName] = useState(); + + const formOptions = { resolver: zodResolver(masterUserSchema) }; + type MicroIssueSchema = z.infer; + const { + register, + control, + handleSubmit, + setValue, + formState: { errors }, + } = useForm(formOptions); + + + + async function save(data: any) { + const formData = { + code: code, + description: description, + level_number: levelNumber, + name: name, + }; + + console.log("Form MasterUser:", formData); + const response = await createMasterUserRole(formData); + + if (response?.error) { + error(response.message); + return false; + } + + successSubmit("/admin/master-role"); + }; + + function successSubmit(redirect: any) { + MySwal.fire({ + title: "Sukses", + icon: "success", + confirmButtonColor: "#3085d6", + confirmButtonText: "OK", + }).then((result) => { + if (result.isConfirmed) { + router.push(redirect); + } + }); + } + + async function onSubmit(data: any) { + MySwal.fire({ + title: "Simpan Data", + text: "", + icon: "warning", + showCancelButton: true, + cancelButtonColor: "#d33", + confirmButtonColor: "#3085d6", + confirmButtonText: "Simpan", + }).then((result) => { + if (result.isConfirmed) { + save(data); + } + }); + } + + return ( +
+
+ +
+ setCode(e.target.value)} + /> + {errors.code?.message} +
+
+ setName(e.target.value)} + /> + {errors.name?.message} +
+
+