"use client"; import React, { useContext, useEffect, useRef, useState } from "react"; import { BottomSheet } from "react-spring-bottom-sheet"; import Input from "plugins/Input/page"; import AppContext from "@ctx/AppContext"; import SimpleReactValidator from "simple-react-validator"; import CheckBoxBriz from "plugins/CheckBoxBriz/page"; import Buttonbriz from "plugins/Buttonbriz/page"; import { toast } from "react-toastify"; const BottomSheetCreateRole = (props) => { const CTX = useContext(AppContext); const [persianName, setPersianName] = useState(""); const [englishName, setEnglishName] = useState(""); const [description, setDescription] = useState(""); const [, forceUpdate] = useState(); const permissionsData = CTX.state.permissions; const permissionsChoose = CTX.state.permissionsChoose; const goToEditRole = CTX.state.goToEditRole; const idEditRole = CTX.state.idEditRole; const roleData = CTX.state.roleData; const validator = useRef( new SimpleReactValidator({ messages: { required: "پر کردن این فیلد الزامی میباشد", }, element: (message) => ( <>
{message}
), }) ); const body = { persianName, englishName, description, permissions: permissionsChoose, }; const bodyUpdate = { persianName, englishName, description, permissions: permissionsChoose, roleId: roleData.roleId, }; const clear = () => { setPersianName(""); setEnglishName(""); setDescription(""); CTX.setPermissionsChoose([]); }; const handleCreateRole = (update) => { if (validator.current.allValid()) { if (update == "UPDATE") { CTX.UpdateRole(bodyUpdate); } else { CTX.CreateRole(body); } } else { toast.error("پرکردن همه ی فیلد ها واجب است", { position: "bottom-right", autoClose: 2000, hideProgressBar: false, closeOnClick: true, pauseOnHover: true, draggable: true, progress: undefined, }); validator.current.showMessages(); forceUpdate(1); } }; const handleBottomSheetCreateRole = (e) => { if (e.type == "OPEN") { CTX.GetPermissions(); if (goToEditRole) { CTX.GetRole(idEditRole); } } else if (e.type == "CLOSE") { clear(); CTX.setGoToEditRole(false); CTX.setIdEditRole(null); CTX.setRoleData([]); } }; useEffect(() => { if (goToEditRole) { setPersianName(roleData.persianName); setEnglishName(roleData.englishName); setDescription(roleData.description); CTX.setPermissionsChoose(roleData.permissions); } }, [roleData]); return ( handleBottomSheetCreateRole(e)} open={CTX.state.BottomSheetCreateRoleOpen} onDismiss={() => CTX.setBottomSheetCreateRoleOpen(false)} blocking={false} >

افزودن نقش جدید

{ setPersianName(e.target.value); validator.current.showMessageFor("persianName"); }} style="text-right" validator={true} validatorData={validator.current.message( "persianName", persianName, "required" )} />
{ setEnglishName(e.target.value); validator.current.showMessageFor("englishName"); }} style="text-right" validator={true} validatorData={validator.current.message( "englishName", englishName, "required" )} />
{ setDescription(e.target.value); validator.current.showMessageFor("description"); }} textarea={true} style="text-right" />

دسترسی های مورد نظر{" "}

{permissionsData && permissionsData.map((e) => ( setRoleCheckBox(e.target.checked)} /> ))}
{goToEditRole ? ( handleCreateRole("UPDATE")} subButton={true} subButtonTitle="حذف نقش" subButtonEvent={() => CTX.DeleteRole(idEditRole)} /> ) : ( handleCreateRole()} /> )}
); }; export default BottomSheetCreateRole;