"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 { toast } from "react-toastify"; import Buttonbriz from "plugins/Buttonbriz/page"; import DatePickerIran from "plugins/DatePickerIran/page"; import moment from "jalali-moment"; import validateIranPhone from "plugins/IranPhoneRegex"; const jalaliMoment = require("jalali-moment"); const BottomSheetCreateEmployees = (props) => { const CTX = useContext(AppContext); const [firstName, setFirstName] = useState(""); const [lastName, setLastName] = useState(""); const [phoneNumber, setPhoneNumber] = useState(""); const [nationalId, setNationalId] = useState(""); const [gender, setGender] = useState(parseInt(0)); const [birthDate, setBirthDate] = useState(null); const [roleSelectCurrntData, setRoleSelectCurrntData] = useState(""); const [roleSelectData, setRoleSelectData] = useState([]); const [, forceUpdate] = useState(); const validator = useRef( new SimpleReactValidator({ messages: { required: "پر کردن این فیلد الزامی میباشد", }, element: (message) => ( <>
{message}
), }) ); const rolesChoose = CTX.state.rolesChoose; const rolesData = CTX.state.rolesData; const goToEditUser = CTX.state.goToEditUser; const idEditUser = CTX.state.idEditUser; const userData = CTX.state.userData; const body = { phoneNumber, firstName, lastName, birthDateTimeStamp: birthDate && moment .utc( [birthDate.year, birthDate.month, birthDate.day], "jYYYY-jMM-jDDTHH" ) .unix(), gender: parseInt(gender), nationalId, roleIds: rolesChoose, }; const bodyUpdate = { phoneNumber, firstName, lastName, birthDateTimeStamp: birthDate && moment .utc( [birthDate.year, birthDate.month, birthDate.day], "jYYYY-jMM-jDDTHH" ) .unix(), gender: parseInt(gender), nationalId, roleIds: rolesChoose, userId: userData.id, }; console.log(bodyUpdate); const clear = () => { setFirstName(""); setLastName(""); setPhoneNumber(""); setNationalId(""); setGender(""); setBirthDate(""); setRoleSelectCurrntData(""); setRoleSelectData([]); CTX.setRolesChoose([]); }; const handleCreateUser = (update) => { if (validateIranPhone(phoneNumber)) { if (validator.current.allValid()) { if (update == "UPDATE") { CTX.UpdateUser(bodyUpdate); } else { CTX.CreateUser(body); } } else { toast.error("پرکردن همه ی فیلد ها واجب است", { position: "bottom-right", autoClose: 2000, hideProgressBar: false, closeOnClick: true, pauseOnHover: true, draggable: true, progress: undefined, }); validator.current.showMessages(); forceUpdate(1); } } else { toast.error("شماره تماس را درست وارد کنید", { position: "bottom-right", autoClose: 2000, hideProgressBar: false, closeOnClick: true, pauseOnHover: true, draggable: true, progress: undefined, }); } }; const deleteRole = (id) => { CTX.setRolesChoose(rolesChoose.filter((el) => el !== id)); }; const handleBottomSheetCreateEmployeesOpen = (e) => { setRoleSelectData( rolesData.map((item) => ({ key: item.persianName, value: item.id, })) ); console.log(idEditUser); if (e.type == "OPEN") { CTX.GetRoles(); if (goToEditUser) { CTX.GetUser(idEditUser); } } else if (e.type == "CLOSE") { clear(); CTX.setGoToEditUser(false); CTX.setIdEditUser(null); CTX.setUserData([]); } }; useEffect(() => { if (goToEditUser) { const date = moment .unix(userData.birthDateTimeStamp) .locale("fa") .format("YYYY/MM/DD") .split("/"); setFirstName(userData.firstName); setLastName(userData.lastName); setPhoneNumber(userData.phoneNumber); setNationalId(userData.nationalId); setGender(userData.gender); setBirthDate({ day: parseInt(date[2]), month: parseInt(date[1]), year: parseInt(date[0]), }); // setRoleSelectCurrntData(""); CTX.setRolesChoose(userData.roleIds); console.log("userData2", userData); } }, [userData]); return ( handleBottomSheetCreateEmployeesOpen(e)} open={CTX.state.BottomSheetCreateEmployeesOpen} onDismiss={() => CTX.setBottomSheetCreateEmployeesOpen(false)} >

افزودن کاربر جدید

{ setFirstName(e.target.value); validator.current.showMessageFor("firstName"); }} style="text-right" validator={true} validatorData={validator.current.message( "firstName", firstName, "required" )} />
{ setLastName(e.target.value); validator.current.showMessageFor("lastName"); }} style="text-right" validator={true} validatorData={validator.current.message( "lastName", lastName, "required" )} />
{ setGender(e.target.value); }} style="text-right" select={true} selectData={[ { key: "مرد", value: 0 }, { key: "زن", value: 1 }, ]} />
setBirthDate(e)} date={birthDate} />
{ setPhoneNumber(e.target.value); validator.current.showMessageFor("phoneNumber"); }} style="text-right" validator={true} validatorData={validator.current.message( "phoneNumber", phoneNumber, "required" )} />
{ setNationalId(e.target.value); }} style="text-right" />
{ setRoleSelectCurrntData(e.target.value); if (!!rolesChoose.find((b) => b == e.target.value)) { toast.error("نقش تکراری است", { position: "bottom-right", closeOnClick: true, }); } else { CTX.setRolesChoose((current) => [...current, e.target.value]); } }} style="text-right" validatorData={validator.current.message( "phoneNumber", phoneNumber, "required" )} select={true} selectData={roleSelectData} />
{rolesChoose && rolesChoose.map((e) => (
deleteRole(e)} >

{rolesData?.find((b) => b.id == e).persianName}

))}
{goToEditUser ? ( handleCreateUser("UPDATE")} subButton={true} subButtonTitle="حذف کاربر" subButtonEvent={() => CTX.DeleteUser(idEditUser)} /> ) : ( handleCreateUser()} /> )}
); }; export default BottomSheetCreateEmployees;