"use client"; import { error } from "@/config/swal"; import { createMasterUser } from "@/services/master-user"; import { createMasterUserRole } from "@/services/master-user-role"; import { MasterUser } from "@/types/globals"; import { zodResolver } from "@hookform/resolvers/zod"; import { Button, Card, Checkbox, Input, Radio, RadioGroup, Select, SelectItem, Selection, Textarea, } from "@heroui/react"; import Link from "next/link"; import { useRouter } from "next/navigation"; import React, { useEffect, useState } from "react"; import { Controller, useFieldArray, 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" }), name: z.string().min(1, { message: "Required" }), userLevelId: z.string().min(1, { message: "Required" }), userRoleAccess: z.array( z.object({ isAdminEnabled: z.boolean(), isApprovalEnabled: z.boolean(), isDeleteEnabled: z.boolean(), isInsertEnabled: z.boolean(), isUpdateEnabled: z.boolean(), isViewEnabled: z.boolean(), menuId: z.number(), menuTitle: z.string(), }) ), }); const menus = [{ id: 1, title: "Menu 1" }]; export default function FormMasterUserRole() { const router = useRouter(); const MySwal = withReactContent(Swal); const formOptions = { resolver: zodResolver(masterUserSchema), }; type MicroIssueSchema = z.infer; const { register, control, handleSubmit, setValue, getValues, formState: { errors }, } = useForm(formOptions); const { fields, append, remove } = useFieldArray({ control, name: "userRoleAccess", }); useEffect(() => { const data: any = []; menus.map((menu) => { data.push({ menuId: menu.id, isAdminEnabled: false, isApprovalEnabled: false, isDeleteEnabled: false, isInsertEnabled: false, isUpdateEnabled: false, isViewEnabled: false, menuTitle: menu.title, }); }); setValue("userRoleAccess", data); }, []); async function save(data: z.infer) { const formData = { code: data.code, description: data.description, statusId: 2, userLevelIds: [Number(data.userLevelId)], name: data.name, userRoleAccess: data.userRoleAccess.map((roleAccess) => { return { isAdminEnabled: roleAccess.isAdminEnabled, isApprovalEnabled: roleAccess.isApprovalEnabled, isDeleteEnabled: roleAccess.isDeleteEnabled, isInsertEnabled: roleAccess.isInsertEnabled, isUpdateEnabled: roleAccess.isUpdateEnabled, isViewEnabled: roleAccess.isViewEnabled, menuId: 1, }; }), }; 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: z.infer) { MySwal.fire({ title: "Simpan Data", text: "", icon: "warning", showCancelButton: true, cancelButtonColor: "#d33", confirmButtonColor: "#3085d6", confirmButtonText: "Simpan", }).then((result) => { if (result.isConfirmed) { save(data); } }); } return (
( )} /> {errors.code?.message && (

{errors.code?.message}

)} ( )} /> {errors.name?.message && (

{errors.name?.message}

)} (