"use client"; import { WARNA } from "@/module/_global"; import LayoutModal from "@/module/_global/layout/layout_modal"; import { funGetAllGroup, IDataGroup } from "@/module/group"; import { Box, Button, Select, Stack, TextInput } from "@mantine/core"; import { useRouter } from "next/navigation"; import { useEffect, useState } from "react"; import toast from "react-hot-toast"; import { HiUser } from "react-icons/hi2"; import { IDataPositionMember, IDataROleMember } from "../lib/type_member"; import { funGetAllPosition } from "@/module/position/lib/api_position"; import { funCreateMember, funGetRoleUser } from "../lib/api_member"; import _ from "lodash"; export default function CreateMember() { const router = useRouter(); const [isModal, setModal] = useState(false); const [listGroup, setListGorup] = useState([]); const [listPosition, setListPosition] = useState([]); const [listUserRole, setListUserRole] = useState([]); const [touched, setTouched] = useState({ nik: false, name: false, phone: false, email: false, gender: false, idGroup: false, idPosition: false, idUserRole: false }); const [listData, setListData] = useState({ nik: "", name: "", phone: "", email: "", gender: "", idGroup: "", idPosition: "", idUserRole: "", }); async function getAllGroup() { try { const response = await funGetAllGroup("?active=true"); if (response.success) { setListGorup(response.data); } else { toast.error(response.message); } } catch (error) { console.error(error); toast.error("Gagal mendapatkan grup, coba lagi nanti"); } } async function getAllPosition(val: any) { try { if (val != null) { const res = await funGetAllPosition( "?active=true" + "&group=" + `${val}` ); setListPosition(res.data); } else { setListPosition([]); } } catch (error) { console.error(error); } } async function getAllUserRole() { try { const res = await funGetRoleUser(); setListUserRole(res.data); } catch (error) { console.error(error); } } async function changeGrup(val: any) { setListPosition([]); setListData({ ...listData, idGroup: val, idPosition: "", }); getAllPosition(val); } async function onSubmit(val: boolean) { try { if (_.isEmpty(listData)) { return; } if (val) { const res = await funCreateMember({ nik: listData.nik, name: listData.name, phone: listData.phone, email: listData.email, gender: listData.gender, idGroup: listData.idGroup, idPosition: listData.idPosition, idUserRole: listData.idUserRole, }); if (res.success) { toast.success(res.message); setModal(false); router.push("/member?active=true"); } else { toast.error(res.message); } } setModal(false); } catch (error) { toast.error("Error"); } finally { setModal(false); } } useEffect(() => { getAllGroup(); getAllUserRole(); }, []); return ( ({ value: data.id, label: data.name, })) : [] } onChange={(val: any) => { setListData({ ...listData, idPosition: val, }) setTouched({ ...touched, idPosition: false }) } } value={listData.idPosition == "" ? null : listData.idPosition} onBlur={() => setTouched({ ...touched, idPosition: true })} error={ touched.idPosition && ( listData.idPosition == "" ? "Jabatan Tidak Boleh Kosong" : null ) } /> { setListData({ ...listData, gender: val, }) setTouched({ ...touched, gender: false }) } } onBlur={() => setTouched({ ...touched, gender: true })} error={ touched.gender && ( listData.gender == "" ? "Gender Tidak Boleh Kosong" : null ) } /> setModal(false)} description="Apakah Anda yakin ingin menambahkan data?" onYes={(val) => { onSubmit(val); }} /> ); }