diff --git a/src/components/Employee/ManageRole.jsx b/src/components/Employee/ManageRole.jsx index 40970076..94a5cf87 100644 --- a/src/components/Employee/ManageRole.jsx +++ b/src/components/Employee/ManageRole.jsx @@ -1,162 +1,172 @@ -import React,{useEffect, useState} from 'react' -import useMaster from '../../hooks/masterHook/useMaster' -import { useForm } from 'react-hook-form'; -import { z } from 'zod'; -import { zodResolver } from '@hookform/resolvers/zod'; -import { RolesRepository } from '../../repositories/MastersRepository'; -import { useEmployeeRoles } from '../../hooks/useEmployees'; -import {useDispatch} from 'react-redux'; -import {changeMaster} from '../../slices/localVariablesSlice'; -import showToast from '../../services/toastService'; - +import React, { useEffect, useState } from "react"; +import useMaster from "../../hooks/masterHook/useMaster"; +import { useForm } from "react-hook-form"; +import { z } from "zod"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { RolesRepository } from "../../repositories/MastersRepository"; +import { useEmployeeRoles } from "../../hooks/useEmployees"; +import { useDispatch } from "react-redux"; +import { changeMaster } from "../../slices/localVariablesSlice"; +import showToast from "../../services/toastService"; const formSchema = z.object({ - selectedRole: z.record(z.boolean()).refine((data) => { - return Object.values(data).some(value => value === true); - }, { - message: "At least one checkbox must be selected.", - }), + selectedRole: z.record(z.boolean()).refine( + (data) => { + return Object.values(data).some((value) => value === true); + }, + { + message: "At least one checkbox must be selected.", + } + ), }); +const ManageRole = ({ employeeId, onClosed }) => { + const disptach = useDispatch(); + disptach(changeMaster("Application Role")); + const [isLoading, setIsLoading] = useState(false); + const { employeeRoles, loading } = useEmployeeRoles(employeeId); + const { data, loading: roleLoading } = useMaster(); -const ManageRole = ({employeeId,onClosed}) => { - - const disptach = useDispatch() - disptach(changeMaster("Role")) - const [isLoading, setIsLoading] = useState(false); - const { employeeRoles,loading } = useEmployeeRoles(employeeId); - const {data,loading:roleLoading} = useMaster(); - - const buildDefaultRoles = () => { - const defaults = {}; - data.forEach((role) => { - const isRoleEnabled = employeeRoles?.data?.some((empRole) => empRole.roleId === role.id); - defaults[role.id] = isRoleEnabled; - }); - - return defaults; - }; - - const [initialRoles, setInitialRoles] = useState({}); - - useEffect(() => { - if (employeeRoles && data) { - const updatedRoles = buildDefaultRoles(); - setInitialRoles(updatedRoles); - } - }, [employeeRoles, data]); - - const { register, handleSubmit, formState: { errors }, reset } = useForm({ - resolver: zodResolver(formSchema), - defaultValues: { - selectedRole: initialRoles, - }, + const buildDefaultRoles = () => { + const defaults = {}; + data.forEach((role) => { + const isRoleEnabled = employeeRoles?.data?.some( + (empRole) => empRole.roleId === role.id + ); + defaults[role.id] = isRoleEnabled; }); - - - useEffect( () => - { - if (Object.keys(initialRoles).length > 0) { - reset({ - selectedRole: initialRoles, + + return defaults; + }; + + const [initialRoles, setInitialRoles] = useState({}); + + useEffect(() => { + if (employeeRoles && data) { + const updatedRoles = buildDefaultRoles(); + setInitialRoles(updatedRoles); + } + }, [employeeRoles, data]); + + const { + register, + handleSubmit, + formState: { errors }, + reset, + } = useForm({ + resolver: zodResolver(formSchema), + defaultValues: { + selectedRole: initialRoles, + }, + }); + + useEffect(() => { + if (Object.keys(initialRoles).length > 0) { + reset({ + selectedRole: initialRoles, + }); + } + }, [initialRoles, reset]); + + const onSubmit = (formdata) => { + setIsLoading(true); + const result = []; + for (const [roleId, isEnabled] of Object.entries(formdata.selectedRole)) { + if (isEnabled) { + result.push({ + employeeId: employeeId, + isEnabled: true, + roleId: roleId, }); } - }, [initialRoles, reset]); - - const onSubmit = (formdata) => { - setIsLoading(true) - const result = []; - for (const [roleId, isEnabled] of Object.entries(formdata.selectedRole)) { - if (isEnabled) { - result.push({ - employeeId: employeeId, - isEnabled: true, - roleId: roleId, - }); - } - } - RolesRepository.createEmployeeRoles( result ).then( ( resp ) => - { - showToast( "Role assigned successfully", "success" ) - setIsLoading(false) - onClosed() - }).catch((err)=>{ - console.log( err ) - setIsLoading(false) - - showToast(err.message,"error") + } + RolesRepository.createEmployeeRoles(result) + .then((resp) => { + showToast("Role assigned successfully", "success"); + setIsLoading(false); + onClosed(); }) - setIsLoading(false) + .catch((err) => { + console.log(err); + setIsLoading(false); + + showToast(err.message, "error"); + }); + setIsLoading(false); }; - + console.log(data) + return ( - -