{"version":3,"mappings":"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","names":["AUTH_TOKEN_KEY","baseUrl","isSmallScreen","capitalizeFirstLetter","str","notifyMessage","message","type","size","toast","convertToLocalDate","timestamp","calculateDaysBetween","startDate","endDate","start","daysDifference","hasPermission","permissions","moduleKey","routePermission","key","item","getYearOptions","startYear","count","options","i","year1","year2","getCurrentFinancialYear","today","year","fyStart","fyEnd","convertLabel","value","word","AuthContext","React","AuthProvider","children","authState","setAuthState","useState","useEffect","storedToken","secureLocalStorage","storedUser","setToken","useCallback","token","user","clearToken","error","_b","_a","memorizeValue","useMemo","useAuth","context","useContext","PropTypes","PermissionsContext","createContext","PermissionsProvider","setPermissions","loading","setLoading","previousPermissionsRef","useRef","url","groupedData","axios","acc","curr","permissionName","result","jsx","usePermissionsContext","ProtectedRoute","permission","ButtonVariants","Button","icon","disabled","className","variant","props","IconComponent","customClasses","colorClasses","classes","jsxs","FlowbiteButton","Spinner","AuthHeader","useLogin","statusSentOtp","setStatusSentOtp","number","setNumber","companies","setCompanies","isCompanyModalOpen","setCompanyModalOpen","loginDetails","setLoginDetails","countryCode","setCountryCode","register","handleSubmit","setValue","trigger","errors","setFormError","reset","control","useForm","sendOtpApi","mobileNumber","userType","response","err","_d","_c","verifyOtpApi","data","companiesList","_e","_g","_f","handleLogin","company","_h","handleFormSubmit","mobileNum","OTPInput","length","name","validation","onComplete","otp","setOtp","inputsRef","fullOtp","debounce","handleChange","index","prevOtp","newOtp","handleKeyDown","e","digit","el","customReactStyles","provided","ReactSelectField","label","placeholder","isMulti","required","customStyles","defaultValue","onChange","getValidationRules","Controller","defaultOnChange","ref","Select","selectedOption","base","CompanyModal","isOpen","onSelect","onClose","MobileNumberInputField","id","selectedCodeValue","onCountryCodeChange","rest","validationRules","option","TextInput","logoImgIcon","Login","onSubmit","loginOptions","Avatar","logoImg","Login$1","Splash","DrawerAccordion","changeActiveIndex","postOnClick","navigate","useNavigate","hasChildren","onClick","child","Link","FullNavBar","activeIndex","setActiveIndex","handleAccordionToggle","prevIndex","Fragment","MenuItem","items","isHovered","setIsHovered","menuRef","handleMouseLeave","currentRef","IconHoverVerticalNav","IconNavBar","Drawer","loadable","__vitePreload","VerticalNavBar","isExpanded","handleOnClose","renderDesktopView","renderMobileView","MenuPopup","closePopup","onLogoutPress","onSwitchCompany","companyCount","UserMenu","setIsOpen","dropdownRef","toggleDropdown","mobile","handleClickOutside","event","fetchCompanies","companyList","compData","companyObject","UserMenu$1","NavBar","onMenuClick","location","useLocation","AppPathObjects","AppRelativePaths","taskId","companyId","projectId","metricId","industryId","paramId","language","surveyId","companyNavigationData","navigationData","DashboardLayout","open","setOpen","handleDrawerClose","toggleDrawer","prev","Outlet","SectionHeader","title","breadcrumbs","text","Dashboard","useProjectDetails","useParams","selectedProject","setSelectedProject","selectedCompany","COMPANY_LIST_DATA","fetchProjectDetails","projectOptions","PROJECTS_LIST_DATA","project","changeProjectDetails","Card","ProjectInfo","description","projectDays","status","expectedEndDate","createdBy","assignee","projectSubParameter","projectStatus","setProjectStatus","selectedStatus","setSelectedStatus","getAllProjectStatus","res","updatedData","updateTaskStatus","statusId","defaultStatus","statusOption","moment","employee","subParam","idx","InputField","rows","as","InputTag","AddCompanyTask","openModal","setOpenModal","fetchData","isEditMode","setCurrentObj","initialData","isProjectTask","taskTypeData","setTaskTypeData","taskStatusData","setTaskStatusData","meetingData","setMeetingData","employeesData","setEmployeesData","projectsData","setProjectsData","getCompanyTaskById","de","projectArry","getAllTaskstatus","a","b","getAllTaskType","getAllMeeting","getAllEmployee","getAllProjects","endpoint","method","saveObject","Modal","Access","ProjectHeaderSection","buttonText","onButtonClick","memo","TaskList","taskData","setTaskData","renderList","getAllTaskByProjectId","Loader","useWindowDimensions","windowDimensions","setWindowDimensions","handleResize","ProjectDetails","height","DataTableFooter","currentPage","totalPages","itemsPerPage","handlePageChange","handleItemsPerPageChange","Checkbox","checked","ColumnSelector","columns","visibleColumns","onColumnToggle","column","useDataTable","initialColumns","setData","setColumns","setCurrentPage","setItemsPerPage","setVisibleColumns","col","paginatedData","startIndex","row","page","handleColumnVisibilityChange","columnKey","exportToExcel","exportToPDF","formatRevenue","DEFAULT_HEADER_ACTION_BUTTONS","DataTable","loadingState","headerActionButtons","actionButtons","statusApiUrl","componentName","updateStatusApiUrl","fetchAllData","isRole","isLoading","resolveNestedKey","obj","part","rowId","apiUrl","btn","button","disStatus","formattedValue","AddCompanyProject","watch","employees","setEmployees","coreParameterData","setCoreParameterData","subParameterData","setSubParameterData","selectedCoreParameter","getCompanyProjectById","getEmployee","getAllCoreParameter","getAllSubParameter","ProjectList","currentObj","deleteProject","prevData","projects","getAllProjectsData","viewProjectDetails","AddCompanyDesignation","setFocus","departmentData","setDepartmentData","useLayoutEffect","desigObj","getDepartmentData","CompanyDesignationList","designationData","setDesignationData","deletecity","getDesignationData","AddCompanyImportantDates","datePart","selectedDate","isoDateTime","CompanyImportantDates","importantDateData","setimportantDateData","deleteimportantDate","importantDate","getimportantDateData","AddCompanyEmployee","getEmployeeData","getCompanyEmployeeById","mobileNo","CompanyEmployee","countryData","setCountryData","getCountryData","deleteCountry","AddMeeting","meetingTypeData","setMeetingTypeData","meetingStatusData","setMeetingStatusData","employeeData","setEmployeeData","getMeetingstatusData","getMeetingTypeData","getEmployeesData","getMeetingById","saveObj","MeetingList","deleteMeeting","meeting","getMeetingData","CompanyTaskList","deleteTask","getAllTaskData","viewTaskDetails","AddDataPoint","KPIList","setKPIList","selectedValidationType","value1","validationTypeList","getKPIList","getDataPointById","numValue1","numValue2","DataPointList","dataPoint","setDataPoint","formatString","char","deleteDataPoint","getDataPointList","Profile","userDetails","setUserDetails","RoleModules","state","modules","setModules","selectedPermissions","setSelectedPermissions","isEditing","setIsEditing","permissionsRes","modulesRes","getAllEmployeePermissions","updatedModules","module","modulePermissions","check","initialSelectedPermissions","perm","isChecked","moduleId","permissionId","handleCheckboxChange","handleSave","formattedData","permissionSet","Table","Comment","commentData","comment","commentDate","Employee","formattedDate","ViewTaskDetails","taskDetails","setTaskDetails","task","prevTask","Userpermissionlist","filterdata","NotFound","months","DataPointTable","yearOptions","currentFinancialYear","defaultYear","y","isValidData","setIsValidData","dataPoints","setDataPoints","selectedYear","getAllDataPointTable","relatedDataPoints","d","isValidate","handleInputChange","dataPointId","monthIndex","dp","isYearChanged","isValid","prevDataPoints","newEntries","entry","financialMonth","_","dataMonth","field","monthData","newValue","CheckboxGroupRating","isPercentageMode","selectedValue","isDisabled","defaultSelection","selectedRating","setSelectedRating","ratingValues","HealthScoreUpdate","coreParameterRows","setCoreParameterRows","selectedCoreParameterId","coreParameterId","getAllCoreParameterRows","updatedArray","match","handleSliderChange","subParameterId","flattenedData","scoreValue","HealthScoreAchieve","scoreAchiveValue","employeeRoutes","Routes","Route","Navigate","CompanyTaskDetails","DepartmentAddModal","DepartmentList","deleteDepartment","department","TaskStatusList","TASK_STATUS_TEST_DATA","Input","forwardRef","multiline","onKeyDown","inputProps","Label","Textarea","ImageUpload","onImageUpload","initialImage","isPancard","file","setFile","setError","fileInputRef","maxFileSize","validFileTypes","handleImageUpload","uploadedFile","reader","handleRemoveFile","renderUploadPlaceholder","renderFilePreview","ProfileImage","BasicInfoForm","industryOptions","industryScaleOptions","countryOptions","consultants","engagementtypes","pancardFrontImage","gstCertificateImage","accountCode","setAccountCode","sahayTeamMates","useFormContext","stateData","setStateData","cityData","setCityData","selectedCountry","selectedState","annualTurnOver","selectConsultant","filteredIndustryScaleOptions","setFilteredIndustryScaleOptions","getStateData","getCityData","selectedIndustryScale","useWatch","updatedOptions","formatNumber","num","unformatNumber","rawValue","CompanyForm","setIndustryOptions","setIndustryScaleOptions","setCountryOptions","setConsultants","setEngagementTypes","setInitialImage","setPancardFrontImage","setGSTCertificateImage","setSahayTeamMates","isConsultantData","setIsConsultantData","fetchDropdownOptions","industries","industryScales","countries","companyMobile","adminCode","companyAdminMobile","superAdmins","uploadFile","selectedSuperAdminId","matchedConsultant","consultant","companyUserId","handleCancel","CompanyFormWrapper","methods","FormProvider","CompanyList","companyData","setCompanyData","columnsMemo","breadcrumbsMemo","deleteCompany","getCompaniesData","AddCountryModal","CountriesList","country","AddStateModal","StateList","deleteState","CitiesList","city","AddCityModal","AdminTypeModal","AdminTypeList","adminTypeData","setAdminTypeData","getTypeData","deleteAdmintype","AdminUserList","adminUserData","setAdminUserData","handleEdit","deleteAdminUser","adminUser","getAdminUserData","AdminAdd","userTypeOptions","setUserTypeOptions","aadhaarCardImage","setAadhaarCardImage","emergencyCode","setEmergencyCode","adminUserMobile","emergencyContact","_i","adminUserId","profileImageUploaded","pancardImagesUploaded","aadhaarCardImageUploaded","handleSaveAndContinue","successMessage","IndustryScaleModal","min","max","IndustryScale","industryScaleData","setIndustryScaleData","deleteIndustryScale","industryscale","getIndustryScaleData","IndustryModal","IndustryList","industryData","setIndustryData","deleteIndustry","industry","getIndustryData","AddConsultant","consultantId","ConsultantList","AddCoreParameterModal","CoreParameter","deleteCoreParameterData","corepara","getCoreParameterData","AddSubParameterModal","coreParametersData","setCoreParametersData","isIndustrySpecific","setIsIndustrySpecific","isParentParameter","setIsParentParameter","parentSubParameters","setParentSubMeters","getCoreParametersData","getIndustryOptions","getParentSubparameters","ToggleSwitch","SubParameter","subParametersData","setSubParametersData","deleteSubParaMeters","subp","getSubParaMeters","EngagementAddModal","EngagementType","engagementData","setEngagementData","deleteEngagementType","engagement","getEngagementData","AddTaskTypeModal","TaskTypeList","AddStatusModal","ROW_TYPE","DraggableRow","moveRow","hasWinD","hasLossD","keyName","drop","useDrop","dragIndex","hoverIndex","isDragging","drag","useDrag","monitor","DndDataTable","reorderApiUrl","isWinLossEnabled","hasWinLOSSdecided","statusIdkey","statusOrderkey","tableData","setTableData","movedRow","reorderedData","updateOrder","payload","isFirstRender","DndProvider","HTML5Backend","TaskStatus","taskstatusData","setTaskstatusData","deleteTaskstatus","getTaskstatusData","hasWinLOSS","markAsWin","markAsLoss","cancelDecision","ProjectStatusModal","ProjectStatus","projectStatusData","setProjectStatusData","deleteProjectStatus","getProjectStatusData","AddSubparaMeterStatus","SubParaStatus","AddMeetingType","MeetingTypeList","deleteMeetingType","meetingType","AddMeetingTypeStatus","formUrlEncoded","MeetingTypeStatus","deleteMeetingStatus","meetingStatus","getMeetingStatusData","KPIAddEditModal","KPIMasterList","kpiMasterData","setKPIMasterData","deleteKPI","kpi","getKPIData","HealthScore","AdminUserpermissionlist","filterdUser","AdminRoleModules","superAdminRoutes","DefaultHealthScoreList","AppRoutes","isAuthenticated","appLoading","isSuperAdmin","Router","SuperAdminRoutes","EmployeeRoutes","App","input","ToastContainer","createRoot"],"ignoreList":[],"sources":["../../src/utils/constant.js","../../src/utils/app.utils.js","../../src/context/AuthProvider.jsx","../../src/context/PermissionsProvider.jsx","../../src/routes/protectedRoute.jsx","../../src/components/common/Button/flatButton.jsx","../../src/components/common/Button/button.jsx","../../src/components/auth/AuthHeader/authHeader.jsx","../../src/pages/Login/useLogin.js","../../src/components/common/Input/OTPInput.jsx","../../src/components/common/ReactSelectField.jsx","../../src/pages/Login/CompanyModal.jsx","../../src/components/common/MobileNumberInputField.jsx","../../src/assets/logo.png","../../src/pages/Login/login.jsx","../../src/pages/Splash/splash.jsx","../../src/components/common/DrawerAccordion/drawerAccordion.jsx","../../src/components/common/VerticalNavBar/fullNavBar.jsx","../../src/components/common/VerticalNavBar/iconNavBar.jsx","../../src/components/common/VerticalNavBar/verticalNavBar.jsx","../../src/components/common/UserMenu/userMenu.jsx","../../src/assets/logo1.png","../../src/components/common/NavBar/navBar.jsx","../../src/routes/routes.const.js","../../src/routes/navigation.data.js","../../src/layouts/DashboardLayout/dashboardLayout.jsx","../../src/components/common/SectionHeader/sectionHeader.jsx","../../src/pages/Dashboard/dashboard.jsx","../../src/pages/ProjectDetails/useProjectDetails.js","../../src/components/common/Card/cardHeader.jsx","../../src/components/common/Card/card.jsx","../../src/components/projects/ProjectInfo/projectInfo.jsx","../../src/components/common/InputField.jsx","../../src/components/CompanyTask/AddCompanyTask.jsx","../../src/components/common/Access.jsx","../../src/components/projects/ProjectHeaderSection/projectHeaderSection.jsx","../../src/components/projects/TaskList/taskList.jsx","../../src/components/common/Loader.jsx","../../src/hooks/useWindowDimensions.jsx","../../src/pages/ProjectDetails/projectDetails.jsx","../../src/components/common/DataTable/dataTableFooter.jsx","../../src/components/common/Checkbox/checkbox.jsx","../../src/components/common/DataTable/columnSelector.jsx","../../src/components/common/DataTable/useDataTable.js","../../src/components/common/DataTable/dataTable.jsx","../../src/components/CompanyProject/AddCompanyProject.jsx","../../src/pages/ProjectList/projectList.jsx","../../src/components/Companydesignation/AddCompanyDesignation.jsx","../../src/pages/CompanyDesignation/CompanyDesignation.jsx","../../src/components/companyImportantDates/AddCompanyImportantDates.jsx","../../src/pages/companyImportantDates/CompanyImportantDates.jsx","../../src/components/CompanyEmployee/AddCompanyEmployee.jsx","../../src/pages/CompanyEmployee/CompanyEmployee.jsx","../../src/components/Meeting/AddMeeting.jsx","../../src/pages/Meeting/MeetingList.jsx","../../src/pages/CompanyTask/CompanyTaskList.jsx","../../src/pages/DataPoint/AddDataPoint.jsx","../../src/pages/DataPoint/DataPointList.jsx","../../src/pages/Profile/index.jsx","../../src/pages/Roles/RoleModules.jsx","../../src/components/common/Comment.jsx","../../src/pages/CompanyTask/CompanyTaskDetails.jsx","../../src/pages/Roles/Userpermissionlist.jsx","../../src/pages/NotFound.jsx","../../src/pages/DataPoint/DataPointTable.jsx","../../src/components/common/CheckboxGroupRating.jsx","../../src/pages/HealthScore/HealthScoreUpdate.jsx","../../src/pages/HealthScore/HealthScoreAchieve.jsx","../../src/routes/employeeRoutes.jsx","../../src/components/department/DepartmentAddModal.jsx","../../src/pages/DepartmentList/departmentList.jsx","../../src/pages/TaskStatusList/taskStatusList.jsx","../../src/components/common/Input/dateInput.jsx","../../src/components/common/Input/input.jsx","../../src/components/common/ProfileImage/profileImage.jsx","../../src/components/company/BasicInfoForm/basicInfoForm.jsx","../../src/pages/CompanyForm/companyForm.jsx","../../src/pages/CompanyList/companyList.jsx","../../src/components/location/AddCountryModal.jsx","../../src/pages/LocationList/CountriesList.jsx","../../src/components/location/AddStateModal.jsx","../../src/pages/LocationList/StateList.jsx","../../src/components/location/AddCityModal.jsx","../../src/pages/LocationList/CitiesList.jsx","../../src/components/admin/AdminTypeModal.jsx","../../src/pages/Admin/AdminTypeList.jsx","../../src/pages/Admin/AdminUserList.jsx","../../src/pages/Admin/AdminAdd.jsx","../../src/components/industry/IndustryScaleModal.jsx","../../src/pages/IndustryList/IndustryScale.jsx","../../src/components/industry/IndustryModal.jsx","../../src/pages/IndustryList/industryList.jsx","../../src/pages/Consultant/AddConsultant.jsx","../../src/pages/Consultant/ConsultantList.jsx","../../src/components/coreParameter/AddCoreParameterModal.jsx","../../src/pages/Parameter/CoreParameter.jsx","../../src/components/subParameter/AddSubParameterModal.jsx","../../src/pages/Parameter/SubParameter.jsx","../../src/components/engagement/EngagementAddModal.jsx","../../src/pages/Engagement/EngagementType.jsx","../../src/components/task/AddTaskTypeModal.jsx","../../src/pages/Task/TaskTypeList.jsx","../../src/components/task/AddStatusModal.jsx","../../src/components/common/DataTable/DndDataTable.jsx","../../src/pages/Task/TaskStatus.jsx","../../src/components/task/ProjectStatus.jsx","../../src/pages/Task/ProjectStatus.jsx","../../src/components/subParameter/AddSubparaMeterStatus.jsx","../../src/pages/Parameter/SubParaStatus.jsx","../../src/components/meetingType/AddMeetingType.jsx","../../src/pages/MeetingType/MeetingTypeList.jsx","../../src/components/meetingType/AddMeetingTypeStatus.jsx","../../src/pages/MeetingType/MeetingTypeStatus.jsx","../../src/pages/KPI/KPIAddEditModal.jsx","../../src/pages/KPI/KPIMasterList.jsx","../../src/pages/DefaultHealthScore/index.jsx","../../src/pages/Roles/AdminUserpermissionlist.jsx","../../src/pages/Roles/AdminRoleModules.jsx","../../src/routes/superAdminRoutes.jsx","../../src/routes/appRoutes.jsx","../../src/App.jsx","../../src/main.jsx"],"sourcesContent":["export const AUTH_TOKEN_KEY = 's-authToken';\r\n\r\nexport const STATUS_OPTIONS = [\r\n { value: 'ontrack', label: 'On Track' },\r\n { value: 'upcoming', label: 'Upcoming' },\r\n { value: 'delayed', label: 'Delayed' },\r\n { value: 'postponed', label: 'Postponed' },\r\n { value: 'cancelled', label: 'Cancelled' },\r\n { value: 'completed', label: 'Completed' },\r\n];\r\n\r\nexport const USER_DATA = [\r\n {\r\n value: 1,\r\n label: 'John Doe',\r\n },\r\n {\r\n value: 2,\r\n label: 'Jane Smith',\r\n },\r\n {\r\n value: 3,\r\n label: 'Mike Johnson',\r\n },\r\n {\r\n value: 4,\r\n label: 'Sarah Wilson',\r\n },\r\n {\r\n value: 5,\r\n label: 'Robert Brown',\r\n },\r\n];\r\n\r\nexport const LEAD_STATUS = [\r\n { value: '', label: 'Select Lead Status' },\r\n { value: 'closure_pending', label: 'Closure Pending' },\r\n { value: 'yet_to_meet', label: 'Yet to Meet' },\r\n { value: 'intro_meet_done', label: 'Intro Meet Done' },\r\n { value: 'follow_up_meet_done', label: 'Follow up Meet Done' },\r\n { value: 'discussion_ongoing', label: 'Discussion Ongoing' },\r\n { value: 'on_hold', label: 'On Hold' },\r\n];\r\n\r\nexport const LEAD_HOTNESS = [\r\n { value: '', label: 'Select Lead Hotness' },\r\n { value: 1, label: '1' },\r\n { value: 2, label: '2' },\r\n { value: 3, label: '3' },\r\n { value: 4, label: '4' },\r\n { value: 5, label: '5' },\r\n];\r\n","import size from 'lodash/size';\r\nimport { toast } from 'react-toastify';\r\n\r\nexport const baseUrl = import.meta.env.REACT_APP_APP_URL;\r\n\r\nexport function sleep(ms) {\r\n return new Promise((resolve) => setTimeout(resolve, ms));\r\n}\r\n\r\nexport function isSmallScreen() {\r\n return window?.innerWidth < 768 || false;\r\n}\r\n\r\nexport function capitalizeFirstLetter(str) {\r\n return str.charAt(0).toUpperCase() + str.slice(1);\r\n}\r\n\r\nexport function notifyMessage(message, type = 'error') {\r\n if (size(message) > 0) {\r\n if (type === 'error') {\r\n toast.error(message);\r\n } else if (type === 'warn') {\r\n toast.warn(message);\r\n } else {\r\n toast.success(message);\r\n }\r\n }\r\n}\r\n\r\nexport function convertToLocalDate(timestamp) {\r\n // Create a Date object from the timestamp\r\n let date = new Date(timestamp);\r\n // Format the date to the desired format (YYYY-MM-DDTHH:MM)\r\n let formattedDate = date.toISOString().slice(0, 16); // 2025-01-06T03:32\r\n return formattedDate;\r\n}\r\n\r\nexport function calculateDaysBetween(startDate, endDate) {\r\n // Convert start and end date to Date objects (if they are not already)\r\n const start = new Date(startDate);\r\n const end = new Date(endDate);\r\n // Get the time difference between the two dates in milliseconds\r\n const timeDifference = end - start;\r\n // Convert milliseconds to days (1 day = 24 hours = 86,400,000 milliseconds)\r\n const daysDifference = timeDifference / (1000 * 3600 * 24);\r\n // Return the absolute value of days difference to avoid negative values\r\n return Math.abs(daysDifference);\r\n}\r\n\r\nexport const hasPermission = (permissions, moduleKey, routePermission) => {\r\n // user?.role === 'CONSULTANT' ||\r\n\r\n // if (\r\n // user?.role === 'COMPANYADMIN' ||\r\n // (user?.role === 'SUPERADMIN' && user?.isSuperAdmin === 1)\r\n // ) {\r\n // return true;\r\n // }\r\n const moduleKeysArray = Array.isArray(moduleKey) ? moduleKey : [moduleKey]; // Convert string to array\r\n const hasValidPermission = moduleKeysArray.some((key) =>\r\n permissions.some((item) => {\r\n const moduleKeys = Array.isArray(item.moduleKey)\r\n ? item.moduleKey\r\n : [item.moduleKey]; // Convert string to array\r\n\r\n return (\r\n moduleKeys.includes(key) && item.permissions.includes(routePermission)\r\n );\r\n })\r\n );\r\n return hasValidPermission;\r\n};\r\n\r\nexport const getYearOptions = (startYear, count) => {\r\n const options = [];\r\n for (let i = 0; i < count; i++) {\r\n const year1 = startYear + i;\r\n const year2 = year1 + 1;\r\n options.push({\r\n value: `${year1}-${year2.toString().slice(-2)}`,\r\n label: `${year1}-${year2.toString().slice(-2)}`,\r\n });\r\n }\r\n return options;\r\n};\r\nexport const getCurrentFinancialYear = () => {\r\n const today = new Date();\r\n const year = today.getFullYear();\r\n const month = today.getMonth() + 1; // getMonth() returns 0-based index\r\n\r\n const fyStart = month >= 4 ? year : year - 1;\r\n const fyEnd = (fyStart + 1).toString().slice(2);\r\n\r\n return `${fyStart}-${fyEnd}`; // Example: \"2024-25\"\r\n};\r\n\r\nexport const convertLabel = (value) => {\r\n return value\r\n .split('_') // Split by underscore\r\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()) // Capitalize first letter and lowercase the rest\r\n .join(' '); // Join the words with a space\r\n};\r\n","import React, {\r\n useCallback,\r\n useContext,\r\n useEffect,\r\n useMemo,\r\n useState,\r\n} from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport secureLocalStorage from 'react-secure-storage';\r\n\r\nimport { AUTH_TOKEN_KEY } from '~/utils/constant';\r\nimport { notifyMessage } from '~/utils/app.utils';\r\n\r\nconst AuthContext = React.createContext({\r\n isAuthenticated: false,\r\n appLoading: true,\r\n setToken: () => {},\r\n clearToken: () => {},\r\n user: null,\r\n});\r\n\r\nexport default function AuthProvider({ children }) {\r\n const [authState, setAuthState] = useState({\r\n isAuthenticated: false,\r\n isLoading: true,\r\n user: null,\r\n });\r\n\r\n useEffect(() => {\r\n const initializeAuth = () => {\r\n try {\r\n const storedToken = secureLocalStorage.getItem(AUTH_TOKEN_KEY);\r\n const storedUser = secureLocalStorage.getItem('USER_DATA');\r\n\r\n if (storedToken) {\r\n setAuthState({\r\n isAuthenticated: true,\r\n isLoading: false,\r\n user: storedUser ? JSON.parse(storedUser) : null,\r\n });\r\n } else {\r\n setAuthState({\r\n isAuthenticated: false,\r\n isLoading: false,\r\n user: null,\r\n });\r\n }\r\n } catch {\r\n setAuthState({\r\n isAuthenticated: false,\r\n isLoading: false,\r\n user: null,\r\n });\r\n }\r\n };\r\n\r\n initializeAuth();\r\n }, []);\r\n\r\n const setToken = useCallback((token, user = null) => {\r\n try {\r\n secureLocalStorage.setItem(AUTH_TOKEN_KEY, token);\r\n if (user) {\r\n secureLocalStorage.setItem('USER_DATA', JSON.stringify(user));\r\n }\r\n setAuthState({\r\n isAuthenticated: true,\r\n isLoading: false,\r\n user,\r\n });\r\n } catch {\r\n notifyMessage('Something went wrong');\r\n }\r\n }, []);\r\n\r\n const clearToken = useCallback(() => {\r\n try {\r\n secureLocalStorage.removeItem(AUTH_TOKEN_KEY);\r\n secureLocalStorage.removeItem('USER_DATA'); // Clear user data as well\r\n setAuthState({\r\n isAuthenticated: false,\r\n isLoading: false,\r\n user: null,\r\n });\r\n } catch (error) {\r\n notifyMessage(\r\n error?.response?.data?.message || 'Something went wrong!',\r\n 'error'\r\n );\r\n }\r\n }, []);\r\n\r\n const memorizeValue = useMemo(() => {\r\n return {\r\n isAuthenticated: authState.isAuthenticated,\r\n appLoading: authState.isLoading,\r\n setToken,\r\n clearToken,\r\n user: authState.user,\r\n };\r\n }, [authState, setToken, clearToken]);\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n\r\n// eslint-disable-next-line react-refresh/only-export-components\r\nexport const useAuth = () => {\r\n const context = useContext(AuthContext);\r\n if (!context) {\r\n throw new Error('useAuth must be used within an AuthProvider');\r\n }\r\n return context;\r\n};\r\n\r\nAuthProvider.propTypes = {\r\n children: PropTypes.node.isRequired,\r\n};\r\n","import {\r\n createContext,\r\n useContext,\r\n useState,\r\n useEffect,\r\n useMemo,\r\n useRef,\r\n} from 'react';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport axios from 'axios';\r\nimport { baseUrl, notifyMessage } from '~/utils/app.utils';\r\n// Create context for permissions\r\nconst PermissionsContext = createContext();\r\n\r\n// eslint-disable-next-line react/prop-types\r\nexport const PermissionsProvider = ({ children }) => {\r\n const [permissions, setPermissions] = useState([]);\r\n const [loading, setLoading] = useState(true);\r\n const { user } = useAuth();\r\n\r\n // Store the previous permissions in a ref to avoid unnecessary API calls\r\n const previousPermissionsRef = useRef(null);\r\n\r\n useEffect(() => {\r\n const fetchPermissions = async () => {\r\n try {\r\n setLoading(true);\r\n const url =\r\n user?.role === 'SUPERADMIN'\r\n ? `${baseUrl}/adminUserPermission/0/${user?.adminUserId}`\r\n : `${baseUrl}/employeePermission/0/${user?.employeeId}`;\r\n // Make the API call only if the permissions are not cached or changed\r\n const response = await axios.get(url, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n });\r\n const permissionData = response.data.data;\r\n const groupedData = permissionData.reduce((acc, curr) => {\r\n const { moduleKey } = curr.module;\r\n const { permissionName } = curr.permission;\r\n\r\n if (!acc[moduleKey]) {\r\n acc[moduleKey] = {\r\n moduleKey,\r\n permissions: [],\r\n };\r\n }\r\n\r\n if (!acc[moduleKey].permissions.includes(permissionName)) {\r\n acc[moduleKey].permissions.push(permissionName);\r\n }\r\n\r\n return acc;\r\n }, {});\r\n\r\n const result = Object.values(groupedData);\r\n\r\n // Check if the permissions have changed, only set them if they're different\r\n if (\r\n JSON.stringify(previousPermissionsRef.current) !==\r\n JSON.stringify(result)\r\n ) {\r\n previousPermissionsRef.current = result; // Cache the new permissions\r\n setPermissions(result);\r\n }\r\n } catch {\r\n notifyMessage('Something went wrong');\r\n } finally {\r\n setLoading(false);\r\n }\r\n };\r\n\r\n if (user) {\r\n fetchPermissions();\r\n }\r\n }, [user, user?.token]); // Runs when userId or token changes\r\n\r\n const value = useMemo(() => {\r\n return { permissions, loading };\r\n }, [permissions, loading]); // only re-computes when permissions or loading change\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\n// eslint-disable-next-line react-refresh/only-export-components\r\nexport const usePermissionsContext = () => {\r\n return useContext(PermissionsContext);\r\n};\r\n","import { useAuth } from '~/context/AuthProvider';\r\nimport { hasPermission } from '~/utils/app.utils';\r\nimport { usePermissionsContext } from '~/context/PermissionsProvider';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst ProtectedRoute = ({ children, moduleKey, permission }) => {\r\n const { user } = useAuth();\r\n const { permissions } = usePermissionsContext();\r\n\r\n // For non-admin users, check for the required permission\r\n const hasRoutePermission = hasPermission(\r\n permissions,\r\n moduleKey,\r\n permission,\r\n user\r\n );\r\n\r\n if (!hasRoutePermission) {\r\n return null;\r\n }\r\n\r\n return children;\r\n};\r\n\r\n// Prop validation\r\nProtectedRoute.propTypes = {\r\n children: PropTypes.node,\r\n moduleKey: PropTypes.string,\r\n permission: PropTypes.string,\r\n};\r\n\r\nexport default ProtectedRoute;\r\n","import PropTypes from 'prop-types';\r\nimport { Button as FlowbiteButton } from 'flowbite-react';\r\n\r\n/**\r\n * Flat button with icon\r\n * Default button color will be gray and on hover it changes color to blue\r\n *\r\n * Parent\r\n * Login\r\n */\r\nconst FlatButton = ({\r\n children,\r\n icon,\r\n color = 'gray',\r\n size = 'md',\r\n className = '',\r\n ...props\r\n}) => {\r\n const IconComponent = icon ? (\r\n \r\n ) : null;\r\n\r\n return (\r\n \r\n {IconComponent}\r\n {children}\r\n \r\n );\r\n};\r\n\r\nFlatButton.propTypes = {\r\n children: PropTypes.node,\r\n icon: PropTypes.string,\r\n color: PropTypes.string,\r\n size: PropTypes.string,\r\n className: PropTypes.string,\r\n};\r\n\r\nexport default FlatButton;\r\n","import { Button as FlowbiteButton, Spinner } from 'flowbite-react';\r\nimport PropTypes from 'prop-types';\r\n\r\n// eslint-disable-next-line react-refresh/only-export-components\r\nexport const ButtonVariants = {\r\n PRIMARY: 'primary',\r\n SECONDARY: 'secondary',\r\n PRIMARY_GRAY: 'primary-gray',\r\n PRIMARY_YELLOW: 'primary-yellow',\r\n CUSTOM: 'custom',\r\n};\r\n/**\r\n * Its Dumb wrapper component of flowbite\r\n *\r\n * Loading is handled here so spinner component is added here\r\n *\r\n * Button Colors will be changed basd on ButtonVariants\r\n */\r\nconst Button = ({\r\n children,\r\n icon,\r\n loading = false,\r\n disabled = false,\r\n className = '',\r\n type = 'button',\r\n variant = ButtonVariants.PRIMARY,\r\n ...props\r\n}) => {\r\n const IconComponent = icon ? (\r\n \r\n ) : null;\r\n\r\n let customClasses = `${className}`;\r\n if (loading || disabled) {\r\n customClasses = `${className} bg-gray-300`;\r\n }\r\n\r\n let colorClasses = '';\r\n if (variant === ButtonVariants.PRIMARY) {\r\n colorClasses = `bg-primary focus:bg-primary enabled:hover:bg-primary-dark text-white`;\r\n } else if (variant === ButtonVariants.SECONDARY) {\r\n colorClasses = `bg-theme-red focus:bg-theme-red-dark enabled:hover:bg-theme-red-dark text-white`;\r\n } else if (variant === ButtonVariants.PRIMARY_GRAY) {\r\n colorClasses = `bg-theme-gray focus:bg-theme-gray-dark enabled:hover:bg-theme-gray-dark text-white`;\r\n } else if (variant === ButtonVariants.PRIMARY_YELLOW) {\r\n colorClasses = `bg-theme-yellow focus:bg-theme-yellow-dark enabled:hover:bg-theme-yellow-dark text-white`;\r\n }\r\n\r\n const classes = `${colorClasses} ${customClasses} ${className}`;\r\n return (\r\n \r\n {loading && (\r\n
\r\n \r\n
\r\n )}\r\n \r\n {IconComponent}\r\n {children}\r\n \r\n \r\n );\r\n};\r\n\r\nButton.propTypes = {\r\n children: PropTypes.node,\r\n icon: PropTypes.string,\r\n loading: PropTypes.bool, // Add this line\r\n disabled: PropTypes.bool,\r\n className: PropTypes.string,\r\n variant: PropTypes.oneOf(Object.values(ButtonVariants)),\r\n type: PropTypes.string,\r\n};\r\n\r\nexport default Button;\r\n","/**\r\n * Its dumb component it will have text and image\r\n *\r\n * Parent\r\n * Login\r\n */\r\nexport default function AuthHeader() {\r\n return (\r\n
\r\n
\r\n
\r\n
Welcome Back !
\r\n

Sign in to continue to .

\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n}\r\n","import axios from 'axios';\r\nimport { useState } from 'react';\r\nimport { useForm } from 'react-hook-form';\r\nimport { toast } from 'react-toastify';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport { baseUrl } from '~/utils/app.utils';\r\n\r\nconst useLogin = () => {\r\n const { setToken } = useAuth();\r\n const [loading, setLoading] = useState(false);\r\n const [statusSentOtp, setStatusSentOtp] = useState(false);\r\n const [number, setNumber] = useState(null);\r\n const [companies, setCompanies] = useState([]); // Store multiple companies\r\n const [isCompanyModalOpen, setCompanyModalOpen] = useState(false); // Modal state\r\n const [loginDetails, setLoginDetails] = useState(false); // Modal state\r\n const [countryCode, setCountryCode] = useState('+91');\r\n const {\r\n register,\r\n handleSubmit,\r\n setValue,\r\n trigger,\r\n formState: { errors },\r\n setError: setFormError, // To set field-specific errors\r\n reset, // To reset form fields\r\n control,\r\n } = useForm();\r\n\r\n const sendOtpApi = async (mobileNumber, userType) => {\r\n setNumber(mobileNumber); // Save the number to state for later use\r\n setLoading(true);\r\n try {\r\n const response = await axios.post(`${baseUrl}/auth/login`, {\r\n mobile: `${mobileNumber}`,\r\n userType: userType,\r\n });\r\n // Check if the response indicates success\r\n if (response.data?.status) {\r\n setStatusSentOtp(true); // Update OTP status\r\n setNumber(mobileNumber); // Save mobile number to state\r\n toast.success(response.data.message || 'OTP sent successfully!');\r\n } else {\r\n throw new Error(response.data?.message || 'Failed to send OTP'); // Throw error for invalid status\r\n }\r\n setLoading(false);\r\n } catch (err) {\r\n setLoading(false);\r\n toast.error(\r\n err.response?.data?.message || err.message || 'Failed to send OTP'\r\n );\r\n }\r\n };\r\n\r\n const verifyOtpApi = async (data) => {\r\n setLoading(true);\r\n try {\r\n // API call to verify the OTP\r\n const response = await axios.post(`${baseUrl}/verify-otp`, {\r\n mobile: `${number}`, // Use the stored mobile number\r\n otp: data.otp, // OTP entered by the user\r\n userType: data?.userType?.value ? data.userType.value : '',\r\n });\r\n if (response.data?.status) {\r\n const companiesList = response.data?.companies || []; // Assuming \"companies\" key in response\r\n if (companiesList?.length > 1) {\r\n setCompanies(companiesList);\r\n setCompanyModalOpen(true); // Open modal to select a company\r\n } else {\r\n setToken(response.data.user.token, response.data.user); // Save the token to context/storage\r\n toast.success(response.data?.message || 'OTP verified successfully!');\r\n setLoginDetails(null);\r\n }\r\n } else {\r\n throw new Error(response.data?.message || 'Invalid OTP');\r\n }\r\n setLoading(false);\r\n } catch (err) {\r\n setLoading(false);\r\n toast.error(\r\n err.response?.data?.message || err.message || 'Failed to verify OTP'\r\n ); // Show the error message\r\n }\r\n };\r\n\r\n const handleLogin = async (company) => {\r\n setLoading(true); // Show loading spinner\r\n try {\r\n const response = await axios.post(`${baseUrl}/auth/select-company`, {\r\n companyId: company.companyId,\r\n consultantId: company.consultantId,\r\n mobile: loginDetails?.mobile || company?.loginDetails?.mobile,\r\n userType:\r\n loginDetails?.userType?.value ||\r\n company?.loginDetails?.userType?.value,\r\n });\r\n if (response.data?.status) {\r\n // Complete the login process\r\n setToken(response.data.user.token, response.data.user); // Save token and user data\r\n toast.success('Login successful!');\r\n reset(); // Reset the form\r\n setCompanyModalOpen(false); // Close the modal\r\n setLoginDetails(null);\r\n\r\n if (company?.isReload) {\r\n setTimeout(() => {\r\n // eslint-disable-next-line no-self-assign\r\n window.location.href = window.location.href; // Hard refresh\r\n }, 500); // Slight delay to ensure state updates\r\n }\r\n } else {\r\n throw new Error(response.data?.message || 'Failed to select company');\r\n }\r\n } catch (err) {\r\n // Handle errors during company selection\r\n toast.error(\r\n err.response?.data?.message || err.message || 'Failed to select company'\r\n );\r\n } finally {\r\n setLoading(false); // Stop loading spinner\r\n }\r\n };\r\n\r\n const onSubmit = async (data) => {\r\n setLoginDetails({ ...data, mobile: countryCode + data.mobile });\r\n let mobileNum = countryCode + data.mobile;\r\n if (!statusSentOtp) {\r\n // Sending OTP\r\n if (!mobileNum) {\r\n setFormError('mobile', {\r\n type: 'required',\r\n message: 'Mobile number is required',\r\n });\r\n return;\r\n }\r\n await sendOtpApi(mobileNum, data?.userType?.value);\r\n } else {\r\n // Verifying OTP\r\n if ((!data.otp || data.otp.length < 4) && statusSentOtp) {\r\n setFormError('otp', {\r\n type: 'required',\r\n message: 'OTP is required',\r\n });\r\n return;\r\n }\r\n const isOtpVerified = await verifyOtpApi(data);\r\n if (isOtpVerified) reset(); // Reset the form on success\r\n }\r\n };\r\n\r\n const handleFormSubmit = handleSubmit(onSubmit);\r\n\r\n return {\r\n register,\r\n handleFormSubmit,\r\n errors,\r\n loading,\r\n statusSentOtp,\r\n trigger,\r\n setValue,\r\n control,\r\n companies, // List of companies for modal\r\n isCompanyModalOpen, // Modal visibility\r\n handleLogin, // Function to handle company selection\r\n countryCode,\r\n setCountryCode,\r\n setCompanyModalOpen,\r\n reset,\r\n };\r\n};\r\n\r\nexport default useLogin;\r\n","import PropTypes from 'prop-types';\r\nimport { useState, useEffect, useRef, useCallback } from 'react';\r\n\r\nconst OTPInput = ({\r\n length = 4,\r\n name,\r\n register,\r\n setValue,\r\n trigger,\r\n validation,\r\n onComplete,\r\n}) => {\r\n const [otp, setOtp] = useState(Array(length).fill('')); // Initialize OTP array with empty values\r\n const inputsRef = useRef([]); // Store references to input elements\r\n\r\n useEffect(() => {\r\n const fullOtp = otp.join('');\r\n setValue(name, fullOtp); // Set value in React Hook Form\r\n const debounce = setTimeout(() => trigger(name), 300); // Debounced validation trigger\r\n return () => clearTimeout(debounce); // Cleanup on component unmount\r\n }, [otp, name, setValue, trigger]);\r\n\r\n const handleChange = useCallback(\r\n (value, index) => {\r\n if (isNaN(value) || value.length > 1) return; // Ensure only numbers are entered\r\n\r\n setOtp((prevOtp) => {\r\n const newOtp = [...prevOtp];\r\n newOtp[index] = value;\r\n return newOtp;\r\n });\r\n\r\n // Automatically focus on the next input\r\n if (value !== '' && index < length - 1) {\r\n inputsRef.current[index + 1]?.focus();\r\n }\r\n },\r\n [length]\r\n );\r\n\r\n const handleKeyDown = useCallback(\r\n (e, index) => {\r\n if (e.key === 'Backspace') {\r\n setOtp((prevOtp) => {\r\n const newOtp = [...prevOtp];\r\n if (newOtp[index] === '' && index > 0) {\r\n inputsRef.current[index - 1]?.focus(); // Focus previous input if empty\r\n }\r\n newOtp[index] = ''; // Clear the current input on backspace\r\n return newOtp;\r\n });\r\n } else if (e.key === 'Enter') {\r\n const fullOtp = otp.join('');\r\n if (fullOtp.length === length) {\r\n onComplete?.(fullOtp); // Trigger the onComplete callback if all digits are filled\r\n }\r\n }\r\n },\r\n [otp, length, onComplete]\r\n );\r\n\r\n return (\r\n
\r\n {otp.map((digit, index) => (\r\n (inputsRef.current[index] = el)} // Store ref to each input\r\n type=\"text\"\r\n maxLength={1}\r\n value={digit}\r\n onChange={(e) => handleChange(e.target.value, index)}\r\n onKeyDown={(e) => handleKeyDown(e, index)}\r\n className=\"w-full text-center border border-gray-300 rounded-md focus:ring-2 focus:ring-blue-500\"\r\n />\r\n ))}\r\n {/* Hidden input to register the full OTP */}\r\n \r\n
\r\n );\r\n};\r\nOTPInput.propTypes = {\r\n length: PropTypes.number,\r\n name: PropTypes.string,\r\n register: PropTypes.func,\r\n setValue: PropTypes.func,\r\n trigger: PropTypes.func,\r\n validation: PropTypes.object,\r\n onComplete: PropTypes.func,\r\n};\r\nexport default OTPInput;\r\n","import PropTypes from 'prop-types';\r\nimport { Controller } from 'react-hook-form';\r\nimport Select from 'react-select';\r\n\r\nconst customReactStyles = {\r\n control: (provided) => ({\r\n ...provided,\r\n height: 'auto', // Set the height of the select control\r\n minHeight: 40, // Ensure the minimum height is also 24px\r\n }),\r\n dropdownIndicator: (provided) => ({\r\n ...provided,\r\n width: 30,\r\n marginLeft: 8,\r\n padding: 0, // Remove extra padding if necessary\r\n }),\r\n clearIndicator: (provided) => ({\r\n ...provided,\r\n padding: 0, // Adjust padding for clear indicator if needed\r\n }),\r\n multiValue: (provided) => ({\r\n ...provided,\r\n height: 'auto', // If using multi-select, set height of selected items\r\n }),\r\n menu: (provided) => ({\r\n ...provided,\r\n fontSize: '14px', // Optional: adjust font size to match the height\r\n }),\r\n};\r\nconst ReactSelectField = ({\r\n name,\r\n control,\r\n label,\r\n options,\r\n errors = {},\r\n validation = {},\r\n placeholder = 'Select an option',\r\n isMulti = true,\r\n disabled = false,\r\n required,\r\n customStyles = {}, // Allow overriding default styles\r\n defaultValue = isMulti ? [] : null,\r\n onChange,\r\n}) => {\r\n const defaultStyles = {\r\n menuPortal: (provided) => ({ ...provided, zIndex: 9999 }),\r\n menuList: (provided) => ({\r\n ...provided,\r\n maxHeight: '120px',\r\n overflowY: 'auto',\r\n }),\r\n };\r\n\r\n // eslint-disable-next-line no-unused-vars\r\n const combinedStyles = {\r\n ...defaultStyles,\r\n ...customStyles,\r\n };\r\n\r\n const getValidationRules = () => {\r\n if (required) {\r\n if (isMulti) {\r\n return {\r\n required: `${label} is required`,\r\n validate: (value) =>\r\n (Array.isArray(value) && value.length > 0) ||\r\n `${label} is required`,\r\n };\r\n } else {\r\n return {\r\n required: `${label} is required`,\r\n validate: (value) =>\r\n (value !== null && value !== undefined) || `${label} is required`,\r\n };\r\n }\r\n }\r\n return {}; // No validation if `required` is false\r\n };\r\n\r\n return (\r\n
\r\n

\r\n {label}\r\n {required && *}\r\n

\r\n (\r\n {\r\n defaultOnChange(selectedOption); // Update form state\r\n if (onChange) {\r\n onChange(selectedOption); // Call custom handler if provided\r\n }\r\n }}\r\n styles={{\r\n ...customReactStyles,\r\n menuPortal: (base) => ({\r\n ...base,\r\n zIndex: 9999, // Ensure the dropdown is above other elements\r\n }),\r\n }}\r\n />\r\n )}\r\n />\r\n {errors[name] && (\r\n

{errors[name]?.message}

\r\n )}\r\n
\r\n );\r\n};\r\n\r\nReactSelectField.propTypes = {\r\n name: PropTypes.string.isRequired,\r\n control: PropTypes.object.isRequired,\r\n options: PropTypes.array.isRequired,\r\n errors: PropTypes.object,\r\n validation: PropTypes.object,\r\n placeholder: PropTypes.string,\r\n label: PropTypes.string,\r\n isMulti: PropTypes.bool,\r\n disabled: PropTypes.bool,\r\n required: PropTypes.bool,\r\n customStyles: PropTypes.object,\r\n defaultValue: PropTypes.oneOfType([PropTypes.array, PropTypes.object]),\r\n onChange: PropTypes.func, // Optional prop\r\n};\r\n\r\nexport default ReactSelectField;\r\n","import PropTypes from 'prop-types';\r\n\r\nconst CompanyModal = ({ companies, isOpen, onSelect, onClose }) => {\r\n if (!isOpen) return null;\r\n\r\n return (\r\n
\r\n
\r\n
\r\n

Select a Company

\r\n \r\n \r\n \r\n
\r\n \r\n {companies.map((company) => (\r\n onSelect(company)}\r\n >\r\n {company.companyName}\r\n \r\n ))}\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\n// PropTypes Validation\r\nCompanyModal.propTypes = {\r\n companies: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n companyId: PropTypes.string,\r\n companyName: PropTypes.string,\r\n })\r\n ),\r\n isOpen: PropTypes.bool,\r\n onSelect: PropTypes.func,\r\n onClose: PropTypes.func,\r\n};\r\n\r\nexport default CompanyModal;\r\n","import React, { useMemo } from 'react';\r\nimport { TextInput, Select } from 'flowbite-react';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst MobileNumberInputField = React.forwardRef(\r\n (\r\n {\r\n id,\r\n label,\r\n type = 'text',\r\n required = false,\r\n name,\r\n register = null,\r\n errors = null,\r\n placeholder,\r\n className = '',\r\n disabled = false,\r\n options = [],\r\n selectedCodeValue = '+91',\r\n onCountryCodeChange,\r\n ...rest\r\n },\r\n ref\r\n ) => {\r\n // Validation rules for mobile number\r\n const validationRules = useMemo(\r\n () => ({\r\n required: 'Mobile number is required',\r\n minLength: {\r\n value: 10,\r\n message: 'Mobile number must be 10 digits',\r\n },\r\n maxLength: {\r\n value: 10,\r\n message: 'Mobile number must be 10 digits',\r\n },\r\n pattern: {\r\n value: /^[0-9]{10}$/,\r\n message: 'Mobile number must contain only digits',\r\n },\r\n }),\r\n []\r\n );\r\n return (\r\n
\r\n \r\n
\r\n {options.length > 0 && (\r\n \r\n onCountryCodeChange && onCountryCodeChange(e.target.value)\r\n } // Update parent state\r\n >\r\n {options.map((option, index) => (\r\n \r\n ))}\r\n \r\n )}\r\n \r\n
\r\n {errors?.[id] && (\r\n

{errors[id]?.message}

\r\n )}\r\n
\r\n );\r\n }\r\n);\r\n\r\n// Add displayName for better debugging and React DevTools visibility\r\nMobileNumberInputField.displayName = 'MobileNumberInputField';\r\n\r\nMobileNumberInputField.propTypes = {\r\n id: PropTypes.string,\r\n label: PropTypes.string,\r\n type: PropTypes.string,\r\n required: PropTypes.bool,\r\n name: PropTypes.string,\r\n register: PropTypes.func,\r\n errors: PropTypes.object,\r\n placeholder: PropTypes.string,\r\n className: PropTypes.string,\r\n disabled: PropTypes.bool,\r\n options: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n value: PropTypes.string,\r\n label: PropTypes.string,\r\n })\r\n ),\r\n selectedCodeValue: PropTypes.string,\r\n onCountryCodeChange: PropTypes.func,\r\n};\r\n\r\nexport default MobileNumberInputField;\r\n","export default \"__VITE_ASSET__DacSPZ0B__\"","import React, { useCallback, useMemo } from 'react';\r\nimport { Avatar } from 'flowbite-react';\r\nimport Button from '~/components/common/Button';\r\nimport AuthHeader from '~/components/auth/AuthHeader/authHeader';\r\nimport useLogin from './useLogin';\r\nimport OTPInput from '~/components/common/Input/OTPInput';\r\nimport ReactSelectField from '~/components/common/ReactSelectField';\r\nimport CompanyModal from './CompanyModal';\r\nimport MobileNumberInputField from '~/components/common/MobileNumberInputField';\r\nimport logoImg from '../../assets/logo.png';\r\n\r\nconst Login = () => {\r\n const {\r\n register,\r\n handleFormSubmit,\r\n statusSentOtp,\r\n errors,\r\n loading,\r\n trigger,\r\n setValue,\r\n control,\r\n companies,\r\n isCompanyModalOpen,\r\n handleLogin,\r\n countryCode,\r\n setCountryCode,\r\n setCompanyModalOpen,\r\n } = useLogin();\r\n\r\n // Callback for button click to prevent re-creation\r\n const onSubmit = useCallback(\r\n (e) => {\r\n e.preventDefault();\r\n handleFormSubmit();\r\n },\r\n [handleFormSubmit]\r\n );\r\n\r\n const loginOptions = useMemo(\r\n () => [\r\n { label: 'Consultant', value: 'CONSULTANT' },\r\n { label: 'Company', value: 'COMPANYADMIN' },\r\n { label: 'Employee', value: 'EMPLOYEE' },\r\n { label: 'Admin', value: 'SUPERADMIN' },\r\n ],\r\n []\r\n );\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n {/* Login Type Dropdown */}\r\n \r\n
\r\n\r\n {/* Mobile Number Input */}\r\n \r\n\r\n {/* OTP Input */}\r\n {statusSentOtp && (\r\n \r\n )}\r\n {errors.otp && (\r\n

{errors.otp.message}

\r\n )}\r\n\r\n {/* Submit Button */}\r\n \r\n {statusSentOtp ? 'Verify OTP' : 'Send OTP'}\r\n \r\n
\r\n
\r\n\r\n {\r\n setCompanyModalOpen(false);\r\n setTimeout(() => {\r\n window.location.reload(); // Reload after modal close\r\n }, 300); // Add slight delay if needed\r\n }}\r\n />\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default React.memo(Login);\r\n","export default function Splash() {\r\n return null;\r\n}\r\n","import PropTypes from 'prop-types';\r\nimport size from 'lodash/size';\r\nimport { Link, useNavigate } from 'react-router-dom';\r\nimport { useMemo } from 'react';\r\nimport { hasPermission } from '~/utils/app.utils'; // Import the utility function\r\n\r\n/**\r\n * Its dumb component and content visibitiy will be handled by parent\r\n *\r\n * postOnclick only user for drawer as after clicking on item it will close\r\n *\r\n * Parent\r\n * FullNavBar\r\n */\r\nconst DrawerAccordion = ({\r\n item,\r\n isOpen,\r\n changeActiveIndex,\r\n postOnClick = () => {},\r\n permissions,\r\n user,\r\n}) => {\r\n const navigate = useNavigate();\r\n const hasChildren = size(item?.items) > 0;\r\n\r\n const onClick = useMemo(() => {\r\n let onClick = null;\r\n if (hasChildren) {\r\n onClick = changeActiveIndex;\r\n } else if (size(item?.link) > 0) {\r\n onClick = () => navigate(item?.link);\r\n }\r\n return onClick;\r\n }, [changeActiveIndex, hasChildren, item?.link, navigate]);\r\n\r\n return (\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n {item?.label}\r\n \r\n
\r\n {hasChildren && (\r\n \r\n \r\n \r\n )}\r\n \r\n {isOpen && hasChildren && (\r\n
\r\n
    \r\n {item?.items?.map((child, index) => {\r\n const hasRoutePermission = hasPermission(\r\n permissions,\r\n child.moduleKey,\r\n child.permission,\r\n user\r\n );\r\n\r\n if (!hasRoutePermission) {\r\n return null;\r\n }\r\n return (\r\n {\r\n e?.preventDefault();\r\n navigate(child?.link);\r\n postOnClick();\r\n }}\r\n >\r\n {child?.label}\r\n \r\n );\r\n })}\r\n
\r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nDrawerAccordion.propTypes = {\r\n permissions: PropTypes.array,\r\n user: PropTypes.object,\r\n item: PropTypes.shape({\r\n icon: PropTypes.string,\r\n label: PropTypes.string,\r\n link: PropTypes.string,\r\n items: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n label: PropTypes.string,\r\n })\r\n ),\r\n }),\r\n isOpen: PropTypes.bool,\r\n changeActiveIndex: PropTypes.func,\r\n postOnClick: PropTypes.func || null,\r\n};\r\n\r\nexport default DrawerAccordion;\r\n","import { useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport DrawerAccordion from '../DrawerAccordion';\r\nimport { hasPermission } from '~/utils/app.utils'; // Import the utility function\r\nimport { usePermissionsContext } from '~/context/PermissionsProvider';\r\nimport { useAuth } from '~/context/AuthProvider';\r\n\r\n/**\r\n * It will render full menu with icons nd text\r\n * Submenu will be added as accordion\r\n *\r\n * Parent\r\n * VerticalNavBar\r\n */\r\nconst FullNavBar = ({ data }) => {\r\n const [activeIndex, setActiveIndex] = useState(-1);\r\n const { permissions } = usePermissionsContext();\r\n const { user } = useAuth();\r\n\r\n const handleAccordionToggle = (index) => {\r\n setActiveIndex((prevIndex) => (prevIndex === index ? -1 : index));\r\n };\r\n return (\r\n <>\r\n {/* below div is for padding only so that space will be allocated */}\r\n
\r\n \r\n {data?.map((item, index) => {\r\n const hasRoutePermission = hasPermission(\r\n permissions,\r\n item.moduleKey,\r\n item.permission,\r\n user\r\n );\r\n\r\n if (!hasRoutePermission) {\r\n return null;\r\n }\r\n return (\r\n handleAccordionToggle(index)}\r\n key={index}\r\n permissions={permissions}\r\n user={user}\r\n />\r\n );\r\n })}\r\n \r\n
\r\n \r\n );\r\n};\r\n\r\nFullNavBar.propTypes = {\r\n data: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n icon: PropTypes.string,\r\n label: PropTypes.string,\r\n items: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n label: PropTypes.string,\r\n href: PropTypes.string,\r\n })\r\n ),\r\n })\r\n ),\r\n};\r\n\r\nexport default FullNavBar;\r\n","import React, { useState, useRef, useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { hasPermission } from '~/utils/app.utils'; // Import the utility function\r\nimport { usePermissionsContext } from '~/context/PermissionsProvider';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport size from 'lodash/size';\r\nimport { useNavigate } from 'react-router-dom';\r\n\r\nconst MenuItem = ({ icon, label, items }) => {\r\n const navigate = useNavigate();\r\n const [isHovered, setIsHovered] = useState(false);\r\n const menuRef = useRef(null);\r\n const hasChildren = size(items) > 0;\r\n useEffect(() => {\r\n const handleMouseLeave = (e) => {\r\n if (!menuRef.current.contains(e.relatedTarget)) {\r\n setIsHovered(false);\r\n }\r\n };\r\n\r\n const currentRef = menuRef.current;\r\n if (currentRef) {\r\n currentRef.addEventListener('mouseleave', handleMouseLeave);\r\n }\r\n\r\n return () => {\r\n if (currentRef) {\r\n currentRef.removeEventListener('mouseleave', handleMouseLeave);\r\n }\r\n };\r\n }, []);\r\n\r\n return (\r\n setIsHovered(true)}\r\n >\r\n \r\n \r\n \r\n {isHovered && (\r\n
\r\n
\r\n {label}\r\n
\r\n {hasChildren && (\r\n
\r\n {items.map((item, index) => (\r\n {\r\n e?.preventDefault();\r\n navigate(item?.link);\r\n setIsHovered(false);\r\n }}\r\n >\r\n {item.label}\r\n
\r\n ))}\r\n
\r\n )}\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nconst IconHoverVerticalNav = ({ data }) => {\r\n const { permissions } = usePermissionsContext();\r\n const { user } = useAuth();\r\n return (\r\n \r\n
\r\n {data.map((item, index) => {\r\n const hasRoutePermission = hasPermission(\r\n permissions,\r\n item.moduleKey,\r\n item.permission,\r\n user\r\n );\r\n if (!hasRoutePermission) {\r\n return null;\r\n }\r\n return (\r\n \r\n );\r\n })}\r\n
\r\n \r\n );\r\n};\r\n\r\nMenuItem.propTypes = {\r\n icon: PropTypes.string,\r\n label: PropTypes.string,\r\n items: PropTypes.array,\r\n};\r\n\r\nIconHoverVerticalNav.propTypes = {\r\n data: PropTypes.array,\r\n};\r\n\r\nexport default React.memo(IconHoverVerticalNav);\r\n","import PropTypes from 'prop-types';\r\nimport { useMemo } from 'react';\r\n\r\nimport loadable from '@loadable/component';\r\n\r\nimport FullNavBar from './fullNavBar';\r\nimport IconNavBar from './iconNavBar';\r\nimport { isSmallScreen } from '~/utils/app.utils';\r\n\r\nconst Drawer = loadable(() => import('~/components/common/Drawer'));\r\n\r\n/**\r\n * Its wrapper compennt if Navbar is expanded the it will show full vertical\r\n * navbar but if its shrinked then it will show Navbar with icon\r\n *\r\n * Based on props component will be displayed\r\n *\r\n * Here is its mobile view then it will render drawer instead of navigation bar\r\n *\r\n * Parent\r\n * DashboardLayout\r\n */\r\nexport default function VerticalNavBar({ isExpanded, handleOnClose, data }) {\r\n \r\n const renderDesktopView = useMemo(() => {\r\n if (isExpanded) {\r\n return ;\r\n } else {\r\n return ;\r\n }\r\n }, [data, isExpanded]);\r\n\r\n const renderMobileView = useMemo(() => {\r\n return ;\r\n }, [isExpanded, handleOnClose, data]);\r\n\r\n if (!window) {\r\n <>\r\n
{renderDesktopView}
\r\n
\r\n {renderMobileView}\r\n
\r\n ;\r\n }\r\n if (isSmallScreen()) {\r\n return renderMobileView;\r\n } else {\r\n return
{renderDesktopView}
;\r\n }\r\n}\r\n\r\nVerticalNavBar.propTypes = {\r\n isExpanded: PropTypes.bool.isRequired,\r\n handleOnClose: PropTypes.func.isRequired,\r\n data: PropTypes.array.isRequired,\r\n};\r\n","import React, { useRef, useState, useEffect, useCallback } from 'react';\r\nimport { Avatar } from 'flowbite-react';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport { Link, useNavigate } from 'react-router-dom';\r\nimport useLogin from '../../../pages/Login/useLogin';\r\nimport CompanyModal from '../../../pages/Login/CompanyModal';\r\nimport axios from 'axios';\r\nimport { baseUrl, notifyMessage } from '~/utils/app.utils';\r\nimport PropTypes from 'prop-types';\r\n\r\n/**\r\n * Render white popup with closePopup function\r\n *\r\n * Parent\r\n * UserMenu\r\n */\r\nfunction MenuPopup({\r\n closePopup,\r\n onLogoutPress,\r\n onSwitchCompany,\r\n companyCount,\r\n}) {\r\n const navigate = useNavigate();\r\n return (\r\n
\r\n
    \r\n {\r\n e?.preventDefault();\r\n closePopup();\r\n navigate(`/administrator-panel/Profile`);\r\n }}\r\n className=\"flex items-center px-4 py-2 text-sm text-gray-700 hover:bg-gray-100\"\r\n >\r\n \r\n Profile\r\n \r\n {/*
  • \r\n \r\n Change Password\r\n
  • */}\r\n {companyCount > 0 && (\r\n <>\r\n {\r\n closePopup();\r\n onSwitchCompany();\r\n }} // Call the function\r\n >\r\n \r\n Switch company\r\n \r\n
    \r\n \r\n )}\r\n {\r\n e?.preventDefault();\r\n closePopup();\r\n onLogoutPress();\r\n }}\r\n >\r\n \r\n Logout\r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\n/**\r\n * Its dumb component it will have text and image\r\n * User name will be taken from the redux\r\n *\r\n * Listener will be registered when popup is displayed\r\n *\r\n * Parent\r\n * DashboardLayout\r\n */\r\nconst UserMenu = () => {\r\n const { clearToken, user } = useAuth();\r\n const { isCompanyModalOpen, handleLogin, setCompanyModalOpen } = useLogin();\r\n const [isOpen, setIsOpen] = useState(false);\r\n const [companies, setCompanies] = useState([]);\r\n const dropdownRef = useRef(null);\r\n\r\n const toggleDropdown = () => setIsOpen(!isOpen);\r\n const mobile =\r\n user?.role === 'CONSULTANT' ? user?.consultantMobile : user?.employeeMobile;\r\n\r\n useEffect(() => {\r\n const handleClickOutside = (event) => {\r\n if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {\r\n setIsOpen(false);\r\n }\r\n };\r\n // register listener is its required when popup is displayed\r\n if (isOpen) {\r\n document.addEventListener('mousedown', handleClickOutside);\r\n }\r\n return () => {\r\n document.removeEventListener('mousedown', handleClickOutside);\r\n };\r\n }, [isOpen]);\r\n\r\n const fetchCompanies = useCallback(async () => {\r\n if (user?.role === 'SUPERADMIN' || companies.length > 0) return; // Avoid unnecessary calls\r\n try {\r\n const response = await axios.post(\r\n `${baseUrl}/auth/get-companies`,\r\n {\r\n userType: user?.role,\r\n mobile: mobile,\r\n currentCompanyId: user?.companyId,\r\n },\r\n { headers: { 'Content-Type': 'application/json' } }\r\n );\r\n const companyList = response.data?.companies.map(({ company }) => ({\r\n companyId: company.companyId,\r\n companyName: company.companyName,\r\n }));\r\n setCompanies(companyList);\r\n } catch (error) {\r\n notifyMessage(\r\n 'Error fetching companies:',\r\n error.response?.data || error.message,\r\n 'error'\r\n );\r\n }\r\n }, [user?.role, user?.companyId, companies.length, mobile]);\r\n\r\n const onSwitchCompany = useCallback(() => {\r\n fetchCompanies(); // Call API only when switching companies\r\n setCompanyModalOpen(true);\r\n }, [fetchCompanies, setCompanyModalOpen]);\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n {user?.adminUserName || user.employeeName || user.consultantName}\r\n {user?.companyName}\r\n \r\n \r\n
\r\n {isOpen && (\r\n setIsOpen(false)}\r\n onLogoutPress={() => clearToken()}\r\n onSwitchCompany={onSwitchCompany} // Pass function to open modal\r\n companyCount={user?.companyCount > 0 ? true : false}\r\n />\r\n )}\r\n\r\n {companies?.length > 0 && (\r\n {\r\n const companyObject = {\r\n companyId: compData.companyId,\r\n consultantId: user.consultantId,\r\n isReload: true,\r\n loginDetails: {\r\n mobile: mobile,\r\n userType: {\r\n value: user?.role,\r\n },\r\n },\r\n };\r\n handleLogin(companyObject);\r\n }}\r\n onClose={() => setCompanyModalOpen(false)}\r\n />\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default React.memo(UserMenu);\r\n\r\nMenuPopup.propTypes = {\r\n closePopup: PropTypes.func,\r\n onLogoutPress: PropTypes.func,\r\n onSwitchCompany: PropTypes.func,\r\n companyCount: PropTypes.bool,\r\n};\r\n","export default \"__VITE_ASSET__CRf$0VCL__\"","import UserMenu from '../UserMenu';\r\nimport logoImg from '../../../assets/logo1.png';\r\nimport logoImgIcon from '../../../assets/logo.png';\r\nimport { useLocation, useNavigate } from 'react-router-dom';\r\nimport PropTypes from 'prop-types';\r\n\r\n/**\r\n * Rendering cuustom navigation bar in which based on isExpanded\r\n * prop image or logo will be displayed\r\n *\r\n * z index will be 39 as drawer has 40\r\n *\r\n * Parent\r\n * DashboardLayout\r\n */\r\nconst NavBar = ({ onMenuClick, isExpanded }) => {\r\n const navigate = useNavigate();\r\n const location = useLocation();\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nNavBar.propTypes = {\r\n onMenuClick: PropTypes.func,\r\n isExpanded: PropTypes.bool,\r\n};\r\nexport default NavBar;\r\n","export const AppPathObjects = {\r\n ADMIN: 'administrator-panel',\r\n DASHBOARD: '',\r\n PROFILE: {\r\n INDEX: 'profile',\r\n },\r\n EMPLOYEE: {\r\n INDEX: 'employee',\r\n ADD: 'add',\r\n LIST: 'list',\r\n },\r\n ADMIN_TAB: {\r\n INDEX: 'admin',\r\n ADD: 'add',\r\n LIST: 'list',\r\n TYPE: 'type',\r\n USER: 'user',\r\n },\r\n DEPARTMENT: {\r\n INDEX: 'client-department',\r\n ADD: 'add',\r\n LIST: 'list',\r\n },\r\n INDUSTRY: {\r\n INDEX: 'industry',\r\n SCALE: 'scale',\r\n LIST: 'list',\r\n },\r\n CONSULTANT: {\r\n INDEX: 'consultants',\r\n ADD: 'add',\r\n LIST: 'list',\r\n },\r\n TASK_STATUS: {\r\n INDEX: 'task-status',\r\n ADD: 'add',\r\n LIST: 'list',\r\n },\r\n SERVICE: {\r\n INDEX: 'service',\r\n ADD: 'add',\r\n LIST: 'list',\r\n },\r\n COMPANY: {\r\n INDEX: 'company',\r\n ADD: 'add',\r\n LIST: 'list',\r\n USER: 'user',\r\n PROGRESS: 'progress',\r\n PROJECTS: 'projects',\r\n COMPANY_DETAILS: 'details',\r\n TEAM: 'team',\r\n COMPANY_EMPLOYEE_ADD: 'add',\r\n PROJECT_ADD: 'add',\r\n PROJECT_VIEW: 'view',\r\n TASKS: 'tasks',\r\n TASK_VIEW: 'view',\r\n },\r\n LOCATION: {\r\n INDEX: 'location',\r\n ADD: 'add',\r\n LIST: 'list',\r\n COUNTRIES: 'countries',\r\n STATE: 'states',\r\n CITIES: 'cities',\r\n },\r\n INVOICE: {\r\n INDEX: 'invoice',\r\n ADD: 'add',\r\n LIST: 'list',\r\n DEBIT_LIST: 'debit',\r\n CREDIT_LIST: 'credit',\r\n TAX_LIST: 'tax',\r\n },\r\n METRICS: {\r\n INDEX: 'metrics',\r\n MAIN_PARAMETERS: {\r\n INDEX: 'main-parameters',\r\n ADD: 'add',\r\n LIST: 'list',\r\n VIEW: 'view',\r\n },\r\n },\r\n LEAD: {\r\n INDEX: 'lead-management',\r\n ADD: 'add',\r\n LIST: 'list',\r\n },\r\n GRAPH: {\r\n INDEX: 'graph',\r\n ADD: 'add',\r\n LIST: 'list',\r\n },\r\n SURVEY: {\r\n INDEX: 'survey',\r\n VIEW: 'view',\r\n DETAILS: 'details',\r\n INDUSTRY_LIST: 'industry-list',\r\n MAIN_PARAM_LIST: 'industry-main-parms-list',\r\n PARAM_QUESTION_LIST: 'param-question-list',\r\n },\r\n PARAMETER: {\r\n INDEX: 'parameters',\r\n CORE_PARAMETER: 'core-parameters',\r\n SUB_PARAMETER: 'sub-parameters',\r\n SUB_PARAMETER_STATUS: 'sub-parameters-status',\r\n },\r\n ENGAGEMENT: {\r\n INDEX: 'engagement-type',\r\n LIST: 'list',\r\n },\r\n COMPANY_DESIGNATION: {\r\n INDEX: 'company',\r\n DESIGNATION: 'company-designation',\r\n },\r\n TASK_TYPE: {\r\n INDEX: 'task-type',\r\n LIST: 'list',\r\n STATUS: 'task-status',\r\n PROJECT_STATUS: 'project-status',\r\n },\r\n MEETING_TYPE: {\r\n INDEX: 'metting-type',\r\n LIST: 'list',\r\n STATUS: 'status',\r\n },\r\n COMPANY_EMPLOYEE: {\r\n INDEX: 'company-employee',\r\n LIST: 'list',\r\n EMPLOYEE: 'company-employee',\r\n },\r\n COMPANY_IMPORTANT_DATES: {\r\n INDEX: 'company-important-dates',\r\n LIST: 'list',\r\n },\r\n MEETING: {\r\n INDEX: 'meeting',\r\n LIST: 'list',\r\n },\r\n DATAPOINT: {\r\n INDEX: 'datapoint',\r\n LIST: 'list',\r\n },\r\n DATATABLE: {\r\n INDEX: 'datatable',\r\n LIST: 'list',\r\n },\r\n ROLEPERMISSION: {\r\n INDEX: 'roles',\r\n LIST: 'list',\r\n MODULE_LIST: 'modulelist',\r\n PERMISSIONS_LIST: 'userpermissionlist',\r\n },\r\n KPI: {\r\n INDEX: 'kpi',\r\n LIST: 'list',\r\n },\r\n DEFAULT_HEALTH_SCORE: {\r\n INDEX: 'defaultHealthScore',\r\n LIST: 'list',\r\n },\r\n HEALTHSCORE: {\r\n INDEX: 'healthscore',\r\n LIST: 'list',\r\n },\r\n HEALTHSCORE_UPDATE: {\r\n INDEX: 'healthscore-update',\r\n LIST: 'list',\r\n },\r\n HEALTHSCORE_ACHIEVE: {\r\n INDEX: 'healthscore-achieve',\r\n LIST: 'list',\r\n },\r\n};\r\n\r\n// AppRelativePaths object\r\nexport const AppRelativePaths = {\r\n ADMIN_DASHBOARD: `/${AppPathObjects.ADMIN}`,\r\n DASHBOARD: `/${AppPathObjects.ADMIN}`,\r\n\r\n // Profile\r\n PROFILE: `/${AppPathObjects.ADMIN}/${AppPathObjects.PROFILE.INDEX}`,\r\n\r\n // Employees\r\n EMPLOYEE_ADD: `/${AppPathObjects.ADMIN}/${AppPathObjects.EMPLOYEE.INDEX}/${AppPathObjects.EMPLOYEE.ADD}`,\r\n EMPLOYEE_LIST: `/${AppPathObjects.ADMIN}/${AppPathObjects.EMPLOYEE.INDEX}/${AppPathObjects.EMPLOYEE.LIST}`,\r\n\r\n //METTING Type\r\n MEETING_STATUS: `/${AppPathObjects.ADMIN}/${AppPathObjects.MEETING_TYPE.INDEX}/${AppPathObjects.MEETING_TYPE.STATUS}`,\r\n MEETING_TYPE_LIST: `/${AppPathObjects.ADMIN}/${AppPathObjects.MEETING_TYPE.INDEX}/${AppPathObjects.MEETING_TYPE.LIST}`,\r\n\r\n //METTING\r\n MEETING_LIST: `/${AppPathObjects.ADMIN}/${AppPathObjects.MEETING.INDEX}/${AppPathObjects.MEETING.LIST}`,\r\n\r\n // Admin\r\n ADMIN_TYPE: `/${AppPathObjects.ADMIN}/${AppPathObjects.ADMIN_TAB.INDEX}/${AppPathObjects.ADMIN_TAB.TYPE}`,\r\n ADMIN_USER: `/${AppPathObjects.ADMIN}/${AppPathObjects.ADMIN_TAB.INDEX}/${AppPathObjects.ADMIN_TAB.USER}`,\r\n ADMIN_ADD: `/${AppPathObjects.ADMIN}/${AppPathObjects.ADMIN_TAB.INDEX}/${AppPathObjects.ADMIN_TAB.ADD}`,\r\n\r\n // Departments\r\n DEPARTMENT_ADD: `/${AppPathObjects.ADMIN}/${AppPathObjects.DEPARTMENT.INDEX}/${AppPathObjects.DEPARTMENT.ADD}`,\r\n DEPARTMENT_LIST: `/${AppPathObjects.ADMIN}/${AppPathObjects.DEPARTMENT.INDEX}/${AppPathObjects.DEPARTMENT.LIST}`,\r\n\r\n // engagement\r\n ENGAGEMENT_LIST: `/${AppPathObjects.ADMIN}/${AppPathObjects.ENGAGEMENT.INDEX}/${AppPathObjects.ENGAGEMENT.LIST}`,\r\n\r\n LOCATION_COUNTRIES: `/${AppPathObjects.ADMIN}/${AppPathObjects.LOCATION.INDEX}/${AppPathObjects.LOCATION.COUNTRIES}`,\r\n LOCATION_STATE: `/${AppPathObjects.ADMIN}/${AppPathObjects.LOCATION.INDEX}/${AppPathObjects.LOCATION.STATE}`,\r\n LOCATION_CITIES: `/${AppPathObjects.ADMIN}/${AppPathObjects.LOCATION.INDEX}/${AppPathObjects.LOCATION.CITIES}`,\r\n\r\n // Industries\r\n INDUSTRY_SCALE: `/${AppPathObjects.ADMIN}/${AppPathObjects.INDUSTRY.INDEX}/${AppPathObjects.INDUSTRY.SCALE}`,\r\n INDUSTRY_LIST: `/${AppPathObjects.ADMIN}/${AppPathObjects.INDUSTRY.INDEX}/${AppPathObjects.INDUSTRY.LIST}`,\r\n\r\n // Consultants\r\n CONSULTANT_ADD: `/${AppPathObjects.ADMIN}/${AppPathObjects.CONSULTANT.INDEX}/${AppPathObjects.CONSULTANT.ADD}`,\r\n CONSULTANT_LIST: `/${AppPathObjects.ADMIN}/${AppPathObjects.CONSULTANT.INDEX}/${AppPathObjects.CONSULTANT.LIST}`,\r\n\r\n // Parameter\r\n CORE_PARAMETER: `/${AppPathObjects.ADMIN}/${AppPathObjects.PARAMETER.INDEX}/${AppPathObjects.PARAMETER.CORE_PARAMETER}`,\r\n SUB_PARAMETER: `/${AppPathObjects.ADMIN}/${AppPathObjects.PARAMETER.INDEX}/${AppPathObjects.PARAMETER.SUB_PARAMETER}`,\r\n SUB_PARAMETER_STATUS_TAB: `/${AppPathObjects.ADMIN}/${AppPathObjects.PARAMETER.INDEX}/${AppPathObjects.PARAMETER.SUB_PARAMETER_STATUS}`,\r\n\r\n // Task Status\r\n TASK_STATUS_ADD: `/${AppPathObjects.ADMIN}/${AppPathObjects.TASK_STATUS.INDEX}/${AppPathObjects.TASK_STATUS.ADD}`,\r\n TASK_STATUS_LIST: `/${AppPathObjects.ADMIN}/${AppPathObjects.TASK_STATUS.INDEX}/${AppPathObjects.TASK_STATUS.LIST}`,\r\n\r\n // Task Status\r\n TASK_TYPE_LIST: `/${AppPathObjects.ADMIN}/${AppPathObjects.TASK_TYPE.INDEX}/${AppPathObjects.TASK_TYPE.LIST}`,\r\n TASK_STATUS: `/${AppPathObjects.ADMIN}/${AppPathObjects.TASK_TYPE.INDEX}/${AppPathObjects.TASK_TYPE.STATUS}`,\r\n // PROJECT_STATUS_TAB: `/${AppPathObjects.ADMIN}/${AppPathObjects.TASK_TYPE.INDEX}/${AppPathObjects.TASK_TYPE.PROJECT_STATUS}`,\r\n PROJECT_STATUS: `/${AppPathObjects.ADMIN}/${AppPathObjects.TASK_TYPE.INDEX}/${AppPathObjects.TASK_TYPE.PROJECT_STATUS}`,\r\n\r\n // Services\r\n SERVICE_ADD: `/ ${AppPathObjects.ADMIN}/${AppPathObjects.SERVICE.INDEX}/${AppPathObjects.SERVICE.ADD} `,\r\n SERVICE_LIST: `/ ${AppPathObjects.ADMIN} /${AppPathObjects.SERVICE.INDEX}/${AppPathObjects.SERVICE.LIST} `,\r\n\r\n // Companies\r\n COMPANY_ADD: `/${AppPathObjects.ADMIN}/${AppPathObjects.COMPANY.INDEX}/${AppPathObjects.COMPANY.ADD}`,\r\n COMPANY_LIST: `/${AppPathObjects.ADMIN}/${AppPathObjects.COMPANY.INDEX}/${AppPathObjects.COMPANY.LIST}`,\r\n COMPANY_USER: `/${AppPathObjects.ADMIN}/${AppPathObjects.COMPANY.INDEX}/${AppPathObjects.COMPANY.USER}`,\r\n COMPANY_PROGRESS: `/${AppPathObjects.ADMIN}/${AppPathObjects.COMPANY.INDEX}/${AppPathObjects.COMPANY.PROGRESS}`,\r\n\r\n ALL_PROJECTS: `/${AppPathObjects.ADMIN}/${AppPathObjects.COMPANY.INDEX}/${AppPathObjects.COMPANY.PROJECTS}`,\r\n\r\n ALL_TASKS: `/${AppPathObjects.ADMIN}/${AppPathObjects.COMPANY.TASKS}`,\r\n\r\n getProjectTaskDetails: (taskId) =>\r\n `/${AppPathObjects.ADMIN}/${AppPathObjects.COMPANY.TASKS}/${AppPathObjects.COMPANY.TASK_VIEW}/${taskId}`,\r\n\r\n getDynamicCompanyProjects: (companyId) =>\r\n `/${AppPathObjects.ADMIN}/${AppPathObjects.COMPANY.INDEX}/${companyId}/${AppPathObjects.COMPANY.PROJECTS}`,\r\n getProjectAdd: (companyId) =>\r\n `/${AppPathObjects.ADMIN}/${AppPathObjects.COMPANY.INDEX}/${companyId}/${AppPathObjects.COMPANY.PROJECTS}/${AppPathObjects.COMPANY.PROJECT_ADD}`,\r\n getProjectDetails: (companyId, projectId) =>\r\n `/${AppPathObjects.ADMIN}/${AppPathObjects.COMPANY.INDEX}/${companyId}/${AppPathObjects.COMPANY.PROJECTS}/${AppPathObjects.COMPANY.PROJECT_VIEW}/${projectId}`,\r\n getDynamicCompanyEmployees: (companyId) =>\r\n `/${AppPathObjects.ADMIN}/${AppPathObjects.COMPANY.INDEX}/${companyId}/${AppPathObjects.COMPANY.TEAM}`,\r\n addDynamicCompanyEmployee: (companyId) =>\r\n `/${AppPathObjects.ADMIN}/${AppPathObjects.COMPANY.INDEX}/${companyId}/${AppPathObjects.COMPANY.TEAM}/${AppPathObjects.COMPANY.COMPANY_EMPLOYEE_ADD}`,\r\n\r\n // Invoices\r\n INVOICE_ADD: `/${AppPathObjects.ADMIN}/${AppPathObjects.INVOICE.INDEX}/${AppPathObjects.INVOICE.ADD}`,\r\n INVOICE_LIST: `/${AppPathObjects.ADMIN}/${AppPathObjects.INVOICE.INDEX}/${AppPathObjects.INVOICE.LIST}`,\r\n INVOICE_DEBIT_LIST: `/${AppPathObjects.ADMIN}/${AppPathObjects.INVOICE.INDEX}/${AppPathObjects.INVOICE.DEBIT_LIST}`,\r\n INVOICE_CREDIT_LIST: `/${AppPathObjects.ADMIN}/${AppPathObjects.INVOICE.INDEX}/${AppPathObjects.INVOICE.CREDIT_LIST}`,\r\n INVOICE_TAX_LIST: `/${AppPathObjects.ADMIN}/${AppPathObjects.INVOICE.INDEX}/${AppPathObjects.INVOICE.TAX_LIST}`,\r\n\r\n // Metrics\r\n METRICS_MAIN_PARAMETERS_ADD: `/${AppPathObjects.ADMIN}/${AppPathObjects.METRICS.INDEX}/${AppPathObjects.METRICS.MAIN_PARAMETERS.INDEX}/${AppPathObjects.METRICS.MAIN_PARAMETERS.ADD}`,\r\n METRICS_MAIN_PARAMETERS_LIST: `/${AppPathObjects.ADMIN}/${AppPathObjects.METRICS.INDEX}/${AppPathObjects.METRICS.MAIN_PARAMETERS.INDEX}/${AppPathObjects.METRICS.MAIN_PARAMETERS.LIST}`,\r\n getSubParameters: (metricId) =>\r\n `/${AppPathObjects.ADMIN}/${AppPathObjects.METRICS.INDEX}/${AppPathObjects.METRICS.MAIN_PARAMETERS.INDEX}/${AppPathObjects.METRICS.MAIN_PARAMETERS.VIEW}/${metricId}`,\r\n\r\n // Lead Management\r\n LEAD_ADD: `/${AppPathObjects.ADMIN}/${AppPathObjects.LEAD.INDEX}/${AppPathObjects.LEAD.ADD}`,\r\n LEAD_LIST: `/${AppPathObjects.ADMIN}/${AppPathObjects.LEAD.INDEX}/${AppPathObjects.LEAD.LIST}`,\r\n\r\n // Graphs\r\n GRAPH_ADD: `/${AppPathObjects.ADMIN}/${AppPathObjects.GRAPH.INDEX}/${AppPathObjects.GRAPH.ADD}`,\r\n GRAPH_LIST: `/${AppPathObjects.ADMIN}/${AppPathObjects.GRAPH.INDEX}/${AppPathObjects.GRAPH.LIST}`,\r\n\r\n // Surveys\r\n SURVEY_INDUSTRY_LIST: `/${AppPathObjects.ADMIN}/${AppPathObjects.SURVEY.INDEX}/${AppPathObjects.SURVEY.INDUSTRY_LIST}`,\r\n getIndustryMainParams: (industryId) =>\r\n `/${AppPathObjects.ADMIN}/${AppPathObjects.SURVEY.INDEX}/${AppPathObjects.SURVEY.MAIN_PARAM_LIST}/${industryId}`,\r\n getIndustryQuestionList: (industryId, paramId, language) =>\r\n `/${AppPathObjects.ADMIN}/${AppPathObjects.SURVEY.INDEX}/${AppPathObjects.SURVEY.PARAM_QUESTION_LIST}/${industryId}/${paramId}/${language}`,\r\n SURVEY_DETAILS: `/${AppPathObjects.ADMIN}/${AppPathObjects.SURVEY.INDEX}/${AppPathObjects.SURVEY.DETAILS}`,\r\n getCompanySurvey: (surveyId) =>\r\n `/${AppPathObjects.ADMIN}/${AppPathObjects.SURVEY.INDEX}/${AppPathObjects.SURVEY.VIEW}/${surveyId}`,\r\n\r\n // Company routes\r\n\r\n // Company Designation\r\n COMPANY_DESIGNATION: `/${AppPathObjects.ADMIN}/${AppPathObjects.COMPANY_DESIGNATION.INDEX}/${AppPathObjects.COMPANY_DESIGNATION.DESIGNATION}`,\r\n\r\n // company Employee\r\n COMPANY_EMPLOYEE: `/${AppPathObjects.ADMIN}/${AppPathObjects.COMPANY_EMPLOYEE.INDEX}/${AppPathObjects.COMPANY_EMPLOYEE.LIST}`,\r\n\r\n // company Employee\r\n COMPANY_IMPORTANT_DATES: `/${AppPathObjects.ADMIN}/${AppPathObjects.COMPANY_IMPORTANT_DATES.INDEX}/${AppPathObjects.COMPANY_IMPORTANT_DATES.LIST}`,\r\n\r\n // company\r\n DATAPOINT_LIST: `/${AppPathObjects.ADMIN}/${AppPathObjects.DATAPOINT.INDEX}/${AppPathObjects.DATAPOINT.LIST}`,\r\n\r\n // Roles\r\n ROLE_PERMISSION_LIST: `/${AppPathObjects.ADMIN}/${AppPathObjects.ROLEPERMISSION.INDEX}/${AppPathObjects.ROLEPERMISSION.LIST}`,\r\n ROLE_USER_MODULES: `/${AppPathObjects.ADMIN}/${AppPathObjects.ROLEPERMISSION.INDEX}/${AppPathObjects.ROLEPERMISSION.MODULE_LIST}`,\r\n ROLE_USER_PERMISSIONS: `/${AppPathObjects.ADMIN}/${AppPathObjects.ROLEPERMISSION.INDEX}/${AppPathObjects.ROLEPERMISSION.PERMISSIONS_LIST}`,\r\n\r\n //KPI\r\n KPI_LIST: `/${AppPathObjects.ADMIN}/${AppPathObjects.KPI.INDEX}/${AppPathObjects.KPI.LIST}`,\r\n\r\n // company\r\n DATAPOINT_DATATABLE: `/${AppPathObjects.ADMIN}/${AppPathObjects.DATATABLE.INDEX}/${AppPathObjects.DATATABLE.LIST}`,\r\n\r\n //KPI\r\n DEFAULT_HEALTH_SCORE_LIST: `/${AppPathObjects.ADMIN}/${AppPathObjects.DEFAULT_HEALTH_SCORE.INDEX}/${AppPathObjects.DEFAULT_HEALTH_SCORE.LIST}`,\r\n\r\n //HEALTHSCORE\r\n HEALTH_SCORE: `/${AppPathObjects.ADMIN}/${AppPathObjects.HEALTHSCORE.INDEX}/${AppPathObjects.HEALTHSCORE.LIST}`,\r\n\r\n //HEALTHSCORE\r\n HEALTH_SCORE_UPDATE: `/${AppPathObjects.ADMIN}/${AppPathObjects.HEALTHSCORE_UPDATE.INDEX}/${AppPathObjects.HEALTHSCORE_UPDATE.LIST}`,\r\n\r\n //HEALTHSCORE\r\n HEALTH_SCORE_ACHIEVE: `/${AppPathObjects.ADMIN}/${AppPathObjects.HEALTHSCORE_ACHIEVE.INDEX}/${AppPathObjects.HEALTHSCORE_ACHIEVE.LIST}`,\r\n};\r\n","import { AppRelativePaths } from './routes.const';\r\n\r\nexport const companyNavigationData = [\r\n {\r\n id: 1,\r\n icon: 'bx bxs-user-account',\r\n label: 'Company Designation',\r\n link: AppRelativePaths.COMPANY_DESIGNATION,\r\n permission: 'View',\r\n moduleKey: 'DESIGNATION',\r\n },\r\n {\r\n id: 2,\r\n icon: 'bx bx-user',\r\n label: 'Company Employee',\r\n link: AppRelativePaths.COMPANY_EMPLOYEE,\r\n permission: 'View',\r\n moduleKey: 'EMPLOYEE',\r\n },\r\n {\r\n id: 3,\r\n icon: 'bx bxs-calendar-event',\r\n label: 'Important Dates',\r\n link: AppRelativePaths.COMPANY_IMPORTANT_DATES,\r\n permission: 'View',\r\n moduleKey: 'IMPORTANT_DATE',\r\n },\r\n {\r\n id: 4,\r\n icon: 'bx bxs-conversation',\r\n label: 'Meeting List',\r\n link: AppRelativePaths.MEETING_LIST,\r\n permission: 'View',\r\n moduleKey: 'MEETING_LIST',\r\n },\r\n {\r\n id: 5,\r\n icon: 'bx bx-list-ul',\r\n label: 'Company Task List',\r\n link: AppRelativePaths.ALL_TASKS,\r\n permission: 'View',\r\n moduleKey: 'TASK',\r\n },\r\n {\r\n id: 6,\r\n icon: 'bx bxs-buildings',\r\n label: 'Company Project List',\r\n link: AppRelativePaths.ALL_PROJECTS,\r\n permission: 'View',\r\n moduleKey: 'PROJECT_LIST',\r\n },\r\n {\r\n id: 7,\r\n icon: 'bx bx-list-ul',\r\n label: 'Datapoint List',\r\n link: AppRelativePaths.DATAPOINT_LIST,\r\n permission: 'View',\r\n moduleKey: 'DATAPOINT_LIST',\r\n },\r\n {\r\n id: 8,\r\n icon: 'bx bxs-lock-alt',\r\n label: 'Role & Permission',\r\n link: AppRelativePaths.ROLE_USER_PERMISSIONS,\r\n permission: 'View',\r\n moduleKey: 'ROLES_PERMISSION',\r\n },\r\n {\r\n id: 9,\r\n icon: 'bx bx-user',\r\n label: 'Datapoint Table',\r\n link: AppRelativePaths.DATAPOINT_DATATABLE,\r\n permission: 'View',\r\n moduleKey: 'DATAPOINT_TABLE',\r\n },\r\n {\r\n id: 10,\r\n icon: 'bx bxs-business',\r\n label: 'Business Health',\r\n permission: 'View',\r\n moduleKey: ['HEALTH_WEIGHTAGE', 'HEALTH_SCORE'],\r\n items: [\r\n {\r\n id: 1,\r\n label: 'Health Weightage',\r\n link: AppRelativePaths.HEALTH_SCORE_UPDATE,\r\n permission: 'View',\r\n moduleKey: 'HEALTH_WEIGHTAGE',\r\n },\r\n {\r\n id: 2,\r\n label: 'Health Score',\r\n link: AppRelativePaths.HEALTH_SCORE_ACHIEVE,\r\n permission: 'View',\r\n moduleKey: 'HEALTH_SCORE',\r\n },\r\n ],\r\n },\r\n];\r\n\r\n// Updated navigation data with relative paths\r\nexport const navigationData = [\r\n {\r\n id: 1,\r\n icon: 'bx bx-map',\r\n label: 'Location',\r\n permission: 'View',\r\n moduleKey: ['COUNTRY', 'STATE', 'CITY'],\r\n items: [\r\n {\r\n id: 1,\r\n label: 'Countries',\r\n link: AppRelativePaths.LOCATION_COUNTRIES,\r\n permission: 'View',\r\n moduleKey: 'COUNTRY',\r\n },\r\n {\r\n id: 2,\r\n label: 'States',\r\n link: AppRelativePaths.LOCATION_STATE,\r\n permission: 'View',\r\n moduleKey: 'STATE',\r\n },\r\n {\r\n id: 3,\r\n label: 'Cities',\r\n link: AppRelativePaths.LOCATION_CITIES,\r\n permission: 'View',\r\n moduleKey: 'CITY',\r\n },\r\n ],\r\n },\r\n {\r\n id: 2,\r\n icon: 'bx bx-briefcase-alt-2',\r\n label: 'Departments',\r\n link: AppRelativePaths.DEPARTMENT_LIST,\r\n permission: 'View',\r\n moduleKey: 'DEPARTMENT',\r\n },\r\n {\r\n id: 3,\r\n icon: 'bx bx-user',\r\n label: 'Admin',\r\n permission: 'View',\r\n moduleKey: ['ADMIN_TYPE', 'ADMIN_USER'],\r\n items: [\r\n {\r\n id: 1,\r\n label: 'Admin Type',\r\n link: AppRelativePaths.ADMIN_TYPE,\r\n permission: 'View',\r\n moduleKey: 'ADMIN_TYPE',\r\n },\r\n {\r\n id: 2,\r\n label: 'Admin User',\r\n link: AppRelativePaths.ADMIN_USER,\r\n permission: 'View',\r\n moduleKey: 'ADMIN_USER',\r\n },\r\n ],\r\n },\r\n {\r\n id: 4,\r\n icon: 'bx bx-user-voice',\r\n label: 'Consultants',\r\n link: AppRelativePaths.CONSULTANT_LIST,\r\n permission: 'View',\r\n moduleKey: 'CONSULTANT',\r\n },\r\n {\r\n id: 5,\r\n icon: 'bx bx-briefcase-alt-2',\r\n label: 'Engagement Type',\r\n link: AppRelativePaths.ENGAGEMENT_LIST,\r\n permission: 'View',\r\n moduleKey: 'ENGAGEMENT',\r\n },\r\n {\r\n id: 6,\r\n icon: 'bx bxs-factory',\r\n label: 'Industry',\r\n link: AppRelativePaths.INDUSTRY_LIST,\r\n permission: 'View',\r\n moduleKey: 'INDUSTRY',\r\n },\r\n {\r\n id: 7,\r\n icon: 'bx bx-user-voice',\r\n label: 'Parameters',\r\n permission: 'View',\r\n moduleKey: ['CORE_PARAMETER', 'SUB_PARAMETER', 'SUB_PARAMETER_STATUS'],\r\n items: [\r\n {\r\n id: 1,\r\n label: 'Core Parameters',\r\n link: AppRelativePaths.CORE_PARAMETER,\r\n permission: 'View',\r\n moduleKey: 'CORE_PARAMETER',\r\n },\r\n {\r\n id: 2,\r\n label: 'Sub Parameters',\r\n link: AppRelativePaths.SUB_PARAMETER,\r\n permission: 'View',\r\n moduleKey: 'SUB_PARAMETER',\r\n },\r\n {\r\n id: 3,\r\n label: 'Sub Parameter Status',\r\n link: AppRelativePaths.SUB_PARAMETER_STATUS_TAB,\r\n permission: 'View',\r\n moduleKey: 'SUB_PARAMETER_STATUS',\r\n },\r\n ],\r\n },\r\n {\r\n id: 8,\r\n icon: 'bx bx-user',\r\n label: 'Meeting Types',\r\n permission: 'View',\r\n moduleKey: ['MEETING_TYPE', 'MEETING_STATUS'],\r\n items: [\r\n {\r\n id: 1,\r\n label: 'Meeting Type List',\r\n link: AppRelativePaths.MEETING_TYPE_LIST,\r\n permission: 'View',\r\n moduleKey: 'MEETING_TYPE',\r\n },\r\n {\r\n id: 2,\r\n label: 'Meeting Type Status',\r\n link: AppRelativePaths.MEETING_STATUS,\r\n permission: 'View',\r\n moduleKey: 'MEETING_STATUS',\r\n },\r\n ],\r\n },\r\n {\r\n id: 9,\r\n icon: 'bx bx-user',\r\n label: 'Tasks',\r\n permission: 'View',\r\n moduleKey: ['TASK_TYPE', 'TASK_STATUS', 'PROJECT_STATUS'],\r\n items: [\r\n {\r\n id: 1,\r\n label: 'Task Type',\r\n link: AppRelativePaths.TASK_TYPE_LIST,\r\n permission: 'View',\r\n moduleKey: 'TASK_TYPE',\r\n },\r\n {\r\n id: 2,\r\n label: 'Task Status',\r\n link: AppRelativePaths.TASK_STATUS,\r\n permission: 'View',\r\n moduleKey: 'TASK_STATUS',\r\n },\r\n {\r\n id: 3,\r\n label: 'Project Status',\r\n link: AppRelativePaths.PROJECT_STATUS,\r\n permission: 'View',\r\n moduleKey: 'PROJECT_STATUS',\r\n },\r\n ],\r\n },\r\n {\r\n id: 10,\r\n icon: 'bx bx-map',\r\n label: 'KPI',\r\n link: AppRelativePaths.KPI_LIST,\r\n permission: 'View',\r\n moduleKey: 'KPI',\r\n },\r\n {\r\n id: 11,\r\n icon: 'bx bx-map',\r\n label: 'Default Health Score',\r\n link: AppRelativePaths.DEFAULT_HEALTH_SCORE_LIST,\r\n permission: 'View',\r\n moduleKey: 'DEFAULT_HEALTH_SCORE',\r\n },\r\n {\r\n id: 12,\r\n icon: 'bx bx-user',\r\n label: 'Companies',\r\n link: AppRelativePaths.COMPANY_LIST,\r\n permission: 'View',\r\n moduleKey: 'COMPANY',\r\n },\r\n {\r\n id: 13,\r\n icon: 'bx bxs-factory',\r\n label: 'Industry Scale',\r\n link: AppRelativePaths.INDUSTRY_SCALE,\r\n permission: 'View',\r\n moduleKey: 'INDUSTRY_SCALE',\r\n },\r\n {\r\n id: 8,\r\n icon: 'bx bxs-lock-alt',\r\n label: 'Role & Permission',\r\n link: AppRelativePaths.ROLE_USER_PERMISSIONS,\r\n permission: 'View',\r\n moduleKey: 'ADMIN_ROLES_PERMISSION',\r\n },\r\n];\r\n","import { useCallback, useState } from 'react';\r\n\r\nimport VerticalNavBar from '~/components/common/VerticalNavBar';\r\nimport NavBar from '~/components/common/NavBar';\r\nimport { Outlet } from 'react-router-dom';\r\nimport { isSmallScreen } from '~/utils/app.utils';\r\nimport {\r\n companyNavigationData,\r\n navigationData,\r\n} from '~/routes/navigation.data';\r\nimport { useAuth } from '~/context/AuthProvider';\r\n\r\n/**\r\n * Wrapper compoent that renders app bar and drawer\r\n *\r\n * Parent\r\n *\r\n */\r\n\r\nconst DashboardLayout = () => {\r\n const [open, setOpen] = useState(!isSmallScreen());\r\n const { user } = useAuth();\r\n const handleDrawerClose = () => {\r\n setOpen(false);\r\n };\r\n\r\n const toggleDrawer = useCallback((e) => {\r\n e?.preventDefault();\r\n setOpen((prev) => !prev);\r\n }, []);\r\n\r\n return (\r\n
\r\n \r\n {/* here 70px is the height of navbar */}\r\n
\r\n \r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default DashboardLayout;\r\n","import PropTypes from 'prop-types';\r\nimport { useNavigate } from 'react-router-dom';\r\n\r\nconst SectionHeader = ({ title, breadcrumbs, text, className = '' }) => {\r\n const navigate = useNavigate();\r\n return (\r\n
\r\n

\r\n {title}\r\n

\r\n {text ? (\r\n {text}\r\n ) : (\r\n
\r\n \r\n ))}\r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nSectionHeader.propTypes = {\r\n title: PropTypes.string.isRequired,\r\n breadcrumbs: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n label: PropTypes.string.isRequired,\r\n link: PropTypes.string,\r\n })\r\n ),\r\n text: PropTypes.string,\r\n className: PropTypes.string,\r\n};\r\n\r\nexport default SectionHeader;\r\n","import SectionHeader from '~/components/common/SectionHeader';\r\n\r\nexport default function Dashboard() {\r\n return (\r\n
\r\n \r\n\r\n
\r\n

\r\n Coming Soon!\r\n

\r\n
\r\n {/*
\r\n

CRM Employee

\r\n\r\n {},\r\n variant: ButtonVariants.PRIMARY,\r\n },\r\n {\r\n label: 'Delete',\r\n onClick: () => {},\r\n variant: ButtonVariants.SECONDARY,\r\n },\r\n {\r\n label: 'Download',\r\n onClick: () => {},\r\n variant: ButtonVariants.SECONDARY,\r\n },\r\n ]}\r\n />\r\n
*/}\r\n
\r\n );\r\n}\r\n","import { useCallback, useMemo, useEffect, useState } from 'react';\r\nimport { useNavigate, useParams } from 'react-router-dom';\r\nimport axios from 'axios';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport PROJECTS_LIST_DATA from '~/pages/CompanyProjects/projects.data';\r\nimport COMPANY_LIST_DATA from '~/pages/CompanyList/companies.data';\r\nimport { AppRelativePaths } from '~/routes/routes.const';\r\nimport { baseUrl } from '~/utils/app.utils';\r\n\r\nexport default function useProjectDetails() {\r\n const navigate = useNavigate();\r\n const { user } = useAuth();\r\n const { id, projectId } = useParams();\r\n const [selectedProject, setSelectedProject] = useState(null);\r\n const [loading, setLoading] = useState(true);\r\n\r\n const selectedCompany = useMemo(() => {\r\n return COMPANY_LIST_DATA.data.find((company) => company.id === Number(id));\r\n }, [id]);\r\n\r\n // Fetch Admin User Types for Dropdown\r\n const fetchProjectDetails = useCallback(async () => {\r\n try {\r\n const response = await axios.get(\r\n `${baseUrl}/company/project/${projectId}`,\r\n {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }\r\n );\r\n const { data } = response.data;\r\n setSelectedProject(data);\r\n setLoading(false);\r\n } catch {\r\n setLoading(false);\r\n }\r\n }, [projectId, user.token]);\r\n\r\n useEffect(() => {\r\n fetchProjectDetails();\r\n }, [fetchProjectDetails, user.token]);\r\n\r\n // const selectedProject = useMemo(() => {\r\n // return PROJECTS_LIST_DATA.find((project) => project.id === projectId);\r\n // }, [projectId]);\r\n\r\n const breadcrumbs = useMemo(() => {\r\n return [\r\n {\r\n label: `${selectedCompany?.company_name}'s Projects`,\r\n link: () => navigate(-1),\r\n },\r\n { label: selectedProject?.name }, // link is not required here\r\n ];\r\n }, [navigate, selectedCompany?.company_name, selectedProject?.name]);\r\n\r\n // used for dropdown list\r\n const projectOptions = useMemo(() => {\r\n return PROJECTS_LIST_DATA.map((project) => {\r\n return {\r\n label: project.name,\r\n value: project.id,\r\n };\r\n });\r\n }, []);\r\n\r\n const changeProjectDetails = useCallback(\r\n (projectId) => {\r\n navigate(AppRelativePaths.getProjectDetails(id, projectId));\r\n },\r\n [id, navigate]\r\n );\r\n\r\n return {\r\n breadcrumbs,\r\n id,\r\n selectedCompany,\r\n selectedProject,\r\n projectOptions,\r\n changeProjectDetails,\r\n loading,\r\n fetchProjectDetails,\r\n };\r\n}\r\n","import PropTypes from 'prop-types';\r\n\r\nexport default function CardHeader({ title, className }) {\r\n return (\r\n \r\n {title}\r\n \r\n );\r\n}\r\n\r\nCardHeader.propTypes = {\r\n title: PropTypes.string,\r\n className: PropTypes.string,\r\n};\r\n","import PropTypes from 'prop-types';\r\n\r\nconst Card = ({ className, children }) => {\r\n return (\r\n
\r\n {children}\r\n
\r\n );\r\n};\r\n\r\nCard.propTypes = {\r\n className: PropTypes.string,\r\n children: PropTypes.node.isRequired,\r\n};\r\n\r\nexport default Card;\r\n","import { useCallback, useEffect, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport axios from 'axios';\r\nimport { useParams } from 'react-router-dom';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport Select from 'react-select';\r\nimport Card from '~/components/common/Card';\r\nimport moment from 'moment';\r\nimport { hasPermission, baseUrl, notifyMessage } from '~/utils/app.utils'; // Utility function to check permission\r\nimport { usePermissionsContext } from '~/context/PermissionsProvider'; // Import permissions\r\n\r\nconst ProjectInfo = ({\r\n name,\r\n description,\r\n projectDays,\r\n status,\r\n startDate,\r\n expectedEndDate,\r\n createdBy,\r\n assignee,\r\n fetchProjectDetails,\r\n projectSubParameter,\r\n}) => {\r\n const { user } = useAuth();\r\n const { projectId } = useParams();\r\n const { permissions } = usePermissionsContext();\r\n const [projectStatus, setProjectStatus] = useState([]);\r\n const [selectedStatus, setSelectedStatus] = useState(null);\r\n\r\n const getAllProjectStatus = useCallback(async () => {\r\n try {\r\n await axios\r\n .get(`${baseUrl}/allprojectstatus`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n })\r\n .then((res) => {\r\n if (res.data) {\r\n const de = res.data.data;\r\n const updatedData = de.map((el) => ({\r\n value: el.projectStatusId,\r\n label: el.projectStatus,\r\n }));\r\n setProjectStatus(updatedData);\r\n }\r\n })\r\n .catch(() => {\r\n setProjectStatus([]);\r\n });\r\n } catch {\r\n notifyMessage('Something went wrong');\r\n }\r\n }, [user.token]);\r\n\r\n const customStyles = {\r\n menuPortal: (provided) => ({ ...provided, zIndex: 9999 }),\r\n menuList: (provided) => ({\r\n ...provided,\r\n maxHeight: '120px', // Limit dropdown height\r\n overflowY: 'auto', // Add scroll when content overflows\r\n }),\r\n };\r\n\r\n // Set the default status based on prop or selected status\r\n useEffect(() => {\r\n getAllProjectStatus();\r\n }, [getAllProjectStatus]);\r\n\r\n // Update the task status\r\n const updateTaskStatus = async (statusId) => {\r\n try {\r\n await axios\r\n .put(\r\n `${baseUrl}/company/project/update/${projectId}/${statusId}`,\r\n {},\r\n {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }\r\n )\r\n .then((res) => {\r\n if (res.data) {\r\n fetchProjectDetails();\r\n }\r\n });\r\n } catch {\r\n notifyMessage('Something went wrong');\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (projectStatus.length > 0) {\r\n // Find the matching status based on the passed 'status' prop\r\n const defaultStatus = projectStatus.find(\r\n (statusOption) => statusOption.label === status\r\n );\r\n if (defaultStatus) {\r\n setSelectedStatus(defaultStatus);\r\n }\r\n }\r\n }, [projectStatus, status]);\r\n\r\n return (\r\n \r\n
\r\n
{name}
\r\n
\r\n
\r\n
Description
\r\n
\r\n {description}\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n Project Days\r\n
\r\n
\r\n {projectDays}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n Deadline\r\n \r\n
\r\n {moment(startDate).format('DD MM YYYY, h:mm:ss a')}\r\n
\r\n
\r\n
\r\n \r\n \r\n Actual End Date\r\n \r\n
\r\n {expectedEndDate\r\n ? moment(expectedEndDate).format('DD MM YYYY, h:mm:ss a')\r\n : ''}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n Assignee\r\n \r\n
\r\n {assignee.map((employee) => (\r\n \r\n {employee.employeeName}\r\n \r\n ))}\r\n
\r\n
\r\n
\r\n \r\n Created By\r\n \r\n
{createdBy}
\r\n
\r\n
\r\n
\r\n
\r\n \r\n Status\r\n \r\n {\r\n setSelectedStatus(selectedOption);\r\n updateTaskStatus(selectedOption.value);\r\n }} // Update the selected status\r\n isDisabled={\r\n !hasPermission(permissions, 'PROJECT_LIST', 'Edit', user)\r\n }\r\n />\r\n
\r\n
\r\n \r\n Poject SubParameter\r\n \r\n {projectSubParameter?.length > 0 &&\r\n projectSubParameter.map((subParam, idx) => (\r\n \r\n {subParam?.subPara?.subParameterName}\r\n \r\n ))}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nProjectInfo.propTypes = {\r\n name: PropTypes.string,\r\n description: PropTypes.string,\r\n projectDays: PropTypes.number,\r\n status: PropTypes.string,\r\n startDate: PropTypes.string,\r\n expectedEndDate: PropTypes.string,\r\n createdBy: PropTypes.string,\r\n assignee: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n employeeId: PropTypes.string,\r\n employeeName: PropTypes.string,\r\n })\r\n ),\r\n fetchProjectDetails: PropTypes.func,\r\n projectSubParameter: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n subPara: PropTypes.shape({\r\n subParameterName: PropTypes.string,\r\n }),\r\n })\r\n ),\r\n};\r\n\r\nexport default ProjectInfo;\r\n","import PropTypes from 'prop-types';\r\n\r\nconst InputField = ({\r\n id,\r\n label,\r\n type = 'text',\r\n required = false,\r\n name,\r\n register = null,\r\n validationRules = {},\r\n errors = null,\r\n placeholder,\r\n rows,\r\n as = 'input',\r\n disabled = false,\r\n ...rest\r\n}) => {\r\n const InputTag = as; // Either 'textarea' or 'input'\r\n return (\r\n
\r\n \r\n \r\n {errors?.[id] && (\r\n

{errors[id]?.message}

\r\n )}\r\n
\r\n );\r\n};\r\nInputField.propTypes = {\r\n id: PropTypes.string,\r\n label: PropTypes.string,\r\n type: PropTypes.string,\r\n required: PropTypes.bool,\r\n name: PropTypes.string,\r\n register: PropTypes.func,\r\n validationRules: PropTypes.object,\r\n errors: PropTypes.object,\r\n placeholder: PropTypes.string,\r\n rows: PropTypes.number,\r\n as: PropTypes.string,\r\n disabled: PropTypes.bool,\r\n};\r\n\r\nexport default InputField;\r\n","import { useCallback, useEffect, useState } from 'react';\r\nimport { useForm } from 'react-hook-form';\r\nimport { Button, Modal } from 'flowbite-react';\r\nimport axios from 'axios';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport { notifyMessage, convertToLocalDate, baseUrl } from '~/utils/app.utils';\r\nimport ReactSelectField from '~/components/common/ReactSelectField';\r\nimport InputField from '~/components/common/InputField';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst AddCompanyTask = ({\r\n openModal,\r\n setOpenModal,\r\n fetchData,\r\n isEditMode = false,\r\n setCurrentObj,\r\n initialData = {},\r\n isProjectTask,\r\n projectId,\r\n}) => {\r\n const {\r\n register,\r\n handleSubmit,\r\n formState: { errors },\r\n reset,\r\n control,\r\n } = useForm();\r\n const { user } = useAuth();\r\n const [taskTypeData, setTaskTypeData] = useState([]);\r\n const [taskStatusData, setTaskStatusData] = useState([]);\r\n const [meetingData, setMeetingData] = useState([]);\r\n const [employeesData, setEmployeesData] = useState([]);\r\n const [projectsData, setProjectsData] = useState([]);\r\n\r\n const getCompanyTaskById = useCallback(async () => {\r\n try {\r\n await axios\r\n .get(`${baseUrl}/company/task/${initialData.taskId}`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n })\r\n .then((res) => {\r\n if (res.data) {\r\n const de = res.data.data;\r\n // Reset the form with the data from the API\r\n const projectArry = [de.projectDetails?.CompanyProjectMaster];\r\n reset({\r\n projectId: projectArry.map((item) => ({\r\n value: item.projectId,\r\n label: item.projectName,\r\n })),\r\n taskName: de.taskName,\r\n taskDescription: de.taskDescription,\r\n taskStatusId: {\r\n value: de.taskStatus.taskStatusId,\r\n label: de.taskStatus.taskStatus,\r\n },\r\n taskDeadline: convertToLocalDate(de.taskDeadline),\r\n taskTypeId: {\r\n value: de.taskType.taskTypeId,\r\n label: de.taskType.taskTypeName,\r\n },\r\n meetingId: de.TaskMeetingJunction.map((item) => ({\r\n value: item.meetings.meetingId,\r\n label: item.meetings.meetingName,\r\n })),\r\n employeeIds: de.TaskEmployeeJunction.map((item) => ({\r\n value: item.Employee.employeeId,\r\n label: item.Employee.employeeName,\r\n })),\r\n comment: de.TaskCommentMaster[0].comment,\r\n commentId: de.TaskCommentMaster[0].taskCommentId,\r\n });\r\n }\r\n })\r\n .catch(() => {\r\n notifyMessage('Something went wrong!', 'error');\r\n });\r\n } catch {\r\n notifyMessage('Something went wrong!', 'error');\r\n }\r\n }, [initialData.taskId, reset, user.token]);\r\n\r\n const getAllTaskstatus = useCallback(async () => {\r\n try {\r\n await axios\r\n .get(`${baseUrl}/alltaskstatus`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n })\r\n .then((res) => {\r\n if (res.data) {\r\n const de = res.data.data;\r\n const updatedData = de\r\n .map((el) => {\r\n return {\r\n value: el.taskStatusId,\r\n label: el.taskStatus,\r\n };\r\n })\r\n .sort((a, b) => a.taskStatusOrder - b.taskStatusOrder);\r\n\r\n setTaskStatusData(updatedData);\r\n }\r\n })\r\n .catch(() => {\r\n setTaskStatusData([]);\r\n });\r\n } catch {\r\n notifyMessage('Something went wrong!', 'error');\r\n }\r\n }, [user.token]);\r\n\r\n const getAllTaskType = useCallback(async () => {\r\n try {\r\n await axios\r\n .get(`${baseUrl}/tasks`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n })\r\n .then((res) => {\r\n if (res.data) {\r\n const de = res.data.data;\r\n const updatedData = de.map((el) => {\r\n return {\r\n value: el.taskTypeId,\r\n label: el.taskTypeName,\r\n };\r\n });\r\n setTaskTypeData(updatedData);\r\n }\r\n })\r\n .catch(() => {\r\n setTaskTypeData([]);\r\n });\r\n } catch {\r\n notifyMessage('Something went wrong!', 'error');\r\n }\r\n }, [user.token]);\r\n\r\n const getAllMeeting = useCallback(async () => {\r\n try {\r\n await axios\r\n .get(`${baseUrl}/meeting/all`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n })\r\n .then((res) => {\r\n if (res.data) {\r\n const de = res.data.data || [];\r\n const updatedData = de.map((el) => {\r\n return {\r\n value: el.meetingId,\r\n label: el.meetingName,\r\n };\r\n });\r\n setMeetingData(updatedData);\r\n }\r\n })\r\n .catch(() => {\r\n setMeetingData([]);\r\n });\r\n } catch {\r\n notifyMessage('Something went wrong!', 'error');\r\n }\r\n }, [user.token]);\r\n\r\n const getAllEmployee = useCallback(async () => {\r\n try {\r\n await axios\r\n .get(`${baseUrl}/company/employee/all`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n })\r\n .then((res) => {\r\n if (res.data) {\r\n const de = res.data.data || [];\r\n const updatedData = de\r\n ?.filter((item) => item.employeeId != user.employeeId)\r\n .map((el) => {\r\n return {\r\n value: el.employeeId,\r\n label: el.employeeName,\r\n };\r\n });\r\n setEmployeesData(updatedData);\r\n }\r\n })\r\n .catch(() => {\r\n setEmployeesData([]);\r\n });\r\n } catch {\r\n notifyMessage('Something went wrong!', 'error');\r\n }\r\n }, [user.employeeId, user.token]);\r\n\r\n const getAllProjects = useCallback(async () => {\r\n try {\r\n await axios\r\n .get(`${baseUrl}/company/projects/all`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n })\r\n .then((res) => {\r\n if (res.data) {\r\n const de = res.data.data || [];\r\n const updatedData = de.map((el) => {\r\n return {\r\n value: el.projectId,\r\n label: el.projectName,\r\n };\r\n });\r\n setProjectsData(updatedData);\r\n }\r\n })\r\n .catch(() => {\r\n setProjectsData([]);\r\n });\r\n } catch {\r\n notifyMessage('Something went wrong!', 'error');\r\n }\r\n }, [user.token]);\r\n\r\n useEffect(() => {\r\n if (isEditMode) {\r\n getCompanyTaskById();\r\n }\r\n if (!isProjectTask) {\r\n getAllProjects();\r\n }\r\n getAllTaskstatus();\r\n getAllTaskType();\r\n\r\n getAllMeeting();\r\n getAllEmployee();\r\n }, [\r\n getAllEmployee,\r\n getAllMeeting,\r\n getAllProjects,\r\n getAllTaskType,\r\n getAllTaskstatus,\r\n getCompanyTaskById,\r\n isEditMode,\r\n isProjectTask,\r\n ]);\r\n\r\n const onSubmit = async (data) => {\r\n try {\r\n const endpoint = isEditMode\r\n ? `${baseUrl}/company/task/${initialData.taskId}`\r\n : `${baseUrl}/company/task`;\r\n const method = isEditMode ? 'put' : 'post';\r\n const saveObject = {\r\n taskName: data.taskName,\r\n taskDescription: data.taskDescription,\r\n taskTypeId: data.taskTypeId?.value,\r\n taskStatusId: data.taskStatusId?.value,\r\n taskDeadline: new Date(data.taskDeadline),\r\n meetingId: data.meetingId?.value,\r\n employeeIds: data.employeeIds.map((item) => item?.value),\r\n comment: data.comment,\r\n projectId: data.projectId?.value || projectId,\r\n };\r\n await axios({\r\n method,\r\n url: endpoint,\r\n data: saveObject,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }).then((res) => {\r\n if (res.data.status === true) {\r\n notifyMessage(res.data.message, 'success');\r\n fetchData();\r\n reset();\r\n setCurrentObj(null);\r\n setOpenModal(false);\r\n } else {\r\n notifyMessage(res.data.message, 'error');\r\n }\r\n });\r\n } catch (error) {\r\n setOpenModal(false);\r\n\r\n notifyMessage(\r\n error?.response?.data?.message || 'Something went wrong!',\r\n 'error'\r\n );\r\n }\r\n };\r\n\r\n return (\r\n {\r\n reset();\r\n setCurrentObj(null);\r\n setOpenModal(false);\r\n }}\r\n dismissible\r\n >\r\n \r\n {isEditMode ? 'Edit Company Task' : 'Add Company Task'}\r\n \r\n \r\n
\r\n {!isProjectTask && (\r\n \r\n )}\r\n\r\n \r\n\r\n {/* taskDescription */}\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n {/* meetingDateTime */}\r\n \r\n Task Deadline*\r\n \r\n \r\n {errors.taskDeadline && (\r\n

\r\n {errors.taskDeadline.message}\r\n

\r\n )}\r\n
\r\n
\r\n\r\n
\r\n
\r\n {!isEditMode ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n {!isEditMode && (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n {\r\n reset();\r\n setCurrentObj(null);\r\n setOpenModal(false);\r\n }}\r\n >\r\n Cancel\r\n \r\n \r\n \r\n );\r\n};\r\nAddCompanyTask.propTypes = {\r\n openModal: PropTypes.bool,\r\n setOpenModal: PropTypes.func,\r\n fetchData: PropTypes.func,\r\n isEditMode: PropTypes.bool,\r\n setCurrentObj: PropTypes.func,\r\n initialData: PropTypes.object,\r\n isProjectTask: PropTypes.bool,\r\n projectId: PropTypes.string,\r\n};\r\n\r\nAddCompanyTask.defaultProps = {\r\n isEditMode: false,\r\n initialData: {},\r\n};\r\nexport default AddCompanyTask;\r\n","import { usePermissionsContext } from '~/context/PermissionsProvider'; // Import permissions context\r\nimport { hasPermission } from '~/utils/app.utils'; // Utility function to check permission\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst Access = ({ moduleKey, permission, children }) => {\r\n const { permissions } = usePermissionsContext();\r\n const { user } = useAuth();\r\n // Check if the user has the required permission\r\n const canAccess = hasPermission(permissions, moduleKey, permission, user);\r\n\r\n // Render the children only if the user has the permission\r\n return canAccess ? <>{children} : null;\r\n};\r\nAccess.propTypes = {\r\n moduleKey: PropTypes.string,\r\n permission: PropTypes.string,\r\n children: PropTypes.node,\r\n};\r\nexport default Access;\r\n","import { memo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Button, { ButtonVariants } from '~/components/common/Button';\r\nimport Access from '~/components/common/Access';\r\n\r\nconst ProjectHeaderSection = ({\r\n title,\r\n buttonText,\r\n onButtonClick,\r\n className = '',\r\n}) => {\r\n return (\r\n
\r\n

{title}

\r\n \r\n \r\n {buttonText}\r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nProjectHeaderSection.propTypes = {\r\n title: PropTypes.string.isRequired,\r\n buttonText: PropTypes.string.isRequired,\r\n onButtonClick: PropTypes.func.isRequired,\r\n className: PropTypes.string,\r\n};\r\n\r\nexport default memo(ProjectHeaderSection);\r\n","import { useCallback, useEffect, useState } from 'react';\r\nimport { useParams } from 'react-router-dom';\r\nimport axios from 'axios';\r\nimport AddCompanyTask from '~/components/CompanyTask/AddCompanyTask';\r\nimport Card from '~/components/common/Card';\r\nimport ProjectHeaderSection from '../ProjectHeaderSection';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport moment from 'moment';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport { AppRelativePaths } from '~/routes/routes.const';\r\nimport { baseUrl, notifyMessage } from '~/utils/app.utils';\r\nimport PropTypes from 'prop-types';\r\n\r\nexport default function TaskList(props) {\r\n const { projectId } = useParams();\r\n const [openModal, setOpenModal] = useState(false);\r\n const [taskData, setTaskData] = useState([]);\r\n const { user } = useAuth();\r\n const navigate = useNavigate();\r\n\r\n const renderList = useCallback(\r\n (taskData) => {\r\n return (\r\n <>\r\n {taskData?.length > 0 ? (\r\n <>\r\n {taskData.map((item, index) => {\r\n return (\r\n {\r\n navigate(\r\n AppRelativePaths.getProjectTaskDetails(item?.taskId)\r\n );\r\n }}\r\n >\r\n
\r\n
\r\n
\r\n {item.taskName}\r\n
\r\n
\r\n
\r\n {/* Task Description */}\r\n
\r\n
\r\n Description\r\n
\r\n
\r\n {item.taskDescription}\r\n
\r\n
\r\n {/* Task Dates */}\r\n
\r\n
\r\n \r\n \r\n Deadline\r\n \r\n
\r\n {moment(item.taskDeadline).format(\r\n 'DD MM YYYY, h:mm:ss a'\r\n )}\r\n
\r\n
\r\n
\r\n \r\n \r\n Actual End Date\r\n \r\n
\r\n {item.taskActualEndDate\r\n ? moment(item.taskActualEndDate).format(\r\n 'DD MM YYYY, h:mm:ss a'\r\n )\r\n : ''}\r\n
\r\n
\r\n
\r\n\r\n {/* Assignees and Task Type */}\r\n
\r\n
\r\n \r\n Assignee\r\n \r\n
\r\n {item?.assignees?.map((employee, idx) => (\r\n \r\n {employee.employeeName}\r\n \r\n ))}\r\n
\r\n
\r\n
\r\n \r\n Task Type\r\n \r\n
\r\n {item?.taskTypeName}\r\n
\r\n
\r\n
\r\n {/* Task Status and Comments */}\r\n
\r\n
\r\n \r\n Status\r\n \r\n
\r\n {item.taskStatusName}\r\n
\r\n
\r\n
\r\n \r\n );\r\n })}\r\n \r\n ) : (\r\n
\r\n No task found\r\n
\r\n )}\r\n \r\n );\r\n },\r\n [navigate]\r\n );\r\n\r\n const getAllTaskByProjectId = useCallback(async () => {\r\n try {\r\n await axios\r\n .get(`${baseUrl}/company/project/tasks/${projectId}`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n })\r\n .then((res) => {\r\n if (res.data) {\r\n setTaskData(res.data.data);\r\n }\r\n })\r\n .catch(() => {\r\n setTaskData([]);\r\n });\r\n } catch {\r\n notifyMessage('Something went wrong');\r\n }\r\n }, [projectId, user.token]);\r\n\r\n useEffect(() => {\r\n getAllTaskByProjectId();\r\n }, [getAllTaskByProjectId]);\r\n\r\n return (\r\n \r\n {openModal && (\r\n {}}\r\n isEditMode={false}\r\n initialData={null}\r\n isProjectTask={true}\r\n projectId={projectId}\r\n />\r\n )}\r\n setOpenModal(!openModal)}\r\n />\r\n {/* */}\r\n
\r\n {renderList(taskData)}\r\n
\r\n
\r\n );\r\n}\r\nTaskList.propTypes = {\r\n height: PropTypes.string,\r\n};\r\n","const Loader = () => (\r\n
\r\n
\r\n
\r\n);\r\nexport default Loader;\r\n","\r\nimport { useState, useEffect } from 'react';\r\n\r\nfunction useWindowDimensions() {\r\n const [windowDimensions, setWindowDimensions] = useState({\r\n width: window.innerWidth,\r\n height: window.innerHeight\r\n });\r\n\r\n useEffect(() => {\r\n const handleResize = () => {\r\n setWindowDimensions({\r\n width: window.innerWidth,\r\n height: window.innerHeight\r\n });\r\n };\r\n\r\n // Add event listener for resize\r\n window.addEventListener('resize', handleResize);\r\n\r\n // Cleanup the event listener on component unmount\r\n return () => {\r\n window.removeEventListener('resize', handleResize);\r\n };\r\n }, []); // Empty array ensures this effect runs only once when the component mounts\r\n\r\n return windowDimensions;\r\n}\r\n\r\nexport default useWindowDimensions;\r\n","import SectionHeader from '~/components/common/SectionHeader';\r\nimport useProjectDetails from './useProjectDetails';\r\nimport ProjectInfo from '~/components/projects/ProjectInfo';\r\nimport TaskList from '~/components/projects/TaskList';\r\nimport { calculateDaysBetween } from '~/utils/app.utils';\r\nimport { AppRelativePaths } from '~/routes/routes.const';\r\nimport Loader from '~/components/common/Loader';\r\nimport useWindowDimensions from '~/hooks/useWindowDimensions';\r\n\r\n/**\r\n * Render project details\r\n *\r\n * Parent\r\n * CompanyProjects\r\n */\r\n\r\nconst breadcrumbs = [\r\n { label: 'Project', link: AppRelativePaths.ALL_PROJECTS },\r\n { label: 'Projects Detail' },\r\n];\r\n\r\nexport default function ProjectDetails() {\r\n const { loading, selectedProject, fetchProjectDetails } = useProjectDetails();\r\n const { height } = useWindowDimensions();\r\n\r\n return (\r\n
\r\n \r\n {loading ? (\r\n \r\n ) : (\r\n <>\r\n {/* \r\n
\r\n {\r\n changeProjectDetails(opt?.value);\r\n }}\r\n placeholder=\"Change Project\"\r\n value={selectedProject?.id}\r\n />\r\n
\r\n
*/}\r\n {/* grid-cols-1 md:grid-cols-3 gap-4 border-red-500*/}\r\n
\r\n
\r\n \r\n {/*
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
*/}\r\n
\r\n \r\n {/* */}\r\n \r\n
\r\n
\r\n \r\n )}\r\n \r\n );\r\n}\r\n","import PropTypes from 'prop-types';\r\n\r\n/**\r\n * Render foooter part of the component\r\n * Its dumb component and all handlers will be provided by parent\r\n *\r\n * Parent\r\n * DataTable\r\n * CompanyListTable\r\n */\r\nconst DataTableFooter = ({\r\n currentPage,\r\n totalPages,\r\n itemsPerPage,\r\n handlePageChange,\r\n handleItemsPerPageChange,\r\n}) => {\r\n return (\r\n
\r\n
\r\n handlePageChange(currentPage - 1)}\r\n disabled={currentPage === 1}\r\n >\r\n \r\n \r\n \r\n {currentPage} of {totalPages}\r\n \r\n handlePageChange(currentPage + 1)}\r\n disabled={currentPage === totalPages}\r\n >\r\n \r\n \r\n
\r\n handleItemsPerPageChange(Number(e.target.value))}\r\n >\r\n \r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nDataTableFooter.propTypes = {\r\n currentPage: PropTypes.number.isRequired,\r\n totalPages: PropTypes.number.isRequired,\r\n itemsPerPage: PropTypes.number.isRequired,\r\n handlePageChange: PropTypes.func.isRequired,\r\n handleItemsPerPageChange: PropTypes.func.isRequired,\r\n};\r\n\r\nexport default DataTableFooter;\r\n","import PropTypes from 'prop-types';\r\n\r\n/**\r\n * General component to render checkbox\r\n * here checked and unchecked will have svg file so easy to change the color\r\n *\r\n * State will be handled by parent\r\n */\r\nconst Checkbox = ({ id, label, checked, onChange }) => {\r\n return (\r\n
\r\n
\r\n );\r\n};\r\n\r\nColumnSelector.propTypes = {\r\n columns: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n key: PropTypes.string.isRequired,\r\n title: PropTypes.string.isRequired,\r\n })\r\n ).isRequired,\r\n visibleColumns: PropTypes.arrayOf(PropTypes.string).isRequired,\r\n onColumnToggle: PropTypes.func.isRequired,\r\n};\r\n\r\nexport default ColumnSelector;\r\n","import { useState, useMemo, useEffect } from 'react';\r\n\r\nconst useDataTable = (initialData, initialColumns) => {\r\n const [data, setData] = useState(initialData);\r\n // eslint-disable-next-line no-unused-vars\r\n const [columns, setColumns] = useState([\r\n { key: 'rowNumber', title: '#' },\r\n ...initialColumns,\r\n { key: 'actions', title: 'Actions' },\r\n ]);\r\n const [currentPage, setCurrentPage] = useState(1);\r\n const [itemsPerPage, setItemsPerPage] = useState(10);\r\n const [visibleColumns, setVisibleColumns] = useState(\r\n columns.map((col) => col.key)\r\n );\r\n // create pagination and adding row number to each row\r\n const paginatedData = useMemo(() => {\r\n const startIndex = (currentPage - 1) * itemsPerPage;\r\n return data\r\n .slice(startIndex, startIndex + itemsPerPage)\r\n .map((row, index) => ({\r\n ...row,\r\n rowNumber: startIndex + index + 1,\r\n }));\r\n }, [data, currentPage, itemsPerPage]);\r\n\r\n const totalPages = Math.ceil(data.length / itemsPerPage);\r\n\r\n const handlePageChange = (page) => {\r\n setCurrentPage(page);\r\n };\r\n\r\n const handleItemsPerPageChange = (items) => {\r\n setItemsPerPage(items);\r\n setCurrentPage(1);\r\n };\r\n\r\n const handleColumnVisibilityChange = (columnKey) => {\r\n setVisibleColumns((prev) =>\r\n prev.includes(columnKey)\r\n ? prev.filter((key) => key !== columnKey)\r\n : [...prev, columnKey]\r\n );\r\n };\r\n\r\n const exportToExcel = () => {\r\n // console.log('Exporting to Excel');\r\n // Implement Excel export logic\r\n };\r\n\r\n const exportToPDF = () => {\r\n // console.log('Exporting to PDF');\r\n // Implement PDF export logic\r\n };\r\n useEffect(() => {\r\n setData(initialData);\r\n }, [initialData]);\r\n return {\r\n paginatedData,\r\n columns,\r\n visibleColumns,\r\n currentPage,\r\n totalPages,\r\n itemsPerPage,\r\n handlePageChange,\r\n handleItemsPerPageChange,\r\n handleColumnVisibilityChange,\r\n exportToExcel,\r\n exportToPDF,\r\n };\r\n};\r\n\r\nexport default useDataTable;\r\n","import PropTypes from 'prop-types';\r\nimport useDataTable from './useDataTable';\r\nimport ColumnSelector from './columnSelector';\r\nimport Button, { ButtonVariants } from '~/components/common/Button';\r\nimport DataTableFooter from './dataTableFooter';\r\nimport { useEffect, useState } from 'react';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport axios from 'axios';\r\nimport Select from 'react-select';\r\nimport { notifyMessage, hasPermission } from '~/utils/app.utils';\r\nimport moment from 'moment';\r\nimport { usePermissionsContext } from '~/context/PermissionsProvider'; // Import permissions context\r\nimport useWindowDimensions from '~/hooks/useWindowDimensions';\r\n\r\n// Loader Component (Simple Example)\r\nconst Loader = () => (\r\n
\r\n
\r\n
\r\n);\r\n\r\nconst formatRevenue = (value) => {\r\n if (value >= 1_000_000_000) return `${(value / 1_000_000_000).toFixed(1)}B`;\r\n if (value >= 1_000_000) return `${(value / 1_000_000).toFixed(1)}M`;\r\n if (value >= 1_000) return `${(value / 1_000).toFixed(1)}K`;\r\n return `${value}`;\r\n};\r\n\r\nconst DEFAULT_HEADER_ACTION_BUTTONS = [\r\n {\r\n id: 'export_to_excel',\r\n icon: 'download',\r\n label: 'Export to Excel',\r\n variant: ButtonVariants.PRIMARY,\r\n onClick: () => {},\r\n },\r\n {\r\n id: 'export_to_pdf',\r\n icon: 'download',\r\n label: 'Export to PDF',\r\n variant: ButtonVariants.SECONDARY,\r\n onClick: () => {},\r\n },\r\n];\r\n\r\nconst DataTable = ({\r\n initialData,\r\n loadingState,\r\n initialColumns,\r\n headerActionButtons = DEFAULT_HEADER_ACTION_BUTTONS,\r\n actionButtons = [],\r\n statusApiUrl,\r\n componentName,\r\n updateStatusApiUrl,\r\n fetchAllData,\r\n isRole,\r\n moduleKey,\r\n permission,\r\n}) => {\r\n const { user } = useAuth();\r\n const { permissions } = usePermissionsContext();\r\n const [taskStatusData, setTaskStatusData] = useState([]);\r\n const { height } = useWindowDimensions();\r\n\r\n const {\r\n paginatedData,\r\n columns,\r\n visibleColumns,\r\n currentPage,\r\n totalPages,\r\n itemsPerPage,\r\n handlePageChange,\r\n handleItemsPerPageChange,\r\n handleColumnVisibilityChange,\r\n } = useDataTable(initialData, initialColumns);\r\n\r\n // Custom styles for react-select dropdown\r\n const customStyles = {\r\n menuPortal: (provided) => ({ ...provided, zIndex: 9999 }),\r\n menuList: (provided) => ({\r\n ...provided,\r\n maxHeight: '120px', // Limit dropdown height\r\n overflowY: 'auto', // Add scroll when content overflows\r\n }),\r\n };\r\n\r\n // Determine if data is loading based on the presence of initialData\r\n const isLoading = loadingState ? loadingState : false;\r\n\r\n const resolveNestedKey = (obj, key) => {\r\n try {\r\n const value = key.split('.').reduce((acc, part) => acc?.[part], obj);\r\n if (\r\n typeof value === 'string' &&\r\n moment(value, moment.ISO_8601, true).isValid()\r\n ) {\r\n return moment(value).format('DD MM YYYY, h:mm:ss a'); // Customize the format as needed\r\n }\r\n // Return the value directly if it's not a date\r\n return value;\r\n } catch (error) {\r\n notifyMessage(\r\n error?.response?.data?.message || 'Something went wrong!',\r\n 'error'\r\n );\r\n return undefined;\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (statusApiUrl) {\r\n const getAllStatus = async () => {\r\n try {\r\n const response = await axios.get(statusApiUrl, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n });\r\n if (response.data) {\r\n const updatedData =\r\n componentName === 'task'\r\n ? response.data.data\r\n .map((el) => ({\r\n value: el.taskStatusId,\r\n label: el.taskStatus,\r\n }))\r\n .sort((a, b) => a.taskStatusOrder - b.taskStatusOrder)\r\n : response.data.data.map((el) => ({\r\n value: el.projectStatusId,\r\n label: el.projectStatus,\r\n }));\r\n setTaskStatusData(updatedData);\r\n }\r\n } catch {\r\n notifyMessage('Something went wrong!', 'error');\r\n }\r\n };\r\n getAllStatus();\r\n }\r\n }, [componentName, statusApiUrl, user.token]);\r\n\r\n const updateTaskStatus = async (rowId, statusId) => {\r\n const apiUrl =\r\n componentName === 'task'\r\n ? `${updateStatusApiUrl}/${rowId}/${statusId}`\r\n : `${updateStatusApiUrl}/${rowId}/${statusId}`;\r\n\r\n try {\r\n await axios\r\n .put(\r\n apiUrl,\r\n {},\r\n {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }\r\n )\r\n .then((res) => {\r\n fetchAllData();\r\n notifyMessage(res.data.message, 'success');\r\n });\r\n } catch {\r\n notifyMessage('Something went wrong!', 'error');\r\n }\r\n };\r\n\r\n return (\r\n
\r\n <>\r\n {!isRole && (\r\n
\r\n \r\n\r\n
\r\n {headerActionButtons?.map((btn) => (\r\n {\r\n e.preventDefault();\r\n btn?.onClick();\r\n }}\r\n size=\"sm\"\r\n key={btn?.id}\r\n >\r\n {btn?.icon && }\r\n {btn?.label}\r\n \r\n ))}\r\n
\r\n
\r\n )}\r\n\r\n
\r\n \r\n \r\n \r\n \r\n {columns\r\n .filter((col) => visibleColumns.includes(col.key))\r\n .map((col) => (\r\n \r\n {col.key === 'actions' ? '' : col.title}\r\n \r\n ))}\r\n \r\n \r\n {isLoading ? (\r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n <>\r\n \r\n {paginatedData.length > 0 ? (\r\n paginatedData.map((row, index) => (\r\n \r\n {columns\r\n .filter((col) => visibleColumns.includes(col.key))\r\n .map((col) => {\r\n if (col.key === 'actions') {\r\n return (\r\n \r\n {actionButtons?.map((button, idx) => {\r\n let disStatus =\r\n row?.isSuperAdmin === true\r\n ? true\r\n : false;\r\n\r\n if (button.disableBtn) {\r\n if (\r\n row?.adminUserId ===\r\n button?.btnDisableId\r\n ) {\r\n disStatus = true;\r\n }\r\n }\r\n\r\n return (\r\n {\r\n e.preventDefault();\r\n button?.onClick(row);\r\n }}\r\n disabled={disStatus}\r\n size=\"xs\"\r\n key={idx}\r\n >\r\n {button?.label || 'Action'}\r\n \r\n );\r\n })}\r\n \r\n );\r\n } else if (col.key === 'status') {\r\n return (\r\n \r\n {\r\n const rowId =\r\n componentName === 'task'\r\n ? row.taskId\r\n : row.projectId;\r\n updateTaskStatus(\r\n rowId,\r\n selectedOption.value\r\n ); // Call API to update status\r\n }}\r\n />\r\n \r\n );\r\n }\r\n const value = resolveNestedKey(row, col.key);\r\n const formattedValue = [\r\n 'minRevenue',\r\n 'maxRevenue',\r\n ].includes(col.key)\r\n ? formatRevenue(value)\r\n : value;\r\n return (\r\n \r\n {/* {resolveNestedKey(row, col.key)} */}\r\n {formattedValue}\r\n \r\n );\r\n })}\r\n \r\n ))\r\n ) : (\r\n \r\n \r\n No data available\r\n \r\n \r\n )}\r\n \r\n \r\n )}\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nDataTable.propTypes = {\r\n initialData: PropTypes.arrayOf(PropTypes.object),\r\n initialColumns: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n key: PropTypes.string,\r\n title: PropTypes.string,\r\n })\r\n ),\r\n headerActionButtons: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n id: PropTypes.string,\r\n icon: PropTypes.string,\r\n label: PropTypes.string,\r\n onClick: PropTypes.func,\r\n variant: PropTypes.oneOf(Object.values(ButtonVariants)),\r\n })\r\n ),\r\n loadingState: PropTypes.bool,\r\n actionButtons: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n label: PropTypes.string,\r\n onClick: PropTypes.func,\r\n variant: PropTypes.oneOf(Object.values(ButtonVariants)),\r\n })\r\n ),\r\n};\r\nDataTable.propTypes = {\r\n initialData: PropTypes.arrayOf(PropTypes.object),\r\n initialColumns: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n key: PropTypes.string,\r\n title: PropTypes.string,\r\n })\r\n ),\r\n headerActionButtons: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n id: PropTypes.string,\r\n icon: PropTypes.string,\r\n label: PropTypes.string,\r\n onClick: PropTypes.func,\r\n variant: PropTypes.oneOf(Object.values(ButtonVariants)),\r\n })\r\n ),\r\n actionButtons: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n label: PropTypes.string,\r\n onClick: PropTypes.func,\r\n variant: PropTypes.oneOf(Object.values(ButtonVariants)),\r\n disableBtn: PropTypes.bool,\r\n btnDisableId: PropTypes.string,\r\n })\r\n ),\r\n statusApiUrl: PropTypes.string,\r\n componentName: PropTypes.string,\r\n updateStatusApiUrl: PropTypes.string,\r\n fetchAllData: PropTypes.func,\r\n isRole: PropTypes.bool,\r\n moduleKey: PropTypes.string,\r\n permission: PropTypes.string,\r\n};\r\n\r\nexport default DataTable;\r\n","import { useCallback, useEffect, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useForm } from 'react-hook-form';\r\nimport { Button, Modal } from 'flowbite-react';\r\nimport axios from 'axios';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport { notifyMessage, convertToLocalDate, baseUrl } from '~/utils/app.utils';\r\nimport ReactSelectField from '~/components/common/ReactSelectField';\r\nimport InputField from '~/components/common/InputField';\r\n\r\nconst AddCompanyProject = ({\r\n openModal,\r\n setOpenModal,\r\n fetchData,\r\n isEditMode = false,\r\n setCurrentObj,\r\n initialData = {},\r\n}) => {\r\n const {\r\n register,\r\n handleSubmit,\r\n formState: { errors },\r\n reset,\r\n setValue,\r\n control,\r\n watch,\r\n } = useForm();\r\n const { user } = useAuth();\r\n const [employees, setEmployees] = useState([]);\r\n const [projectStatus, setProjectStatus] = useState([]);\r\n const [coreParameterData, setCoreParameterData] = useState([]);\r\n const [subParameterData, setSubParameterData] = useState([]);\r\n const selectedCoreParameter = watch('coreParameter');\r\n\r\n const getCompanyProjectById = useCallback(async () => {\r\n try {\r\n await axios\r\n .get(`${baseUrl}/company/project/${initialData.projectId}`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n })\r\n .then((res) => {\r\n if (res.data) {\r\n const de = res.data.data;\r\n reset({\r\n projectId: de.projectId,\r\n projectName: de.projectName,\r\n projectDescription: de.projectDescription,\r\n projectDeadline: convertToLocalDate(de.projectDeadline),\r\n projectStatusId: {\r\n value: de.projectStatus.projectStatusId,\r\n label: de.projectStatus.projectStatus,\r\n },\r\n otherProjectEmployees: de.ProjectEmployees.map((item) => ({\r\n value: item.employeeId,\r\n label: item.employeeName,\r\n })),\r\n coreParameter: de.ProjectSubParameterJunction.map((item) => ({\r\n value: item.subPara.coreParameter.coreParameterId,\r\n label: item.subPara.coreParameter.coreParameterName,\r\n })),\r\n subParameter: de.ProjectSubParameterJunction.map((item) => ({\r\n value: item.subPara.subParameterId,\r\n label: item.subPara.subParameterName,\r\n })),\r\n });\r\n }\r\n })\r\n .catch(() => {\r\n notifyMessage('Something went wrong!', 'error');\r\n });\r\n } catch {\r\n notifyMessage('Something went wrong!', 'error');\r\n }\r\n }, [initialData.projectId, reset, user.token]);\r\n\r\n const getEmployee = useCallback(async () => {\r\n try {\r\n await axios\r\n .get(`${baseUrl}/company/employee/all`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n })\r\n .then((res) => {\r\n if (res.data) {\r\n const de = res.data.data || [];\r\n const updatedData = de\r\n ?.filter((item) => item.employeeId != user.employeeId)\r\n .map((el) => {\r\n return {\r\n value: el.employeeId,\r\n label: el.employeeName,\r\n };\r\n });\r\n setEmployees(updatedData);\r\n }\r\n })\r\n .catch(() => {\r\n setEmployees([]);\r\n });\r\n } catch {\r\n notifyMessage('Something went wrong!', 'error');\r\n }\r\n }, [user.employeeId, user.token]);\r\n\r\n const getAllProjectStatus = useCallback(async () => {\r\n try {\r\n await axios\r\n .get(`${baseUrl}/allprojectstatus`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n })\r\n .then((res) => {\r\n if (res.data) {\r\n const de = res.data.data;\r\n const updatedData = de.map((el) => {\r\n return {\r\n value: el.projectStatusId,\r\n label: el.projectStatus,\r\n };\r\n });\r\n setProjectStatus(updatedData);\r\n }\r\n })\r\n .catch(() => {\r\n setProjectStatus([]);\r\n });\r\n } catch {\r\n notifyMessage('Something went wrong!', 'error');\r\n }\r\n }, [user.token]);\r\n\r\n const getAllCoreParameter = useCallback(async () => {\r\n try {\r\n await axios\r\n .get(`${baseUrl}/coreparameters`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n })\r\n .then((res) => {\r\n if (res.data) {\r\n const de = res.data.data || [];\r\n const updatedData = de.map((el) => {\r\n return {\r\n value: el.coreParameterId,\r\n label: el.coreParameterName,\r\n };\r\n });\r\n setCoreParameterData(updatedData);\r\n }\r\n })\r\n .catch(() => {\r\n setCoreParameterData([]);\r\n });\r\n } catch {\r\n notifyMessage('Something went wrong!', 'error');\r\n }\r\n }, [user.token]);\r\n\r\n const getAllSubParameter = useCallback(async () => {\r\n try {\r\n await axios\r\n .get(`${baseUrl}/subparameters`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n })\r\n .then((res) => {\r\n if (res.data) {\r\n const de = res.data.data || [];\r\n const updatedData = de.map((el) => {\r\n return {\r\n value: el.subParameterId,\r\n label: el.subParameterName,\r\n coreParameterId: el.coreParameter.coreParameterId,\r\n };\r\n });\r\n setSubParameterData(updatedData);\r\n }\r\n })\r\n .catch(() => {\r\n setSubParameterData([]);\r\n });\r\n } catch {\r\n notifyMessage('Something went wrong!', 'error');\r\n }\r\n }, [user.token]);\r\n\r\n useEffect(() => {\r\n if (isEditMode) {\r\n getCompanyProjectById();\r\n }\r\n getEmployee();\r\n getAllCoreParameter();\r\n getAllSubParameter();\r\n getAllProjectStatus();\r\n }, [\r\n getAllCoreParameter,\r\n getAllProjectStatus,\r\n getAllSubParameter,\r\n getCompanyProjectById,\r\n getEmployee,\r\n isEditMode,\r\n ]);\r\n\r\n const onSubmit = async (data) => {\r\n try {\r\n const endpoint = isEditMode\r\n ? `${baseUrl}/company/project/${data.projectId}`\r\n : `${baseUrl}/company/project`;\r\n const method = isEditMode ? 'put' : 'post';\r\n const saveObject = {\r\n projectName: data.projectName,\r\n projectDescription: data.projectDescription,\r\n projectDeadline: new Date(data.projectDeadline),\r\n projectStatusId: data.projectStatusId.value,\r\n otherProjectEmployees: data.otherProjectEmployees.map(\r\n (item) => item.value\r\n ),\r\n subParameterIds: data.subParameter.map((item) => item.value),\r\n };\r\n await axios({\r\n method,\r\n url: endpoint,\r\n data: saveObject,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }).then((res) => {\r\n if (res.data.status === true) {\r\n notifyMessage(res.data.message, 'success');\r\n fetchData();\r\n reset();\r\n setCurrentObj(null);\r\n setOpenModal(false);\r\n } else {\r\n notifyMessage(res.data.message, 'error');\r\n }\r\n });\r\n } catch (error) {\r\n setOpenModal(false);\r\n notifyMessage(\r\n error?.response?.data?.message || 'Something went wrong!',\r\n 'error'\r\n );\r\n }\r\n };\r\n\r\n return (\r\n {\r\n reset();\r\n setCurrentObj(null);\r\n setOpenModal(false);\r\n }}\r\n dismissible\r\n >\r\n \r\n {isEditMode ? 'Edit Company Project' : 'Add Company Project'}\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n\r\n
\r\n
\r\n \r\n Project Deadline*\r\n \r\n \r\n {errors.projectDeadline && (\r\n

\r\n {errors.projectDeadline.message}\r\n

\r\n )}\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n setValue('subParameter', null)}\r\n />\r\n
\r\n
\r\n \r\n item.coreParameterId ===\r\n selectedCoreParameter?.value\r\n )\r\n : []\r\n }\r\n errors={errors}\r\n isMulti={true}\r\n placeholder=\"Select Sub Parameter\"\r\n disabled={!selectedCoreParameter}\r\n required={true}\r\n />\r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n {\r\n reset();\r\n setCurrentObj(null);\r\n setOpenModal(false);\r\n }}\r\n >\r\n Cancel\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nAddCompanyProject.propTypes = {\r\n openModal: PropTypes.bool,\r\n setOpenModal: PropTypes.func,\r\n fetchData: PropTypes.func,\r\n isEditMode: PropTypes.bool,\r\n setCurrentObj: PropTypes.func,\r\n initialData: PropTypes.object,\r\n};\r\n\r\nexport default AddCompanyProject;\r\n","import { useCallback, useEffect, useState } from 'react';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport axios from 'axios';\r\nimport { useNavigate } from 'react-router-dom'; // Import useNavigate\r\nimport { notifyMessage, hasPermission, baseUrl } from '~/utils/app.utils';\r\nimport Card from '~/components/common/Card';\r\nimport SectionHeader from '~/components/common/SectionHeader';\r\n// import ProjectFilters from '~/components/projects/ProjectFilters';\r\n// import ProjectListTable from '~/components/projects/ProjectListTable';\r\nimport { AppRelativePaths } from '~/routes/routes.const';\r\nimport { ButtonVariants } from '~/components/common/Button';\r\nimport DataTable from '~/components/common/DataTable';\r\nimport AddCompanyProject from '~/components/CompanyProject/AddCompanyProject';\r\n// import { ConfirmationModal } from \"~/components/common/ConfirmationModal\"; // Import the reusable modal\r\nimport { usePermissionsContext } from '~/context/PermissionsProvider'; // Import permissions context\r\n\r\nconst breadcrumbs = [\r\n { label: 'Dashboard', link: AppRelativePaths.ADMIN_DASHBOARD },\r\n { label: 'Projects' },\r\n];\r\n\r\nexport default function ProjectList() {\r\n const { user } = useAuth();\r\n const navigate = useNavigate();\r\n const [openModal, setOpenModal] = useState(false);\r\n const [projectsData, setProjectsData] = useState([]);\r\n const [loading, setLoading] = useState(true);\r\n const [currentObj, setCurrentObj] = useState(null);\r\n const { permissions } = usePermissionsContext();\r\n\r\n const columns = [\r\n {\r\n key: 'projectName',\r\n title: 'Project Name',\r\n },\r\n { key: 'projectDeadline', title: 'Project Deadline' },\r\n {\r\n key: 'projectDescription',\r\n title: 'Project Description',\r\n },\r\n {\r\n key: 'status',\r\n title: 'Status',\r\n },\r\n ];\r\n\r\n const deleteProject = async (id) => {\r\n try {\r\n await axios\r\n .delete(`${baseUrl}/company/project/${id}`, {\r\n headers: {\r\n Authorization: user.token,\r\n },\r\n })\r\n .then((res) => {\r\n if (res.data) {\r\n setProjectsData((prevData) =>\r\n prevData.filter((projects) => projects.projectId !== id)\r\n );\r\n notifyMessage(res.data.message, 'success');\r\n setLoading(false);\r\n } else {\r\n notifyMessage(res.data.message);\r\n setLoading(false);\r\n }\r\n });\r\n } catch {\r\n notifyMessage('Something went wrong');\r\n setLoading(false);\r\n }\r\n };\r\n\r\n const getAllProjectsData = useCallback(async () => {\r\n try {\r\n await axios\r\n .get(`${baseUrl}/company/projects/all`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n })\r\n .then((res) => {\r\n if (res.data) {\r\n setProjectsData(res.data.data);\r\n setLoading(false);\r\n }\r\n })\r\n .catch(() => {\r\n setProjectsData([]);\r\n setLoading(false);\r\n });\r\n } catch {\r\n setLoading(false);\r\n }\r\n }, [user.token]);\r\n\r\n useEffect(() => {\r\n getAllProjectsData();\r\n }, [getAllProjectsData]);\r\n\r\n const viewProjectDetails = (projectId) => {\r\n navigate(AppRelativePaths.getProjectDetails(user.companyId, projectId));\r\n };\r\n\r\n return (\r\n
\r\n {/* AddModal should be here to trigger modals */}\r\n {openModal && (\r\n \r\n )}\r\n \r\n \r\n
\r\n {\r\n getAllProjectsData();\r\n }}\r\n moduleKey=\"PROJECT_LIST\"\r\n permission=\"Edit\"\r\n headerActionButtons={[\r\n {\r\n id: 'add',\r\n icon: 'plus',\r\n label: 'Add',\r\n variant: ButtonVariants.PRIMARY,\r\n onClick: () => setOpenModal(true), // Opens the modal\r\n moduleKey: 'PROJECT_LIST',\r\n permission: 'Add',\r\n },\r\n ].filter((button) => {\r\n return hasPermission(\r\n permissions,\r\n button.moduleKey,\r\n button.permission,\r\n user\r\n );\r\n })}\r\n actionButtons={[\r\n {\r\n label: 'View',\r\n onClick: (obj) => {\r\n viewProjectDetails(obj.projectId);\r\n },\r\n variant: ButtonVariants.PRIMARY_GRAY,\r\n moduleKey: 'PROJECT_LIST',\r\n permission: 'View',\r\n },\r\n {\r\n label: 'Edit',\r\n onClick: (obj) => {\r\n setCurrentObj(obj);\r\n setOpenModal(true);\r\n },\r\n variant: ButtonVariants.PRIMARY,\r\n moduleKey: 'PROJECT_LIST',\r\n permission: 'Edit',\r\n },\r\n {\r\n label: 'Delete',\r\n onClick: (obj) => {\r\n deleteProject(obj.projectId);\r\n },\r\n variant: ButtonVariants.SECONDARY,\r\n moduleKey: 'PROJECT_LIST',\r\n permission: 'Delete',\r\n },\r\n ].filter((button) => {\r\n return hasPermission(\r\n permissions,\r\n button.moduleKey,\r\n button.permission,\r\n user\r\n );\r\n })}\r\n />\r\n {/* { },\r\n variant: ButtonVariants.PRIMARY_GRAY,\r\n },\r\n {\r\n label: 'Edit',\r\n onClick: () => { },\r\n variant: ButtonVariants.PRIMARY,\r\n },\r\n {\r\n label: 'Delete',\r\n onClick: () => { },\r\n variant: ButtonVariants.SECONDARY,\r\n },\r\n ]}\r\n /> */}\r\n\r\n {/* Reusable Confirmation Modal */}\r\n {/* */}\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import { useCallback, useEffect, useLayoutEffect, useState } from 'react';\r\nimport { useForm } from 'react-hook-form';\r\nimport { Button, Modal } from 'flowbite-react';\r\nimport axios from 'axios';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport { notifyMessage, baseUrl } from '~/utils/app.utils';\r\nimport ReactSelectField from '~/components/common/ReactSelectField';\r\nimport InputField from '~/components/common/InputField';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst AddCompanyDesignation = ({\r\n openModal,\r\n setOpenModal,\r\n fetchData,\r\n isEditMode = false,\r\n initialData = {},\r\n setCurrentObj,\r\n}) => {\r\n const {\r\n register,\r\n handleSubmit,\r\n formState: { errors },\r\n reset,\r\n setValue,\r\n control,\r\n setFocus,\r\n } = useForm();\r\n const { user } = useAuth();\r\n const [departmentData, setDepartmentData] = useState([]);\r\n\r\n useLayoutEffect(() => {\r\n if (openModal) {\r\n if (isEditMode && initialData) {\r\n const desigObj = {\r\n value: initialData?.department?.departmentId,\r\n label: initialData?.department?.departmentName,\r\n };\r\n setValue('departmentId', desigObj);\r\n setValue('designationName', initialData.designationName);\r\n } else {\r\n reset();\r\n setTimeout(() => {\r\n setFocus('designationName');\r\n }, 0);\r\n }\r\n }\r\n }, [openModal, isEditMode, initialData, setValue, reset, setFocus]);\r\n\r\n const getDepartmentData = useCallback(async () => {\r\n try {\r\n const res = await axios.get(`${baseUrl}/departments`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n });\r\n if (res.data) {\r\n const updatedData = res.data.data.map((el) => ({\r\n value: el.departmentId,\r\n label: el.departmentName,\r\n }));\r\n setDepartmentData(updatedData);\r\n }\r\n } catch {\r\n setDepartmentData([]);\r\n }\r\n }, [user.token]);\r\n\r\n useEffect(() => {\r\n getDepartmentData();\r\n }, [getDepartmentData]);\r\n\r\n const onSubmit = async (data) => {\r\n try {\r\n const endpoint = isEditMode\r\n ? `${baseUrl}/company/designation/${initialData.designationId}`\r\n : `${baseUrl}/company/designation`;\r\n const method = isEditMode ? 'put' : 'post';\r\n const res = await axios({\r\n method,\r\n url: endpoint,\r\n data: {\r\n designationName: data.designationName,\r\n departmentId: data.departmentId.value,\r\n },\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n });\r\n if (res.data.status === true) {\r\n notifyMessage(res.data.message, 'success');\r\n fetchData();\r\n reset();\r\n setCurrentObj(null);\r\n setOpenModal(false);\r\n } else {\r\n notifyMessage(res.data.message, 'error');\r\n }\r\n } catch (error) {\r\n notifyMessage(\r\n error?.response?.data?.message || 'Something went wrong!',\r\n 'error'\r\n );\r\n }\r\n };\r\n\r\n return (\r\n {\r\n reset();\r\n setCurrentObj(null);\r\n setOpenModal(false);\r\n }}\r\n dismissible\r\n >\r\n \r\n {isEditMode ? 'Edit Designation' : 'Add Designation'}\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n {\r\n reset();\r\n setCurrentObj(null);\r\n setOpenModal(false);\r\n }}\r\n >\r\n Cancel\r\n \r\n \r\n \r\n );\r\n};\r\nAddCompanyDesignation.propTypes = {\r\n openModal: PropTypes.bool,\r\n setOpenModal: PropTypes.func,\r\n fetchData: PropTypes.func,\r\n isEditMode: PropTypes.bool,\r\n initialData: PropTypes.object,\r\n setCurrentObj: PropTypes.func,\r\n};\r\nexport default AddCompanyDesignation;\r\n","import { useCallback, useEffect, useState } from 'react';\r\nimport axios from 'axios';\r\nimport { ButtonVariants } from '~/components/common/Button';\r\nimport Card from '~/components/common/Card';\r\nimport SectionHeader from '~/components/common/SectionHeader';\r\nimport DataTable from '~/components/common/DataTable';\r\nimport { notifyMessage, hasPermission, baseUrl } from '~/utils/app.utils';\r\nimport { AppRelativePaths } from '~/routes/routes.const';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport AddCompanyDesignation from '~/components/Companydesignation/AddCompanyDesignation';\r\nimport { usePermissionsContext } from '~/context/PermissionsProvider'; // Import permissions context\r\n\r\nconst breadcrumbs = [\r\n { label: 'Dashboard', link: AppRelativePaths.ADMIN_DASHBOARD },\r\n { label: 'Company Designation List', link: AppRelativePaths.LOCATION_CITIES },\r\n];\r\nexport default function CompanyDesignationList() {\r\n const [openModal, setOpenModal] = useState(false);\r\n const [designationData, setDesignationData] = useState([]);\r\n const [currentObj, setCurrentObj] = useState(null);\r\n const [loading, setLoading] = useState(true);\r\n const { user } = useAuth();\r\n const { permissions } = usePermissionsContext();\r\n\r\n const columns = [\r\n {\r\n key: 'designationName',\r\n title: 'Designation Name',\r\n },\r\n {\r\n key: 'department.departmentName',\r\n title: 'Department Name',\r\n },\r\n {\r\n key: 'company.companyName',\r\n title: 'Company Name',\r\n },\r\n ];\r\n\r\n const deletecity = async (id) => {\r\n try {\r\n await axios\r\n .delete(`${baseUrl}/company/designation/${id}`, {\r\n headers: {\r\n Authorization: user.token,\r\n },\r\n })\r\n .then((res) => {\r\n if (res.data) {\r\n setLoading(false);\r\n notifyMessage(res.data.message, 'success');\r\n setDesignationData((prevData) =>\r\n prevData.filter((items) => items.designationId !== id)\r\n );\r\n } else {\r\n notifyMessage(res.data.message);\r\n setLoading(false);\r\n }\r\n });\r\n } catch {\r\n notifyMessage('Something went wrong');\r\n }\r\n };\r\n const getDesignationData = useCallback(async () => {\r\n try {\r\n await axios\r\n .get(`${baseUrl}/company/designation/all`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n })\r\n .then((res) => {\r\n if (res.data) {\r\n setDesignationData(res.data.data);\r\n setLoading(false);\r\n }\r\n })\r\n .catch(() => {\r\n setDesignationData([]);\r\n setLoading(false);\r\n });\r\n } catch {\r\n setLoading(false);\r\n }\r\n }, [user.token]);\r\n\r\n useEffect(() => {\r\n getDesignationData();\r\n }, [getDesignationData]);\r\n\r\n return (\r\n
\r\n {/* AddModal should be here to trigger modals */}\r\n {openModal && (\r\n \r\n )}\r\n \r\n
\r\n \r\n
\r\n setOpenModal(true), // Opens the modal\r\n moduleKey: 'DESIGNATION',\r\n permission: 'Add',\r\n },\r\n ].filter((button) => {\r\n return hasPermission(\r\n permissions,\r\n button.moduleKey,\r\n button.permission,\r\n user\r\n );\r\n })}\r\n actionButtons={[\r\n {\r\n label: 'Edit',\r\n onClick: (obj) => {\r\n setCurrentObj(obj);\r\n setOpenModal(true);\r\n },\r\n variant: ButtonVariants.PRIMARY,\r\n moduleKey: 'DESIGNATION',\r\n permission: 'Edit',\r\n },\r\n {\r\n label: 'Delete',\r\n onClick: (obj) => {\r\n deletecity(obj.designationId);\r\n },\r\n variant: ButtonVariants.SECONDARY,\r\n moduleKey: 'DESIGNATION',\r\n permission: 'Delete',\r\n },\r\n ].filter((button) => {\r\n return hasPermission(\r\n permissions,\r\n button.moduleKey,\r\n button.permission,\r\n user\r\n );\r\n })}\r\n />\r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import { useEffect } from 'react';\r\nimport { useForm } from 'react-hook-form';\r\nimport { Button, Modal } from 'flowbite-react';\r\nimport axios from 'axios';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport { notifyMessage, baseUrl } from '~/utils/app.utils';\r\nimport InputField from '~/components/common/InputField';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst AddCompanyImportantDates = ({\r\n openModal,\r\n setOpenModal,\r\n fetchData,\r\n isEditMode = false,\r\n initialData = {},\r\n setCurrentObj,\r\n}) => {\r\n const {\r\n register,\r\n handleSubmit,\r\n formState: { errors },\r\n reset,\r\n setValue,\r\n setFocus,\r\n } = useForm();\r\n const { user } = useAuth();\r\n\r\n useEffect(() => {\r\n if (openModal) {\r\n if (isEditMode && initialData?.importantDateName) {\r\n const datePart = new Date(initialData.importantDate)\r\n .toISOString()\r\n .split('T')[0];\r\n setValue('importantDate', datePart);\r\n setValue('importantDateName', initialData.importantDateName);\r\n setValue('importantDateRemarks', initialData.importantDateRemarks);\r\n } else {\r\n // Use setTimeout to ensure the modal is fully rendered before focusing\r\n setTimeout(() => {\r\n setFocus('country');\r\n }, 0);\r\n }\r\n }\r\n }, [openModal, isEditMode, initialData, setValue, setFocus]);\r\n\r\n const onSubmit = async (data) => {\r\n const selectedDate = data.importantDate; // Example: \"2024-12-28\"\r\n const isoDateTime = new Date(selectedDate).toISOString();\r\n try {\r\n const endpoint = isEditMode\r\n ? `${baseUrl}/company/importantdate/${initialData.importantDateId}`\r\n : `${baseUrl}/company/importantdate`;\r\n const method = isEditMode ? 'put' : 'post';\r\n\r\n await axios({\r\n method,\r\n url: endpoint,\r\n data: {\r\n importantDateName: data.importantDateName,\r\n importantDate: isoDateTime,\r\n importantDateRemarks: data.importantDateRemarks,\r\n },\r\n\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }).then((res) => {\r\n if (res.data.status === true) {\r\n notifyMessage(res.data.message, 'success');\r\n fetchData();\r\n reset();\r\n setCurrentObj(null);\r\n setOpenModal(false);\r\n } else {\r\n notifyMessage(res.data.message, 'error');\r\n }\r\n });\r\n } catch (error) {\r\n notifyMessage(\r\n error?.response?.data?.message || 'Something went wrong!',\r\n 'error'\r\n );\r\n }\r\n };\r\n\r\n return (\r\n {\r\n setOpenModal(false);\r\n reset();\r\n setCurrentObj(null);\r\n }}\r\n dismissible\r\n >\r\n \r\n {isEditMode ? 'Edit Important Date' : 'Add Important Date'}\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n Important Date*\r\n \r\n \r\n {errors.importantDate && (\r\n

\r\n {errors.importantDate.message}\r\n

\r\n )}\r\n
\r\n\r\n \r\n \r\n
\r\n \r\n \r\n {\r\n setOpenModal(false);\r\n reset();\r\n setCurrentObj(null);\r\n }}\r\n >\r\n Cancel\r\n \r\n \r\n \r\n );\r\n};\r\nAddCompanyImportantDates.propTypes = {\r\n openModal: PropTypes.bool,\r\n setOpenModal: PropTypes.func,\r\n fetchData: PropTypes.func,\r\n isEditMode: PropTypes.bool,\r\n initialData: PropTypes.shape({\r\n importantDateId: PropTypes.number,\r\n importantDateName: PropTypes.string,\r\n importantDate: PropTypes.string,\r\n importantDateRemarks: PropTypes.string,\r\n }),\r\n setCurrentObj: PropTypes.func,\r\n};\r\n\r\nAddCompanyImportantDates.defaultProps = {\r\n isEditMode: false,\r\n initialData: {},\r\n};\r\n\r\nexport default AddCompanyImportantDates;\r\n","import { ButtonVariants } from '~/components/common/Button';\r\nimport Card from '~/components/common/Card';\r\nimport SectionHeader from '~/components/common/SectionHeader';\r\nimport DataTable from '~/components/common/DataTable';\r\nimport { AppRelativePaths } from '~/routes/routes.const';\r\nimport { useCallback, useEffect, useState } from 'react';\r\nimport axios from 'axios';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport { notifyMessage, hasPermission, baseUrl } from '~/utils/app.utils';\r\nimport AddCompanyImportantDates from '~/components/companyImportantDates/AddCompanyImportantDates';\r\nimport { usePermissionsContext } from '~/context/PermissionsProvider'; // Import permissions context\r\n\r\nconst breadcrumbs = [\r\n { label: 'Dashboard', link: AppRelativePaths.ADMIN_DASHBOARD },\r\n { label: 'important Date List', link: AppRelativePaths.LOCATION_COUNTRIES },\r\n];\r\n\r\nexport default function CompanyImportantDates() {\r\n const [openModal, setOpenModal] = useState(false);\r\n const [importantDateData, setimportantDateData] = useState([]);\r\n const [currentObj, setCurrentObj] = useState(null);\r\n const { user } = useAuth();\r\n const { permissions } = usePermissionsContext();\r\n const [loading, setLoading] = useState(true);\r\n const columns = [\r\n {\r\n key: 'importantDateName',\r\n title: 'ImportantDate Name',\r\n },\r\n {\r\n key: 'importantDate',\r\n title: 'importantDate',\r\n },\r\n {\r\n key: 'importantDateRemarks',\r\n title: 'ImportantDate Remarks',\r\n },\r\n ];\r\n\r\n const deleteimportantDate = async (id) => {\r\n try {\r\n await axios\r\n .delete(`${baseUrl}/company/importantdate/${id}`, {\r\n headers: {\r\n Authorization: user.token,\r\n },\r\n })\r\n .then((res) => {\r\n if (res.data) {\r\n setimportantDateData((prevData) =>\r\n prevData.filter(\r\n (importantDate) => importantDate.importantDateId !== id\r\n )\r\n );\r\n setLoading(false);\r\n notifyMessage(res.data.message, 'success');\r\n } else {\r\n notifyMessage(res.data.message);\r\n setLoading(false);\r\n }\r\n });\r\n } catch {\r\n notifyMessage('Something went wrong');\r\n }\r\n };\r\n const getimportantDateData = useCallback(async () => {\r\n try {\r\n await axios\r\n .get(`${baseUrl}/company/importantdate/all`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n })\r\n .then((res) => {\r\n if (res.data) {\r\n setimportantDateData(res.data.data);\r\n setLoading(false);\r\n }\r\n })\r\n .catch(() => {\r\n setimportantDateData([]);\r\n setLoading(false);\r\n });\r\n } catch {\r\n setLoading(false);\r\n }\r\n }, [user.token]);\r\n\r\n useEffect(() => {\r\n getimportantDateData();\r\n }, [getimportantDateData]);\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n setOpenModal(true), // Opens the modal\r\n moduleKey: 'IMPORTANT_DATE',\r\n permission: 'Add',\r\n },\r\n ].filter((button) => {\r\n return hasPermission(\r\n permissions,\r\n button.moduleKey,\r\n button.permission,\r\n user\r\n );\r\n })}\r\n actionButtons={[\r\n {\r\n label: 'Edit',\r\n onClick: (obj) => {\r\n setCurrentObj(obj);\r\n setOpenModal(true);\r\n },\r\n variant: ButtonVariants.PRIMARY,\r\n moduleKey: 'IMPORTANT_DATE',\r\n permission: 'Edit',\r\n },\r\n {\r\n label: 'Delete',\r\n onClick: (obj) => {\r\n deleteimportantDate(obj.importantDateId);\r\n },\r\n variant: ButtonVariants.SECONDARY,\r\n moduleKey: 'IMPORTANT_DATE',\r\n permission: 'Delete',\r\n },\r\n ].filter((button) => {\r\n return hasPermission(\r\n permissions,\r\n button.moduleKey,\r\n button.permission,\r\n user\r\n );\r\n })}\r\n />\r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import { useCallback, useEffect, useState } from 'react';\r\nimport PropTypes from 'prop-types'; // Import PropTypes\r\nimport { useForm } from 'react-hook-form';\r\nimport { Button, Modal } from 'flowbite-react';\r\nimport axios from 'axios';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport { notifyMessage, baseUrl } from '~/utils/app.utils';\r\nimport ReactSelectField from '~/components/common/ReactSelectField';\r\nimport InputField from '~/components/common/InputField';\r\nimport MobileNumberInputField from '~/components/common/MobileNumberInputField';\r\n\r\nconst AddCompanyEmployee = ({\r\n openModal,\r\n setOpenModal,\r\n fetchData,\r\n isEditMode = false,\r\n initialData = {},\r\n setCurrentObj,\r\n}) => {\r\n const {\r\n register,\r\n handleSubmit,\r\n formState: { errors },\r\n reset,\r\n control,\r\n } = useForm();\r\n const { user } = useAuth();\r\n const [departmentData, setDepartmentData] = useState([]);\r\n const [designationData, setDesignationData] = useState([]);\r\n const [employees, setEmployees] = useState([]);\r\n const [countryCode, setCountryCode] = useState('+91');\r\n\r\n const getDepartmentData = useCallback(async () => {\r\n try {\r\n const res = await axios.get(`${baseUrl}/departments`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n });\r\n if (res.data) {\r\n const updatedData = res.data.data.map((el) => ({\r\n value: el.departmentId,\r\n label: el.departmentName,\r\n }));\r\n setDepartmentData(updatedData);\r\n }\r\n } catch {\r\n setDepartmentData([]);\r\n }\r\n }, [user.token]);\r\n\r\n const getDesignationData = useCallback(async () => {\r\n try {\r\n const res = await axios.get(`${baseUrl}/company/designation/all`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n });\r\n if (res.data) {\r\n const updatedData = res.data.data.map((el) => ({\r\n value: el.designationId,\r\n label: el.designationName,\r\n }));\r\n setDesignationData(updatedData);\r\n }\r\n } catch {\r\n setDesignationData([]);\r\n }\r\n }, [user.token]);\r\n const getEmployeeData = useCallback(async () => {\r\n try {\r\n const res = await axios.get(`${baseUrl}/company/employee/all`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n });\r\n if (res.data) {\r\n const updatedData = res.data.data.map((el) => ({\r\n value: el.employeeId,\r\n label: el.employeeName,\r\n }));\r\n setEmployees(updatedData);\r\n }\r\n } catch {\r\n setEmployees([]);\r\n }\r\n }, [user.token]);\r\n\r\n const getCompanyEmployeeById = useCallback(async () => {\r\n if (!initialData?.employeeId) return;\r\n\r\n try {\r\n const res = await axios.get(\r\n `${baseUrl}/company/employee/${initialData.employeeId}`,\r\n {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }\r\n );\r\n\r\n if (res.data) {\r\n const de = res.data.data;\r\n const countryCode = de.employeeMobile?.match(/^\\+91/)?.[0] ?? '+91';\r\n const mobileNo = de.employeeMobile?.replace(/^\\+91/, '');\r\n\r\n setCountryCode(countryCode);\r\n reset({\r\n employeeName: de.employeeName,\r\n employeeEmail: de.employeeEmail,\r\n employeeMobile: mobileNo,\r\n reportingManagerId: de.reportingManager\r\n ? {\r\n value: de.reportingManager.employeeId,\r\n label: de.reportingManager.employeeName,\r\n }\r\n : null,\r\n departmentId: de.department\r\n ? {\r\n value: de.department.departmentId,\r\n label: de.department.departmentName,\r\n }\r\n : null,\r\n designationId: de.designation\r\n ? {\r\n value: de.designation.designationId,\r\n label: de.designation.designationName,\r\n }\r\n : null,\r\n });\r\n }\r\n } catch {\r\n notifyMessage('Something went wrong!', 'error');\r\n }\r\n }, [initialData?.employeeId, reset, user.token]);\r\n\r\n useEffect(() => {\r\n getDepartmentData();\r\n getEmployeeData();\r\n getDesignationData();\r\n if (isEditMode) {\r\n getCompanyEmployeeById();\r\n }\r\n }, [\r\n getCompanyEmployeeById,\r\n getDepartmentData,\r\n getDesignationData,\r\n getEmployeeData,\r\n isEditMode,\r\n ]);\r\n\r\n const onSubmit = async (data) => {\r\n try {\r\n const endpoint = isEditMode\r\n ? `${baseUrl}/company/employee/${initialData.employeeId}`\r\n : `${baseUrl}/company/employee`;\r\n const method = isEditMode ? 'put' : 'post';\r\n const saveObject = {\r\n employeeName: data.employeeName,\r\n employeeEmail: data.employeeEmail,\r\n employeeMobile: countryCode + data.employeeMobile,\r\n departmentId: data.departmentId.value,\r\n designationId: data.designationId.value,\r\n reportingManagerId: data.reportingManagerId.value,\r\n };\r\n\r\n const res = await axios({\r\n method,\r\n url: endpoint,\r\n data: saveObject,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n });\r\n if (res.data.status === true) {\r\n notifyMessage(res.data.message, 'success');\r\n fetchData();\r\n reset();\r\n setCurrentObj(null);\r\n setOpenModal(false);\r\n } else {\r\n notifyMessage(res.data.message, 'error');\r\n }\r\n } catch (error) {\r\n setOpenModal(false);\r\n\r\n notifyMessage(\r\n error?.response?.data?.message || 'Something went wrong!',\r\n 'error'\r\n );\r\n }\r\n };\r\n\r\n return (\r\n {\r\n reset();\r\n setCurrentObj(null);\r\n setOpenModal(false);\r\n }}\r\n dismissible\r\n >\r\n \r\n {isEditMode ? 'Edit Employee' : 'Add Employee'}\r\n \r\n \r\n
\r\n \r\n \r\n\r\n {/* Mobile Number Input */}\r\n \r\n\r\n \r\n\r\n \r\n {employees.length > 0 && (\r\n \r\n )}\r\n \r\n
\r\n \r\n \r\n {\r\n reset();\r\n setCurrentObj(null);\r\n setOpenModal(false);\r\n }}\r\n >\r\n Cancel\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nAddCompanyEmployee.propTypes = {\r\n openModal: PropTypes.bool,\r\n setOpenModal: PropTypes.func,\r\n fetchData: PropTypes.func,\r\n isEditMode: PropTypes.bool,\r\n initialData: PropTypes.object,\r\n setCurrentObj: PropTypes.func,\r\n};\r\n\r\nexport default AddCompanyEmployee;\r\n","import { useEffect, useState, useMemo, useCallback } from 'react';\r\nimport axios from 'axios';\r\nimport { ButtonVariants } from '~/components/common/Button';\r\nimport Card from '~/components/common/Card';\r\nimport SectionHeader from '~/components/common/SectionHeader';\r\nimport DataTable from '~/components/common/DataTable';\r\nimport { AppRelativePaths } from '~/routes/routes.const';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport { notifyMessage, hasPermission, baseUrl } from '~/utils/app.utils';\r\nimport AddCompanyEmployee from '~/components/CompanyEmployee/AddCompanyEmployee';\r\nimport { usePermissionsContext } from '~/context/PermissionsProvider'; // Import permissions context\r\n\r\nexport default function CompanyEmployee() {\r\n const [openModal, setOpenModal] = useState(false);\r\n const [countryData, setCountryData] = useState([]);\r\n const [currentObj, setCurrentObj] = useState(null);\r\n const { user } = useAuth();\r\n const [loading, setLoading] = useState(true);\r\n const { permissions } = usePermissionsContext();\r\n\r\n const breadcrumbs = useMemo(\r\n () => [\r\n { label: 'Dashboard', link: AppRelativePaths.ADMIN_DASHBOARD },\r\n { label: 'Employee List', link: AppRelativePaths.LOCATION_COUNTRIES },\r\n ],\r\n []\r\n );\r\n\r\n const columns = useMemo(\r\n () => [\r\n { key: 'employeeName', title: 'Employee Name' },\r\n { key: 'employeeEmail', title: 'Employee Email' },\r\n { key: 'employeeMobile', title: 'Employee Mobile' },\r\n ],\r\n []\r\n );\r\n\r\n const getCountryData = useCallback(async () => {\r\n try {\r\n const res = await axios.get(`${baseUrl}/company/employee/all`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n });\r\n if (res.data) {\r\n setCountryData(res.data.data);\r\n }\r\n } catch {\r\n setCountryData([]);\r\n } finally {\r\n setLoading(false);\r\n }\r\n }, [user.token]);\r\n\r\n const deleteCountry = useCallback(\r\n async (id) => {\r\n try {\r\n const res = await axios.delete(`${baseUrl}/company/employee/${id}`, {\r\n headers: { Authorization: user.token },\r\n });\r\n if (res.data) {\r\n setCountryData((prevData) =>\r\n prevData.filter((employee) => employee.employeeId !== id)\r\n );\r\n notifyMessage(res.data.message, 'success');\r\n } else {\r\n notifyMessage(res.data.message);\r\n }\r\n } catch {\r\n notifyMessage('Something went wrong');\r\n }\r\n },\r\n [user.token]\r\n );\r\n\r\n useEffect(() => {\r\n getCountryData();\r\n }, [getCountryData]);\r\n\r\n const headerActionButtons = useMemo(\r\n () =>\r\n [\r\n {\r\n id: 'add',\r\n icon: 'plus',\r\n label: 'Add',\r\n variant: ButtonVariants.PRIMARY,\r\n onClick: () => setOpenModal(true),\r\n moduleKey: 'EMPLOYEE',\r\n permission: 'Add',\r\n },\r\n ].filter((button) => {\r\n return hasPermission(\r\n permissions,\r\n button.moduleKey,\r\n button.permission,\r\n user\r\n );\r\n }),\r\n [setOpenModal, permissions, user]\r\n );\r\n\r\n const actionButtons = useMemo(\r\n () =>\r\n [\r\n {\r\n label: 'Edit',\r\n onClick: (obj) => {\r\n setCurrentObj(obj);\r\n setOpenModal(true);\r\n },\r\n variant: ButtonVariants.PRIMARY,\r\n moduleKey: 'EMPLOYEE',\r\n permission: 'Edit',\r\n },\r\n {\r\n label: 'Delete',\r\n onClick: (obj) => deleteCountry(obj.employeeId),\r\n variant: ButtonVariants.SECONDARY,\r\n moduleKey: 'EMPLOYEE',\r\n permission: 'Delete',\r\n },\r\n ].filter((button) => {\r\n return hasPermission(\r\n permissions,\r\n button.moduleKey,\r\n button.permission,\r\n user\r\n );\r\n }),\r\n [setCurrentObj, setOpenModal, deleteCountry, permissions, user]\r\n );\r\n\r\n return (\r\n
\r\n {openModal && (\r\n \r\n )}\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import { useCallback, useEffect, useState } from 'react';\r\nimport { useForm } from 'react-hook-form';\r\nimport { Button, Modal } from 'flowbite-react';\r\nimport axios from 'axios';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport { notifyMessage, convertToLocalDate, baseUrl } from '~/utils/app.utils';\r\nimport ReactSelectField from '~/components/common/ReactSelectField';\r\nimport InputField from '~/components/common/InputField';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst AddMeeting = ({\r\n openModal,\r\n setOpenModal,\r\n fetchData,\r\n isEditMode = false,\r\n initialData = {},\r\n setCurrentObj,\r\n}) => {\r\n const {\r\n register,\r\n handleSubmit,\r\n formState: { errors },\r\n reset,\r\n control,\r\n } = useForm();\r\n const { user } = useAuth();\r\n const [meetingTypeData, setMeetingTypeData] = useState([]);\r\n const [meetingStatusData, setMeetingStatusData] = useState([]);\r\n const [employeeData, setEmployeeData] = useState([]);\r\n\r\n const getMeetingstatusData = useCallback(async () => {\r\n try {\r\n await axios\r\n .get(`${baseUrl}/meetingstatus`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n })\r\n .then((res) => {\r\n if (res.data) {\r\n const de = res.data.data;\r\n const updatedData = de.map((el) => {\r\n return {\r\n value: el.meetingStatusId,\r\n label: el.meetingStatus,\r\n };\r\n });\r\n setMeetingStatusData(updatedData);\r\n }\r\n })\r\n .catch(() => {\r\n setMeetingStatusData([]);\r\n });\r\n } catch {\r\n notifyMessage('Something went wrong!', 'error');\r\n }\r\n }, [user.token]);\r\n\r\n const getMeetingTypeData = useCallback(async () => {\r\n try {\r\n await axios\r\n .get(`${baseUrl}/meetingTypes`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n })\r\n .then((res) => {\r\n if (res.data) {\r\n const de = res.data.data;\r\n const updatedData = de.map((el) => {\r\n return {\r\n value: el.meetingTypeId,\r\n label: el.meetingTypeName,\r\n };\r\n });\r\n setMeetingTypeData(updatedData);\r\n }\r\n })\r\n .catch(() => {\r\n setMeetingTypeData([]);\r\n });\r\n } catch {\r\n notifyMessage('Something went wrong!', 'error');\r\n }\r\n }, [user.token]);\r\n const getEmployeesData = useCallback(async () => {\r\n try {\r\n await axios\r\n .get(`${baseUrl}/company/employee/all`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n })\r\n .then((res) => {\r\n if (res.data) {\r\n const de = res.data.data;\r\n const updatedData = de\r\n ?.filter((item) => item.employeeId != user.employeeId)\r\n .map((el) => {\r\n return {\r\n value: el.employeeId,\r\n label: `${el.employeeName} (${el.employeeMobile})`,\r\n };\r\n });\r\n setEmployeeData(updatedData);\r\n }\r\n })\r\n .catch(() => {\r\n setEmployeeData([]);\r\n });\r\n } catch {\r\n notifyMessage('Something went wrong!', 'error');\r\n }\r\n }, [user.employeeId, user.token]);\r\n\r\n const getMeetingById = useCallback(async () => {\r\n try {\r\n await axios\r\n .get(`${baseUrl}/meeting/${initialData.meetingId}`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n })\r\n .then((res) => {\r\n if (res.data) {\r\n const de = res.data.data;\r\n // Reset the form with the data from the API\r\n reset({\r\n meetingName: de.meetingName,\r\n meetingDescription: de.meetingDescription,\r\n meetingDateTime: convertToLocalDate(de.meetingDateTime),\r\n meetingType: {\r\n value: de.meetingType.meetingTypeId,\r\n label: de.meetingType.meetingTypeName,\r\n },\r\n meetingStatus: {\r\n value: de.meetingStatus.meetingStatusId,\r\n label: de.meetingStatus.meetingStatus,\r\n },\r\n joiners: de.joiners.map((el) => {\r\n return {\r\n value: el.companyEmployee.employeeId,\r\n label: `${el.companyEmployee.employeeName} (${el.companyEmployee.employeeMobile})`,\r\n };\r\n }),\r\n });\r\n }\r\n })\r\n .catch(() => {});\r\n } catch {\r\n notifyMessage('Something went wrong!', 'error');\r\n }\r\n }, [initialData.meetingId, reset, user.token]);\r\n\r\n useEffect(() => {\r\n getMeetingstatusData();\r\n getMeetingTypeData();\r\n getEmployeesData();\r\n if (isEditMode) {\r\n getMeetingById();\r\n }\r\n }, [\r\n getEmployeesData,\r\n getMeetingById,\r\n getMeetingTypeData,\r\n getMeetingstatusData,\r\n isEditMode,\r\n ]);\r\n\r\n const onSubmit = async (data) => {\r\n try {\r\n const endpoint = isEditMode\r\n ? `${baseUrl}/meeting/${initialData.meetingId}`\r\n : `${baseUrl}/meeting`;\r\n const method = isEditMode ? 'put' : 'post';\r\n\r\n const saveObj = {\r\n meetingName: data.meetingName,\r\n meetingDescription: data.meetingDescription,\r\n meetingDateTime: new Date(data.meetingDateTime),\r\n meetingTypeId: data.meetingType.value,\r\n meetingStatusId: data.meetingStatus.value,\r\n joiners: data.joiners.map((el) => el.value),\r\n };\r\n await axios({\r\n method,\r\n url: endpoint,\r\n data: saveObj,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }).then((res) => {\r\n if (res.data.status === true) {\r\n notifyMessage(res.data.message, 'success');\r\n fetchData();\r\n reset();\r\n setCurrentObj(null);\r\n setOpenModal(false);\r\n } else {\r\n notifyMessage(res.data.message, 'error');\r\n }\r\n });\r\n } catch (error) {\r\n setOpenModal(false);\r\n\r\n notifyMessage(\r\n error?.response?.data?.message || 'Something went wrong!',\r\n 'error'\r\n );\r\n }\r\n };\r\n\r\n return (\r\n {\r\n reset();\r\n setCurrentObj(null);\r\n setOpenModal(false);\r\n }}\r\n dismissible\r\n >\r\n {isEditMode ? 'Edit Meeting' : 'Add Meeting'}\r\n \r\n
\r\n \r\n
\r\n {/* meetingDescription */}\r\n \r\n
\r\n
\r\n {/* meetingDateTime */}\r\n \r\n Meeting Date Time*\r\n \r\n \r\n {errors.meetingDateTime && (\r\n

\r\n {errors.meetingDateTime.message}\r\n

\r\n )}\r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n
\r\n \r\n \r\n {\r\n reset();\r\n setCurrentObj(null);\r\n setOpenModal(false);\r\n }}\r\n >\r\n Cancel\r\n \r\n \r\n \r\n );\r\n};\r\nAddMeeting.propTypes = {\r\n openModal: PropTypes.bool,\r\n setOpenModal: PropTypes.func,\r\n fetchData: PropTypes.func,\r\n isEditMode: PropTypes.bool,\r\n initialData: PropTypes.object,\r\n setCurrentObj: PropTypes.func,\r\n};\r\nexport default AddMeeting;\r\n","import { ButtonVariants } from '~/components/common/Button';\r\nimport Card from '~/components/common/Card';\r\nimport SectionHeader from '~/components/common/SectionHeader';\r\nimport DataTable from '~/components/common/DataTable';\r\nimport { AppRelativePaths } from '~/routes/routes.const';\r\nimport { useCallback, useEffect, useState } from 'react';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport axios from 'axios';\r\nimport { notifyMessage, hasPermission, baseUrl } from '~/utils/app.utils';\r\nimport AddMeeting from '~/components/Meeting/AddMeeting';\r\nimport { usePermissionsContext } from '~/context/PermissionsProvider'; // Import permissions context\r\n\r\nconst breadcrumbs = [\r\n { label: 'Dashboard', link: AppRelativePaths.ADMIN_DASHBOARD },\r\n { label: 'Meeting List', link: AppRelativePaths.MEETING_LIST },\r\n];\r\n\r\nexport default function MeetingList() {\r\n const [openModal, setOpenModal] = useState(false);\r\n const [meetingData, setMeetingData] = useState([]);\r\n const [currentObj, setCurrentObj] = useState(null);\r\n const [loading, setLoading] = useState(true);\r\n const { user } = useAuth();\r\n const { permissions } = usePermissionsContext();\r\n\r\n const columns = [\r\n {\r\n key: 'meetingName',\r\n title: 'Meeting Name',\r\n },\r\n {\r\n key: 'meetingDescription',\r\n title: 'Meeting Description',\r\n },\r\n {\r\n key: 'meetingDateTime',\r\n title: 'Meeting TIme',\r\n },\r\n ];\r\n\r\n const deleteMeeting = async (id) => {\r\n try {\r\n await axios\r\n .delete(`${baseUrl}/meeting/${id}`, {\r\n headers: {\r\n Authorization: user.token,\r\n },\r\n })\r\n .then((res) => {\r\n if (res.data) {\r\n setMeetingData((prevData) =>\r\n prevData.filter((meeting) => meeting.meetingId !== id)\r\n );\r\n\r\n notifyMessage(res.data.message, 'success');\r\n setLoading(false);\r\n } else {\r\n notifyMessage(res.data.message);\r\n setLoading(false);\r\n }\r\n });\r\n } catch {\r\n notifyMessage('Something went wrong');\r\n setLoading(false);\r\n }\r\n };\r\n const getMeetingData = useCallback(async () => {\r\n try {\r\n await axios\r\n .get(`${baseUrl}/meeting/all`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n })\r\n .then((res) => {\r\n if (res.data) {\r\n setMeetingData(res.data.data);\r\n setLoading(false);\r\n }\r\n })\r\n .catch(() => {\r\n setMeetingData([]);\r\n setLoading(false);\r\n });\r\n } catch {\r\n setLoading(false);\r\n }\r\n }, [user.token]);\r\n\r\n useEffect(() => {\r\n getMeetingData();\r\n }, [getMeetingData]);\r\n\r\n return (\r\n
\r\n {/* AddModal should be here to trigger modals */}\r\n {openModal && (\r\n \r\n )}\r\n \r\n
\r\n \r\n
\r\n setOpenModal(true), // Opens the modal\r\n moduleKey: 'MEETING_LIST',\r\n permission: 'Add',\r\n },\r\n ].filter((button) => {\r\n return hasPermission(\r\n permissions,\r\n button.moduleKey,\r\n button.permission,\r\n user\r\n );\r\n })}\r\n actionButtons={[\r\n {\r\n label: 'Edit',\r\n onClick: (obj) => {\r\n setCurrentObj(obj);\r\n setOpenModal(true);\r\n },\r\n variant: ButtonVariants.PRIMARY,\r\n moduleKey: 'MEETING_LIST',\r\n permission: 'Edit',\r\n },\r\n {\r\n label: 'Delete',\r\n onClick: (obj) => {\r\n deleteMeeting(obj.meetingId);\r\n },\r\n variant: ButtonVariants.SECONDARY,\r\n moduleKey: 'MEETING_LIST',\r\n permission: 'Delete',\r\n },\r\n ].filter((button) => {\r\n return hasPermission(\r\n permissions,\r\n button.moduleKey,\r\n button.permission,\r\n user\r\n );\r\n })}\r\n />\r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import { ButtonVariants } from '~/components/common/Button';\r\nimport Card from '~/components/common/Card';\r\nimport SectionHeader from '~/components/common/SectionHeader';\r\nimport DataTable from '~/components/common/DataTable';\r\nimport { AppRelativePaths } from '~/routes/routes.const';\r\nimport { useCallback, useEffect, useState } from 'react';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport axios from 'axios';\r\nimport { notifyMessage, hasPermission, baseUrl } from '~/utils/app.utils';\r\nimport AddCompanyTask from '~/components/CompanyTask/AddCompanyTask';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport { usePermissionsContext } from '~/context/PermissionsProvider'; // Import permissions context\r\n\r\nconst breadcrumbs = [\r\n { label: 'Dashboard', link: AppRelativePaths.ADMIN_DASHBOARD },\r\n { label: 'Company Task List', link: AppRelativePaths.ALL_TASKS },\r\n];\r\n\r\nexport default function CompanyTaskList() {\r\n const [openModal, setOpenModal] = useState(false);\r\n const [taskData, setTaskData] = useState([]);\r\n const [currentObj, setCurrentObj] = useState(null);\r\n const [loading, setLoading] = useState(true);\r\n const { user } = useAuth();\r\n const navigate = useNavigate();\r\n const { permissions } = usePermissionsContext();\r\n const columns = [\r\n {\r\n key: 'taskName',\r\n title: 'Task Name',\r\n },\r\n {\r\n key: 'taskDescription',\r\n title: 'Task Description',\r\n },\r\n {\r\n key: 'taskDeadline',\r\n title: 'Task Deadline',\r\n },\r\n {\r\n key: 'status',\r\n title: 'Status',\r\n },\r\n ];\r\n\r\n const deleteTask = async (id) => {\r\n try {\r\n await axios\r\n .delete(`${baseUrl}/company/task/${id}`, {\r\n headers: {\r\n Authorization: user.token,\r\n },\r\n })\r\n .then((res) => {\r\n if (res.data) {\r\n setTaskData((prevData) =>\r\n prevData.filter((items) => items.taskId !== id)\r\n );\r\n notifyMessage(res.data.message, 'success');\r\n setLoading(false);\r\n } else {\r\n notifyMessage(res.data.message);\r\n setLoading(false);\r\n }\r\n });\r\n } catch {\r\n notifyMessage('Something went wrong');\r\n setLoading(false);\r\n }\r\n };\r\n const getAllTaskData = useCallback(async () => {\r\n try {\r\n await axios\r\n .get(`${baseUrl}/company/tasks/employee`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n })\r\n .then((res) => {\r\n if (res.data) {\r\n setTaskData(res.data.data);\r\n setLoading(false);\r\n }\r\n })\r\n .catch(() => {\r\n setTaskData([]);\r\n setLoading(false);\r\n });\r\n } catch {\r\n setLoading(false);\r\n }\r\n }, [user.token]);\r\n\r\n const viewTaskDetails = (taskId) => {\r\n navigate(AppRelativePaths.getProjectTaskDetails(taskId));\r\n };\r\n\r\n useEffect(() => {\r\n getAllTaskData();\r\n }, [getAllTaskData]);\r\n\r\n return (\r\n
\r\n {/* AddModal should be here to trigger modals */}\r\n {openModal && (\r\n \r\n )}\r\n \r\n
\r\n \r\n
\r\n {\r\n getAllTaskData();\r\n }}\r\n moduleKey=\"TASK\"\r\n permission=\"Edit\"\r\n headerActionButtons={[\r\n {\r\n id: 'add',\r\n icon: 'plus',\r\n label: 'Add',\r\n variant: ButtonVariants.PRIMARY,\r\n onClick: () => setOpenModal(true), // Opens the modal\r\n moduleKey: 'TASK',\r\n permission: 'Add',\r\n },\r\n ].filter((button) => {\r\n return hasPermission(\r\n permissions,\r\n button.moduleKey,\r\n button.permission,\r\n user\r\n );\r\n })}\r\n actionButtons={[\r\n {\r\n label: 'View',\r\n onClick: (obj) => {\r\n viewTaskDetails(obj.taskId);\r\n },\r\n variant: ButtonVariants.PRIMARY_GRAY,\r\n moduleKey: 'TASK',\r\n permission: 'View',\r\n },\r\n {\r\n label: 'Edit',\r\n onClick: (obj) => {\r\n setCurrentObj(obj);\r\n setOpenModal(true);\r\n },\r\n variant: ButtonVariants.PRIMARY,\r\n moduleKey: 'TASK',\r\n permission: 'Edit',\r\n },\r\n {\r\n label: 'Delete',\r\n onClick: (obj) => {\r\n deleteTask(obj.taskId);\r\n },\r\n variant: ButtonVariants.SECONDARY,\r\n moduleKey: 'TASK',\r\n permission: 'Delete',\r\n },\r\n ].filter((button) => {\r\n return hasPermission(\r\n permissions,\r\n button.moduleKey,\r\n button.permission,\r\n user\r\n );\r\n })}\r\n />\r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import { useCallback, useEffect, useMemo, useState } from 'react';\r\nimport { useForm } from 'react-hook-form';\r\nimport { Button, Modal } from 'flowbite-react';\r\nimport axios from 'axios';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport { notifyMessage, baseUrl } from '~/utils/app.utils';\r\nimport InputField from '~/components/common/InputField';\r\nimport ReactSelectField from '~/components/common/ReactSelectField';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst AddDataPoint = ({\r\n openModal,\r\n setOpenModal,\r\n fetchData,\r\n isEditMode = false,\r\n initialData = {},\r\n setCurrentObj,\r\n}) => {\r\n const {\r\n register,\r\n handleSubmit,\r\n formState: { errors },\r\n reset,\r\n control,\r\n watch,\r\n setValue,\r\n } = useForm({\r\n defaultValues: {\r\n validationType: '', // Ensure validationType has an initial value\r\n },\r\n });\r\n const { user } = useAuth();\r\n const [KPIList, setKPIList] = useState([]);\r\n const selectedValidationType = watch('validationType')?.value || '';\r\n const value1 = watch('value1');\r\n\r\n const validationTypeList = useMemo(\r\n () => [\r\n { value: 'EQUAL_TO', label: 'Equal to' },\r\n { value: 'GREATER_THAN_OR_EQUAL_TO', label: 'Greater than or equal to' },\r\n { value: 'GREATER_THAN', label: 'Greater than' },\r\n { value: 'BETWEEN', label: 'Between' },\r\n { value: 'LESS_THAN_OR_EQUAL_TO', label: 'Less than or equal to' },\r\n { value: 'LESS_THAN', label: 'Less than' },\r\n ],\r\n [] // Empty dependency array means it will only be created once and never re-created\r\n );\r\n const getKPIList = useCallback(async () => {\r\n try {\r\n const res = await axios.get(`${baseUrl}/company/kpi/all`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n });\r\n if (res.data) {\r\n const updatedData = res.data.data.map((el) => ({\r\n value: el.KPIMasterId,\r\n label: `${el.KPIName} (${el.KPILabel})`,\r\n KPIName: el.KPIName,\r\n KPILabel: el.KPILabel,\r\n }));\r\n setKPIList(updatedData);\r\n }\r\n } catch {\r\n setKPIList([]);\r\n }\r\n }, [user.token]);\r\n\r\n useEffect(() => {\r\n getKPIList();\r\n }, [getKPIList]);\r\n\r\n const getDataPointById = useCallback(async () => {\r\n try {\r\n await axios\r\n .get(`${baseUrl}/datapoint/${initialData.dataPointId}`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n })\r\n .then((res) => {\r\n if (res.data) {\r\n const de = res.data.data;\r\n // Reset the form with the data from the API\r\n reset({\r\n Kpis: {\r\n value: de?.KPIMaster?.KPIMasterId,\r\n label: `${de?.KPIMaster?.KPIName} (${de?.KPIMaster?.KPILabel})`,\r\n KPIName: de?.KPIMaster?.KPIName,\r\n KPILabel: de?.KPIMaster?.KPILabel,\r\n },\r\n validationType: validationTypeList.find(\r\n (item) => item.value === de.validationType\r\n ),\r\n value1: de.value1,\r\n value2: de.validationType === 'BETWEEN' ? de.value2 : 0,\r\n });\r\n }\r\n })\r\n .catch(() => {});\r\n } catch {\r\n notifyMessage('Something went wrong!', 'error');\r\n }\r\n }, [initialData.dataPointId, reset, user.token, validationTypeList]);\r\n\r\n useEffect(() => {\r\n if (isEditMode) {\r\n getDataPointById();\r\n }\r\n }, [getDataPointById, isEditMode]);\r\n\r\n useEffect(() => {\r\n if (selectedValidationType !== 'BETWEEN') {\r\n setValue('value2', 0); // Reset value2 to 0\r\n }\r\n }, [selectedValidationType, setValue]);\r\n\r\n const onSubmit = async (data) => {\r\n try {\r\n const endpoint = isEditMode\r\n ? `${baseUrl}/datapoint/${initialData.dataPointId}`\r\n : `${baseUrl}/datapoint`;\r\n const method = isEditMode ? 'put' : 'post';\r\n const saveObj = {\r\n dataPointName: data.Kpis?.KPIName,\r\n dataPointLabel: data.Kpis?.KPILabel,\r\n KPIMasterId: data.Kpis?.value,\r\n validationType: data.validationType?.value,\r\n value1: parseInt(data.value1),\r\n value2:\r\n data.validationType?.value === 'BETWEEN' ? parseInt(data.value2) : 0,\r\n };\r\n await axios({\r\n method,\r\n url: endpoint,\r\n data: saveObj,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }).then((res) => {\r\n if (res.data.status === true) {\r\n notifyMessage(res.data.message, 'success');\r\n fetchData();\r\n reset();\r\n setCurrentObj(null);\r\n setOpenModal(false);\r\n } else {\r\n notifyMessage(res.data.message, 'error');\r\n }\r\n });\r\n } catch (error) {\r\n setOpenModal(false);\r\n\r\n notifyMessage(\r\n error?.response?.data?.message || 'Something went wrong!',\r\n 'error'\r\n );\r\n }\r\n };\r\n\r\n return (\r\n {\r\n reset();\r\n setCurrentObj(null);\r\n setOpenModal(false);\r\n }}\r\n dismissible\r\n >\r\n \r\n {isEditMode ? 'Edit DataPoint' : 'Add DataPoint'}\r\n \r\n \r\n
\r\n \r\n \r\n \r\n {selectedValidationType === 'BETWEEN' && (\r\n {\r\n const numValue1 = Number(value1);\r\n const numValue2 = Number(value);\r\n return (\r\n selectedValidationType !== 'BETWEEN' ||\r\n numValue2 > numValue1 ||\r\n 'Value2 must be greater than or equal to Value1'\r\n );\r\n },\r\n }}\r\n errors={errors}\r\n />\r\n )}\r\n \r\n
\r\n \r\n \r\n {\r\n reset();\r\n setCurrentObj(null);\r\n setOpenModal(false);\r\n }}\r\n >\r\n Cancel\r\n \r\n \r\n \r\n );\r\n};\r\nAddDataPoint.propTypes = {\r\n openModal: PropTypes.bool,\r\n setOpenModal: PropTypes.func,\r\n fetchData: PropTypes.func,\r\n isEditMode: PropTypes.bool,\r\n initialData: PropTypes.object,\r\n setCurrentObj: PropTypes.func,\r\n};\r\nexport default AddDataPoint;\r\n","import { ButtonVariants } from '~/components/common/Button';\r\nimport Card from '~/components/common/Card';\r\nimport SectionHeader from '~/components/common/SectionHeader';\r\nimport DataTable from '~/components/common/DataTable';\r\nimport { AppRelativePaths } from '~/routes/routes.const';\r\nimport { useCallback, useEffect, useState } from 'react';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport axios from 'axios';\r\nimport { notifyMessage, hasPermission, baseUrl } from '~/utils/app.utils';\r\nimport AddDataPoint from './AddDataPoint';\r\nimport { usePermissionsContext } from '~/context/PermissionsProvider'; // Import permissions context\r\n\r\nconst breadcrumbs = [\r\n { label: 'Dashboard', link: AppRelativePaths.ADMIN_DASHBOARD },\r\n { label: 'Datapoint List', link: AppRelativePaths.DATAPOINT_LIST },\r\n];\r\n\r\nexport default function DataPointList() {\r\n const [openModal, setOpenModal] = useState(false);\r\n const [dataPoint, setDataPoint] = useState([]);\r\n const [currentObj, setCurrentObj] = useState(null);\r\n const [loading, setLoading] = useState(true);\r\n const { permissions } = usePermissionsContext();\r\n const { user } = useAuth();\r\n const columns = [\r\n { key: 'KPINameWithLabel', title: 'KPI Name - Label' },\r\n {\r\n key: 'dataPointName',\r\n title: 'DataPoint Name',\r\n },\r\n {\r\n key: 'dataPointLabel',\r\n title: 'DataPoint Label',\r\n },\r\n {\r\n key: 'validationTypeName',\r\n title: 'Validation Type',\r\n },\r\n {\r\n key: 'value1',\r\n title: 'Value1',\r\n },\r\n {\r\n key: 'value2',\r\n title: 'Value2',\r\n },\r\n ];\r\n\r\n function formatString(str) {\r\n return str\r\n .replace(/_/g, ' ') // Replace underscores with spaces\r\n .toLowerCase() // Convert to lowercase\r\n .replace(/\\b\\w/g, (char) => char.toUpperCase()); // Capitalize first letter of each word\r\n }\r\n\r\n const deleteDataPoint = async (id) => {\r\n try {\r\n await axios\r\n .delete(`${baseUrl}/datapoint/${id}`, {\r\n headers: {\r\n Authorization: user.token,\r\n },\r\n })\r\n .then((res) => {\r\n if (res.data) {\r\n setDataPoint((prevData) =>\r\n prevData.filter((dataPoint) => dataPoint.dataPointId !== id)\r\n );\r\n notifyMessage(res.data.message, 'success');\r\n setLoading(false);\r\n } else {\r\n notifyMessage(res.data.message);\r\n setLoading(false);\r\n }\r\n });\r\n } catch {\r\n notifyMessage('Something went wrong');\r\n setLoading(false);\r\n }\r\n };\r\n const getDataPointList = useCallback(async () => {\r\n try {\r\n await axios\r\n .get(`${baseUrl}/datapoint`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n })\r\n .then((res) => {\r\n if (res.data) {\r\n const updatedData = res.data.data.map((item) => ({\r\n ...item,\r\n KPINameWithLabel: `${item.KPIMaster.KPIName} - ${item.KPIMaster.KPILabel}`,\r\n validationTypeName: formatString(item.validationType),\r\n }));\r\n setDataPoint(updatedData);\r\n setLoading(false);\r\n }\r\n })\r\n .catch(() => {\r\n setDataPoint([]);\r\n setLoading(false);\r\n });\r\n } catch {\r\n setLoading(false);\r\n }\r\n }, [user.token]);\r\n\r\n useEffect(() => {\r\n getDataPointList();\r\n }, [getDataPointList]);\r\n\r\n return (\r\n
\r\n {/* AddModal should be here to trigger modals */}\r\n {openModal && (\r\n \r\n )}\r\n \r\n
\r\n \r\n
\r\n setOpenModal(true), // Opens the modal\r\n moduleKey: 'DATAPOINT_LIST',\r\n permission: 'Add',\r\n },\r\n ].filter((button) => {\r\n return hasPermission(\r\n permissions,\r\n button.moduleKey,\r\n button.permission,\r\n user\r\n );\r\n })}\r\n actionButtons={[\r\n {\r\n label: 'Edit',\r\n onClick: (obj) => {\r\n setCurrentObj(obj);\r\n setOpenModal(true);\r\n },\r\n variant: ButtonVariants.PRIMARY,\r\n moduleKey: 'DATAPOINT_LIST',\r\n permission: 'Edit',\r\n },\r\n {\r\n label: 'Delete',\r\n onClick: (obj) => {\r\n deleteDataPoint(obj.dataPointId);\r\n },\r\n variant: ButtonVariants.SECONDARY,\r\n moduleKey: 'DATAPOINT_LIST',\r\n permission: 'Delete',\r\n },\r\n ].filter((button) => {\r\n return hasPermission(\r\n permissions,\r\n button.moduleKey,\r\n button.permission,\r\n user\r\n );\r\n })}\r\n />\r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import { useMemo, useState, useEffect } from 'react';\r\nimport SectionHeader from '~/components/common/SectionHeader';\r\nimport Card from '~/components/common/Card';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport { AppRelativePaths } from '~/routes/routes.const';\r\nimport { baseUrl } from '~/utils/app.utils';\r\n\r\nexport default function Profile() {\r\n const { user } = useAuth();\r\n const [userDetails, setUserDetails] = useState({});\r\n const breadcrumbs = useMemo(\r\n () => [\r\n { label: 'Dashboard', link: AppRelativePaths.ADMIN_DASHBOARD },\r\n { label: 'Profile', link: AppRelativePaths.PROFILE },\r\n ],\r\n []\r\n );\r\n\r\n useEffect(() => {\r\n setUserDetails({\r\n photo:\r\n user?.role === 'COMPANYADMIN' ||\r\n user?.role === 'EMPLOYEE' ||\r\n user?.role === 'CONSULTANT'\r\n ? null\r\n : user.photo,\r\n userName:\r\n user?.role === 'COMPANYADMIN' || user?.role === 'EMPLOYEE'\r\n ? user.employeeName\r\n : user?.role === 'CONSULTANT'\r\n ? user.consultantName\r\n : user.adminUserName,\r\n userMobile:\r\n user?.role === 'COMPANYADMIN' || user?.role === 'EMPLOYEE'\r\n ? user.employeeMobile\r\n : user?.role === 'CONSULTANT'\r\n ? user.consultantMobile\r\n : user.adminUserMobile,\r\n userEmail:\r\n user?.role === 'COMPANYADMIN' || user?.role === 'EMPLOYEE'\r\n ? user.employeeEmail\r\n : user?.role === 'CONSULTANT'\r\n ? user.consultantEmail\r\n : user.adminUserEmail,\r\n role: user.role,\r\n });\r\n }, [user]);\r\n\r\n return (\r\n
\r\n \r\n
\r\n
\r\n \r\n {userDetails?.photo && (\r\n
\r\n
\r\n \r\n
\r\n
\r\n )}\r\n
\r\n
\r\n \r\n Name\r\n \r\n
\r\n {userDetails?.userName}\r\n
\r\n
\r\n
\r\n \r\n Mobile No\r\n \r\n
\r\n {userDetails?.userMobile}\r\n
\r\n
\r\n
\r\n \r\n Email\r\n \r\n
\r\n {userDetails?.userEmail}\r\n
\r\n
\r\n
\r\n \r\n Role\r\n \r\n
\r\n {userDetails?.role}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import { useState, useEffect, useCallback } from 'react';\r\nimport Card from '~/components/common/Card';\r\nimport SectionHeader from '~/components/common/SectionHeader';\r\nimport { AppRelativePaths } from '~/routes/routes.const';\r\nimport { Checkbox, Button, Table } from 'flowbite-react';\r\nimport axios from 'axios';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport { useLocation } from 'react-router-dom';\r\nimport Loader from '~/components/common/Loader';\r\nimport { notifyMessage, baseUrl } from '~/utils/app.utils';\r\nimport useWindowDimensions from '~/hooks/useWindowDimensions';\r\nimport Access from '~/components/common/Access';\r\n\r\nconst breadcrumbs = [\r\n { label: 'Permission list', link: AppRelativePaths.ROLE_USER_PERMISSIONS },\r\n { label: 'Roles & Permissions', link: AppRelativePaths.ROLE_PERMISSION_LIST },\r\n];\r\nexport default function RoleModules() {\r\n const location = useLocation();\r\n const { state } = location || {};\r\n const { user } = useAuth();\r\n const { height } = useWindowDimensions();\r\n\r\n const [permissions, setPermissions] = useState([]);\r\n const [modules, setModules] = useState([]);\r\n const [selectedPermissions, setSelectedPermissions] = useState({});\r\n const [loading, setLoading] = useState(true);\r\n const [isEditing, setIsEditing] = useState(false);\r\n\r\n const fetchData = useCallback(async () => {\r\n setLoading(true);\r\n try {\r\n const [permissionsRes, modulesRes] = await Promise.all([\r\n axios.get(`${baseUrl}/permission/all`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }),\r\n axios.get(`${baseUrl}/module/all`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }),\r\n ]);\r\n if (permissionsRes.data?.data) setPermissions(permissionsRes.data.data);\r\n if (modulesRes.data?.data) setModules(modulesRes.data.data);\r\n } catch {\r\n notifyMessage('Something went wrong!', 'error');\r\n } finally {\r\n setLoading(false);\r\n }\r\n }, [user.token]);\r\n\r\n const getAllEmployeePermissions = useCallback(async () => {\r\n try {\r\n const res = await axios.get(\r\n `${baseUrl}/employeePermission/0/${state?.employeeId}`,\r\n {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }\r\n );\r\n\r\n if (res.data?.data) {\r\n const updatedModules = modules?.map((module) => {\r\n const modulePermissions = res.data.data\r\n .filter((check) => check.moduleId === module.moduleId)\r\n .map((check) => ({\r\n permissionId: check?.permission?.permissionId,\r\n permissionName: check?.permission?.permissionName,\r\n }));\r\n\r\n return {\r\n ...module,\r\n permissions: modulePermissions,\r\n };\r\n });\r\n // Transform to initialize selectedPermissions state\r\n const initialSelectedPermissions = {};\r\n updatedModules.forEach((module) => {\r\n if (module?.permissions?.length) {\r\n initialSelectedPermissions[module.moduleId] = new Set(\r\n module.permissions.map((perm) => perm.permissionId)\r\n );\r\n }\r\n });\r\n setSelectedPermissions(initialSelectedPermissions);\r\n setLoading(false);\r\n }\r\n } catch {\r\n setLoading(false);\r\n } finally {\r\n setLoading(false);\r\n }\r\n }, [user.token, modules, state?.employeeId]);\r\n\r\n useEffect(() => {\r\n fetchData();\r\n }, [fetchData]);\r\n\r\n const isChecked = useCallback(\r\n (moduleId, permissionId) => {\r\n return selectedPermissions[moduleId]?.has(permissionId) || false;\r\n },\r\n [selectedPermissions]\r\n );\r\n\r\n useEffect(() => {\r\n if (modules.length && permissions.length && state?.employeeId) {\r\n getAllEmployeePermissions();\r\n }\r\n }, [modules, permissions, state?.employeeId, getAllEmployeePermissions]);\r\n\r\n // Handle checkbox changes\r\n const handleCheckboxChange = useCallback((moduleId, permissionId) => {\r\n setSelectedPermissions((prev) => {\r\n const modulePermissions = prev[moduleId] || new Set();\r\n if (modulePermissions.has(permissionId)) {\r\n modulePermissions.delete(permissionId); // Uncheck\r\n } else {\r\n modulePermissions.add(permissionId); // Check\r\n }\r\n return { ...prev, [moduleId]: modulePermissions };\r\n });\r\n }, []);\r\n\r\n // Save permissions\r\n const handleSave = async () => {\r\n const formattedData = Object.entries(selectedPermissions).flatMap(\r\n ([moduleId, permissionSet]) =>\r\n Array.from(permissionSet).map((permissionId) => ({\r\n moduleId: moduleId,\r\n permissionId,\r\n }))\r\n );\r\n try {\r\n const response = await axios.put(\r\n `${baseUrl}/employeePermission/${state?.employeeId}`,\r\n { payload: formattedData },\r\n {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }\r\n );\r\n notifyMessage(response.data.message, 'success');\r\n getAllEmployeePermissions();\r\n setIsEditing(!isEditing);\r\n window.location.reload();\r\n } catch {\r\n notifyMessage('Something went wrong');\r\n }\r\n };\r\n\r\n return (\r\n
\r\n \r\n \r\n {loading ? (\r\n \r\n ) : (\r\n
\r\n
\r\n

{state?.userName}

\r\n
\r\n \r\n setIsEditing(!isEditing)}\r\n >\r\n {isEditing ? 'Cancel' : 'Edit'}\r\n \r\n \r\n \r\n \r\n Save\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n Module\r\n \r\n {permissions.map((col) => (\r\n \r\n {col.permissionDisplayName}\r\n \r\n ))}\r\n \r\n \r\n {modules?.length > 0 ? (\r\n modules.map((module) => (\r\n \r\n \r\n

\r\n {module.moduleName}\r\n

\r\n
\r\n {permissions.map((col) => (\r\n \r\n \r\n handleCheckboxChange(\r\n module.moduleId,\r\n col.permissionId,\r\n e.target.checked\r\n )\r\n }\r\n disabled={!isEditing}\r\n className={`remove-outline-none w-5 h-5 ${\r\n !isEditing\r\n ? 'cursor-not-allowed'\r\n : 'cursor-pointer'\r\n }`}\r\n />\r\n \r\n ))}\r\n
\r\n ))\r\n ) : (\r\n \r\n \r\n No Data Found\r\n \r\n \r\n )}\r\n
\r\n
\r\n
\r\n
\r\n )}\r\n \r\n \r\n );\r\n}\r\n","import PropTypes from 'prop-types';\r\n\r\nconst Comment = ({ commentData }) => {\r\n const { comment, commentDate, Employee } = commentData;\r\n const formattedDate = new Date(commentDate).toLocaleString();\r\n\r\n return (\r\n
\r\n {/* Avatar */}\r\n
\r\n {Employee.employeeName.charAt(0)}\r\n
\r\n {/* Comment Content */}\r\n
\r\n
\r\n \r\n {Employee.employeeName}\r\n \r\n {formattedDate}\r\n
\r\n

{comment}

\r\n
\r\n
\r\n );\r\n};\r\nComment.propTypes = {\r\n commentData: PropTypes.shape({\r\n comment: PropTypes.string,\r\n commentDate: PropTypes.string,\r\n Employee: PropTypes.shape({\r\n employeeName: PropTypes.string,\r\n }),\r\n }),\r\n};\r\nexport default Comment;\r\n","import { useEffect, useState, useCallback, useMemo } from 'react';\r\nimport axios from 'axios';\r\nimport Card from '~/components/common/Card';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport Select from 'react-select';\r\nimport Comment from '~/components/common/Comment';\r\nimport { debounce } from 'lodash';\r\nimport moment from 'moment';\r\nimport { AppRelativePaths } from '~/routes/routes.const';\r\nimport { useParams } from 'react-router-dom';\r\nimport SectionHeader from '~/components/common/SectionHeader';\r\nimport useWindowDimensions from '~/hooks/useWindowDimensions';\r\nimport { hasPermission, baseUrl, notifyMessage } from '~/utils/app.utils'; // Utility function to check permission\r\nimport { usePermissionsContext } from '~/context/PermissionsProvider'; // Import permissions\r\n\r\nconst ViewTaskDetails = () => {\r\n const { user } = useAuth();\r\n const { taskId } = useParams();\r\n const { height } = useWindowDimensions();\r\n const [taskDetails, setTaskDetails] = useState({});\r\n const [taskStatusData, setTaskStatusData] = useState([]);\r\n const [selectedStatus, setSelectedStatus] = useState(null);\r\n const { permissions } = usePermissionsContext();\r\n\r\n const breadcrumbs = [\r\n { label: 'Dashboard', link: AppRelativePaths.ADMIN_DASHBOARD },\r\n { label: 'Company Task', link: AppRelativePaths.ALL_TASKS },\r\n ];\r\n // Fetch the task by its ID, only if taskId changes\r\n const getCompanyTaskById = useCallback(async () => {\r\n if (!taskId) return;\r\n try {\r\n const res = await axios.get(`${baseUrl}/company/task/${taskId}`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n });\r\n if (res.data) {\r\n const task = res.data.data;\r\n setTaskDetails((prevTask) => {\r\n if (prevTask.taskId !== task.taskId) {\r\n return task;\r\n }\r\n return prevTask;\r\n });\r\n\r\n const defaultStatus = taskStatusData.find(\r\n (status) => status.value === task.taskStatusId\r\n );\r\n setSelectedStatus(defaultStatus); // Set default status\r\n }\r\n } catch {\r\n notifyMessage('Something went wrong!', 'error');\r\n }\r\n }, [taskId, taskStatusData, user.token]);\r\n\r\n // Fetch all available task statuses only once\r\n const getAllTaskstatus = useCallback(async () => {\r\n try {\r\n const res = await axios.get(`${baseUrl}/alltaskstatus`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n });\r\n if (res.data) {\r\n const updatedData = res.data.data\r\n .map((el) => ({\r\n value: el.taskStatusId,\r\n label: el.taskStatus,\r\n }))\r\n .sort((a, b) => a.taskStatusOrder - b.taskStatusOrder);\r\n setTaskStatusData(updatedData);\r\n }\r\n } catch {\r\n setTaskStatusData([]);\r\n }\r\n }, [user.token]);\r\n\r\n // Debounced function to update task status\r\n const updateTaskStatus = useMemo(\r\n () =>\r\n debounce(async (taskId, statusId) => {\r\n try {\r\n await axios.put(\r\n `${baseUrl}/company/task/update/${taskId}/${statusId}`,\r\n {},\r\n {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }\r\n );\r\n getCompanyTaskById(); // Refresh task details after updating status\r\n } catch {\r\n notifyMessage('Something went wrong!', 'error');\r\n }\r\n }, 500),\r\n [user.token, getCompanyTaskById]\r\n );\r\n\r\n // Custom styles for react-select dropdown\r\n const customStyles = {\r\n menuPortal: (provided) => ({ ...provided, zIndex: 9999 }),\r\n menuList: (provided) => ({\r\n ...provided,\r\n maxHeight: '120px', // Limit dropdown height\r\n overflowY: 'auto', // Add scroll when content overflows\r\n }),\r\n };\r\n\r\n useEffect(() => {\r\n if (taskId) {\r\n getCompanyTaskById(); // Fetch task details when taskId changes\r\n }\r\n }, [taskId, getCompanyTaskById]);\r\n\r\n useEffect(() => {\r\n getAllTaskstatus(); // Fetch task statuses only once on mount\r\n }, [getAllTaskstatus]);\r\n\r\n return (\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n

\r\n {taskDetails.taskName}\r\n

\r\n

\r\n {\r\n taskDetails?.projectDetails?.CompanyProjectMaster\r\n ?.projectName\r\n }\r\n

\r\n
\r\n
\r\n\r\n {/* Task Description */}\r\n
\r\n
\r\n Description\r\n
\r\n
\r\n {taskDetails.taskDescription}\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n Status\r\n \r\n {\r\n setSelectedStatus(selectedOption); // Update selected status state\r\n updateTaskStatus(taskId, selectedOption.value); // Call API to update status\r\n }}\r\n isDisabled={!hasPermission(permissions, 'TASK', 'Edit', user)}\r\n />\r\n
\r\n
\r\n \r\n Task Type\r\n \r\n
\r\n {taskDetails?.taskType?.taskTypeName}\r\n
\r\n
\r\n
\r\n\r\n {/* Task Dates */}\r\n
\r\n
\r\n \r\n \r\n Deadline\r\n \r\n
\r\n {moment(taskDetails.taskDeadline).format(\r\n 'DD MM YYYY, h:mm:ss a'\r\n )}\r\n
\r\n
\r\n
\r\n \r\n \r\n Actual End Date\r\n \r\n
\r\n {taskDetails.taskActualEndDate\r\n ? moment(taskDetails.taskActualEndDate).format(\r\n 'DD MM YYYY, h:mm:ss a'\r\n )\r\n : ''}\r\n
\r\n
\r\n
\r\n\r\n {/* Meeting and SubParameters */}\r\n
\r\n
\r\n \r\n Meeting\r\n \r\n
\r\n {taskDetails?.TaskMeetingJunction?.map((meeting) => (\r\n \r\n {meeting.meetings.meetingName}\r\n \r\n ))}\r\n
\r\n
\r\n
\r\n\r\n {/* Assignees and Task Type */}\r\n
\r\n
\r\n \r\n Assignee\r\n \r\n
\r\n {taskDetails?.TaskEmployeeJunction?.map((employee) => (\r\n \r\n {employee.Employee.employeeName}\r\n \r\n ))}\r\n
\r\n
\r\n
\r\n \r\n Created By\r\n \r\n
\r\n {taskDetails?.createdBy?.employeeName}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n Comments\r\n \r\n
\r\n {taskDetails?.TaskCommentMaster?.map((commentData) => (\r\n \r\n ))}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default ViewTaskDetails;\r\n","import { useEffect, useState, useMemo, useCallback } from 'react';\r\nimport axios from 'axios';\r\nimport { ButtonVariants } from '~/components/common/Button';\r\nimport Card from '~/components/common/Card';\r\nimport SectionHeader from '~/components/common/SectionHeader';\r\nimport DataTable from '~/components/common/DataTable';\r\nimport { AppRelativePaths } from '~/routes/routes.const';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport { hasPermission, baseUrl } from '~/utils/app.utils'; // Utility function to check permission\r\nimport { usePermissionsContext } from '~/context/PermissionsProvider'; // Import permissions context\r\n\r\nexport default function Userpermissionlist() {\r\n const [employeeData, setEmployeeData] = useState([]);\r\n const { user } = useAuth();\r\n const [loading, setLoading] = useState(true);\r\n const { permissions } = usePermissionsContext();\r\n const navigate = useNavigate();\r\n const breadcrumbs = useMemo(\r\n () => [\r\n { label: 'Dashboard', link: AppRelativePaths.DASHBOARD },\r\n {\r\n label: 'Permissionlist List',\r\n link: AppRelativePaths.ROLE_USER_PERMISSIONS,\r\n },\r\n ],\r\n []\r\n );\r\n\r\n const columns = useMemo(\r\n () => [\r\n { key: 'employeeName', title: 'Employee Name' },\r\n { key: 'departmentName', title: 'Department' },\r\n { key: 'designationName', title: 'Designation' },\r\n ],\r\n []\r\n );\r\n\r\n const getEmployeeData = useCallback(async () => {\r\n try {\r\n const res = await axios.get(`${baseUrl}/company/employee/all`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n });\r\n if (res.data) {\r\n const filterdata = res.data?.data?.filter(\r\n (item) =>\r\n item.employeeType !== 'COMPANYADMIN' ||\r\n item.employeeType !== 'CONSULTANT'\r\n );\r\n setEmployeeData(filterdata);\r\n }\r\n } catch {\r\n setEmployeeData([]);\r\n } finally {\r\n setLoading(false);\r\n }\r\n }, [user.token]);\r\n\r\n useEffect(() => {\r\n getEmployeeData();\r\n }, [getEmployeeData]);\r\n\r\n const actionButtons = useMemo(\r\n () =>\r\n [\r\n {\r\n label: 'Permission',\r\n onClick: (obj) => {\r\n navigate(AppRelativePaths.ROLE_USER_MODULES, {\r\n state: {\r\n employeeId: obj?.employeeId,\r\n userName: obj?.employeeName,\r\n },\r\n });\r\n },\r\n variant: ButtonVariants.PRIMARY,\r\n moduleKey: 'ROLES_PERMISSION',\r\n permission: 'View',\r\n },\r\n ].filter((button) => {\r\n return hasPermission(\r\n permissions,\r\n button.moduleKey,\r\n button.permission,\r\n user\r\n );\r\n }),\r\n [navigate, permissions, user]\r\n );\r\n\r\n return (\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","// NotFound.js\r\n\r\nconst NotFound = () => {\r\n return (\r\n \r\n

404 - Page Not Found

\r\n

{`The page you're looking for doesn't exist.`}

\r\n \r\n );\r\n};\r\n\r\nexport default NotFound;\r\n","import { useEffect, useState, useCallback } from 'react';\r\nimport axios from 'axios';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport {\r\n notifyMessage,\r\n getYearOptions,\r\n getCurrentFinancialYear,\r\n convertLabel,\r\n baseUrl,\r\n} from '~/utils/app.utils';\r\nimport { useForm, Controller } from 'react-hook-form';\r\nimport { Button, Table } from 'flowbite-react';\r\nimport useWindowDimensions from '~/hooks/useWindowDimensions';\r\nimport Card from '~/components/common/Card';\r\nimport SectionHeader from '~/components/common/SectionHeader';\r\nimport ReactSelectField from '~/components/common/ReactSelectField';\r\nimport { AppRelativePaths } from '~/routes/routes.const';\r\nimport Loader from '~/components/common/Loader';\r\nimport Access from '~/components/common/Access';\r\n\r\nconst months = [\r\n 'Apr',\r\n 'May',\r\n 'Jun',\r\n 'Jul',\r\n 'Aug',\r\n 'Sep',\r\n 'Oct',\r\n 'Nov',\r\n 'Dec',\r\n 'Jan',\r\n 'Feb',\r\n 'Mar',\r\n];\r\nconst breadcrumbs = [\r\n { label: 'Dashboard', link: AppRelativePaths.ADMIN_DASHBOARD },\r\n { label: 'Datapoint table', link: AppRelativePaths.DATAPOINT_DATATABLE },\r\n];\r\nexport default function DataPointTable() {\r\n const { user } = useAuth();\r\n const yearOptions = getYearOptions(2020, 50);\r\n const currentFinancialYear = getCurrentFinancialYear();\r\n const { height } = useWindowDimensions();\r\n const [isEditing, setIsEditing] = useState(false);\r\n const defaultYear =\r\n yearOptions.find((y) => y.value === currentFinancialYear) || yearOptions[0];\r\n\r\n const [isValidData, setIsValidData] = useState(true);\r\n\r\n const {\r\n control,\r\n watch,\r\n formState: { errors },\r\n } = useForm({\r\n defaultValues: {\r\n financialyear: defaultYear,\r\n },\r\n });\r\n\r\n const [modules, setModules] = useState([]);\r\n const [dataPoints, setDataPoints] = useState([]);\r\n const [loading, setLoading] = useState(false);\r\n const selectedYear = watch('financialyear')?.value || '';\r\n\r\n const fetchData = useCallback(async () => {\r\n setLoading(true);\r\n try {\r\n const [modulesRes] = await Promise.all([\r\n axios.get(`${baseUrl}/datapoint`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }),\r\n ]);\r\n if (modulesRes.data?.data) setModules(modulesRes.data.data);\r\n } catch {\r\n notifyMessage('Something went wrong!', 'error');\r\n } finally {\r\n setLoading(false);\r\n }\r\n }, [user.token]);\r\n\r\n const getAllDataPointTable = useCallback(async () => {\r\n try {\r\n const res = await axios.get(\r\n `${baseUrl}/datapoint/data/all/year?fyYear=${selectedYear}`,\r\n {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }\r\n );\r\n if (res?.data?.data) {\r\n const updatedModules = modules.reduce((acc, item) => {\r\n const relatedDataPoints = res?.data?.data.filter(\r\n (d) => d.dataPointId === item.dataPointId\r\n );\r\n acc.push({\r\n ...item,\r\n dataEntries: relatedDataPoints.map((d) => ({\r\n dataPointId: d.dataPointId,\r\n dataFY: d.dataFY,\r\n dataMonth: d.dataMonth,\r\n financialMonth: months[(d.dataMonth + 8) % 12], // Convert numeric month to month name\r\n data: d.data ? d.data : '',\r\n })),\r\n });\r\n return acc;\r\n }, []);\r\n // Group dataPoints by dataMonth\r\n setDataPoints(updatedModules);\r\n setLoading(false);\r\n }\r\n } catch {\r\n setLoading(false);\r\n } finally {\r\n setLoading(false);\r\n }\r\n }, [user.token, modules, selectedYear, setLoading, setDataPoints]);\r\n\r\n useEffect(() => {\r\n fetchData();\r\n }, [fetchData]);\r\n\r\n useEffect(() => {\r\n getAllDataPointTable(selectedYear);\r\n }, [selectedYear, getAllDataPointTable]);\r\n\r\n const isValidate = useCallback((dataPoint, value) => {\r\n if (value === '' || value === null || value === undefined) return true;\r\n switch (dataPoint.validationType) {\r\n case 'EQUAL_TO':\r\n return value === dataPoint.value1;\r\n case 'GREATER_THAN_OR_EQUAL_TO':\r\n return value >= dataPoint.value1;\r\n case 'GREATER_THAN':\r\n return value > dataPoint.value1;\r\n case 'BETWEEN':\r\n return value >= dataPoint.value1 && value <= dataPoint.value2;\r\n case 'LESS_THAN_OR_EQUAL_TO':\r\n return value <= dataPoint.value1;\r\n case 'LESS_THAN':\r\n return value < dataPoint.value1;\r\n default:\r\n return true;\r\n }\r\n }, []);\r\n\r\n const handleInputChange = useCallback(\r\n (dataPointId, monthIndex, value) => {\r\n const dataPoint = modules.find((dp) => dp.dataPointId === dataPointId);\r\n if (dataPoint) {\r\n const isYearChanged = selectedYear !== currentFinancialYear;\r\n\r\n if (isYearChanged) {\r\n value = ''; // Clear the input value if year has changed\r\n }\r\n\r\n const isValid = isYearChanged || isValidate(dataPoint, value);\r\n setIsValidData(isValid);\r\n if (isValid) {\r\n setDataPoints((prevDataPoints) =>\r\n prevDataPoints.map((dp) => {\r\n if (dp.dataPointId === dataPointId) {\r\n // Check if an entry with the given dataMonth exists\r\n const entryExists = dp.dataEntries.some(\r\n (entry) => entry.dataMonth === monthIndex\r\n );\r\n // Update existing entry or add a new one\r\n const newEntries = entryExists\r\n ? dp.dataEntries.map((entry) =>\r\n entry.dataMonth === monthIndex\r\n ? { ...entry, data: value ? value : null } // Removed redundant dataPointId\r\n : entry\r\n )\r\n : [\r\n ...dp.dataEntries,\r\n {\r\n dataPointId: dp.dataPointId,\r\n dataFY: selectedYear,\r\n dataMonth: monthIndex,\r\n financialMonth: months[(monthIndex + 8) % 12],\r\n data: value,\r\n },\r\n ];\r\n // Remove entries where `data` is empty\r\n return {\r\n ...dp,\r\n dataEntries: newEntries,\r\n };\r\n }\r\n return dp;\r\n })\r\n );\r\n } else {\r\n // Optionally, notify the user about validation failure\r\n // notifyMessage('Validation failed for the entered value', 'error');\r\n }\r\n }\r\n },\r\n [currentFinancialYear, isValidate, modules, selectedYear] // Ensure it always has the latest state\r\n );\r\n\r\n // Save permissions\r\n const handleSave = async () => {\r\n // Check if the data is valid\r\n if (!isValidData) {\r\n notifyMessage(\r\n 'Please correct the invalid data entries before saving.',\r\n 'error'\r\n );\r\n return; // Stop the save operation if not valid\r\n }\r\n const result = dataPoints\r\n ?.flatMap((item) => item.dataEntries)\r\n ?.map((entry) => {\r\n // eslint-disable-next-line no-unused-vars\r\n const { financialMonth, ...rest } = entry; // Remove financialMonth\r\n return rest;\r\n });\r\n\r\n // Check if result is empty or invalid\r\n if (!result || result?.length === 0) {\r\n notifyMessage('No data available to send.', 'error');\r\n return; // Exit early if no valid data\r\n }\r\n\r\n try {\r\n const response = await axios.put(\r\n `${baseUrl}/datapoint/data/year?fyYear=${selectedYear}`,\r\n { payload: result },\r\n {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }\r\n );\r\n notifyMessage(response.data.message, 'success');\r\n getAllDataPointTable();\r\n setIsEditing(!isEditing);\r\n setLoading(false);\r\n } catch {\r\n setLoading(false);\r\n notifyMessage('Something went wrong');\r\n }\r\n };\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n setIsEditing(!isEditing)}\r\n >\r\n {isEditing ? 'Cancel' : 'Edit'}\r\n \r\n \r\n \r\n \r\n Save\r\n \r\n \r\n
\r\n
\r\n \r\n {loading ? (\r\n \r\n ) : (\r\n \r\n \r\n \r\n Data Point\r\n \r\n {months.map((col, idx) => (\r\n \r\n {col}\r\n \r\n ))}\r\n \r\n \r\n {dataPoints?.length > 0 ? (\r\n dataPoints?.map((dataPoint) => (\r\n \r\n \r\n \r\n {dataPoint.dataPointName}\r\n \r\n {convertLabel(dataPoint?.validationType)}\r\n \r\n {dataPoint?.validationType === 'BETWEEN'\r\n ? `(${dataPoint?.value1} to ${dataPoint?.value2})`\r\n : `(${dataPoint?.value1})`}\r\n \r\n \r\n \r\n \r\n {months.map((_, idx) => {\r\n const dataMonth = (idx + 4) % 12 || 12; // Maps idx to correct financial month (Apr = 1st, Jan = 10th)\r\n return (\r\n \r\n {\r\n // Find the data entry that matches the financial month\r\n const monthData = dataPoint?.dataEntries?.find(\r\n (entry) => entry.dataMonth === dataMonth\r\n );\r\n const isYearChanged =\r\n selectedYear !== currentFinancialYear;\r\n // Ensure value is always defined\r\n const value = isYearChanged\r\n ? ''\r\n : (field.value ?? monthData?.data ?? '');\r\n\r\n const isValid =\r\n isYearChanged || isValidate(dataPoint, value);\r\n\r\n return (\r\n {\r\n const newValue = e.target.value\r\n ? parseFloat(e.target.value)\r\n : '';\r\n field.onChange(newValue); // Ensure react-hook-form gets the new value\r\n handleInputChange(\r\n dataPoint.dataPointId,\r\n dataMonth,\r\n newValue\r\n );\r\n }}\r\n className={`datapoint-input border p-1 w-14 text-center rounded-md overflow-hidden \r\n ${!isValid ? 'border-red-500' : 'border-gray-300'} ${\r\n !isEditing\r\n ? 'cursor-not-allowed bg-gray-50'\r\n : 'cursor-pointer'\r\n }`}\r\n disabled={!isEditing}\r\n />\r\n );\r\n }}\r\n />\r\n \r\n );\r\n })}\r\n \r\n ))\r\n ) : (\r\n \r\n \r\n No Data Found\r\n \r\n \r\n )}\r\n \r\n
\r\n )}\r\n
\r\n \r\n \r\n );\r\n}\r\n","import PropTypes from 'prop-types';\r\nimport { useState, useEffect } from 'react';\r\n\r\nconst CheckboxGroupRating = ({\r\n isPercentageMode,\r\n selectedValue,\r\n onChange,\r\n isDisabled = false,\r\n}) => {\r\n // Set default selection based on mode\r\n const defaultSelection = isPercentageMode ? 10 : 0;\r\n\r\n const [selectedRating, setSelectedRating] = useState(\r\n selectedValue ?? defaultSelection\r\n );\r\n\r\n useEffect(() => {\r\n if (selectedValue === undefined || selectedValue === null) {\r\n setSelectedRating(defaultSelection); // Ensure correct default value\r\n } else {\r\n setSelectedRating(selectedValue);\r\n }\r\n }, [selectedValue, isPercentageMode, defaultSelection]);\r\n\r\n // Handle checkbox change\r\n const handleCheckboxChange = (value) => {\r\n const newValue = selectedRating === value ? value : value; // Toggle selection\r\n setSelectedRating(newValue);\r\n onChange(newValue); // ✅ Notify react-hook-form\r\n };\r\n\r\n // Determine values based on mode\r\n const ratingValues = isPercentageMode\r\n ? Array.from({ length: 10 }, (_, i) => (i + 1) * 10) // 10% to 100%\r\n : Array.from({ length: 10 }, (_, i) => i + 1); // 1 to 10\r\n\r\n return (\r\n
\r\n
\r\n {ratingValues.map((value, idx) => (\r\n \r\n handleCheckboxChange(value)}\r\n className=\"hidden\"\r\n disabled={isDisabled}\r\n />\r\n
\r\n \r\n {value}\r\n {isPercentageMode ? '%' : ''}\r\n \r\n \r\n ))}\r\n
\r\n {/*

\r\n Selected: {selectedRating}\r\n {isPercentageMode ? '%' : ''}\r\n

*/}\r\n \r\n );\r\n};\r\nCheckboxGroupRating.propTypes = {\r\n isPercentageMode: PropTypes.bool,\r\n selectedValue: PropTypes.number,\r\n onChange: PropTypes.func,\r\n isDisabled: PropTypes.bool,\r\n};\r\nexport default CheckboxGroupRating;\r\n","import { useEffect, useState, useCallback } from 'react';\r\nimport axios from 'axios';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport { notifyMessage, baseUrl } from '~/utils/app.utils';\r\nimport { useForm } from 'react-hook-form';\r\nimport { Button, Table } from 'flowbite-react';\r\nimport useWindowDimensions from '~/hooks/useWindowDimensions';\r\nimport Card from '~/components/common/Card';\r\nimport SectionHeader from '~/components/common/SectionHeader';\r\nimport ReactSelectField from '~/components/common/ReactSelectField';\r\nimport { AppRelativePaths } from '~/routes/routes.const';\r\nimport Loader from '~/components/common/Loader';\r\nimport Access from '~/components/common/Access';\r\nimport CheckboxGroupRating from '~/components/common/CheckboxGroupRating';\r\n\r\nconst breadcrumbs = [\r\n { label: 'Dashboard', link: AppRelativePaths.ADMIN_DASHBOARD },\r\n { label: 'Health Weightage', link: AppRelativePaths.HEALTH_SCORE_UPDATE },\r\n];\r\nexport default function HealthScoreUpdate() {\r\n const { user } = useAuth();\r\n const [coreParameterData, setCoreParameterData] = useState([]);\r\n const [subParameterData, setSubParameterData] = useState([]);\r\n const [coreParameterRows, setCoreParameterRows] = useState([]);\r\n const [isEditing, setIsEditing] = useState(false);\r\n const { height } = useWindowDimensions();\r\n const [loading, setLoading] = useState(false);\r\n const {\r\n control,\r\n watch,\r\n formState: { errors },\r\n } = useForm();\r\n const selectedCoreParameterId = watch('coreParameterId');\r\n\r\n const getAllCoreParameter = useCallback(async () => {\r\n try {\r\n const res = await axios.get(`${baseUrl}/coreparameters`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n });\r\n if (res.data) {\r\n const de = res.data.data || [];\r\n const updatedData = de.map((el) => ({\r\n value: el.coreParameterId,\r\n label: el.coreParameterName,\r\n }));\r\n setCoreParameterData(updatedData);\r\n }\r\n } catch {\r\n setCoreParameterData([]);\r\n }\r\n }, [user.token]);\r\n\r\n const getAllSubParameter = useCallback(\r\n async (coreParameterId) => {\r\n if (!coreParameterId) {\r\n setSubParameterData([]);\r\n return;\r\n }\r\n try {\r\n const response = await axios.get(\r\n `${baseUrl}/subparameters/coreParameter/${coreParameterId}`,\r\n {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }\r\n );\r\n if (response?.data?.data) {\r\n const formattedData = response.data.data.map((subParam) => ({\r\n subParameterId: subParam.subParameterId,\r\n subParameterName: subParam.subParameterName,\r\n }));\r\n setSubParameterData(formattedData);\r\n }\r\n } catch {\r\n setSubParameterData([]);\r\n }\r\n },\r\n [user.token]\r\n );\r\n\r\n const getAllCoreParameterRows = useCallback(\r\n async (coreParameterId) => {\r\n setLoading(true);\r\n if (!coreParameterId) {\r\n setCoreParameterRows([]);\r\n return;\r\n }\r\n\r\n try {\r\n const response = await axios.get(\r\n `${baseUrl}/company/healthscore/achivement/${coreParameterId}`,\r\n {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }\r\n );\r\n if (response?.data?.data) {\r\n const updatedArray = response?.data?.data.map((item) => {\r\n const match = subParameterData.find(\r\n (el) => el.subParameterId === item.subParameterId\r\n );\r\n return {\r\n ...item,\r\n subParameterName: match ? match.subParameterName : null, // Add name if found\r\n companyHealthScore: item?.companyHealthScore || 0,\r\n };\r\n });\r\n setCoreParameterRows(updatedArray);\r\n }\r\n setLoading(false);\r\n } catch {\r\n setCoreParameterRows([]);\r\n setLoading(false);\r\n }\r\n },\r\n [user.token, subParameterData]\r\n );\r\n\r\n useEffect(() => {\r\n getAllCoreParameter();\r\n }, [getAllCoreParameter]);\r\n\r\n useEffect(() => {\r\n if (selectedCoreParameterId?.value) {\r\n getAllSubParameter(selectedCoreParameterId?.value);\r\n }\r\n }, [selectedCoreParameterId?.value, getAllSubParameter]);\r\n\r\n useEffect(() => {\r\n if (subParameterData.length > 0 && selectedCoreParameterId?.value) {\r\n getAllCoreParameterRows(selectedCoreParameterId?.value);\r\n }\r\n }, [\r\n subParameterData,\r\n selectedCoreParameterId?.value,\r\n getAllCoreParameterRows,\r\n ]);\r\n\r\n const handleSliderChange = useCallback((subParameterId, field, newValue) => {\r\n setCoreParameterRows((prevData) =>\r\n prevData.map((subParam) =>\r\n subParam.subParameterId === subParameterId\r\n ? { ...subParam, [field]: newValue }\r\n : subParam\r\n )\r\n );\r\n }, []);\r\n\r\n const handleSave = async () => {\r\n const flattenedData = coreParameterRows.map((item) => ({\r\n subParameterId: item.subParameterId,\r\n scoreAchive: item.scoreAchive,\r\n companyHealthScore: item.companyHealthScore,\r\n }));\r\n try {\r\n const response = await axios.post(\r\n `${baseUrl}/company/healthscore/achivement`,\r\n { payload: flattenedData },\r\n {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }\r\n );\r\n notifyMessage(response.data.message, 'success');\r\n setIsEditing(!isEditing);\r\n } catch {\r\n notifyMessage('Something went wrong');\r\n }\r\n };\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n setIsEditing(!isEditing)}\r\n >\r\n {isEditing ? 'Cancel' : 'Edit'}\r\n \r\n \r\n \r\n \r\n Save\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n {loading ? (\r\n \r\n ) : (\r\n \r\n \r\n \r\n Sub Parameter Name\r\n \r\n \r\n Health Weightage\r\n \r\n \r\n \r\n {coreParameterRows?.length > 0 ? (\r\n coreParameterRows.map((subParam) => (\r\n \r\n \r\n {subParam.subParameterName}\r\n \r\n \r\n \r\n handleSliderChange(\r\n subParam.subParameterId,\r\n 'companyHealthScore',\r\n Number(scoreValue)\r\n )\r\n }\r\n isDisabled={!isEditing}\r\n />\r\n \r\n \r\n ))\r\n ) : (\r\n \r\n \r\n Select Core Parameter\r\n \r\n \r\n )}\r\n \r\n
\r\n )}\r\n
\r\n
\r\n \r\n \r\n );\r\n}\r\n","import { useEffect, useState, useCallback } from 'react';\r\nimport axios from 'axios';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport { notifyMessage, baseUrl } from '~/utils/app.utils';\r\nimport { useForm } from 'react-hook-form';\r\nimport { Button, Table } from 'flowbite-react';\r\nimport useWindowDimensions from '~/hooks/useWindowDimensions';\r\nimport Card from '~/components/common/Card';\r\nimport SectionHeader from '~/components/common/SectionHeader';\r\nimport ReactSelectField from '~/components/common/ReactSelectField';\r\nimport { AppRelativePaths } from '~/routes/routes.const';\r\nimport Loader from '~/components/common/Loader';\r\nimport Access from '~/components/common/Access';\r\nimport CheckboxGroupRating from '~/components/common/CheckboxGroupRating';\r\n\r\nconst breadcrumbs = [\r\n { label: 'Dashboard', link: AppRelativePaths.ADMIN_DASHBOARD },\r\n { label: 'Health Score', link: AppRelativePaths.HEALTH_SCORE_ACHIEVE },\r\n];\r\nexport default function HealthScoreAchieve() {\r\n const { user } = useAuth();\r\n const [coreParameterData, setCoreParameterData] = useState([]);\r\n const [subParameterData, setSubParameterData] = useState([]);\r\n const [coreParameterRows, setCoreParameterRows] = useState([]);\r\n const [isEditing, setIsEditing] = useState(false);\r\n const { height } = useWindowDimensions();\r\n const [loading, setLoading] = useState(false);\r\n const {\r\n control,\r\n watch,\r\n formState: { errors },\r\n } = useForm();\r\n const selectedCoreParameterId = watch('coreParameterId');\r\n\r\n const getAllCoreParameter = useCallback(async () => {\r\n try {\r\n const res = await axios.get(`${baseUrl}/coreparameters`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n });\r\n if (res.data) {\r\n const de = res.data.data || [];\r\n const updatedData = de.map((el) => ({\r\n value: el.coreParameterId,\r\n label: el.coreParameterName,\r\n }));\r\n setCoreParameterData(updatedData);\r\n }\r\n } catch {\r\n setCoreParameterData([]);\r\n }\r\n }, [user.token]);\r\n\r\n const getAllSubParameter = useCallback(\r\n async (coreParameterId) => {\r\n if (!coreParameterId) {\r\n setSubParameterData([]);\r\n return;\r\n }\r\n try {\r\n const response = await axios.get(\r\n `${baseUrl}/subparameters/coreParameter/${coreParameterId}`,\r\n {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }\r\n );\r\n if (response?.data?.data) {\r\n const formattedData = response.data.data.map((subParam) => ({\r\n subParameterId: subParam.subParameterId,\r\n subParameterName: subParam.subParameterName,\r\n }));\r\n setSubParameterData(formattedData);\r\n }\r\n } catch {\r\n setSubParameterData([]);\r\n }\r\n },\r\n [user.token]\r\n );\r\n\r\n const getAllCoreParameterRows = useCallback(\r\n async (coreParameterId) => {\r\n setLoading(true);\r\n if (!coreParameterId) {\r\n setCoreParameterRows([]);\r\n return;\r\n }\r\n\r\n try {\r\n const response = await axios.get(\r\n `${baseUrl}/company/healthscore/achivement/${coreParameterId}`,\r\n {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }\r\n );\r\n if (response?.data?.data) {\r\n const updatedArray = response?.data?.data.map((item) => {\r\n const match = subParameterData.find(\r\n (el) => el.subParameterId === item.subParameterId\r\n );\r\n return {\r\n ...item,\r\n subParameterName: match ? match.subParameterName : null, // Add name if found\r\n companyHealthScore: item?.companyHealthScore || 0,\r\n };\r\n });\r\n setCoreParameterRows(updatedArray);\r\n }\r\n setLoading(false);\r\n } catch {\r\n setCoreParameterRows([]);\r\n setLoading(false);\r\n }\r\n },\r\n [user.token, subParameterData]\r\n );\r\n\r\n useEffect(() => {\r\n getAllCoreParameter();\r\n }, [getAllCoreParameter]);\r\n\r\n useEffect(() => {\r\n if (selectedCoreParameterId?.value) {\r\n getAllSubParameter(selectedCoreParameterId?.value);\r\n }\r\n }, [selectedCoreParameterId?.value, getAllSubParameter]);\r\n\r\n useEffect(() => {\r\n if (subParameterData.length > 0 && selectedCoreParameterId?.value) {\r\n getAllCoreParameterRows(selectedCoreParameterId?.value);\r\n }\r\n }, [\r\n subParameterData,\r\n selectedCoreParameterId?.value,\r\n getAllCoreParameterRows,\r\n ]);\r\n\r\n const handleSliderChange = useCallback((subParameterId, field, newValue) => {\r\n setCoreParameterRows((prevData) =>\r\n prevData.map((subParam) =>\r\n subParam.subParameterId === subParameterId\r\n ? { ...subParam, [field]: newValue }\r\n : subParam\r\n )\r\n );\r\n }, []);\r\n\r\n const handleSave = async () => {\r\n const flattenedData = coreParameterRows.map((item) => ({\r\n subParameterId: item.subParameterId,\r\n scoreAchive: item.scoreAchive,\r\n companyHealthScore: item.companyHealthScore,\r\n }));\r\n try {\r\n const response = await axios.post(\r\n `${baseUrl}/company/healthscore/achivement`,\r\n { payload: flattenedData },\r\n {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }\r\n );\r\n notifyMessage(response.data.message, 'success');\r\n setIsEditing(!isEditing);\r\n } catch {\r\n notifyMessage('Something went wrong');\r\n }\r\n };\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n setIsEditing(!isEditing)}\r\n >\r\n {isEditing ? 'Cancel' : 'Edit'}\r\n \r\n \r\n \r\n \r\n Save\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n {loading ? (\r\n \r\n ) : (\r\n \r\n \r\n \r\n Sub Parameter Name\r\n \r\n \r\n Health Score\r\n \r\n \r\n \r\n {coreParameterRows?.length > 0 ? (\r\n coreParameterRows.map((subParam) => (\r\n \r\n \r\n {subParam.subParameterName}\r\n \r\n \r\n \r\n handleSliderChange(\r\n subParam.subParameterId,\r\n 'scoreAchive',\r\n Number(scoreAchiveValue)\r\n )\r\n }\r\n isDisabled={!isEditing}\r\n />\r\n \r\n \r\n ))\r\n ) : (\r\n \r\n \r\n Select Core Parameter\r\n \r\n \r\n )}\r\n \r\n
\r\n )}\r\n
\r\n
\r\n \r\n \r\n );\r\n}\r\n","import { Route, Routes, Navigate } from 'react-router-dom';\r\nimport DashboardLayout from '~/layouts/DashboardLayout';\r\nimport Dashboard from '~/pages/Dashboard';\r\n// import EmployeeList from '~/pages/EmployeeList';\r\n// import EmployeeForm from '~/pages/EmployeeForm';\r\nimport { AppPathObjects, AppRelativePaths } from './routes.const';\r\nimport ProjectDetails from '~/pages/ProjectDetails';\r\nimport ProjectList from '~/pages/ProjectList';\r\nimport CompanyDesignationList from '~/pages/CompanyDesignation/CompanyDesignation';\r\nimport CompanyImportantDates from '~/pages/companyImportantDates/companyImportantDates';\r\nimport CompanyEmployee from '~/pages/CompanyEmployee/CompanyEmployee';\r\nimport MeetingList from '~/pages/Meeting/MeetingList';\r\nimport CompanyTaskList from '~/pages/CompanyTask/CompanyTaskList';\r\nimport DataPointList from '~/pages/DataPoint/DataPointList';\r\nimport Profile from '~/pages/Profile';\r\nimport RoleModules from '~/pages/Roles/RoleModules';\r\nimport CompanyTaskDetails from '~/pages/CompanyTask/CompanyTaskDetails';\r\nimport Userpermissionlist from '~/pages/Roles/Userpermissionlist';\r\nimport ProtectedRoute from './protectedRoute';\r\nimport NotFound from '~/pages/NotFound';\r\nimport DataPointTable from '~/pages/DataPoint/DataPointTable';\r\n// import HealthScore from '~/pages/HealthScore/HealthScore';\r\nimport HealthScoreUpdate from '~/pages/HealthScore/HealthScoreUpdate';\r\nimport HealthScoreAchieve from '~/pages/HealthScore/HealthScoreAchieve';\r\n\r\nconst employeeRoutes = () => {\r\n return (\r\n \r\n }\r\n />\r\n }\r\n />\r\n }>\r\n } />\r\n } />\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n }\r\n />\r\n \r\n\r\n {/* \r\n \r\n \r\n \r\n }\r\n />\r\n */}\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n } />\r\n \r\n );\r\n};\r\n\r\nexport default employeeRoutes;\r\n","import { useEffect } from 'react';\r\nimport { useForm } from 'react-hook-form';\r\nimport { Button, Modal } from 'flowbite-react';\r\nimport axios from 'axios';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport { notifyMessage, baseUrl } from '~/utils/app.utils';\r\nimport InputField from '~/components/common/InputField';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst DepartmentAddModal = ({\r\n openModal,\r\n setOpenModal,\r\n fetchData,\r\n isEditMode = false,\r\n initialData = {},\r\n setCurrentObj,\r\n}) => {\r\n const {\r\n register,\r\n handleSubmit,\r\n formState: { errors },\r\n reset,\r\n setValue,\r\n setFocus,\r\n } = useForm();\r\n const { user } = useAuth();\r\n\r\n useEffect(() => {\r\n if (openModal) {\r\n if (isEditMode && initialData?.departmentName) {\r\n setValue('department', initialData.departmentName);\r\n } else {\r\n // // Reset the form for add mode\r\n reset();\r\n setTimeout(() => {\r\n setFocus('department');\r\n }, 0);\r\n }\r\n }\r\n }, [openModal, isEditMode, initialData, setValue, reset, setFocus]);\r\n\r\n const onSubmit = async (data) => {\r\n try {\r\n const endpoint = isEditMode\r\n ? `${baseUrl}/department/${initialData.departmentId}`\r\n : `${baseUrl}/department`;\r\n const method = isEditMode ? 'put' : 'post';\r\n\r\n await axios({\r\n method,\r\n url: endpoint,\r\n data: {\r\n payload: {\r\n departmentName: data.department,\r\n },\r\n },\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }).then((res) => {\r\n if (res.data.status === true) {\r\n notifyMessage(res.data.message, 'success');\r\n fetchData();\r\n reset();\r\n setCurrentObj(null);\r\n setOpenModal(false);\r\n } else {\r\n notifyMessage(res.data.message, 'error');\r\n }\r\n });\r\n } catch (error) {\r\n setOpenModal(false);\r\n\r\n notifyMessage(\r\n error?.response?.data?.message || 'Something went wrong!',\r\n 'error'\r\n );\r\n }\r\n };\r\n\r\n return (\r\n {\r\n setOpenModal(false);\r\n reset();\r\n setCurrentObj(null);\r\n }}\r\n dismissible\r\n >\r\n \r\n {isEditMode ? 'Edit Department' : 'Add Department'}\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n {\r\n setOpenModal(false);\r\n reset();\r\n setCurrentObj(null);\r\n }}\r\n >\r\n Cancel\r\n \r\n \r\n \r\n );\r\n};\r\nDepartmentAddModal.propTypes = {\r\n openModal: PropTypes.bool.isRequired,\r\n setOpenModal: PropTypes.func.isRequired,\r\n fetchData: PropTypes.func.isRequired,\r\n isEditMode: PropTypes.bool,\r\n initialData: PropTypes.shape({\r\n departmentId: PropTypes.number,\r\n departmentName: PropTypes.string,\r\n }),\r\n setCurrentObj: PropTypes.func.isRequired,\r\n};\r\n\r\nDepartmentAddModal.defaultProps = {\r\n isEditMode: false,\r\n initialData: {},\r\n};\r\nexport default DepartmentAddModal;\r\n","import { useEffect, useState, useMemo, useCallback } from 'react';\r\nimport axios from 'axios';\r\nimport { ButtonVariants } from '~/components/common/Button';\r\nimport Card from '~/components/common/Card';\r\nimport SectionHeader from '~/components/common/SectionHeader';\r\nimport DataTable from '~/components/common/DataTable';\r\nimport { AppRelativePaths } from '~/routes/routes.const';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport { notifyMessage, baseUrl, hasPermission } from '~/utils/app.utils';\r\nimport DepartmentAddModal from '~/components/department/DepartmentAddModal';\r\nimport { usePermissionsContext } from '~/context/PermissionsProvider'; // Import permissions context\r\n\r\nexport default function DepartmentList() {\r\n const [openModal, setOpenModal] = useState(false);\r\n const [departmentData, setDepartmentData] = useState([]);\r\n const [currentObj, setCurrentObj] = useState(null);\r\n const [loading, setLoading] = useState(true);\r\n const { user } = useAuth();\r\n const { permissions } = usePermissionsContext();\r\n\r\n const columns = useMemo(\r\n () => [\r\n {\r\n key: 'departmentName',\r\n title: 'Department Name',\r\n },\r\n ],\r\n []\r\n );\r\n\r\n const breadcrumbs = useMemo(\r\n () => [\r\n { label: 'Dashboard', link: AppRelativePaths.ADMIN_DASHBOARD },\r\n { label: 'Department List', link: AppRelativePaths.DEPARTMENT_LIST },\r\n ],\r\n []\r\n );\r\n\r\n const deleteDepartment = useCallback(\r\n async (id) => {\r\n try {\r\n const res = await axios.delete(`${baseUrl}/department/${id}`, {\r\n headers: {\r\n Authorization: user.token,\r\n },\r\n });\r\n if (res.data) {\r\n setDepartmentData((prevData) =>\r\n prevData.filter((department) => department.departmentId !== id)\r\n );\r\n notifyMessage(res.data.message, 'success');\r\n } else {\r\n notifyMessage(res.data.message);\r\n }\r\n } catch {\r\n notifyMessage('Something went wrong');\r\n } finally {\r\n setLoading(false);\r\n }\r\n },\r\n [user.token]\r\n );\r\n\r\n const getDepartmentData = useCallback(async () => {\r\n try {\r\n setLoading(true);\r\n const res = await axios.get(`${baseUrl}/departments`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n });\r\n if (res.data) {\r\n setDepartmentData(res.data.data);\r\n }\r\n } catch {\r\n setDepartmentData([]);\r\n } finally {\r\n setLoading(false);\r\n }\r\n }, [user.token]);\r\n\r\n useEffect(() => {\r\n getDepartmentData();\r\n }, [getDepartmentData]);\r\n\r\n const headerActionButtons = useMemo(\r\n () =>\r\n [\r\n {\r\n id: 'add',\r\n icon: 'plus',\r\n label: 'Add',\r\n variant: ButtonVariants.PRIMARY,\r\n onClick: () => setOpenModal(true),\r\n moduleKey: 'DEPARTMENT',\r\n permission: 'Add',\r\n },\r\n ].filter((button) => {\r\n return hasPermission(\r\n permissions,\r\n button.moduleKey,\r\n button.permission,\r\n user\r\n );\r\n }),\r\n [permissions, user]\r\n );\r\n\r\n const actionButtons = useMemo(\r\n () =>\r\n [\r\n {\r\n label: 'Edit',\r\n onClick: (obj) => {\r\n setCurrentObj(obj);\r\n setOpenModal(true);\r\n },\r\n variant: ButtonVariants.PRIMARY,\r\n moduleKey: 'DEPARTMENT',\r\n permission: 'Edit',\r\n },\r\n {\r\n label: 'Delete',\r\n onClick: (obj) => {\r\n deleteDepartment(obj.departmentId);\r\n },\r\n variant: ButtonVariants.SECONDARY,\r\n moduleKey: 'DEPARTMENT',\r\n permission: 'Delete',\r\n },\r\n ].filter((button) => {\r\n return hasPermission(\r\n permissions,\r\n button.moduleKey,\r\n button.permission,\r\n user\r\n );\r\n }),\r\n [deleteDepartment, permissions, user]\r\n );\r\n\r\n return (\r\n
\r\n {openModal && (\r\n \r\n )}\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import { ButtonVariants } from '~/components/common/Button';\r\nimport Card from '~/components/common/Card';\r\nimport SectionHeader from '~/components/common/SectionHeader';\r\nimport DataTable from '~/components/common/DataTable';\r\n\r\nimport TASK_STATUS_TEST_DATA from './taskStatus.data';\r\n\r\nimport { AppRelativePaths } from '~/routes/routes.const';\r\n\r\nconst breadcrumbs = [\r\n { label: 'Dashboard', link: AppRelativePaths.ADMIN_DASHBOARD },\r\n { label: 'All Task Status', link: AppRelativePaths.TASK_STATUS_LIST },\r\n];\r\n\r\nexport default function TaskStatusList() {\r\n return (\r\n
\r\n \r\n
\r\n \r\n
\r\n {},\r\n variant: ButtonVariants.PRIMARY,\r\n },\r\n {\r\n label: 'Delete',\r\n onClick: () => {},\r\n variant: ButtonVariants.SECONDARY,\r\n },\r\n ]}\r\n />\r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import PropTypes from 'prop-types';\r\nimport { Label, TextInput } from 'flowbite-react';\r\n\r\nconst DateInput = ({\r\n label,\r\n value,\r\n onChange,\r\n className = '',\r\n id = '',\r\n required = false,\r\n ...restProps\r\n}) => {\r\n return (\r\n
\r\n {label && (\r\n \r\n {label}\r\n {required && *}\r\n \r\n )}\r\n onChange(e.target.value)}\r\n {...restProps}\r\n />\r\n
\r\n );\r\n};\r\n\r\nDateInput.propTypes = {\r\n className: PropTypes.string,\r\n label: PropTypes.string,\r\n value: PropTypes.string.isRequired,\r\n onChange: PropTypes.func.isRequired,\r\n required: PropTypes.bool,\r\n id: PropTypes.string,\r\n};\r\n\r\nexport default DateInput;\r\n","import { forwardRef } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { TextInput, Label, Textarea } from 'flowbite-react';\r\n\r\nconst Input = forwardRef(\r\n (\r\n {\r\n required = false,\r\n multiline = false,\r\n label,\r\n id,\r\n name,\r\n type = 'text',\r\n placeholder,\r\n icon,\r\n error,\r\n className = '',\r\n register, // for react-hook-form\r\n onKeyDown,\r\n disabled,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n // If register is provided, use it, otherwise just spread props\r\n const inputProps = register ? register(name, props.validation) : props;\r\n\r\n return (\r\n
\r\n {label && (\r\n \r\n {label}\r\n {required && *}\r\n \r\n )}\r\n {multiline ? (\r\n \r\n ) : (\r\n \r\n )}\r\n {/* */}\r\n {error && (\r\n

{error.message || error}

\r\n )}\r\n
\r\n );\r\n }\r\n);\r\n\r\nInput.displayName = 'Input';\r\n\r\nInput.propTypes = {\r\n label: PropTypes.string,\r\n id: PropTypes.string,\r\n name: PropTypes.string,\r\n type: PropTypes.string,\r\n placeholder: PropTypes.string,\r\n icon: PropTypes.string,\r\n error: PropTypes.object,\r\n className: PropTypes.string,\r\n register: PropTypes.func,\r\n validation: PropTypes.object,\r\n required: PropTypes.bool,\r\n multiline: PropTypes.bool,\r\n disabled: PropTypes.bool,\r\n onKeyDown: PropTypes.func,\r\n};\r\nexport default Input;\r\n","import React, {\r\n useState,\r\n useRef,\r\n useMemo,\r\n useCallback,\r\n useEffect,\r\n} from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst ImageUpload = ({\r\n label,\r\n id,\r\n onImageUpload,\r\n initialImage,\r\n isPancard = false,\r\n required = false,\r\n}) => {\r\n const [file, setFile] = useState(initialImage || null);\r\n const [error, setError] = useState('');\r\n const fileInputRef = useRef(null);\r\n const maxFileSize = 5 * 1024 * 1024;\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n const validFileTypes = isPancard\r\n ? ['image/jpeg', 'image/jpg', 'image/png', 'image/gif', 'application/pdf']\r\n : ['image/jpeg', 'image/jpg', 'image/png', 'image/gif'];\r\n\r\n // Effect to sync file state with initialImage\r\n useEffect(() => {\r\n if (initialImage === null) {\r\n setFile(null);\r\n onImageUpload(null); // Also notify parent component if needed\r\n if (fileInputRef.current) {\r\n fileInputRef.current.value = ''; // Clear file input\r\n }\r\n } else if (initialImage) {\r\n setFile(initialImage); // Set file to initialImage if it's provided\r\n }\r\n }, [initialImage, onImageUpload]); // Re-run when initialImage or onImageUpload changes\r\n\r\n const handleImageUpload = useCallback(\r\n (e) => {\r\n const uploadedFile = e.target.files[0];\r\n if (!uploadedFile) return;\r\n\r\n if (uploadedFile.size > maxFileSize) {\r\n setError('File size must be 5MB or less');\r\n fileInputRef.current.value = '';\r\n return;\r\n }\r\n\r\n if (!validFileTypes.includes(uploadedFile.type)) {\r\n isPancard\r\n ? setError('File type must be JPEG, JPG, PNG, GIF, or PDF')\r\n : setError('File type must be JPEG, JPG, PNG, GIF');\r\n fileInputRef.current.value = '';\r\n return;\r\n }\r\n\r\n setError('');\r\n if (uploadedFile.type === 'application/pdf' && isPancard) {\r\n setFile(uploadedFile);\r\n onImageUpload(uploadedFile);\r\n } else {\r\n const reader = new FileReader();\r\n reader.onload = (event) => {\r\n setFile(event.target.result);\r\n onImageUpload(uploadedFile);\r\n };\r\n reader.readAsDataURL(uploadedFile);\r\n }\r\n },\r\n [isPancard, maxFileSize, onImageUpload, validFileTypes]\r\n );\r\n\r\n const handleRemoveFile = useCallback(() => {\r\n setFile(null);\r\n onImageUpload(null);\r\n if (fileInputRef.current) {\r\n fileInputRef.current.value = '';\r\n }\r\n }, [onImageUpload]);\r\n\r\n const renderUploadPlaceholder = useMemo(() => {\r\n return (\r\n \r\n {!isPancard && }\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }, [handleImageUpload, id, isPancard]);\r\n\r\n const renderFilePreview = useMemo(() => {\r\n return (\r\n
\r\n \r\n {/* {file &&\r\n (file.endsWith('.pdf') || file.type === 'application/pdf') &&\r\n isPancard */}\r\n {file &&\r\n (typeof file === 'string'\r\n ? file.endsWith('.pdf')\r\n : file.type === 'application/pdf') &&\r\n isPancard ? (\r\n
\r\n \r\n \r\n View PDF\r\n \r\n
\r\n ) : (\r\n \r\n )}\r\n \r\n \r\n \r\n
\r\n \r\n );\r\n }, [file, handleRemoveFile, isPancard]);\r\n\r\n return (\r\n
\r\n {label && (\r\n

\r\n {label} {required && *}\r\n

\r\n )}\r\n\r\n \r\n {file ? renderFilePreview : renderUploadPlaceholder}\r\n
\r\n\r\n {error &&

{error}

}\r\n \r\n );\r\n};\r\n\r\nImageUpload.propTypes = {\r\n label: PropTypes.string,\r\n id: PropTypes.string.isRequired,\r\n onImageUpload: PropTypes.func.isRequired,\r\n initialImage: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\r\n isPancard: PropTypes.bool,\r\n required: PropTypes.bool,\r\n};\r\n\r\nexport default React.memo(ImageUpload);\r\n","import { useCallback, useEffect, useState } from 'react';\r\nimport { useFormContext, useWatch } from 'react-hook-form';\r\nimport Input from '~/components/common/Input';\r\nimport axios from 'axios';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport ProfileImage from '~/components/common/ProfileImage/profileImage';\r\nimport ReactSelectField from '~/components/common/ReactSelectField';\r\nimport InputField from '~/components/common/InputField';\r\nimport { baseUrl } from '~/utils/app.utils';\r\nimport MobileNumberInputField from '~/components/common/MobileNumberInputField';\r\nimport PropTypes from 'prop-types';\r\n\r\nexport default function BasicInfoForm({\r\n industryOptions = [],\r\n industryScaleOptions = [],\r\n countryOptions = [],\r\n control,\r\n errors,\r\n consultants = [],\r\n engagementtypes = [],\r\n initialImage,\r\n pancardFrontImage,\r\n gstCertificateImage,\r\n register,\r\n countryCode,\r\n accountCode,\r\n setCountryCode,\r\n setAccountCode,\r\n sahayTeamMates = [],\r\n}) {\r\n const { setValue, watch } = useFormContext();\r\n const { user } = useAuth();\r\n const [stateData, setStateData] = useState([]);\r\n const [cityData, setCityData] = useState([]);\r\n const selectedCountry = watch('country');\r\n const selectedState = watch('state');\r\n const annualTurnOver = watch('annualTurnOver');\r\n\r\n const selectConsultant = watch('selectedConsultant');\r\n\r\n const [filteredIndustryScaleOptions, setFilteredIndustryScaleOptions] =\r\n useState(industryScaleOptions);\r\n\r\n const getStateData = useCallback(async () => {\r\n try {\r\n const res = await axios.get(\r\n `${baseUrl}/state/country/${selectedCountry?.value}`,\r\n {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }\r\n );\r\n if (res.data) {\r\n const updatedData = res.data.data.map((el) => ({\r\n value: el.stateId,\r\n label: el.stateName,\r\n }));\r\n setStateData(updatedData);\r\n }\r\n } catch {\r\n setStateData([]);\r\n }\r\n }, [selectedCountry?.value, user.token]);\r\n const getCityData = useCallback(async () => {\r\n try {\r\n const res = await axios.get(\r\n `${baseUrl}/city/state/${selectedState?.value}`,\r\n {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }\r\n );\r\n if (res.data) {\r\n const updatedData = res.data.data.map((el) => ({\r\n value: el.cityId,\r\n label: el.cityName,\r\n }));\r\n setCityData(updatedData);\r\n }\r\n } catch {\r\n setStateData([]);\r\n }\r\n }, [selectedState?.value, user.token]);\r\n\r\n useEffect(() => {\r\n if (selectedCountry) {\r\n getStateData();\r\n } else {\r\n setStateData([]);\r\n }\r\n }, [getStateData, selectedCountry]);\r\n\r\n useEffect(() => {\r\n if (selectedState) {\r\n getCityData();\r\n } else {\r\n setCityData([]);\r\n }\r\n }, [getCityData, selectedState]);\r\n\r\n const selectedIndustryScale = useWatch({ name: 'industryScaleId', control });\r\n\r\n useEffect(() => {\r\n if (annualTurnOver) {\r\n const updatedOptions = industryScaleOptions.filter(\r\n (option) =>\r\n option.minRevenue <= annualTurnOver &&\r\n option.maxRevenue >= annualTurnOver\r\n );\r\n setFilteredIndustryScaleOptions(updatedOptions);\r\n\r\n const isValidSelection = updatedOptions.some(\r\n (option) => option.value === selectedIndustryScale?.value\r\n );\r\n\r\n if (!isValidSelection) {\r\n setValue(\r\n 'industryScaleId',\r\n updatedOptions.length > 0 ? updatedOptions[0] : null\r\n );\r\n }\r\n }\r\n }, [annualTurnOver, industryScaleOptions, setValue, selectedIndustryScale]);\r\n\r\n // Format number in Indian style (e.g., 1,00,000)\r\n const formatNumber = (value) => {\r\n if (!value) return '';\r\n const num = parseInt(value.toString().replace(/,/g, ''));\r\n return isNaN(num) ? '' : num.toLocaleString('en-IN');\r\n };\r\n\r\n const unformatNumber = (value) => value?.toString().replace(/,/g, '');\r\n\r\n return (\r\n
\r\n {\r\n setValue('image', file || null);\r\n }}\r\n isPancard={false}\r\n required={true}\r\n />\r\n
\r\n
\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n {\r\n const rawValue = unformatNumber(e.target.value);\r\n if (!isNaN(rawValue)) {\r\n setValue('annualTurnOver', rawValue);\r\n }\r\n }}\r\n error={errors?.annualTurnOver?.message}\r\n required\r\n />\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n
\r\n\r\n
\r\n
\r\n {/* Pancard Front Image */}\r\n {\r\n setValue('pancardFront', file || null);\r\n }}\r\n isPancard={true}\r\n />\r\n
\r\n
\r\n {/* GST Certificate Image */}\r\n {\r\n setValue('gstCertificate', file || null);\r\n }}\r\n isPancard={true}\r\n />\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nBasicInfoForm.propTypes = {\r\n industryOptions: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n value: PropTypes.string,\r\n label: PropTypes.string,\r\n })\r\n ),\r\n industryScaleOptions: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n value: PropTypes.string,\r\n label: PropTypes.string,\r\n minRevenue: PropTypes.number,\r\n maxRevenue: PropTypes.number,\r\n })\r\n ),\r\n countryOptions: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n value: PropTypes.string,\r\n label: PropTypes.string,\r\n })\r\n ),\r\n control: PropTypes.object,\r\n errors: PropTypes.object,\r\n consultants: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n value: PropTypes.string,\r\n label: PropTypes.string,\r\n })\r\n ),\r\n engagementtypes: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n value: PropTypes.string,\r\n label: PropTypes.string,\r\n })\r\n ),\r\n initialImage: PropTypes.string,\r\n pancardFrontImage: PropTypes.string,\r\n gstCertificateImage: PropTypes.string,\r\n register: PropTypes.func,\r\n countryCode: PropTypes.string,\r\n accountCode: PropTypes.string,\r\n setCountryCode: PropTypes.func,\r\n setAccountCode: PropTypes.func,\r\n sahayTeamMates: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n value: PropTypes.string,\r\n label: PropTypes.string,\r\n })\r\n ),\r\n};\r\n\r\n// BasicInfoForm.defaultProps = {\r\n// industryOptions: [],\r\n// industryScaleOptions: [],\r\n// countryOptions: [],\r\n// consultants: [],\r\n// engagementtypes: [],\r\n// sahayTeamMates: [],\r\n// initialImage: '',\r\n// pancardFrontImage: '',\r\n// gstCertificateImage: '',\r\n// };\r\n","import { useCallback, useEffect, useState } from 'react';\r\nimport { FormProvider, useForm, useFormContext } from 'react-hook-form';\r\nimport { useParams, useNavigate } from 'react-router-dom';\r\nimport axios from 'axios';\r\nimport SectionHeader from '~/components/common/SectionHeader';\r\nimport Card from '~/components/common/Card';\r\nimport BasicInfoForm from '~/components/company/BasicInfoForm';\r\nimport Button, { ButtonVariants } from '~/components/common/Button';\r\nimport { AppRelativePaths } from '~/routes/routes.const';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport { notifyMessage, baseUrl } from '~/utils/app.utils';\r\n\r\nfunction CompanyForm() {\r\n const { id } = useParams();\r\n const navigate = useNavigate();\r\n const { user } = useAuth();\r\n const {\r\n control,\r\n reset,\r\n register,\r\n handleSubmit,\r\n formState: { errors },\r\n } = useFormContext();\r\n\r\n const breadcrumbs = [\r\n { label: 'Company List', link: AppRelativePaths.COMPANY_LIST },\r\n {\r\n label: id ? 'Edit company' : 'Add company',\r\n link: AppRelativePaths.COMPANY_ADD,\r\n },\r\n ];\r\n\r\n const [loading, setLoading] = useState(false);\r\n const [industryOptions, setIndustryOptions] = useState([]);\r\n const [industryScaleOptions, setIndustryScaleOptions] = useState([]);\r\n const [countryOptions, setCountryOptions] = useState([]);\r\n const [consultants, setConsultants] = useState([]);\r\n const [engagementtypes, setEngagementTypes] = useState([]);\r\n const [initialImage, setInitialImage] = useState(null);\r\n const [pancardFrontImage, setPancardFrontImage] = useState(null);\r\n const [gstCertificateImage, setGSTCertificateImage] = useState(null);\r\n const [countryCode, setCountryCode] = useState('+91');\r\n const [accountCode, setAccountCode] = useState('+91');\r\n const [sahayTeamMates, setSahayTeamMates] = useState([]);\r\n\r\n const [isConsultantData, setIsConsultantData] = useState();\r\n\r\n const formatNumber = (value) => {\r\n if (!value) return '';\r\n const num = parseInt(value.toString().replace(/,/g, ''));\r\n return isNaN(num) ? '' : num.toLocaleString('en-IN');\r\n };\r\n\r\n // Fetch dropdown options\r\n const fetchDropdownOptions = useCallback(async () => {\r\n try {\r\n const [\r\n industries,\r\n industryScales,\r\n countries,\r\n consultants,\r\n engagementtypes,\r\n sahayTeamMates,\r\n ] = await Promise.all([\r\n axios.get(`${baseUrl}/industries`, {\r\n headers: { Authorization: user.token },\r\n }),\r\n axios.get(`${baseUrl}/industryscales`, {\r\n headers: { Authorization: user.token },\r\n }),\r\n axios.get(`${baseUrl}/countries`, {\r\n headers: { Authorization: user.token },\r\n }),\r\n axios.get(`${baseUrl}/consultants`, {\r\n headers: { Authorization: user.token },\r\n }),\r\n axios.get(`${baseUrl}/engagementtypes`, {\r\n headers: { Authorization: user.token },\r\n }),\r\n axios.get(`${baseUrl}/adminusers`, {\r\n headers: { Authorization: user.token },\r\n }),\r\n ]);\r\n setIndustryOptions(\r\n industries.data.data.map((item) => ({\r\n value: item.industryId,\r\n label: item.industryName,\r\n }))\r\n );\r\n\r\n setIndustryScaleOptions(\r\n industryScales.data.data.map((item) => ({\r\n value: item.industryScaleId,\r\n label: `${item.industryScaleName} (₹${formatNumber(item.minRevenue)} to ₹${formatNumber(item.maxRevenue)})`,\r\n minRevenue: item.minRevenue,\r\n maxRevenue: item.maxRevenue,\r\n }))\r\n );\r\n setCountryOptions(\r\n countries.data.data.map((item) => ({\r\n value: item.countryId,\r\n label: item.countryName,\r\n }))\r\n );\r\n setIsConsultantData(consultants.data.data);\r\n setConsultants(\r\n consultants.data.data.map((item) => ({\r\n value: item.consultantId,\r\n label: item.consultantName,\r\n viewLabel: item.consultantMobile,\r\n email: item.consultantEmail,\r\n }))\r\n );\r\n setEngagementTypes(\r\n engagementtypes.data.data.map((item) => ({\r\n value: item.engagementTypeId,\r\n label: item.engagementTypeName,\r\n }))\r\n );\r\n\r\n setSahayTeamMates(\r\n sahayTeamMates.data.data.map((item) => ({\r\n value: item.adminUserId,\r\n label: item.adminUserName,\r\n }))\r\n );\r\n } catch {\r\n notifyMessage('Error fetching dropdown options', 'error');\r\n }\r\n }, [user.token]);\r\n\r\n useEffect(() => {\r\n fetchDropdownOptions();\r\n if (id) {\r\n setLoading(true);\r\n axios\r\n .get(`${baseUrl}/company/${id}`, {\r\n headers: { Authorization: user.token },\r\n })\r\n .then((response) => {\r\n const { data } = response.data;\r\n const countryCode = data?.companyMobile?.match(/^\\+91/)[0];\r\n const companyMobile = data?.companyMobile?.replace(/^\\+91/, '');\r\n const adminCode = data?.companyAdminMobile?.match(/^\\+91/)[0];\r\n const companyAdminMobile = data?.companyAdminMobile?.replace(\r\n /^\\+91/,\r\n ''\r\n );\r\n setCountryCode(countryCode);\r\n setAccountCode(adminCode);\r\n\r\n const superAdmins = data.CompanyEmployee.filter(\r\n (item) => item.isSuperAdmin === true\r\n );\r\n\r\n reset({\r\n companyName: data.companyName,\r\n companyBillingName: data.companyBillingName,\r\n companyAddress: data.companyAddress || '',\r\n companyMobile: companyMobile || '',\r\n businessStartDate: data.businessStartDate.slice(0, 10),\r\n annualTurnOver: data.annualTurnOver || '',\r\n companyGst: data.companyGst || '',\r\n companyWebsite: data.companyWebsite || '',\r\n companyAdminName: data.companyAdminName,\r\n companyAdminMobile: companyAdminMobile,\r\n companyAdminEmail: data.companyAdminEmail,\r\n industryId: {\r\n value: data.Industry.industryId,\r\n label: data.Industry.industryName,\r\n },\r\n industryScaleId: {\r\n value: data.IndustryScale.industryScaleId,\r\n // label: data.IndustryScale.industryScaleName,\r\n label: `${data.IndustryScale.industryScaleName} (₹${formatNumber(data.IndustryScale.minRevenue)} to ₹${formatNumber(data.IndustryScale.maxRevenue)})`,\r\n },\r\n cityId: {\r\n value: data.City.cityId,\r\n label: data.City.cityName,\r\n },\r\n country: {\r\n value: data.City.state.country.countryId,\r\n label: data.City.state.country.countryName,\r\n },\r\n state: {\r\n value: data.City.state.stateId,\r\n label: data.City.state.stateName,\r\n },\r\n engagementTypeId: {\r\n value: data.engagementType.engagementTypeId,\r\n label: data.engagementType.engagementTypeName,\r\n },\r\n selectedConsultant: data.CompanyConsultant.map((item) => ({\r\n value: item.consultant.consultantId,\r\n label: item.consultant.consultantName,\r\n })),\r\n superAdmin: {\r\n value: superAdmins[0].sahayEmId,\r\n label: superAdmins[0].employeeName,\r\n },\r\n\r\n // superAdmin: {data.superAdmin.value === consultant.consultantId},\r\n accountPOC: data.accountPOC,\r\n accountsPocEmail: data.accountsPocEmail,\r\n pancardNumber: data.pancardNumber,\r\n selectedSahayTeammates: data.AdminUserCompanyEmployeeJunction.map(\r\n (item) => ({\r\n value: item.AdminUser.adminUserId,\r\n label: item.AdminUser.adminUserName,\r\n })\r\n ),\r\n });\r\n if (data.logo) {\r\n setInitialImage(`${baseUrl}/share/logo/${data.logo}`);\r\n }\r\n if (data.pancard) {\r\n setPancardFrontImage(`${baseUrl}/share/pancards/${data.pancard}`);\r\n }\r\n if (data.gstCertificate) {\r\n setGSTCertificateImage(\r\n `${baseUrl}/share/gst/${data.gstCertificate}`\r\n );\r\n }\r\n })\r\n .catch(() => {\r\n notifyMessage('Something went wrong');\r\n })\r\n .finally(() => {\r\n setLoading(false);\r\n });\r\n }\r\n }, [fetchDropdownOptions, id, reset, user.token]);\r\n\r\n const uploadFile = async (file, type, endpoint) => {\r\n if (!file) return true; // Skip upload if no file provided\r\n try {\r\n const data = new FormData();\r\n data.append('imageType', type);\r\n if (type === 'pancard') {\r\n data.append('multiple', true);\r\n data.append('images', file);\r\n } else {\r\n data.append('image', file);\r\n }\r\n await axios.post(`${baseUrl}${endpoint}`, data, {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data',\r\n Authorization: user.token,\r\n },\r\n });\r\n\r\n return true; // Indicate success\r\n } catch {\r\n return false; // Indicate failure\r\n }\r\n };\r\n\r\n const handleSave = async (data) => {\r\n if (data.image === null || (!data.image && !initialImage)) {\r\n notifyMessage('Logo is required', 'error');\r\n setLoading(false);\r\n return;\r\n }\r\n\r\n const selectedSuperAdminId = data.superAdmin?.value;\r\n\r\n const matchedConsultant = isConsultantData.find(\r\n (consultant) => consultant.consultantId === selectedSuperAdminId\r\n );\r\n\r\n const unformatNumber = (value) => {\r\n if (!value) return '';\r\n return value.toString().replace(/[₹,]/g, '').trim();\r\n };\r\n\r\n // Parse and format specific fields\r\n data.annualTurnOver = parseFloat(unformatNumber(data.annualTurnOver));\r\n data.businessStartDate = new Date(data.businessStartDate).toISOString();\r\n try {\r\n setLoading(true);\r\n const url = id ? `${baseUrl}/company/${id}` : `${baseUrl}/company`;\r\n const method = id ? 'put' : 'post';\r\n const saveObj = {\r\n companyName: data.companyName,\r\n businessStartDate: data.businessStartDate,\r\n companyBillingName: data.companyBillingName,\r\n companyAddress: data.companyAddress,\r\n companyMobile: countryCode + data.companyMobile,\r\n companyAdminName: data.companyAdminName,\r\n companyAdminMobile: accountCode + data.companyAdminMobile,\r\n companyAdminEmail: data.companyAdminEmail,\r\n companyGst: data.companyGst,\r\n companyWebsite: data.companyWebsite,\r\n annualTurnOver: data.annualTurnOver,\r\n consultants: data.selectedConsultant.map((el) => el.value),\r\n engagementTypeId: data.engagementTypeId.value,\r\n cityId: data.cityId.value,\r\n industryId: data.industryId.value,\r\n industryScaleId: data.industryScaleId.value,\r\n accountPOC: data.accountPOC,\r\n accountsPocEmail: data.accountsPocEmail,\r\n pancardNumber: data?.pancardNumber ? data?.pancardNumber?.trim() : '',\r\n sahayTeamMates:\r\n data?.selectedSahayTeammates?.length > 0\r\n ? data.selectedSahayTeammates?.map((el) => el.value)\r\n : [],\r\n\r\n superAdmin: matchedConsultant,\r\n };\r\n const response = await axios({\r\n method,\r\n url,\r\n data: saveObj, // Send data as JSON\r\n headers: {\r\n Authorization: user.token,\r\n 'Content-Type': 'application/json', // Ensure JSON format\r\n },\r\n });\r\n\r\n const companyUserId = response.data.data.companyId;\r\n\r\n // **Function calls with common function**\r\n const profileImageUploaded = await uploadFile(\r\n data.image,\r\n 'logo',\r\n `/company/logo/${companyUserId}`\r\n );\r\n\r\n if (profileImageUploaded) {\r\n notifyMessage(\r\n id ? 'User updated successfully!' : 'User created successfully!',\r\n 'success'\r\n );\r\n navigate(AppRelativePaths.COMPANY_LIST); // Redirect after success\r\n } else {\r\n notifyMessage('Some uploads failed. Please try again.', 'error');\r\n }\r\n } catch (error) {\r\n notifyMessage(\r\n error?.response?.data?.message || 'Something went wrong!',\r\n 'error'\r\n );\r\n } finally {\r\n setLoading(false);\r\n }\r\n };\r\n\r\n // const handleSave = async (data) => {\r\n // console.log(data);\r\n // };\r\n\r\n const handleCancel = () => {\r\n reset(); // Reset form fields\r\n navigate(AppRelativePaths.COMPANY_LIST); // Redirect to Company List\r\n };\r\n\r\n return (\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n {id ? 'Update' : 'Save'}\r\n \r\n \r\n Cancel\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default function CompanyFormWrapper(props) {\r\n const methods = useForm();\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n","import { useEffect, useState, useMemo, useCallback } from 'react';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport axios from 'axios';\r\nimport SectionHeader from '~/components/common/SectionHeader';\r\nimport Card from '~/components/common/Card';\r\nimport { AppRelativePaths } from '~/routes/routes.const';\r\nimport { ButtonVariants } from '~/components/common/Button';\r\nimport DataTable from '~/components/common/DataTable';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport { notifyMessage, baseUrl, hasPermission } from '~/utils/app.utils';\r\nimport { usePermissionsContext } from '~/context/PermissionsProvider'; // Import permissions context\r\n\r\nexport default function CompanyList() {\r\n const navigate = useNavigate();\r\n const [companyData, setCompanyData] = useState([]);\r\n const [loading, setLoading] = useState(false);\r\n const { user } = useAuth();\r\n const { permissions } = usePermissionsContext();\r\n\r\n const columnsMemo = useMemo(\r\n () => [\r\n {\r\n key: 'companyName',\r\n title: 'Company name',\r\n },\r\n ],\r\n []\r\n );\r\n\r\n const breadcrumbsMemo = useMemo(\r\n () => [\r\n { label: 'Dashboard', link: AppRelativePaths.ADMIN_DASHBOARD },\r\n { label: 'Company List', link: AppRelativePaths.COMPANY_LIST },\r\n ],\r\n []\r\n );\r\n\r\n const deleteCompany = useCallback(\r\n async (id) => {\r\n try {\r\n const response = await axios.delete(`${baseUrl}/company/${id}`, {\r\n headers: {\r\n Authorization: user.token,\r\n },\r\n });\r\n\r\n if (response?.data?.status) {\r\n setCompanyData((prevData) =>\r\n prevData.filter((company) => company.companyId !== id)\r\n );\r\n notifyMessage(response.data.message, 'success');\r\n } else {\r\n notifyMessage(\r\n response?.data?.message || 'Unexpected response from server',\r\n 'error'\r\n );\r\n }\r\n } catch {\r\n notifyMessage('Something went wrong', 'error');\r\n }\r\n },\r\n [user.token]\r\n );\r\n\r\n const getCompaniesData = useCallback(async () => {\r\n try {\r\n setLoading(true);\r\n const response = await axios.get(`${baseUrl}/companies`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n });\r\n\r\n if (response?.data?.status) {\r\n setCompanyData(response.data.data);\r\n } else {\r\n notifyMessage(\r\n response?.data?.message || 'Unexpected response from server',\r\n 'error'\r\n );\r\n setCompanyData([]);\r\n }\r\n } catch {\r\n notifyMessage('Unable to fetch data. Please try again later.', 'error');\r\n setCompanyData([]);\r\n } finally {\r\n setLoading(false);\r\n }\r\n }, [user.token]);\r\n\r\n useEffect(() => {\r\n getCompaniesData();\r\n }, [getCompaniesData]);\r\n\r\n const headerActionButtons = useMemo(\r\n () =>\r\n [\r\n {\r\n id: 'add',\r\n icon: 'plus',\r\n label: 'Add',\r\n variant: ButtonVariants.PRIMARY,\r\n onClick: () => {\r\n navigate(`/administrator-panel/company/add`);\r\n },\r\n moduleKey: 'COMPANY',\r\n permission: 'Add',\r\n },\r\n ].filter((button) => {\r\n return hasPermission(\r\n permissions,\r\n button.moduleKey,\r\n button.permission,\r\n user\r\n );\r\n }),\r\n [navigate, permissions, user]\r\n );\r\n\r\n const actionButtons = useMemo(\r\n () =>\r\n [\r\n {\r\n label: 'Edit',\r\n onClick: (row) => {\r\n navigate(`/administrator-panel/company/add/${row.companyId}`);\r\n },\r\n variant: ButtonVariants.PRIMARY,\r\n moduleKey: 'COMPANY',\r\n permission: 'Edit',\r\n },\r\n {\r\n label: 'Delete',\r\n onClick: (obj) => {\r\n deleteCompany(obj.companyId);\r\n },\r\n variant: ButtonVariants.SECONDARY,\r\n moduleKey: 'COMPANY',\r\n permission: 'Delete',\r\n },\r\n ].filter((button) => {\r\n return hasPermission(\r\n permissions,\r\n button.moduleKey,\r\n button.permission,\r\n user\r\n );\r\n }),\r\n [deleteCompany, navigate, permissions, user]\r\n );\r\n\r\n return (\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import { useEffect } from 'react';\r\nimport { useForm } from 'react-hook-form';\r\nimport { Button, Modal } from 'flowbite-react';\r\nimport axios from 'axios';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport {\r\n notifyMessage,\r\n baseUrl,\r\n capitalizeFirstLetter,\r\n} from '~/utils/app.utils';\r\nimport InputField from '~/components/common/InputField';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst AddCountryModal = ({\r\n openModal,\r\n setOpenModal,\r\n fetchData,\r\n isEditMode = false,\r\n initialData = {},\r\n setCurrentObj,\r\n}) => {\r\n const {\r\n register,\r\n handleSubmit,\r\n formState: { errors },\r\n reset,\r\n setValue,\r\n setFocus,\r\n } = useForm();\r\n const { user } = useAuth();\r\n\r\n useEffect(() => {\r\n if (openModal) {\r\n if (isEditMode && initialData?.countryName) {\r\n setValue('country', initialData.countryName);\r\n } else {\r\n // Use setTimeout to ensure the modal is fully rendered before focusing\r\n setTimeout(() => {\r\n setFocus('country');\r\n }, 0);\r\n }\r\n }\r\n }, [openModal, isEditMode, initialData, setValue, setFocus]);\r\n\r\n const onSubmit = async (data) => {\r\n try {\r\n const endpoint = isEditMode\r\n ? `${baseUrl}/country/${initialData.countryId}`\r\n : `${baseUrl}/country`;\r\n const method = isEditMode ? 'put' : 'post';\r\n\r\n await axios({\r\n method,\r\n url: endpoint,\r\n data: {\r\n payload: {\r\n countryName: capitalizeFirstLetter(data.country),\r\n },\r\n },\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }).then((res) => {\r\n if (res.data.status === true) {\r\n notifyMessage(res.data.message, 'success');\r\n fetchData();\r\n reset();\r\n setCurrentObj(null);\r\n setOpenModal(false);\r\n } else {\r\n notifyMessage(res.data.message, 'error');\r\n }\r\n });\r\n } catch (error) {\r\n notifyMessage(\r\n error?.response?.data?.message || 'Something went wrong!',\r\n 'error'\r\n );\r\n }\r\n };\r\n\r\n return (\r\n {\r\n setOpenModal(false);\r\n reset();\r\n setCurrentObj(null);\r\n }}\r\n dismissible\r\n >\r\n {isEditMode ? 'Edit Country' : 'Add Country'}\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n {\r\n setOpenModal(false);\r\n reset();\r\n setCurrentObj(null);\r\n }}\r\n >\r\n Cancel\r\n \r\n \r\n \r\n );\r\n};\r\nAddCountryModal.propTypes = {\r\n openModal: PropTypes.bool,\r\n setOpenModal: PropTypes.func,\r\n fetchData: PropTypes.func,\r\n isEditMode: PropTypes.bool,\r\n initialData: PropTypes.shape({\r\n countryId: PropTypes.number,\r\n countryName: PropTypes.string,\r\n }),\r\n setCurrentObj: PropTypes.func,\r\n};\r\n\r\nAddCountryModal.defaultProps = {\r\n isEditMode: false,\r\n initialData: {},\r\n};\r\nexport default AddCountryModal;\r\n","import { useEffect, useState, useMemo, useCallback } from 'react';\r\nimport axios from 'axios';\r\nimport { ButtonVariants } from '~/components/common/Button';\r\nimport Card from '~/components/common/Card';\r\nimport SectionHeader from '~/components/common/SectionHeader';\r\nimport DataTable from '~/components/common/DataTable';\r\nimport { AppRelativePaths } from '~/routes/routes.const';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport { notifyMessage, baseUrl, hasPermission } from '~/utils/app.utils';\r\nimport AddCountryModal from '~/components/location/AddCountryModal';\r\nimport { usePermissionsContext } from '~/context/PermissionsProvider'; // Import permissions context\r\n\r\nexport default function CountriesList() {\r\n const [openModal, setOpenModal] = useState(false);\r\n const [countryData, setCountryData] = useState([]);\r\n const [currentObj, setCurrentObj] = useState(null);\r\n const { user } = useAuth();\r\n const [loading, setLoading] = useState(true);\r\n const { permissions } = usePermissionsContext();\r\n\r\n const columns = useMemo(\r\n () => [\r\n {\r\n key: 'countryName',\r\n title: 'Country Name',\r\n },\r\n ],\r\n []\r\n );\r\n\r\n const breadcrumbs = useMemo(\r\n () => [\r\n { label: 'Dashboard', link: AppRelativePaths.ADMIN_DASHBOARD },\r\n { label: 'Country List', link: AppRelativePaths.LOCATION_COUNTRIES },\r\n ],\r\n []\r\n );\r\n\r\n const getCountryData = useCallback(async () => {\r\n try {\r\n setLoading(true);\r\n const res = await axios.get(`${baseUrl}/countries`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n });\r\n if (res.data) {\r\n setCountryData(res.data.data);\r\n }\r\n } catch {\r\n setCountryData([]);\r\n } finally {\r\n setLoading(false);\r\n }\r\n }, [user.token]);\r\n\r\n const deleteCountry = useCallback(\r\n async (id) => {\r\n try {\r\n const res = await axios.delete(`${baseUrl}/country/${id}`, {\r\n headers: {\r\n Authorization: user.token,\r\n },\r\n });\r\n if (res.data) {\r\n setCountryData((prevData) =>\r\n prevData.filter((country) => country.countryId !== id)\r\n );\r\n notifyMessage(res.data.message, 'success');\r\n } else {\r\n notifyMessage(res.data.message);\r\n }\r\n } catch {\r\n notifyMessage('Something went wrong');\r\n } finally {\r\n setLoading(false);\r\n }\r\n },\r\n [user.token]\r\n );\r\n\r\n useEffect(() => {\r\n getCountryData();\r\n }, [getCountryData]);\r\n\r\n const headerActionButtons = useMemo(\r\n () =>\r\n [\r\n {\r\n id: 'add',\r\n icon: 'plus',\r\n label: 'Add',\r\n variant: ButtonVariants.PRIMARY,\r\n onClick: () => setOpenModal(true), // Opens the modal\r\n moduleKey: 'COUNTRY',\r\n permission: 'Add',\r\n },\r\n ].filter((button) => {\r\n return hasPermission(\r\n permissions,\r\n button.moduleKey,\r\n button.permission,\r\n user\r\n );\r\n }),\r\n [permissions, user]\r\n );\r\n\r\n const actionButtons = useMemo(\r\n () =>\r\n [\r\n {\r\n label: 'Edit',\r\n onClick: (obj) => {\r\n setCurrentObj(obj);\r\n setOpenModal(true);\r\n },\r\n variant: ButtonVariants.PRIMARY,\r\n moduleKey: 'COUNTRY',\r\n permission: 'Edit',\r\n },\r\n {\r\n label: 'Delete',\r\n onClick: (obj) => {\r\n deleteCountry(obj.countryId);\r\n },\r\n variant: ButtonVariants.SECONDARY,\r\n moduleKey: 'COUNTRY',\r\n permission: 'Delete',\r\n },\r\n ].filter((button) => {\r\n return hasPermission(\r\n permissions,\r\n button.moduleKey,\r\n button.permission,\r\n user\r\n );\r\n }),\r\n [deleteCountry, permissions, user]\r\n );\r\n\r\n return (\r\n
\r\n {openModal && (\r\n \r\n )}\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import { useCallback, useEffect, useState } from 'react';\r\nimport { useForm } from 'react-hook-form';\r\nimport { Button, Modal } from 'flowbite-react';\r\nimport axios from 'axios';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport {\r\n notifyMessage,\r\n baseUrl,\r\n capitalizeFirstLetter,\r\n} from '~/utils/app.utils';\r\nimport ReactSelectField from '~/components/common/ReactSelectField';\r\nimport InputField from '~/components/common/InputField';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst AddStateModal = ({\r\n openModal,\r\n setOpenModal,\r\n fetchData,\r\n isEditMode = false,\r\n initialData = {},\r\n setCurrentObj,\r\n}) => {\r\n const {\r\n register,\r\n handleSubmit,\r\n formState: { errors },\r\n reset,\r\n setValue,\r\n control,\r\n setFocus,\r\n } = useForm();\r\n const { user } = useAuth();\r\n const [countryData, setCountryData] = useState([]);\r\n\r\n useEffect(() => {\r\n if (openModal) {\r\n if (isEditMode && initialData) {\r\n reset({\r\n country: {\r\n value: initialData?.country?.countryId,\r\n label: initialData?.country?.countryName,\r\n },\r\n state: initialData.stateName,\r\n });\r\n } else {\r\n // Reset the form for add mode\r\n reset();\r\n setTimeout(() => {\r\n setFocus('state');\r\n }, 0);\r\n }\r\n }\r\n }, [openModal, isEditMode, initialData, setValue, reset, setFocus]);\r\n\r\n const getCountryData = useCallback(async () => {\r\n try {\r\n await axios\r\n .get(`${baseUrl}/countries`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n })\r\n .then((res) => {\r\n if (res.data) {\r\n const de = res.data.data;\r\n const updatedData = de.map((el) => {\r\n return {\r\n value: el.countryId,\r\n label: el.countryName,\r\n };\r\n });\r\n setCountryData(updatedData);\r\n }\r\n })\r\n .catch(() => {\r\n setCountryData([]);\r\n });\r\n } catch {\r\n notifyMessage('Something went wrong!', 'error');\r\n }\r\n }, [user.token]);\r\n\r\n useEffect(() => {\r\n getCountryData();\r\n }, [getCountryData]);\r\n\r\n const onSubmit = async (data) => {\r\n try {\r\n const endpoint = isEditMode\r\n ? `${baseUrl}/state/${initialData.stateId}`\r\n : `${baseUrl}/state`;\r\n const method = isEditMode ? 'put' : 'post';\r\n\r\n await axios({\r\n method,\r\n url: endpoint,\r\n data: {\r\n payload: {\r\n stateName: capitalizeFirstLetter(data.state),\r\n countryId: data?.country?.value,\r\n },\r\n },\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }).then((res) => {\r\n if (res.data.status === true) {\r\n notifyMessage(res.data.message, 'success');\r\n fetchData();\r\n reset();\r\n setCurrentObj(null);\r\n setOpenModal(false);\r\n } else {\r\n notifyMessage(res.data.message, 'error');\r\n }\r\n });\r\n } catch (error) {\r\n setOpenModal(false);\r\n\r\n notifyMessage(\r\n error?.response?.data?.message || 'Something went wrong!',\r\n 'error'\r\n );\r\n }\r\n };\r\n\r\n return (\r\n {\r\n reset();\r\n setCurrentObj(null);\r\n setOpenModal(false);\r\n }}\r\n dismissible\r\n >\r\n {isEditMode ? 'Edit State' : 'Add State'}\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n {\r\n reset();\r\n setCurrentObj(null);\r\n setOpenModal(false);\r\n }}\r\n >\r\n Cancel\r\n \r\n \r\n \r\n );\r\n};\r\nAddStateModal.propTypes = {\r\n openModal: PropTypes.bool,\r\n setOpenModal: PropTypes.func,\r\n fetchData: PropTypes.func,\r\n isEditMode: PropTypes.bool,\r\n initialData: PropTypes.shape({\r\n stateId: PropTypes.number,\r\n stateName: PropTypes.string,\r\n country: PropTypes.shape({\r\n countryId: PropTypes.number,\r\n countryName: PropTypes.string,\r\n }),\r\n }),\r\n setCurrentObj: PropTypes.func,\r\n};\r\n\r\nAddStateModal.defaultProps = {\r\n isEditMode: false,\r\n initialData: {},\r\n};\r\n\r\nexport default AddStateModal;\r\n","import { useEffect, useState, useMemo, useCallback } from 'react';\r\nimport axios from 'axios';\r\nimport { ButtonVariants } from '~/components/common/Button';\r\nimport Card from '~/components/common/Card';\r\nimport SectionHeader from '~/components/common/SectionHeader';\r\nimport DataTable from '~/components/common/DataTable';\r\nimport { AppRelativePaths } from '~/routes/routes.const';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport { notifyMessage, baseUrl, hasPermission } from '~/utils/app.utils';\r\nimport AddStateModal from '~/components/location/AddStateModal';\r\nimport { usePermissionsContext } from '~/context/PermissionsProvider'; // Import permissions context\r\n\r\nexport default function StateList() {\r\n const [openModal, setOpenModal] = useState(false);\r\n const [stateData, setStateData] = useState([]);\r\n const [currentObj, setCurrentObj] = useState(null);\r\n const [loading, setLoading] = useState(true);\r\n const { user } = useAuth();\r\n const { permissions } = usePermissionsContext();\r\n\r\n const columns = useMemo(\r\n () => [\r\n { key: 'stateName', title: 'State Name' },\r\n { key: 'country.countryName', title: 'Country' },\r\n ],\r\n []\r\n );\r\n\r\n const breadcrumbs = useMemo(\r\n () => [\r\n { label: 'Dashboard', link: AppRelativePaths.ADMIN_DASHBOARD },\r\n { label: 'State List', link: AppRelativePaths.LOCATION_STATE },\r\n ],\r\n []\r\n );\r\n\r\n const getStateData = useCallback(async () => {\r\n try {\r\n setLoading(true);\r\n const res = await axios.get(`${baseUrl}/states`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n });\r\n if (res.data) {\r\n setStateData(res.data.data);\r\n }\r\n } catch {\r\n setStateData([]);\r\n } finally {\r\n setLoading(false);\r\n }\r\n }, [user.token]);\r\n\r\n const deleteState = useCallback(\r\n async (id) => {\r\n try {\r\n const res = await axios.delete(`${baseUrl}/state/${id}`, {\r\n headers: {\r\n Authorization: user.token,\r\n },\r\n });\r\n if (res.data) {\r\n setStateData((prevData) =>\r\n prevData.filter((state) => state.stateId !== id)\r\n );\r\n notifyMessage(res.data.message, 'success');\r\n } else {\r\n notifyMessage(res.data.message);\r\n }\r\n } catch {\r\n notifyMessage('Something went wrong');\r\n } finally {\r\n setLoading(false);\r\n }\r\n },\r\n [user.token]\r\n );\r\n\r\n useEffect(() => {\r\n getStateData();\r\n }, [getStateData]);\r\n\r\n const headerActionButtons = useMemo(\r\n () =>\r\n [\r\n {\r\n id: 'add',\r\n icon: 'plus',\r\n label: 'Add',\r\n variant: ButtonVariants.PRIMARY,\r\n onClick: () => setOpenModal(true), // Opens the modal\r\n moduleKey: 'STATE',\r\n permission: 'Add',\r\n },\r\n ].filter((button) => {\r\n return hasPermission(\r\n permissions,\r\n button.moduleKey,\r\n button.permission,\r\n user\r\n );\r\n }),\r\n [permissions, user]\r\n );\r\n\r\n const actionButtons = useMemo(\r\n () =>\r\n [\r\n {\r\n label: 'Edit',\r\n onClick: (obj) => {\r\n setCurrentObj(obj);\r\n setOpenModal(true);\r\n },\r\n variant: ButtonVariants.PRIMARY,\r\n moduleKey: 'STATE',\r\n permission: 'Edit',\r\n },\r\n {\r\n label: 'Delete',\r\n onClick: (obj) => {\r\n deleteState(obj.stateId);\r\n },\r\n variant: ButtonVariants.SECONDARY,\r\n moduleKey: 'STATE',\r\n permission: 'Delete',\r\n },\r\n ].filter((button) => {\r\n return hasPermission(\r\n permissions,\r\n button.moduleKey,\r\n button.permission,\r\n user\r\n );\r\n }),\r\n [deleteState, permissions, user]\r\n );\r\n\r\n return (\r\n
\r\n {openModal && (\r\n \r\n )}\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import { useCallback, useEffect, useLayoutEffect, useState } from 'react';\r\nimport { useForm } from 'react-hook-form';\r\nimport { Button, Modal } from 'flowbite-react';\r\nimport axios from 'axios';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport {\r\n notifyMessage,\r\n baseUrl,\r\n capitalizeFirstLetter,\r\n} from '~/utils/app.utils';\r\nimport ReactSelectField from '~/components/common/ReactSelectField';\r\nimport InputField from '~/components/common/InputField';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst AddStateModal = ({\r\n openModal,\r\n setOpenModal,\r\n fetchData,\r\n isEditMode = false,\r\n initialData = {},\r\n setCurrentObj,\r\n}) => {\r\n const {\r\n register,\r\n handleSubmit,\r\n formState: { errors },\r\n reset,\r\n setValue,\r\n watch, // Watch field values\r\n control,\r\n setFocus,\r\n } = useForm();\r\n const { user } = useAuth();\r\n const [countryData, setCountryData] = useState([]);\r\n const [stateData, setStateData] = useState([]);\r\n const selectedCountry = watch('country'); // Watch the 'country' field\r\n\r\n useLayoutEffect(() => {\r\n if (openModal) {\r\n if (isEditMode && initialData) {\r\n // Set values for the dropdown and state field\r\n reset({\r\n country: {\r\n value: initialData?.state?.country?.countryId,\r\n label: initialData?.state?.country?.countryName,\r\n },\r\n state: {\r\n value: initialData?.stateId,\r\n label: initialData?.state?.stateName,\r\n },\r\n cityName: initialData.cityName,\r\n });\r\n } else {\r\n // Reset the form for add mode\r\n reset();\r\n setTimeout(() => {\r\n setFocus('cityName');\r\n }, 0);\r\n }\r\n }\r\n }, [openModal, isEditMode, initialData, setValue, reset, setFocus]);\r\n\r\n const getCountryData = useCallback(async () => {\r\n try {\r\n const res = await axios.get(`${baseUrl}/countries`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n });\r\n if (res.data) {\r\n const updatedData = res.data.data.map((el) => ({\r\n value: el.countryId,\r\n label: el.countryName,\r\n }));\r\n setCountryData(updatedData);\r\n }\r\n } catch {\r\n setCountryData([]);\r\n }\r\n }, [user.token]);\r\n\r\n const getStateData = async () => {\r\n try {\r\n const res = await axios.get(\r\n `${baseUrl}/state/country/${selectedCountry?.value}`,\r\n {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }\r\n );\r\n if (res.data) {\r\n const updatedData = res.data.data.map((el) => ({\r\n value: el.stateId,\r\n label: el.stateName,\r\n }));\r\n setStateData(updatedData);\r\n }\r\n } catch {\r\n setStateData([]);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n getCountryData();\r\n }, [getCountryData]);\r\n useEffect(() => {\r\n if (selectedCountry) {\r\n getStateData();\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [selectedCountry]);\r\n\r\n const onSubmit = async (data) => {\r\n try {\r\n const endpoint = isEditMode\r\n ? `${baseUrl}/city/${initialData.cityId}`\r\n : `${baseUrl}/city`;\r\n const method = isEditMode ? 'put' : 'post';\r\n\r\n const res = await axios({\r\n method,\r\n url: endpoint,\r\n data: {\r\n payload: {\r\n cityName: capitalizeFirstLetter(data.cityName),\r\n stateId: data.state?.value,\r\n },\r\n },\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n });\r\n if (res.data.status === true) {\r\n notifyMessage(res.data.message, 'success');\r\n fetchData();\r\n reset();\r\n setCurrentObj(null);\r\n setOpenModal(false);\r\n } else {\r\n notifyMessage(res.data.message, 'error');\r\n }\r\n } catch (error) {\r\n setOpenModal(false);\r\n\r\n notifyMessage(\r\n error?.response?.data?.message || 'Something went wrong!',\r\n 'error'\r\n );\r\n }\r\n };\r\n\r\n return (\r\n {\r\n reset();\r\n setCurrentObj(null);\r\n setOpenModal(false);\r\n }}\r\n dismissible\r\n >\r\n {isEditMode ? 'Edit City' : 'Add City'}\r\n \r\n
\r\n {/* Country Dropdown */}\r\n \r\n\r\n {/* State Dropdown */}\r\n \r\n\r\n {/* State Name Input */}\r\n \r\n \r\n
\r\n \r\n \r\n {\r\n reset();\r\n setCurrentObj(null);\r\n setOpenModal(false);\r\n }}\r\n >\r\n Cancel\r\n \r\n \r\n \r\n );\r\n};\r\nAddStateModal.propTypes = {\r\n openModal: PropTypes.bool,\r\n setOpenModal: PropTypes.func,\r\n fetchData: PropTypes.func,\r\n isEditMode: PropTypes.bool,\r\n initialData: PropTypes.object,\r\n setCurrentObj: PropTypes.func,\r\n};\r\n\r\nAddStateModal.defaultProps = {\r\n isEditMode: false,\r\n initialData: {},\r\n};\r\nexport default AddStateModal;\r\n","import { useEffect, useState, useMemo, useCallback } from 'react';\r\nimport axios from 'axios';\r\nimport { ButtonVariants } from '~/components/common/Button';\r\nimport Card from '~/components/common/Card';\r\nimport SectionHeader from '~/components/common/SectionHeader';\r\nimport DataTable from '~/components/common/DataTable';\r\nimport { AppRelativePaths } from '~/routes/routes.const';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport AddCityModal from '~/components/location/AddCityModal';\r\nimport { notifyMessage, baseUrl, hasPermission } from '~/utils/app.utils';\r\nimport { usePermissionsContext } from '~/context/PermissionsProvider'; // Import permissions context\r\n\r\nexport default function CitiesList() {\r\n const [openModal, setOpenModal] = useState(false);\r\n const [cityData, setCityData] = useState([]);\r\n const [currentObj, setCurrentObj] = useState(null);\r\n const [loading, setLoading] = useState(true);\r\n const { user } = useAuth();\r\n const { permissions } = usePermissionsContext();\r\n\r\n const columns = useMemo(\r\n () => [\r\n { key: 'cityName', title: 'City Name' },\r\n { key: 'state.stateName', title: 'State Name' },\r\n { key: 'state.country.countryName', title: 'Country Name' },\r\n ],\r\n []\r\n );\r\n\r\n const breadcrumbs = useMemo(\r\n () => [\r\n { label: 'Dashboard', link: AppRelativePaths.ADMIN_DASHBOARD },\r\n { label: 'City List', link: AppRelativePaths.LOCATION_CITIES },\r\n ],\r\n []\r\n );\r\n\r\n const getCityData = useCallback(async () => {\r\n try {\r\n setLoading(true);\r\n const res = await axios.get(`${baseUrl}/cities`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n });\r\n if (res.data) {\r\n setCityData(res.data.data);\r\n }\r\n } catch {\r\n setCityData([]);\r\n } finally {\r\n setLoading(false);\r\n }\r\n }, [user.token]);\r\n\r\n const deletecity = useCallback(\r\n async (id) => {\r\n try {\r\n const res = await axios.delete(`${baseUrl}/city/${id}`, {\r\n headers: {\r\n Authorization: user.token,\r\n },\r\n });\r\n if (res.data) {\r\n setCityData((prevData) =>\r\n prevData.filter((city) => city.cityId !== id)\r\n );\r\n notifyMessage(res.data.message, 'success');\r\n } else {\r\n notifyMessage(res.data.message);\r\n }\r\n } catch {\r\n notifyMessage('Something went wrong');\r\n } finally {\r\n setLoading(false);\r\n }\r\n },\r\n [user.token]\r\n );\r\n\r\n useEffect(() => {\r\n getCityData();\r\n }, [getCityData]);\r\n\r\n const headerActionButtons = useMemo(\r\n () =>\r\n [\r\n {\r\n id: 'add',\r\n icon: 'plus',\r\n label: 'Add',\r\n variant: ButtonVariants.PRIMARY,\r\n onClick: () => setOpenModal(true), // Opens the modal\r\n moduleKey: 'CITY',\r\n permission: 'Add',\r\n },\r\n ].filter((button) => {\r\n return hasPermission(\r\n permissions,\r\n button.moduleKey,\r\n button.permission,\r\n user\r\n );\r\n }),\r\n [permissions, user]\r\n );\r\n\r\n const actionButtons = useMemo(\r\n () =>\r\n [\r\n {\r\n label: 'Edit',\r\n onClick: (obj) => {\r\n setCurrentObj(obj);\r\n setOpenModal(true);\r\n },\r\n variant: ButtonVariants.PRIMARY,\r\n moduleKey: 'CITY',\r\n permission: 'Edit',\r\n },\r\n {\r\n label: 'Delete',\r\n onClick: (obj) => {\r\n deletecity(obj.cityId);\r\n },\r\n variant: ButtonVariants.SECONDARY,\r\n moduleKey: 'CITY',\r\n permission: 'Delete',\r\n },\r\n ].filter((button) => {\r\n return hasPermission(\r\n permissions,\r\n button.moduleKey,\r\n button.permission,\r\n user\r\n );\r\n }),\r\n [deletecity, permissions, user]\r\n );\r\n\r\n return (\r\n
\r\n {openModal && (\r\n \r\n )}\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import { useEffect } from 'react';\r\nimport { useForm } from 'react-hook-form';\r\nimport { Button, Modal } from 'flowbite-react';\r\nimport axios from 'axios';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport { notifyMessage, baseUrl } from '~/utils/app.utils';\r\nimport InputField from '~/components/common/InputField';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst AdminTypeModal = ({\r\n openModal,\r\n setOpenModal,\r\n fetchData,\r\n isEditMode = false,\r\n initialData = {},\r\n setCurrentObj,\r\n}) => {\r\n const {\r\n register,\r\n handleSubmit,\r\n formState: { errors },\r\n reset,\r\n setValue,\r\n setFocus,\r\n } = useForm();\r\n const { user } = useAuth();\r\n\r\n useEffect(() => {\r\n if (openModal) {\r\n if (isEditMode && initialData?.adminUserTypeName) {\r\n setValue('admin', initialData.adminUserTypeName);\r\n } else {\r\n // // Reset the form for add mode\r\n reset();\r\n setTimeout(() => {\r\n setFocus('admin');\r\n }, 0);\r\n }\r\n }\r\n }, [openModal, isEditMode, initialData, setValue, reset, setFocus]);\r\n\r\n const onSubmit = async (data) => {\r\n try {\r\n const endpoint = isEditMode\r\n ? `${baseUrl}/adminusertype/${initialData.adminUserTypeId}`\r\n : `${baseUrl}/adminusertype`;\r\n const method = isEditMode ? 'put' : 'post';\r\n\r\n await axios({\r\n method,\r\n url: endpoint,\r\n data: {\r\n payload: {\r\n adminUserTypeName: data.admin,\r\n },\r\n },\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }).then((res) => {\r\n if (res.data.status === true) {\r\n notifyMessage(res.data.message, 'success');\r\n fetchData();\r\n reset();\r\n setCurrentObj(null);\r\n setOpenModal(false);\r\n } else {\r\n notifyMessage(res.data.message, 'error');\r\n }\r\n });\r\n } catch (error) {\r\n notifyMessage(\r\n error?.response?.data?.message || 'Something went wrong!',\r\n 'error'\r\n );\r\n }\r\n };\r\n\r\n return (\r\n {\r\n setOpenModal(false);\r\n reset();\r\n setCurrentObj(null);\r\n }}\r\n dismissible\r\n >\r\n \r\n {isEditMode ? 'Edit Admin Type' : 'Add Admin Type'}\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n {\r\n setOpenModal(false);\r\n reset();\r\n setCurrentObj(null);\r\n }}\r\n >\r\n Cancel\r\n \r\n \r\n \r\n );\r\n};\r\nAdminTypeModal.propTypes = {\r\n openModal: PropTypes.bool,\r\n setOpenModal: PropTypes.func,\r\n fetchData: PropTypes.func,\r\n isEditMode: PropTypes.bool,\r\n initialData: PropTypes.object,\r\n setCurrentObj: PropTypes.func,\r\n};\r\nexport default AdminTypeModal;\r\n","import { useEffect, useState, useMemo, useCallback } from 'react';\r\nimport axios from 'axios';\r\nimport { ButtonVariants } from '~/components/common/Button';\r\nimport Card from '~/components/common/Card';\r\nimport SectionHeader from '~/components/common/SectionHeader';\r\nimport DataTable from '~/components/common/DataTable';\r\nimport { AppRelativePaths } from '~/routes/routes.const';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport { notifyMessage, baseUrl, hasPermission } from '~/utils/app.utils';\r\nimport AdminTypeModal from '~/components/admin/AdminTypeModal';\r\nimport { usePermissionsContext } from '~/context/PermissionsProvider'; // Import permissions context\r\n\r\nexport default function AdminTypeList() {\r\n const [openModal, setOpenModal] = useState(false);\r\n const [adminTypeData, setAdminTypeData] = useState([]);\r\n const [currentObj, setCurrentObj] = useState(null);\r\n const [loading, setLoading] = useState(true);\r\n const { user } = useAuth();\r\n const { permissions } = usePermissionsContext();\r\n\r\n const columns = useMemo(\r\n () => [\r\n {\r\n key: 'adminUserTypeName',\r\n title: 'Admin Type',\r\n },\r\n ],\r\n []\r\n );\r\n\r\n const breadcrumbs = useMemo(\r\n () => [\r\n { label: 'Dashboard', link: AppRelativePaths.ADMIN_DASHBOARD },\r\n { label: 'Admin Type', link: AppRelativePaths.LOCATION_COUNTRIES },\r\n ],\r\n []\r\n );\r\n\r\n const getTypeData = useCallback(async () => {\r\n try {\r\n setLoading(true);\r\n const res = await axios.get(`${baseUrl}/adminusertypes`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n });\r\n if (res.data) {\r\n setAdminTypeData(res.data.data);\r\n }\r\n } catch {\r\n setAdminTypeData([]);\r\n } finally {\r\n setLoading(false);\r\n }\r\n }, [user.token]);\r\n\r\n const deleteAdmintype = useCallback(\r\n async (id) => {\r\n try {\r\n const res = await axios.delete(`${baseUrl}/adminusertype/${id}`, {\r\n headers: {\r\n Authorization: user.token,\r\n },\r\n });\r\n if (res.data) {\r\n setAdminTypeData((prevData) =>\r\n prevData.filter((entry) => entry.adminUserTypeId !== id)\r\n );\r\n notifyMessage(res.data.message, 'success');\r\n } else {\r\n notifyMessage(res.data.message);\r\n }\r\n } catch {\r\n notifyMessage('Something went wrong');\r\n } finally {\r\n setLoading(false);\r\n }\r\n },\r\n [user.token]\r\n );\r\n\r\n useEffect(() => {\r\n getTypeData();\r\n }, [getTypeData]);\r\n\r\n const headerActionButtons = useMemo(\r\n () =>\r\n [\r\n {\r\n id: 'add',\r\n icon: 'plus',\r\n label: 'Add',\r\n variant: ButtonVariants.PRIMARY,\r\n onClick: () => setOpenModal(true), // Opens the modal\r\n moduleKey: 'ADMIN_TYPE',\r\n permission: 'Add',\r\n },\r\n ].filter((button) => {\r\n return hasPermission(\r\n permissions,\r\n button.moduleKey,\r\n button.permission,\r\n user\r\n );\r\n }),\r\n [permissions, user]\r\n );\r\n\r\n const actionButtons = useMemo(\r\n () =>\r\n [\r\n {\r\n label: 'Edit',\r\n onClick: (obj) => {\r\n setCurrentObj(obj);\r\n setOpenModal(true);\r\n },\r\n variant: ButtonVariants.PRIMARY,\r\n moduleKey: 'ADMIN_TYPE',\r\n permission: 'Edit',\r\n },\r\n {\r\n label: 'Delete',\r\n onClick: (obj) => {\r\n deleteAdmintype(obj.adminUserTypeId);\r\n },\r\n variant: ButtonVariants.SECONDARY,\r\n moduleKey: 'ADMIN_TYPE',\r\n permission: 'Delete',\r\n },\r\n ].filter((button) => {\r\n return hasPermission(\r\n permissions,\r\n button.moduleKey,\r\n button.permission,\r\n user\r\n );\r\n }),\r\n [deleteAdmintype, permissions, user]\r\n );\r\n\r\n return (\r\n
\r\n {openModal && (\r\n \r\n )}\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import { useEffect, useState, useMemo, useCallback } from 'react';\r\nimport axios from 'axios';\r\nimport { ButtonVariants } from '~/components/common/Button';\r\nimport Card from '~/components/common/Card';\r\nimport SectionHeader from '~/components/common/SectionHeader';\r\nimport DataTable from '~/components/common/DataTable';\r\nimport { AppRelativePaths } from '~/routes/routes.const';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport { notifyMessage, baseUrl, hasPermission } from '~/utils/app.utils';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport { usePermissionsContext } from '~/context/PermissionsProvider'; // Import permissions context\r\n\r\nexport default function AdminUserList() {\r\n const [adminUserData, setAdminUserData] = useState([]);\r\n const [loading, setLoading] = useState(true);\r\n const navigate = useNavigate();\r\n const { user } = useAuth();\r\n const { permissions } = usePermissionsContext();\r\n\r\n const columns = useMemo(\r\n () => [\r\n {\r\n key: 'adminUserName',\r\n title: 'Admin User Name',\r\n },\r\n {\r\n key: 'adminUserEmail',\r\n title: 'Admin User Email',\r\n },\r\n {\r\n key: 'adminUserMobile',\r\n title: 'Admin User Number',\r\n },\r\n ],\r\n []\r\n );\r\n\r\n const breadcrumbs = useMemo(\r\n () => [\r\n { label: 'Dashboard', link: AppRelativePaths.ADMIN_DASHBOARD },\r\n { label: 'Admin User', link: AppRelativePaths.LOCATION_COUNTRIES },\r\n ],\r\n []\r\n );\r\n\r\n const handleEdit = useCallback(\r\n (id) => {\r\n if (id) {\r\n navigate(`/administrator-panel/admin/add/${id}`);\r\n } else {\r\n navigate(`/administrator-panel/admin/add`);\r\n }\r\n },\r\n [navigate]\r\n );\r\n\r\n const deleteAdminUser = useCallback(\r\n async (id) => {\r\n try {\r\n const res = await axios.delete(`${baseUrl}/adminUser/${id}`, {\r\n headers: {\r\n Authorization: user.token,\r\n },\r\n });\r\n if (res.data) {\r\n setAdminUserData((prevData) =>\r\n prevData.filter((adminUser) => adminUser.adminUserId !== id)\r\n );\r\n notifyMessage(res.data.message, 'success');\r\n } else {\r\n notifyMessage(res.data.message);\r\n }\r\n } catch {\r\n notifyMessage('Something went wrong');\r\n } finally {\r\n setLoading(false);\r\n }\r\n },\r\n [user.token]\r\n );\r\n\r\n const getAdminUserData = useCallback(async () => {\r\n try {\r\n setLoading(true);\r\n const res = await axios.get(`${baseUrl}/adminusers`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n });\r\n if (res.data) {\r\n setAdminUserData(res.data.data);\r\n }\r\n } catch {\r\n setAdminUserData([]);\r\n } finally {\r\n setLoading(false);\r\n }\r\n }, [user.token]);\r\n\r\n useEffect(() => {\r\n getAdminUserData();\r\n }, [getAdminUserData]);\r\n\r\n const headerActionButtons = useMemo(\r\n () =>\r\n [\r\n {\r\n id: 'add',\r\n icon: 'plus',\r\n label: 'Add',\r\n variant: ButtonVariants.PRIMARY,\r\n onClick: () => handleEdit(),\r\n moduleKey: 'ADMIN_USER',\r\n permission: 'Add',\r\n },\r\n ].filter((button) => {\r\n return hasPermission(\r\n permissions,\r\n button.moduleKey,\r\n button.permission,\r\n user\r\n );\r\n }),\r\n [handleEdit, permissions, user]\r\n );\r\n\r\n const actionButtons = useMemo(\r\n () =>\r\n [\r\n {\r\n label: 'Edit',\r\n onClick: (obj) => handleEdit(obj.adminUserId),\r\n btnDisableId: 1,\r\n disableBtn: true,\r\n variant: ButtonVariants.PRIMARY,\r\n moduleKey: 'ADMIN_USER',\r\n permission: 'Edit',\r\n },\r\n {\r\n label: 'Delete',\r\n onClick: (obj) => deleteAdminUser(obj.adminUserId),\r\n btnDisableId: 1,\r\n disableBtn: true,\r\n variant: ButtonVariants.SECONDARY,\r\n moduleKey: 'ADMIN_USER',\r\n permission: 'Delete',\r\n },\r\n ].filter((button) => {\r\n return hasPermission(\r\n permissions,\r\n button.moduleKey,\r\n button.permission,\r\n user\r\n );\r\n }),\r\n [handleEdit, deleteAdminUser, permissions, user]\r\n );\r\n\r\n return (\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import { useEffect, useState } from 'react';\r\nimport { useForm, Controller } from 'react-hook-form';\r\nimport { useParams, useNavigate } from 'react-router-dom'; // Import useNavigate\r\nimport axios from 'axios';\r\nimport SectionHeader from '~/components/common/SectionHeader';\r\nimport Card from '~/components/common/Card';\r\nimport ProfileImage from '~/components/common/ProfileImage';\r\nimport Button, { ButtonVariants } from '~/components/common/Button';\r\nimport { AppRelativePaths } from '~/routes/routes.const';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport { notifyMessage, baseUrl } from '~/utils/app.utils';\r\nimport ReactSelectField from '~/components/common/ReactSelectField';\r\nimport InputField from '~/components/common/InputField';\r\nimport MobileNumberInputField from '~/components/common/MobileNumberInputField';\r\n\r\nexport default function AdminAdd() {\r\n const { id } = useParams();\r\n const navigate = useNavigate(); // Initialize useNavigate\r\n const [loading, setLoading] = useState(false);\r\n const [userTypeOptions, setUserTypeOptions] = useState([]);\r\n const [initialImage, setInitialImage] = useState(null);\r\n const [pancardFrontImage, setPancardFrontImage] = useState(null);\r\n const [aadhaarCardImage, setAadhaarCardImage] = useState(null);\r\n\r\n const { user } = useAuth();\r\n const [countryCode, setCountryCode] = useState('+91');\r\n const [emergencyCode, setEmergencyCode] = useState('+91');\r\n\r\n const breadcrumbs = [\r\n { label: 'Admin List', link: AppRelativePaths.EMPLOYEE_LIST },\r\n {\r\n label: id ? 'Edit Admin' : 'Add Admin',\r\n link: AppRelativePaths.EMPLOYEE_ADD,\r\n },\r\n ];\r\n\r\n const {\r\n register,\r\n handleSubmit,\r\n setValue,\r\n reset,\r\n control,\r\n formState: { errors },\r\n } = useForm({\r\n defaultValues: {\r\n adminUserName: '',\r\n adminUserEmail: '',\r\n adminUserMobile: '',\r\n adminUserTypeId: '',\r\n emergencyContactName: '',\r\n emergencyContactNumber: '',\r\n emergencyContactRelationship: '',\r\n image: initialImage || null,\r\n pancardFront: pancardFrontImage || null,\r\n aadhaarCard: aadhaarCardImage || null,\r\n },\r\n });\r\n\r\n useEffect(() => {\r\n // Fetch Admin User Types for Dropdown\r\n const fetchUserTypes = async () => {\r\n try {\r\n const response = await axios.get(`${baseUrl}/adminusertypes`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n });\r\n const { data } = response.data;\r\n const options = data.map((type) => ({\r\n label: type.adminUserTypeName, // Replace with appropriate field from API response\r\n value: type.adminUserTypeId,\r\n }));\r\n setUserTypeOptions(options);\r\n } catch (error) {\r\n notifyMessage(\r\n error?.response?.data?.message || 'Something went wrong!',\r\n 'error'\r\n );\r\n }\r\n };\r\n\r\n fetchUserTypes();\r\n }, [user.token]);\r\n\r\n useEffect(() => {\r\n if (id) {\r\n setLoading(true);\r\n axios\r\n .get(`${baseUrl}/adminuser/${id}`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n })\r\n .then((response) => {\r\n const { data } = response.data;\r\n // setUserData(data);\r\n if (data.data.photo) {\r\n //localhost:4003/share/profilePics/762b3975-e563-41f9-8953-204b67c886c6.webp\r\n setInitialImage(`${baseUrl}/share/profilePics/${data.data.photo}`);\r\n }\r\n if (data.data.pancard) {\r\n setPancardFrontImage(\r\n `${baseUrl}/share/pancards/${data.data.pancard}`\r\n );\r\n }\r\n if (data.data.aadhaarCard) {\r\n setAadhaarCardImage(\r\n `${baseUrl}/share/aadharcard/${data.data.aadhaarCard}`\r\n );\r\n }\r\n const countryCode = data?.data?.adminUserMobile?.match(/^\\+91/)[0];\r\n const adminUserMobile = data?.data?.adminUserMobile?.replace(\r\n /^\\+91/,\r\n ''\r\n );\r\n const emergencyCode = data?.data?.emergencyContactNumber\r\n ? data?.data?.emergencyContactNumber?.match(/^\\+91/)[0]\r\n : '+91';\r\n const emergencyContact = data?.data?.emergencyContactNumber?.replace(\r\n /^\\+91/,\r\n ''\r\n );\r\n setCountryCode(countryCode);\r\n setEmergencyCode(emergencyCode);\r\n reset({\r\n adminUserName: data.data.adminUserName || '',\r\n adminUserEmail: data.data.adminUserEmail || '',\r\n adminUserMobile: adminUserMobile || '',\r\n adminUserTypeId:\r\n userTypeOptions?.find(\r\n (item) => item.value === data.data.adminUserTypeId\r\n ) || '',\r\n emergencyContactName: data.data.emergencyContactName,\r\n emergencyContactNumber: emergencyContact || '',\r\n emergencyContactRelationship:\r\n data.data.emergencyContactRelationship,\r\n });\r\n })\r\n .catch((error) => {\r\n notifyMessage(\r\n error?.response?.data?.message || 'Something went wrong!',\r\n 'error'\r\n );\r\n })\r\n .finally(() => {\r\n setLoading(false);\r\n });\r\n }\r\n }, [id, reset, user.token, userTypeOptions]);\r\n\r\n const uploadFile = async (file, type, endpoint) => {\r\n if (!file) return true; // Skip upload if no file provided\r\n try {\r\n const data = new FormData();\r\n data.append('imageType', type);\r\n if (type === 'pancard') {\r\n data.append('multiple', true);\r\n data.append('images', file);\r\n } else {\r\n data.append('image', file);\r\n }\r\n await axios.post(`${baseUrl}${endpoint}`, data, {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data',\r\n Authorization: user.token,\r\n },\r\n });\r\n\r\n return true; // Indicate success\r\n } catch {\r\n notifyMessage('Something went wrong!', 'error');\r\n return false; // Indicate failure\r\n }\r\n };\r\n\r\n const handleSave = async (data) => {\r\n try {\r\n setLoading(true);\r\n if (data.image === null || (!data.image && !initialImage)) {\r\n notifyMessage('Profile is required', 'error');\r\n setLoading(false);\r\n return;\r\n }\r\n if (\r\n data?.pancardFront === null ||\r\n (!data.pancardFront && !pancardFrontImage)\r\n ) {\r\n notifyMessage('PAN Card is required', 'error');\r\n setLoading(false);\r\n return;\r\n }\r\n if (\r\n data.aadhaarCard === null ||\r\n (!data.aadhaarCard && !aadhaarCardImage)\r\n ) {\r\n notifyMessage('AadhaarCard is required', 'error');\r\n setLoading(false);\r\n return;\r\n }\r\n const url = id ? `${baseUrl}/adminuser/${id}` : `${baseUrl}/adminuser`;\r\n const method = id ? 'patch' : 'post';\r\n\r\n const saveObj = {\r\n adminUserEmail: data.adminUserEmail,\r\n adminUserMobile: countryCode + data.adminUserMobile,\r\n adminUserName: data.adminUserName,\r\n adminUserTypeId: data.adminUserTypeId?.value,\r\n emergencyContactName: data.emergencyContactName,\r\n emergencyContactNumber: data?.emergencyContactNumber\r\n ? emergencyCode + data.emergencyContactNumber\r\n : '',\r\n emergencyContactRelationship: data.emergencyContactRelationship,\r\n };\r\n\r\n const response = await axios({\r\n method,\r\n url,\r\n data: saveObj,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n });\r\n const adminUserId = response.data.data.adminUserId;\r\n // **Function calls with common function**\r\n const profileImageUploaded = await uploadFile(\r\n data.image,\r\n 'profile',\r\n `/admin/profile/${adminUserId}`\r\n );\r\n const pancardImagesUploaded = await uploadFile(\r\n data.pancardFront,\r\n 'pancard',\r\n `/admin/pancard/${adminUserId}?multiple=${true}`\r\n );\r\n const aadhaarCardImageUploaded = await uploadFile(\r\n data.aadhaarCard,\r\n 'aadharcard',\r\n `/admin/aadharcard/${adminUserId}`\r\n );\r\n\r\n if (\r\n profileImageUploaded &&\r\n pancardImagesUploaded &&\r\n aadhaarCardImageUploaded\r\n ) {\r\n notifyMessage(\r\n id ? 'User updated successfully!' : 'User created successfully!',\r\n 'success'\r\n );\r\n navigate(AppRelativePaths.ADMIN_USER); // Redirect after success\r\n } else {\r\n notifyMessage('Some uploads failed. Please try again.', 'error');\r\n }\r\n } catch (error) {\r\n notifyMessage(\r\n error?.response?.data?.message || 'Something went wrong!',\r\n 'error'\r\n );\r\n } finally {\r\n setLoading(false);\r\n }\r\n };\r\n\r\n const handleSaveAndContinue = async (data) => {\r\n try {\r\n setLoading(true);\r\n if (data.image === null || (!data.image && !initialImage)) {\r\n notifyMessage('Profile is required', 'error');\r\n setLoading(false);\r\n return;\r\n }\r\n if (\r\n data?.pancardFront === null ||\r\n (!data.pancardFront && !pancardFrontImage)\r\n ) {\r\n notifyMessage('PAN Card is required', 'error');\r\n setLoading(false);\r\n return;\r\n }\r\n if (\r\n data.aadhaarCard === null ||\r\n (!data.aadhaarCard && !aadhaarCardImage)\r\n ) {\r\n notifyMessage('AadhaarCard is required', 'error');\r\n setLoading(false);\r\n return;\r\n }\r\n const url = id ? `${baseUrl}/adminuser/${id}` : `${baseUrl}/adminuser`;\r\n const method = id ? 'patch' : 'post';\r\n\r\n const saveObj = {\r\n adminUserEmail: data.adminUserEmail,\r\n adminUserMobile: countryCode + data.adminUserMobile,\r\n adminUserName: data.adminUserName,\r\n adminUserTypeId: data.adminUserTypeId?.value,\r\n emergencyContactName: data.emergencyContactName,\r\n emergencyContactNumber: data?.emergencyContactNumber\r\n ? emergencyCode + data.emergencyContactNumber\r\n : '',\r\n emergencyContactRelationship: data.emergencyContactRelationship,\r\n };\r\n\r\n const response = await axios({\r\n method,\r\n url,\r\n data: saveObj,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n });\r\n\r\n const { adminUserId } = response.data.data;\r\n\r\n let profileImageUploaded = false;\r\n let pancardImagesUploaded = false;\r\n let aadhaarCardImageUploaded = false;\r\n\r\n // Upload Profile Image\r\n if (data.image) {\r\n const uploaded = await uploadFile(\r\n data.image,\r\n 'profile',\r\n `/admin/profile/${adminUserId}`\r\n );\r\n profileImageUploaded = uploaded ? true : false;\r\n }\r\n\r\n // Upload PAN Card Images\r\n if (data.pancardFront) {\r\n const uploaded = await uploadFile(\r\n data.pancardFront,\r\n 'pancard',\r\n `/admin/pancard/${adminUserId}?multiple=${false}`\r\n );\r\n pancardImagesUploaded = uploaded ? true : false;\r\n }\r\n\r\n // Upload Aadhaar Card Image\r\n if (data.aadharFront) {\r\n const uploaded = await uploadFile(\r\n data.aadharFront,\r\n 'aadharcard',\r\n `/admin/aadharcard/${adminUserId}`\r\n );\r\n aadhaarCardImageUploaded = uploaded ? true : false;\r\n }\r\n\r\n // Construct success message dynamically\r\n let successMessage = id\r\n ? 'User updated successfully!'\r\n : 'User created successfully!';\r\n if (profileImageUploaded) successMessage += ' Profile image uploaded.';\r\n if (pancardImagesUploaded) successMessage += ' PAN card images uploaded.';\r\n if (aadhaarCardImageUploaded)\r\n successMessage += ' Aadhaar card image uploaded.';\r\n\r\n if (\r\n profileImageUploaded ||\r\n pancardImagesUploaded ||\r\n aadhaarCardImageUploaded\r\n ) {\r\n notifyMessage(successMessage, 'success');\r\n } else {\r\n notifyMessage('No files were uploaded. Please try again.', 'error');\r\n }\r\n reset(); // Reset form fields for new entry\r\n setValue('image', null);\r\n setValue('pancardFront', null);\r\n setValue('aadhaarCard', null);\r\n } catch (error) {\r\n notifyMessage(\r\n error?.response?.data?.message || 'Something went wrong!',\r\n 'error'\r\n );\r\n } finally {\r\n setLoading(false);\r\n }\r\n };\r\n\r\n const handleCancel = () => {\r\n reset(); // Reset form fields\r\n navigate(AppRelativePaths.ADMIN_USER); // Redirect to Admin List\r\n };\r\n\r\n return (\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n {\r\n setValue('image', file || null);\r\n }}\r\n isPancard={false}\r\n required={true}\r\n />\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n {/* Mobile Number Input */}\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n {/* Mobile Number Input */}\r\n (\r\n {\r\n setValue('emergencyContactNumber', e.target.value); // Update form state on change\r\n }}\r\n />\r\n )}\r\n />\r\n {/* setValue('emergencyCode', code)} // Update emergencyCode in the form state\r\n /> */}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n {/* Pancard Front Image */}\r\n {\r\n setValue('pancardFront', file || null);\r\n }}\r\n isPancard={true}\r\n required={true}\r\n />\r\n
\r\n
\r\n {/* Aadhaar Card Image */}\r\n {\r\n setValue('aadhaarCard', file || null);\r\n }}\r\n isPancard={true}\r\n required={true}\r\n />\r\n
\r\n
\r\n
\r\n \r\n {id ? 'Update' : 'Save'}\r\n \r\n {!id && (\r\n \r\n Save & Continue\r\n \r\n )}\r\n \r\n Cancel\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n );\r\n}\r\n","import { useEffect } from 'react';\r\nimport { useForm } from 'react-hook-form';\r\nimport { Button, Modal } from 'flowbite-react';\r\nimport axios from 'axios';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport { notifyMessage, baseUrl } from '~/utils/app.utils';\r\nimport InputField from '~/components/common/InputField';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst IndustryScaleModal = ({\r\n openModal,\r\n setOpenModal,\r\n fetchData,\r\n isEditMode = false,\r\n initialData = {},\r\n setCurrentObj,\r\n}) => {\r\n const {\r\n register,\r\n handleSubmit,\r\n formState: { errors },\r\n reset,\r\n setValue,\r\n setFocus,\r\n } = useForm();\r\n const { user } = useAuth();\r\n\r\n // Format number in Indian style (e.g., 1,00,000)\r\n const formatNumber = (value) => {\r\n if (!value) return '';\r\n const num = parseInt(value.toString().replace(/,/g, ''));\r\n return isNaN(num) ? '' : num.toLocaleString('en-IN');\r\n };\r\n\r\n const unformatNumber = (value) => value?.toString().replace(/,/g, '');\r\n\r\n useEffect(() => {\r\n if (openModal) {\r\n if (isEditMode && initialData?.industryScaleName) {\r\n setValue('industryscales', initialData.industryScaleName);\r\n setValue('maxRevenue', formatNumber(initialData.maxRevenue));\r\n setValue('minRevenue', formatNumber(initialData.minRevenue));\r\n } else {\r\n reset();\r\n setTimeout(() => {\r\n setFocus('industryscales');\r\n }, 0);\r\n }\r\n }\r\n }, [openModal, isEditMode, initialData, setValue, reset, setFocus]);\r\n\r\n const onSubmit = async (data) => {\r\n const min = parseInt(unformatNumber(data.minRevenue));\r\n const max = parseInt(unformatNumber(data.maxRevenue));\r\n\r\n if (max <= min) {\r\n notifyMessage('Invalid min/max values!', 'error');\r\n return;\r\n }\r\n\r\n try {\r\n const endpoint = isEditMode\r\n ? `${baseUrl}/industryscale/${initialData.industryScaleId}`\r\n : `${baseUrl}/industryscale`;\r\n const method = isEditMode ? 'put' : 'post';\r\n\r\n await axios({\r\n method,\r\n url: endpoint,\r\n data: {\r\n payload: {\r\n industryScaleId: initialData\r\n ? Number(initialData.industryScaleId)\r\n : null,\r\n industryScaleName: data.industryscales,\r\n minRevenue: min,\r\n maxRevenue: max,\r\n },\r\n },\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }).then((res) => {\r\n if (res.data.status === true) {\r\n notifyMessage(res.data.message, 'success');\r\n fetchData();\r\n reset();\r\n setCurrentObj(null);\r\n setOpenModal(false);\r\n } else {\r\n notifyMessage(res.data.message, 'error');\r\n }\r\n });\r\n } catch (error) {\r\n notifyMessage(\r\n error?.response?.data?.message || 'Something went wrong!',\r\n 'error'\r\n );\r\n }\r\n };\r\n\r\n return (\r\n {\r\n setOpenModal(false);\r\n reset();\r\n setCurrentObj(null);\r\n }}\r\n dismissible\r\n >\r\n \r\n {isEditMode ? 'Edit Industry Scale' : 'Add Industry Scale'}\r\n \r\n \r\n
\r\n \r\n\r\n \r\n setValue(\r\n 'minRevenue',\r\n formatNumber(unformatNumber(e.target.value))\r\n )\r\n }\r\n errors={errors}\r\n />\r\n\r\n \r\n setValue(\r\n 'maxRevenue',\r\n formatNumber(unformatNumber(e.target.value))\r\n )\r\n }\r\n errors={errors}\r\n />\r\n \r\n
\r\n \r\n \r\n {\r\n setOpenModal(false);\r\n reset();\r\n setCurrentObj(null);\r\n }}\r\n >\r\n Cancel\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nIndustryScaleModal.propTypes = {\r\n openModal: PropTypes.bool,\r\n setOpenModal: PropTypes.func,\r\n fetchData: PropTypes.func,\r\n isEditMode: PropTypes.bool,\r\n initialData: PropTypes.shape({\r\n industryScaleId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\r\n industryScaleName: PropTypes.string,\r\n minRevenue: PropTypes.number,\r\n maxRevenue: PropTypes.number,\r\n }),\r\n setCurrentObj: PropTypes.func,\r\n};\r\n\r\nexport default IndustryScaleModal;\r\n","import { useEffect, useState, useMemo, useCallback } from 'react';\r\nimport axios from 'axios';\r\nimport { ButtonVariants } from '~/components/common/Button';\r\nimport Card from '~/components/common/Card';\r\nimport SectionHeader from '~/components/common/SectionHeader';\r\nimport DataTable from '~/components/common/DataTable';\r\nimport { AppRelativePaths } from '~/routes/routes.const';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport { notifyMessage, baseUrl, hasPermission } from '~/utils/app.utils';\r\nimport IndustryScaleModal from '~/components/industry/IndustryScaleModal';\r\nimport { usePermissionsContext } from '~/context/PermissionsProvider'; // Import permissions context\r\n\r\nexport default function IndustryScale() {\r\n const [openModal, setOpenModal] = useState(false);\r\n const [industryScaleData, setIndustryScaleData] = useState([]);\r\n const [currentObj, setCurrentObj] = useState(null);\r\n const [loading, setLoading] = useState(true);\r\n const { user } = useAuth();\r\n const { permissions } = usePermissionsContext();\r\n\r\n const columns = useMemo(\r\n () => [\r\n { key: 'industryScaleName', title: 'Industry Scale Name' },\r\n { key: 'minRevenue', title: 'Annual Min revenue' },\r\n { key: 'maxRevenue', title: 'Annual Max revenue' },\r\n ],\r\n []\r\n );\r\n\r\n const breadcrumbs = useMemo(\r\n () => [\r\n { label: 'Dashboard', link: AppRelativePaths.ADMIN_DASHBOARD },\r\n {\r\n label: 'Industry Scale List',\r\n link: AppRelativePaths.LOCATION_COUNTRIES,\r\n },\r\n ],\r\n []\r\n );\r\n\r\n const deleteIndustryScale = useCallback(\r\n async (id) => {\r\n try {\r\n const res = await axios.delete(`${baseUrl}/industryscale/${id}`, {\r\n headers: {\r\n Authorization: user.token,\r\n },\r\n });\r\n if (res.data) {\r\n setIndustryScaleData((prevData) =>\r\n prevData.filter(\r\n (industryscale) => industryscale.industryScaleId !== id\r\n )\r\n );\r\n notifyMessage(res.data.message, 'success');\r\n } else {\r\n notifyMessage(res.data.message);\r\n }\r\n } catch {\r\n notifyMessage('Something went wrong');\r\n } finally {\r\n setLoading(false);\r\n }\r\n },\r\n [user.token]\r\n );\r\n\r\n const getIndustryScaleData = useCallback(async () => {\r\n try {\r\n setLoading(true);\r\n const res = await axios.get(`${baseUrl}/industryscales`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n });\r\n if (res.data) {\r\n setIndustryScaleData(res.data.data);\r\n }\r\n } catch {\r\n setIndustryScaleData([]);\r\n } finally {\r\n setLoading(false);\r\n }\r\n }, [user.token]);\r\n\r\n useEffect(() => {\r\n getIndustryScaleData();\r\n }, [getIndustryScaleData]);\r\n\r\n const headerActionButtons = useMemo(\r\n () =>\r\n [\r\n {\r\n id: 'add',\r\n icon: 'plus',\r\n label: 'Add',\r\n variant: ButtonVariants.PRIMARY,\r\n onClick: () => setOpenModal(true),\r\n moduleKey: 'INDUSTRY',\r\n permission: 'Add',\r\n },\r\n ].filter((button) => {\r\n return hasPermission(\r\n permissions,\r\n button.moduleKey,\r\n button.permission,\r\n user\r\n );\r\n }),\r\n [permissions, user]\r\n );\r\n\r\n const actionButtons = useMemo(\r\n () =>\r\n [\r\n {\r\n label: 'Edit',\r\n onClick: (obj) => {\r\n setCurrentObj(obj);\r\n setOpenModal(true);\r\n },\r\n variant: ButtonVariants.PRIMARY,\r\n moduleKey: 'INDUSTRY',\r\n permission: 'Edit',\r\n },\r\n {\r\n label: 'Delete',\r\n onClick: (obj) => {\r\n deleteIndustryScale(obj.industryScaleId);\r\n },\r\n variant: ButtonVariants.SECONDARY,\r\n moduleKey: 'INDUSTRY',\r\n permission: 'Delete',\r\n },\r\n ].filter((button) => {\r\n return hasPermission(\r\n permissions,\r\n button.moduleKey,\r\n button.permission,\r\n user\r\n );\r\n }),\r\n [deleteIndustryScale, permissions, user]\r\n );\r\n\r\n return (\r\n
\r\n {openModal && (\r\n \r\n )}\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import { useEffect } from 'react';\r\nimport { useForm } from 'react-hook-form';\r\nimport { Button, Modal } from 'flowbite-react';\r\nimport axios from 'axios';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport { notifyMessage, baseUrl } from '~/utils/app.utils';\r\nimport InputField from '~/components/common/InputField';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst IndustryModal = ({\r\n openModal,\r\n setOpenModal,\r\n fetchData,\r\n isEditMode = false,\r\n initialData = {},\r\n setCurrentObj,\r\n}) => {\r\n const {\r\n register,\r\n handleSubmit,\r\n formState: { errors },\r\n reset,\r\n setValue,\r\n setFocus,\r\n } = useForm();\r\n const { user } = useAuth();\r\n\r\n useEffect(() => {\r\n if (openModal) {\r\n if (isEditMode && initialData?.industryName) {\r\n setValue('industry', initialData.industryName);\r\n } else {\r\n // // Reset the form for add mode\r\n // reset();\r\n setTimeout(() => {\r\n setFocus('industry');\r\n }, 0);\r\n }\r\n }\r\n }, [openModal, isEditMode, initialData, setValue, reset, setFocus]);\r\n\r\n const onSubmit = async (data) => {\r\n try {\r\n const endpoint = isEditMode\r\n ? `${baseUrl}/industry/${initialData.industryId}`\r\n : `${baseUrl}/industry`;\r\n const method = isEditMode ? 'put' : 'post';\r\n\r\n await axios({\r\n method,\r\n url: endpoint,\r\n data: {\r\n payload: {\r\n industryName: data.industry,\r\n },\r\n },\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }).then((res) => {\r\n if (res.data.status === true) {\r\n notifyMessage(res.data.message, 'success');\r\n fetchData();\r\n reset();\r\n setCurrentObj(null);\r\n setOpenModal(false);\r\n } else {\r\n notifyMessage(res.data.message, 'error');\r\n }\r\n });\r\n } catch (error) {\r\n notifyMessage(\r\n error?.response?.data?.message || 'Something went wrong!',\r\n 'error'\r\n );\r\n }\r\n };\r\n\r\n return (\r\n {\r\n setOpenModal(false);\r\n reset();\r\n setCurrentObj(null);\r\n }}\r\n dismissible\r\n >\r\n \r\n {isEditMode ? 'Edit Industry' : 'Add Industry'}\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n {\r\n setOpenModal(false);\r\n reset();\r\n setCurrentObj(null);\r\n }}\r\n >\r\n Cancel\r\n \r\n \r\n \r\n );\r\n};\r\nIndustryModal.propTypes = {\r\n openModal: PropTypes.bool,\r\n setOpenModal: PropTypes.func,\r\n fetchData: PropTypes.func,\r\n isEditMode: PropTypes.bool,\r\n initialData: PropTypes.shape({\r\n industryId: PropTypes.number,\r\n industryName: PropTypes.string,\r\n }),\r\n setCurrentObj: PropTypes.func,\r\n};\r\n\r\nIndustryModal.defaultProps = {\r\n isEditMode: false,\r\n initialData: {},\r\n};\r\n\r\nexport default IndustryModal;\r\n","import { useEffect, useState, useMemo, useCallback } from 'react';\r\nimport axios from 'axios';\r\nimport { ButtonVariants } from '~/components/common/Button';\r\nimport Card from '~/components/common/Card';\r\nimport SectionHeader from '~/components/common/SectionHeader';\r\nimport DataTable from '~/components/common/DataTable';\r\nimport { AppRelativePaths } from '~/routes/routes.const';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport { notifyMessage, baseUrl, hasPermission } from '~/utils/app.utils';\r\nimport IndustryModal from '~/components/industry/IndustryModal';\r\nimport { usePermissionsContext } from '~/context/PermissionsProvider'; // Import permissions context\r\n\r\nexport default function IndustryList() {\r\n const [openModal, setOpenModal] = useState(false);\r\n const [industryData, setIndustryData] = useState([]);\r\n const [currentObj, setCurrentObj] = useState(null);\r\n const [loading, setLoading] = useState(true);\r\n const { user } = useAuth();\r\n const { permissions } = usePermissionsContext();\r\n\r\n const columns = useMemo(\r\n () => [\r\n {\r\n key: 'industryName',\r\n title: 'Industry Name',\r\n },\r\n ],\r\n []\r\n );\r\n\r\n const breadcrumbs = useMemo(\r\n () => [\r\n { label: 'Dashboard', link: AppRelativePaths.ADMIN_DASHBOARD },\r\n { label: 'Industry List', link: AppRelativePaths.LOCATION_COUNTRIES },\r\n ],\r\n []\r\n );\r\n\r\n const deleteIndustry = useCallback(\r\n async (id) => {\r\n try {\r\n const res = await axios.delete(`${baseUrl}/industry/${id}`, {\r\n headers: {\r\n Authorization: user.token,\r\n },\r\n });\r\n if (res.data) {\r\n setIndustryData((prevData) =>\r\n prevData.filter((industry) => industry.industryId !== id)\r\n );\r\n notifyMessage(res.data.message, 'success');\r\n } else {\r\n notifyMessage(res.data.message);\r\n }\r\n } catch {\r\n notifyMessage('Something went wrong');\r\n } finally {\r\n setLoading(false);\r\n }\r\n },\r\n [user.token]\r\n );\r\n\r\n const getIndustryData = useCallback(async () => {\r\n try {\r\n setLoading(true);\r\n const res = await axios.get(`${baseUrl}/industries`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n });\r\n if (res.data) {\r\n setIndustryData(res.data.data);\r\n }\r\n } catch {\r\n setIndustryData([]);\r\n } finally {\r\n setLoading(false);\r\n }\r\n }, [user.token]);\r\n\r\n useEffect(() => {\r\n getIndustryData();\r\n }, [getIndustryData]);\r\n\r\n const headerActionButtons = useMemo(\r\n () =>\r\n [\r\n {\r\n id: 'add',\r\n icon: 'plus',\r\n label: 'Add',\r\n variant: ButtonVariants.PRIMARY,\r\n onClick: () => setOpenModal(true),\r\n moduleKey: 'INDUSTRY',\r\n permission: 'Add',\r\n },\r\n ].filter((button) => {\r\n return hasPermission(\r\n permissions,\r\n button.moduleKey,\r\n button.permission,\r\n user\r\n );\r\n }),\r\n [permissions, user]\r\n );\r\n\r\n const actionButtons = useMemo(\r\n () =>\r\n [\r\n {\r\n label: 'Edit',\r\n onClick: (obj) => {\r\n setCurrentObj(obj);\r\n setOpenModal(true);\r\n },\r\n variant: ButtonVariants.PRIMARY,\r\n moduleKey: 'INDUSTRY',\r\n permission: 'Edit',\r\n },\r\n {\r\n label: 'Delete',\r\n onClick: (obj) => {\r\n deleteIndustry(obj.industryId);\r\n },\r\n variant: ButtonVariants.SECONDARY,\r\n moduleKey: 'INDUSTRY',\r\n permission: 'Delete',\r\n },\r\n ].filter((button) => {\r\n return hasPermission(\r\n permissions,\r\n button.moduleKey,\r\n button.permission,\r\n user\r\n );\r\n }),\r\n [deleteIndustry, permissions, user]\r\n );\r\n\r\n return (\r\n
\r\n {openModal && (\r\n \r\n )}\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import { useEffect, useState } from 'react';\r\nimport { useForm } from 'react-hook-form';\r\nimport { useParams, useNavigate } from 'react-router-dom'; // Import useNavigate\r\nimport axios from 'axios';\r\nimport SectionHeader from '~/components/common/SectionHeader';\r\nimport Card from '~/components/common/Card';\r\nimport ProfileImage from '~/components/common/ProfileImage';\r\nimport Button, { ButtonVariants } from '~/components/common/Button';\r\nimport { AppRelativePaths } from '~/routes/routes.const';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport { notifyMessage, baseUrl } from '~/utils/app.utils';\r\nimport InputField from '~/components/common/InputField';\r\nimport MobileNumberInputField from '~/components/common/MobileNumberInputField';\r\n\r\nexport default function AddConsultant() {\r\n const { id } = useParams();\r\n const navigate = useNavigate(); // Initialize useNavigate\r\n const [loading, setLoading] = useState(false);\r\n const [countryCode, setCountryCode] = useState('+91');\r\n const { user } = useAuth();\r\n const [initialImage, setInitialImage] = useState(null);\r\n\r\n const breadcrumbs = [\r\n { label: 'Admin List', link: AppRelativePaths.EMPLOYEE_LIST },\r\n {\r\n label: id ? 'Edit Consultant' : 'Add Consultant',\r\n link: AppRelativePaths.EMPLOYEE_ADD,\r\n },\r\n ];\r\n\r\n const {\r\n register,\r\n handleSubmit,\r\n setValue,\r\n reset,\r\n formState: { errors },\r\n } = useForm({\r\n defaultValues: {\r\n consultantName: '',\r\n consultantEmail: '',\r\n consultantMobile: '',\r\n image: initialImage || null,\r\n },\r\n });\r\n\r\n useEffect(() => {\r\n if (id) {\r\n setLoading(true);\r\n axios\r\n .get(`${baseUrl}/consultant/${id}`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n })\r\n .then((response) => {\r\n const { data } = response.data;\r\n const countryCode = data?.consultantMobile?.match(/^\\+91/)[0];\r\n const mobileNo = data?.consultantMobile?.replace(/^\\+91/, '');\r\n setCountryCode(countryCode);\r\n if (data?.photo) {\r\n //localhost:4003/share/profilePics/762b3975-e563-41f9-8953-204b67c886c6.webp\r\n setInitialImage(`${baseUrl}/share/profilePics/${data.photo}`);\r\n }\r\n reset({\r\n consultantName: data.consultantName || '',\r\n consultantEmail: data.consultantEmail || '',\r\n consultantMobile: mobileNo || '',\r\n });\r\n })\r\n .catch(() => {\r\n notifyMessage('Something went wrong');\r\n })\r\n .finally(() => {\r\n setLoading(false);\r\n });\r\n }\r\n }, [id, reset, user.token]);\r\n\r\n const uploadFile = async (file, type, endpoint) => {\r\n if (!file) return true; // Skip upload if no file provided\r\n try {\r\n const data = new FormData();\r\n data.append('imageType', type);\r\n data.append('image', file);\r\n await axios.post(`${baseUrl}${endpoint}`, data, {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data',\r\n Authorization: user.token,\r\n },\r\n });\r\n return true; // Indicate success\r\n } catch {\r\n return false; // Indicate failure\r\n }\r\n };\r\n\r\n const handleSave = async (data) => {\r\n try {\r\n setLoading(true);\r\n if (data.image === null || (!data.image && !initialImage)) {\r\n notifyMessage('Profile is required', 'error');\r\n setLoading(false);\r\n return;\r\n }\r\n const url = id ? `${baseUrl}/consultant/${id}` : `${baseUrl}/consultant`;\r\n const method = id ? 'put' : 'post';\r\n const saveObj = {\r\n consultantName: data.consultantName,\r\n consultantMobile: countryCode + data.consultantMobile,\r\n consultantEmail: data.consultantEmail,\r\n };\r\n\r\n const response = await axios({\r\n method,\r\n url,\r\n data: saveObj,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n });\r\n const consultantId = response.data.data.consultantId;\r\n // **Function calls with common function**\r\n const profileImageUploaded = await uploadFile(\r\n data.image,\r\n 'profile',\r\n `/consultant/profile/${consultantId}`\r\n );\r\n\r\n if (profileImageUploaded) {\r\n notifyMessage(\r\n id\r\n ? 'Consultant updated successfully!'\r\n : 'Consultant created successfully!',\r\n 'success'\r\n );\r\n navigate(AppRelativePaths.CONSULTANT_LIST); // Redirect after success\r\n } else {\r\n notifyMessage('Some uploads failed. Please try again.', 'error');\r\n }\r\n } catch (error) {\r\n notifyMessage(\r\n error?.response?.data?.message || 'Something went wrong!',\r\n 'error'\r\n );\r\n } finally {\r\n setLoading(false);\r\n }\r\n };\r\n\r\n const handleSaveAndContinue = async (data) => {\r\n try {\r\n setLoading(true);\r\n if (data.image === null || (!data.image && !initialImage)) {\r\n notifyMessage('Profile is required', 'error');\r\n setLoading(false);\r\n return;\r\n }\r\n const url = id ? `${baseUrl}/consultant/${id}` : `${baseUrl}/consultant`;\r\n const method = id ? 'put' : 'post';\r\n\r\n const saveObj = {\r\n consultantName: data.consultantName,\r\n consultantMobile: countryCode + data.consultantMobile,\r\n consultantEmail: data.consultantEmail,\r\n };\r\n\r\n const response = await axios({\r\n method,\r\n url,\r\n data: saveObj,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n });\r\n const consultantId = response.data.data.consultantId;\r\n // **Function calls with common function**\r\n const profileImageUploaded = await uploadFile(\r\n data.image,\r\n 'profile',\r\n `/consultant/profile/${consultantId}`\r\n );\r\n if (profileImageUploaded) {\r\n notifyMessage(\r\n id\r\n ? 'Consultant updated successfully!'\r\n : 'Consultant created successfully!',\r\n 'success'\r\n );\r\n reset();\r\n setValue('image', null);\r\n setInitialImage(null);\r\n } else {\r\n notifyMessage('Some uploads failed. Please try again.', 'error');\r\n }\r\n } catch (error) {\r\n notifyMessage(\r\n error?.response?.data?.message || 'Something went wrong!',\r\n 'error'\r\n );\r\n } finally {\r\n setLoading(false);\r\n }\r\n };\r\n\r\n const handleCancel = () => {\r\n reset(); // Reset form fields\r\n navigate(AppRelativePaths.CONSULTANT_LIST); // Redirect to Admin List\r\n };\r\n\r\n return (\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n {\r\n setValue('image', file || null);\r\n }}\r\n isPancard={false}\r\n required={true}\r\n />\r\n\r\n \r\n {/* Mobile Number Input */}\r\n \r\n \r\n
\r\n \r\n {id ? 'Update' : 'Save'}\r\n \r\n {!id && (\r\n \r\n Save & Continue\r\n \r\n )}\r\n \r\n Cancel\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import { useEffect, useState, useMemo, useCallback } from 'react';\r\nimport axios from 'axios';\r\nimport { ButtonVariants } from '~/components/common/Button';\r\nimport Card from '~/components/common/Card';\r\nimport SectionHeader from '~/components/common/SectionHeader';\r\nimport DataTable from '~/components/common/DataTable';\r\nimport { AppRelativePaths } from '~/routes/routes.const';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport { notifyMessage, baseUrl, hasPermission } from '~/utils/app.utils';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport { usePermissionsContext } from '~/context/PermissionsProvider'; // Import permissions context\r\n\r\nexport default function ConsultantList() {\r\n const [adminUserData, setAdminUserData] = useState([]);\r\n const [loading, setLoading] = useState(true);\r\n const navigate = useNavigate();\r\n const { user } = useAuth();\r\n const { permissions } = usePermissionsContext();\r\n\r\n const columns = useMemo(\r\n () => [\r\n { key: 'consultantName', title: 'Consultant Name' },\r\n { key: 'consultantMobile', title: 'Number' },\r\n { key: 'consultantEmail', title: 'Email' },\r\n ],\r\n []\r\n );\r\n\r\n const breadcrumbs = useMemo(\r\n () => [\r\n { label: 'Dashboard', link: AppRelativePaths.ADMIN_DASHBOARD },\r\n { label: 'All Consultants', link: AppRelativePaths.LOCATION_COUNTRIES },\r\n ],\r\n []\r\n );\r\n\r\n const handleEdit = useCallback(\r\n (id) => {\r\n if (id) {\r\n navigate(`/administrator-panel/consultants/add/${id}`);\r\n } else {\r\n navigate(`/administrator-panel/consultants/add`);\r\n }\r\n },\r\n [navigate]\r\n );\r\n\r\n const deleteAdminUser = useCallback(\r\n async (id) => {\r\n try {\r\n const res = await axios.delete(`${baseUrl}/consultant/${id}`, {\r\n headers: { Authorization: user.token },\r\n });\r\n\r\n if (res.data) {\r\n setAdminUserData((prevData) =>\r\n prevData.filter((adminUser) => adminUser.consultantId !== id)\r\n );\r\n notifyMessage(res.data.message, 'success');\r\n } else {\r\n notifyMessage(res.data.message);\r\n }\r\n } catch {\r\n notifyMessage('Something went wrong');\r\n } finally {\r\n setLoading(false);\r\n }\r\n },\r\n [user.token]\r\n );\r\n\r\n const getAdminUserData = useCallback(async () => {\r\n try {\r\n setLoading(true);\r\n const res = await axios.get(`${baseUrl}/consultants`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n });\r\n if (res.data) {\r\n setAdminUserData(res.data.data);\r\n }\r\n } catch {\r\n setAdminUserData([]);\r\n } finally {\r\n setLoading(false);\r\n }\r\n }, [user.token]);\r\n\r\n useEffect(() => {\r\n getAdminUserData();\r\n }, [getAdminUserData]);\r\n\r\n const headerActionButtons = useMemo(\r\n () =>\r\n [\r\n {\r\n id: 'add',\r\n icon: 'plus',\r\n label: 'Add',\r\n variant: ButtonVariants.PRIMARY,\r\n onClick: () => handleEdit(),\r\n moduleKey: 'CONSULTANT',\r\n permission: 'Add',\r\n },\r\n ].filter((button) => {\r\n return hasPermission(\r\n permissions,\r\n button.moduleKey,\r\n button.permission,\r\n user\r\n );\r\n }),\r\n [handleEdit, permissions, user]\r\n );\r\n\r\n const actionButtons = useMemo(\r\n () =>\r\n [\r\n {\r\n label: 'Edit',\r\n onClick: (obj) => handleEdit(obj.consultantId),\r\n btnDisableId: 1,\r\n disableBtn: true,\r\n variant: ButtonVariants.PRIMARY,\r\n moduleKey: 'CONSULTANT',\r\n permission: 'Edit',\r\n },\r\n {\r\n label: 'Delete',\r\n onClick: (obj) => deleteAdminUser(obj.consultantId),\r\n btnDisableId: 1,\r\n disableBtn: true,\r\n variant: ButtonVariants.SECONDARY,\r\n moduleKey: 'CONSULTANT',\r\n permission: 'Delete',\r\n },\r\n ].filter((button) => {\r\n return hasPermission(\r\n permissions,\r\n button.moduleKey,\r\n button.permission,\r\n user\r\n );\r\n }),\r\n [handleEdit, deleteAdminUser, permissions, user]\r\n );\r\n\r\n return (\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import { useCallback, useEffect, useState } from 'react';\r\nimport { useForm } from 'react-hook-form';\r\nimport { Button, Modal } from 'flowbite-react';\r\nimport axios from 'axios';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport { notifyMessage, baseUrl } from '~/utils/app.utils';\r\nimport ReactSelectField from '~/components/common/ReactSelectField';\r\nimport InputField from '~/components/common/InputField';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst AddCoreParameterModal = ({\r\n openModal,\r\n setOpenModal,\r\n fetchData,\r\n isEditMode = false,\r\n initialData = {},\r\n setCurrentObj,\r\n}) => {\r\n const {\r\n register,\r\n handleSubmit,\r\n formState: { errors },\r\n reset,\r\n setValue,\r\n control,\r\n setFocus,\r\n } = useForm();\r\n const { user } = useAuth();\r\n const [departmentData, setDepartmentData] = useState([]);\r\n\r\n useEffect(() => {\r\n if (openModal) {\r\n if (isEditMode && initialData) {\r\n reset({\r\n department: {\r\n value: initialData?.departmentId,\r\n label: initialData?.department?.departmentName,\r\n },\r\n coreParameterName: initialData.coreParameterName,\r\n });\r\n } else {\r\n // Reset the form for add mode\r\n reset();\r\n setTimeout(() => {\r\n setFocus('state');\r\n }, 0);\r\n }\r\n }\r\n }, [openModal, isEditMode, initialData, setValue, reset, setFocus]);\r\n\r\n const getDepartmentData = useCallback(async () => {\r\n try {\r\n await axios\r\n .get(`${baseUrl}/departments`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n })\r\n .then((res) => {\r\n if (res.data) {\r\n const de = res.data.data;\r\n const updatedData = de.map((el) => {\r\n return {\r\n value: el.departmentId,\r\n label: el.departmentName,\r\n };\r\n });\r\n setDepartmentData(updatedData);\r\n }\r\n })\r\n .catch(() => {\r\n setDepartmentData([]);\r\n });\r\n } catch {\r\n notifyMessage('Something went wrong!', 'error');\r\n }\r\n }, [user.token]);\r\n\r\n useEffect(() => {\r\n getDepartmentData();\r\n }, [getDepartmentData]);\r\n\r\n const onSubmit = async (data) => {\r\n try {\r\n const endpoint = isEditMode\r\n ? `${baseUrl}/coreparameter/${initialData.coreParameterId}`\r\n : `${baseUrl}/coreparameter`;\r\n const method = isEditMode ? 'put' : 'post';\r\n\r\n await axios({\r\n method,\r\n url: endpoint,\r\n data: {\r\n coreParameterName: data.coreParameterName,\r\n departmentId: data.department?.value,\r\n },\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }).then((res) => {\r\n if (res.data.status === true) {\r\n notifyMessage(res.data.message, 'success');\r\n fetchData();\r\n reset();\r\n setCurrentObj(null);\r\n setOpenModal(false);\r\n } else {\r\n notifyMessage(res.data.message, 'error');\r\n }\r\n });\r\n } catch (error) {\r\n notifyMessage(\r\n error?.response?.data?.message || 'Something went wrong!',\r\n 'error'\r\n );\r\n }\r\n };\r\n\r\n return (\r\n {\r\n reset();\r\n setCurrentObj(null);\r\n setOpenModal(false);\r\n }}\r\n dismissible\r\n >\r\n \r\n {isEditMode ? 'Edit Core Parameter' : 'Add Core Parameter'}\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n {\r\n reset();\r\n setCurrentObj(null);\r\n setOpenModal(false);\r\n }}\r\n >\r\n Cancel\r\n \r\n \r\n \r\n );\r\n};\r\nAddCoreParameterModal.propTypes = {\r\n openModal: PropTypes.bool.isRequired,\r\n setOpenModal: PropTypes.func.isRequired,\r\n fetchData: PropTypes.func.isRequired,\r\n isEditMode: PropTypes.bool,\r\n initialData: PropTypes.shape({\r\n coreParameterId: PropTypes.number,\r\n coreParameterName: PropTypes.string,\r\n departmentId: PropTypes.number,\r\n department: PropTypes.shape({\r\n departmentId: PropTypes.number,\r\n departmentName: PropTypes.string,\r\n }),\r\n }),\r\n setCurrentObj: PropTypes.func.isRequired,\r\n};\r\n\r\nAddCoreParameterModal.defaultProps = {\r\n isEditMode: false,\r\n initialData: {},\r\n};\r\nexport default AddCoreParameterModal;\r\n","import { useEffect, useState, useMemo, useCallback } from 'react';\r\nimport axios from 'axios';\r\nimport { ButtonVariants } from '~/components/common/Button';\r\nimport Card from '~/components/common/Card';\r\nimport SectionHeader from '~/components/common/SectionHeader';\r\nimport DataTable from '~/components/common/DataTable';\r\nimport { AppRelativePaths } from '~/routes/routes.const';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport { notifyMessage, baseUrl, hasPermission } from '~/utils/app.utils';\r\nimport AddCoreParameterModal from '~/components/coreParameter/AddCoreParameterModal';\r\nimport { usePermissionsContext } from '~/context/PermissionsProvider'; // Import permissions context\r\n\r\nexport default function CoreParameter() {\r\n const [openModal, setOpenModal] = useState(false);\r\n const [coreParameterData, setCoreParameterData] = useState([]);\r\n const [currentObj, setCurrentObj] = useState(null);\r\n const [loading, setLoading] = useState(true);\r\n const { user } = useAuth();\r\n const { permissions } = usePermissionsContext();\r\n\r\n const columns = useMemo(\r\n () => [\r\n { key: 'coreParameterName', title: 'Core Parameter Name' },\r\n { key: 'department.departmentName', title: 'Department' },\r\n ],\r\n []\r\n );\r\n\r\n const breadcrumbs = useMemo(\r\n () => [\r\n { label: 'Dashboard', link: AppRelativePaths.ADMIN_DASHBOARD },\r\n {\r\n label: 'Core Parameter List',\r\n link: AppRelativePaths.LOCATION_COUNTRIES,\r\n },\r\n ],\r\n []\r\n );\r\n\r\n const deleteCoreParameterData = useCallback(\r\n async (id) => {\r\n try {\r\n const response = await axios.delete(`${baseUrl}/coreparameter/${id}`, {\r\n headers: {\r\n Authorization: user.token,\r\n },\r\n });\r\n\r\n if (response?.data?.status) {\r\n setCoreParameterData((prevData) =>\r\n prevData.filter((corepara) => corepara.coreParameterId !== id)\r\n );\r\n notifyMessage(response.data.message, 'success');\r\n } else {\r\n notifyMessage(\r\n response?.data?.message || 'Unexpected response from server',\r\n 'error'\r\n );\r\n }\r\n } catch (error) {\r\n notifyMessage(\r\n error?.response?.data?.message ||\r\n 'Something went wrong. Please try again later.',\r\n 'error'\r\n );\r\n }\r\n },\r\n [user.token]\r\n );\r\n\r\n const getCoreParameterData = useCallback(async () => {\r\n try {\r\n const response = await axios.get(`${baseUrl}/coreparameters`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n });\r\n\r\n if (response?.data?.status) {\r\n setCoreParameterData(response.data.data);\r\n } else {\r\n notifyMessage(\r\n response?.data?.message || 'Unexpected response from server',\r\n 'error'\r\n );\r\n setCoreParameterData([]);\r\n }\r\n } catch (error) {\r\n notifyMessage(\r\n error?.response?.data?.message ||\r\n 'Unable to fetch data. Please try again later.',\r\n 'error'\r\n );\r\n setCoreParameterData([]);\r\n } finally {\r\n setLoading(false);\r\n }\r\n }, [user.token]);\r\n\r\n useEffect(() => {\r\n getCoreParameterData();\r\n }, [getCoreParameterData]);\r\n\r\n const headerActionButtons = useMemo(\r\n () =>\r\n [\r\n {\r\n id: 'add',\r\n icon: 'plus',\r\n label: 'Add',\r\n variant: ButtonVariants.PRIMARY,\r\n onClick: () => setOpenModal(true),\r\n moduleKey: 'CORE_PARAMETER',\r\n permission: 'Add',\r\n },\r\n ].filter((button) => {\r\n return hasPermission(\r\n permissions,\r\n button.moduleKey,\r\n button.permission,\r\n user\r\n );\r\n }),\r\n [permissions, user]\r\n );\r\n\r\n const actionButtons = useMemo(\r\n () =>\r\n [\r\n {\r\n label: 'Edit',\r\n onClick: (obj) => {\r\n setCurrentObj(obj);\r\n setOpenModal(true);\r\n },\r\n variant: ButtonVariants.PRIMARY,\r\n moduleKey: 'CORE_PARAMETER',\r\n permission: 'Edit',\r\n },\r\n {\r\n label: 'Delete',\r\n onClick: (obj) => {\r\n deleteCoreParameterData(obj.coreParameterId);\r\n },\r\n variant: ButtonVariants.SECONDARY,\r\n moduleKey: 'CORE_PARAMETER',\r\n permission: 'Delete',\r\n },\r\n ].filter((button) => {\r\n return hasPermission(\r\n permissions,\r\n button.moduleKey,\r\n button.permission,\r\n user\r\n );\r\n }),\r\n [deleteCoreParameterData, permissions, user]\r\n );\r\n\r\n return (\r\n
\r\n {openModal && (\r\n \r\n )}\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import { useCallback, useEffect, useState } from 'react';\r\nimport { useForm } from 'react-hook-form';\r\nimport { Button, Modal, ToggleSwitch } from 'flowbite-react';\r\nimport axios from 'axios';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport { notifyMessage, baseUrl } from '~/utils/app.utils';\r\nimport ReactSelectField from '~/components/common/ReactSelectField';\r\nimport InputField from '~/components/common/InputField';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst AddSubParameterModal = ({\r\n openModal,\r\n setOpenModal,\r\n fetchData,\r\n isEditMode = false,\r\n initialData = {},\r\n setCurrentObj,\r\n}) => {\r\n const {\r\n register,\r\n handleSubmit,\r\n formState: { errors },\r\n reset,\r\n setValue,\r\n control,\r\n setFocus,\r\n } = useForm();\r\n const { user } = useAuth();\r\n const [coreParametersData, setCoreParametersData] = useState([]);\r\n const [industryOptions, setIndustryOptions] = useState([]);\r\n const [isIndustrySpecific, setIsIndustrySpecific] = useState(false);\r\n const [isParentParameter, setIsParentParameter] = useState(false);\r\n const [parentSubParameters, setParentSubMeters] = useState([]);\r\n\r\n useEffect(() => {\r\n if (openModal) {\r\n if (isEditMode && initialData) {\r\n setValue('coreParameterId', {\r\n value: initialData.coreParameter.coreParameterId,\r\n label: initialData.coreParameter.coreParameterName,\r\n });\r\n setValue('subParameterName', initialData.subParameterName);\r\n if (initialData.isIndustrySpecific) {\r\n setIsIndustrySpecific(true);\r\n const data = initialData.subParameterIndustries[0];\r\n\r\n setValue('industries', {\r\n value: data.industryId,\r\n label: data.industryName,\r\n });\r\n }\r\n if (initialData?.parentSubParameter) {\r\n const data = initialData.parentSubParameter;\r\n setIsParentParameter(true);\r\n setValue('parentSubParameterId', {\r\n value: data.parentSubParameterId,\r\n label: data.parentSubParameterName,\r\n });\r\n }\r\n } else {\r\n reset();\r\n setTimeout(() => {\r\n setFocus('subParameterName');\r\n }, 0);\r\n }\r\n }\r\n }, [openModal, isEditMode, initialData, setValue, reset, setFocus]);\r\n\r\n const getCoreParametersData = useCallback(async () => {\r\n try {\r\n const res = await axios.get(`${baseUrl}/coreparameters`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n });\r\n if (res.data) {\r\n const updatedData = res.data.data.map((el) => ({\r\n value: el.coreParameterId,\r\n label: el.coreParameterName,\r\n }));\r\n setCoreParametersData(updatedData);\r\n }\r\n } catch {\r\n setCoreParametersData([]);\r\n }\r\n }, [user.token]);\r\n\r\n const getIndustryOptions = useCallback(async () => {\r\n try {\r\n const res = await axios.get(`${baseUrl}/industries`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n });\r\n if (res.data) {\r\n const options = res.data.data.map((el) => ({\r\n value: el.industryId,\r\n label: el.industryName,\r\n }));\r\n setIndustryOptions(options);\r\n }\r\n } catch {\r\n setIndustryOptions([]);\r\n }\r\n }, [user.token]);\r\n const getParentSubparameters = useCallback(async () => {\r\n try {\r\n const res = await axios.get(`${baseUrl}/subparameters`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n });\r\n if (res.data) {\r\n const options = res.data.data.map((el) => ({\r\n value: el.subParameterId,\r\n label: el.subParameterName,\r\n }));\r\n setParentSubMeters(options);\r\n }\r\n } catch {\r\n setIndustryOptions([]);\r\n }\r\n }, [user.token]);\r\n\r\n useEffect(() => {\r\n getCoreParametersData();\r\n getIndustryOptions();\r\n getParentSubparameters();\r\n }, [getCoreParametersData, getIndustryOptions, getParentSubparameters]);\r\n\r\n const onSubmit = async (data) => {\r\n try {\r\n const endpoint = isEditMode\r\n ? `${baseUrl}/subparameter/${initialData.subParameterId}`\r\n : `${baseUrl}/subparameter`;\r\n const method = isEditMode ? 'put' : 'post';\r\n\r\n await axios({\r\n method,\r\n url: endpoint,\r\n data: {\r\n subParameterName: data.subParameterName,\r\n coreParameterId: data.coreParameterId?.value,\r\n isIndustrySpecific: isIndustrySpecific,\r\n isChildParameter: isParentParameter,\r\n parentSubParameterId: isParentParameter\r\n ? data.parentSubParameterId.value\r\n : null,\r\n // industryIds: isIndustrySpecific ? data.industries.map((opt) => opt.value) : [],\r\n industryIds: isIndustrySpecific ? [data.industries.value] : [],\r\n },\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }).then((res) => {\r\n if (res.data.status === true) {\r\n notifyMessage(res.data.message, 'success');\r\n fetchData();\r\n reset();\r\n setCurrentObj(null);\r\n setOpenModal(false);\r\n } else {\r\n notifyMessage(res.data.message, 'error');\r\n }\r\n });\r\n } catch (error) {\r\n notifyMessage(\r\n error?.response?.data?.message || 'Something went wrong!',\r\n 'error'\r\n );\r\n }\r\n };\r\n\r\n return (\r\n {\r\n reset();\r\n setCurrentObj(null);\r\n setOpenModal(false);\r\n }}\r\n dismissible\r\n >\r\n \r\n {isEditMode ? 'Edit Sub Parameter' : 'Add Sub Parameter'}\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n {isParentParameter && (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n
\r\n \r\n {isIndustrySpecific && (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n {\r\n reset();\r\n setCurrentObj(null);\r\n setOpenModal(false);\r\n }}\r\n >\r\n Cancel\r\n \r\n \r\n \r\n );\r\n};\r\nAddSubParameterModal.propTypes = {\r\n openModal: PropTypes.bool,\r\n setOpenModal: PropTypes.func,\r\n fetchData: PropTypes.func,\r\n isEditMode: PropTypes.bool,\r\n initialData: PropTypes.shape({\r\n subParameterId: PropTypes.number,\r\n subParameterName: PropTypes.string,\r\n coreParameter: PropTypes.shape({\r\n coreParameterId: PropTypes.number,\r\n coreParameterName: PropTypes.string,\r\n }),\r\n isIndustrySpecific: PropTypes.bool,\r\n subParameterIndustries: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n industryId: PropTypes.number,\r\n industryName: PropTypes.string,\r\n })\r\n ),\r\n parentSubParameter: PropTypes.shape({\r\n parentSubParameterId: PropTypes.number,\r\n parentSubParameterName: PropTypes.string,\r\n }),\r\n }),\r\n setCurrentObj: PropTypes.func,\r\n};\r\n\r\nAddSubParameterModal.defaultProps = {\r\n isEditMode: false,\r\n initialData: {},\r\n};\r\nexport default AddSubParameterModal;\r\n","import { useEffect, useState, useMemo, useCallback } from 'react';\r\nimport axios from 'axios';\r\nimport { ButtonVariants } from '~/components/common/Button';\r\nimport Card from '~/components/common/Card';\r\nimport SectionHeader from '~/components/common/SectionHeader';\r\nimport DataTable from '~/components/common/DataTable';\r\nimport { AppRelativePaths } from '~/routes/routes.const';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport { notifyMessage, baseUrl, hasPermission } from '~/utils/app.utils';\r\nimport AddSubParameterModal from '~/components/subParameter/AddSubParameterModal';\r\nimport { usePermissionsContext } from '~/context/PermissionsProvider'; // Import permissions context\r\n\r\nexport default function SubParameter() {\r\n const [openModal, setOpenModal] = useState(false);\r\n const [subParametersData, setSubParametersData] = useState([]);\r\n const [currentObj, setCurrentObj] = useState(null);\r\n const [loading, setLoading] = useState(true);\r\n const { user } = useAuth();\r\n const { permissions } = usePermissionsContext();\r\n\r\n const columns = useMemo(\r\n () => [\r\n { key: 'subParameterName', title: 'Sub Parameter Name' },\r\n { key: 'coreParameter.coreParameterName', title: 'Core Parameter' },\r\n {\r\n key: 'parentSubParameter.parentSubParameterName',\r\n title: 'Parent Sub Parameter',\r\n },\r\n ],\r\n []\r\n );\r\n\r\n const breadcrumbs = useMemo(\r\n () => [\r\n { label: 'Dashboard', link: AppRelativePaths.ADMIN_DASHBOARD },\r\n { label: 'Sub Parameters List', link: AppRelativePaths.LOCATION_CITIES },\r\n ],\r\n []\r\n );\r\n\r\n const deleteSubParaMeters = useCallback(\r\n async (id) => {\r\n try {\r\n const response = await axios.delete(`${baseUrl}/subparameter/${id}`, {\r\n headers: {\r\n Authorization: user.token,\r\n },\r\n });\r\n\r\n if (response?.data?.status) {\r\n setSubParametersData((prevData) =>\r\n prevData.filter((subp) => subp.subParameterId !== id)\r\n );\r\n notifyMessage(response.data.message, 'success');\r\n } else {\r\n notifyMessage(\r\n response?.data?.message || 'Unexpected response from server',\r\n 'error'\r\n );\r\n }\r\n } catch {\r\n notifyMessage('Something went wrong', 'error');\r\n }\r\n },\r\n [user.token]\r\n );\r\n\r\n const getSubParaMeters = useCallback(async () => {\r\n try {\r\n const response = await axios.get(`${baseUrl}/subparameters`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n });\r\n\r\n if (response?.data?.status) {\r\n setSubParametersData(response.data.data);\r\n } else {\r\n notifyMessage(\r\n response?.data?.message || 'Unexpected response from server',\r\n 'error'\r\n );\r\n setSubParametersData([]);\r\n }\r\n } catch {\r\n notifyMessage('Unable to fetch data. Please try again later.', 'error');\r\n setSubParametersData([]);\r\n } finally {\r\n setLoading(false);\r\n }\r\n }, [user.token]);\r\n\r\n useEffect(() => {\r\n getSubParaMeters();\r\n }, [getSubParaMeters]);\r\n\r\n const headerActionButtons = useMemo(\r\n () =>\r\n [\r\n {\r\n id: 'add',\r\n icon: 'plus',\r\n label: 'Add',\r\n variant: ButtonVariants.PRIMARY,\r\n onClick: () => setOpenModal(true),\r\n moduleKey: 'SUB_PARAMETER',\r\n permission: 'Add',\r\n },\r\n ].filter((button) => {\r\n return hasPermission(\r\n permissions,\r\n button.moduleKey,\r\n button.permission,\r\n user\r\n );\r\n }),\r\n [permissions, user]\r\n );\r\n\r\n const actionButtons = useMemo(\r\n () =>\r\n [\r\n {\r\n label: 'Edit',\r\n onClick: (obj) => {\r\n setCurrentObj(obj);\r\n setOpenModal(true);\r\n },\r\n variant: ButtonVariants.PRIMARY,\r\n moduleKey: 'SUB_PARAMETER',\r\n permission: 'Edit',\r\n },\r\n {\r\n label: 'Delete',\r\n onClick: (obj) => {\r\n deleteSubParaMeters(obj.subParameterId);\r\n },\r\n variant: ButtonVariants.SECONDARY,\r\n moduleKey: 'SUB_PARAMETER',\r\n permission: 'Delete',\r\n },\r\n ].filter((button) => {\r\n return hasPermission(\r\n permissions,\r\n button.moduleKey,\r\n button.permission,\r\n user\r\n );\r\n }),\r\n [deleteSubParaMeters, permissions, user]\r\n );\r\n\r\n return (\r\n
\r\n {openModal && (\r\n \r\n )}\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import { useEffect } from 'react';\r\nimport { useForm } from 'react-hook-form';\r\nimport { Button, Modal } from 'flowbite-react';\r\nimport axios from 'axios';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport { notifyMessage, baseUrl } from '~/utils/app.utils';\r\nimport InputField from '~/components/common/InputField';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst EngagementAddModal = ({\r\n openModal,\r\n setOpenModal,\r\n fetchData,\r\n isEditMode = false,\r\n initialData = {},\r\n setCurrentObj,\r\n}) => {\r\n const {\r\n register,\r\n handleSubmit,\r\n formState: { errors },\r\n reset,\r\n setValue,\r\n setFocus,\r\n } = useForm();\r\n const { user } = useAuth();\r\n\r\n useEffect(() => {\r\n if (openModal) {\r\n if (isEditMode && initialData?.engagementTypeName) {\r\n setValue('engagementTypeName', initialData.engagementTypeName);\r\n } else {\r\n // // Reset the form for add mode\r\n reset();\r\n setTimeout(() => {\r\n setFocus('engagementTypeName');\r\n }, 0);\r\n }\r\n }\r\n }, [openModal, isEditMode, initialData, setValue, reset, setFocus]);\r\n\r\n const onSubmit = async (data) => {\r\n try {\r\n const endpoint = isEditMode\r\n ? `${baseUrl}/engagementtype/${initialData.engagementTypeId}`\r\n : `${baseUrl}/engagementtype`;\r\n const method = isEditMode ? 'put' : 'post';\r\n\r\n await axios({\r\n method,\r\n url: endpoint,\r\n data: {\r\n engagementTypeName: data.engagementTypeName,\r\n },\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }).then((res) => {\r\n if (res.data.status === true) {\r\n notifyMessage(res.data.message, 'success');\r\n fetchData();\r\n reset();\r\n setCurrentObj(null);\r\n setOpenModal(false);\r\n } else {\r\n notifyMessage(res.data.message, 'error');\r\n }\r\n });\r\n } catch (error) {\r\n notifyMessage(\r\n error?.response?.data?.message || 'Something went wrong!',\r\n 'error'\r\n );\r\n }\r\n };\r\n\r\n return (\r\n {\r\n setOpenModal(false);\r\n reset();\r\n setCurrentObj(null);\r\n }}\r\n dismissible\r\n >\r\n \r\n {isEditMode ? 'Edit Engagement Type' : 'Add Engagement Type'}\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n {\r\n setOpenModal(false);\r\n reset();\r\n setCurrentObj(null);\r\n }}\r\n >\r\n Cancel\r\n \r\n \r\n \r\n );\r\n};\r\nEngagementAddModal.propTypes = {\r\n openModal: PropTypes.bool,\r\n setOpenModal: PropTypes.func,\r\n fetchData: PropTypes.func,\r\n isEditMode: PropTypes.bool,\r\n initialData: PropTypes.shape({\r\n engagementTypeId: PropTypes.number,\r\n engagementTypeName: PropTypes.string,\r\n }),\r\n setCurrentObj: PropTypes.func,\r\n};\r\n\r\nEngagementAddModal.defaultProps = {\r\n isEditMode: false,\r\n initialData: {},\r\n};\r\n\r\nexport default EngagementAddModal;\r\n","import { useEffect, useState, useMemo, useCallback } from 'react';\r\nimport axios from 'axios';\r\nimport { ButtonVariants } from '~/components/common/Button';\r\nimport Card from '~/components/common/Card';\r\nimport SectionHeader from '~/components/common/SectionHeader';\r\nimport DataTable from '~/components/common/DataTable';\r\nimport { AppRelativePaths } from '~/routes/routes.const';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport { notifyMessage, baseUrl, hasPermission } from '~/utils/app.utils';\r\nimport EngagementAddModal from '~/components/engagement/EngagementAddModal';\r\nimport { usePermissionsContext } from '~/context/PermissionsProvider'; // Import permissions context\r\n\r\nexport default function EngagementType() {\r\n const [openModal, setOpenModal] = useState(false);\r\n const [engagementData, setEngagementData] = useState([]);\r\n const [currentObj, setCurrentObj] = useState(null);\r\n const [loading, setLoading] = useState(true);\r\n const { user } = useAuth();\r\n const { permissions } = usePermissionsContext();\r\n\r\n const columns = useMemo(\r\n () => [\r\n {\r\n key: 'engagementTypeName',\r\n title: 'Engagement Type',\r\n },\r\n ],\r\n []\r\n );\r\n\r\n const breadcrumbs = useMemo(\r\n () => [\r\n { label: 'Dashboard', link: AppRelativePaths.ADMIN_DASHBOARD },\r\n {\r\n label: 'Engagement types List',\r\n link: AppRelativePaths.ENGAGEMENT_LIST,\r\n },\r\n ],\r\n []\r\n );\r\n\r\n const deleteEngagementType = useCallback(\r\n async (id) => {\r\n try {\r\n const res = await axios.delete(`${baseUrl}/engagementtype/${id}`, {\r\n headers: {\r\n Authorization: user.token,\r\n },\r\n });\r\n if (res.data) {\r\n setEngagementData((prevData) =>\r\n prevData.filter((engagement) => engagement.engagementTypeId !== id)\r\n );\r\n notifyMessage(res.data.message, 'success');\r\n } else {\r\n notifyMessage(res.data.message);\r\n }\r\n } catch {\r\n notifyMessage('Something went wrong');\r\n } finally {\r\n setLoading(false);\r\n }\r\n },\r\n [user.token]\r\n );\r\n\r\n const getEngagementData = useCallback(async () => {\r\n try {\r\n setLoading(true);\r\n const res = await axios.get(`${baseUrl}/engagementtypes`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n });\r\n if (res.data) {\r\n setEngagementData(res.data.data);\r\n }\r\n } catch {\r\n setEngagementData([]);\r\n } finally {\r\n setLoading(false);\r\n }\r\n }, [user.token]);\r\n\r\n useEffect(() => {\r\n getEngagementData();\r\n }, [getEngagementData]);\r\n\r\n const headerActionButtons = useMemo(\r\n () =>\r\n [\r\n {\r\n id: 'add',\r\n icon: 'plus',\r\n label: 'Add',\r\n variant: ButtonVariants.PRIMARY,\r\n onClick: () => setOpenModal(true),\r\n moduleKey: 'ENGAGEMENT',\r\n permission: 'Add',\r\n },\r\n ].filter((button) => {\r\n return hasPermission(\r\n permissions,\r\n button.moduleKey,\r\n button.permission,\r\n user\r\n );\r\n }),\r\n [permissions, user]\r\n );\r\n\r\n const actionButtons = useMemo(\r\n () =>\r\n [\r\n {\r\n label: 'Edit',\r\n onClick: (obj) => {\r\n setCurrentObj(obj);\r\n setOpenModal(true);\r\n },\r\n variant: ButtonVariants.PRIMARY,\r\n moduleKey: 'ENGAGEMENT',\r\n permission: 'Edit',\r\n },\r\n {\r\n label: 'Delete',\r\n onClick: (obj) => {\r\n deleteEngagementType(obj.engagementTypeId);\r\n },\r\n variant: ButtonVariants.SECONDARY,\r\n moduleKey: 'ENGAGEMENT',\r\n permission: 'Delete',\r\n },\r\n ].filter((button) => {\r\n return hasPermission(\r\n permissions,\r\n button.moduleKey,\r\n button.permission,\r\n user\r\n );\r\n }),\r\n [deleteEngagementType, permissions, user]\r\n );\r\n\r\n return (\r\n
\r\n {openModal && (\r\n \r\n )}\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import { useEffect } from 'react';\r\nimport { useForm } from 'react-hook-form';\r\nimport { Button, Modal } from 'flowbite-react';\r\nimport axios from 'axios';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport { notifyMessage, baseUrl } from '~/utils/app.utils';\r\nimport InputField from '~/components/common/InputField';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst AddTaskTypeModal = ({\r\n openModal,\r\n setOpenModal,\r\n fetchData,\r\n isEditMode = false,\r\n initialData = {},\r\n setCurrentObj,\r\n}) => {\r\n const {\r\n register,\r\n handleSubmit,\r\n formState: { errors },\r\n reset,\r\n setValue,\r\n setFocus,\r\n } = useForm();\r\n const { user } = useAuth();\r\n\r\n useEffect(() => {\r\n if (openModal) {\r\n if (isEditMode && initialData?.taskTypeName) {\r\n setValue('taskTypeName', initialData.taskTypeName);\r\n } else {\r\n // Use setTimeout to ensure the modal is fully rendered before focusing\r\n setTimeout(() => {\r\n setFocus('taskTypeName');\r\n }, 0);\r\n }\r\n }\r\n }, [openModal, isEditMode, initialData, setValue, setFocus]);\r\n\r\n const onSubmit = async (data) => {\r\n try {\r\n const endpoint = isEditMode\r\n ? `${baseUrl}/task/${initialData.taskTypeId}`\r\n : `${baseUrl}/task`;\r\n const method = isEditMode ? 'put' : 'post';\r\n\r\n await axios({\r\n method,\r\n url: endpoint,\r\n data: {\r\n taskTypeName: data.taskTypeName,\r\n },\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }).then((res) => {\r\n if (res.data.status === true) {\r\n notifyMessage(res.data.message, 'success');\r\n fetchData();\r\n reset();\r\n setCurrentObj(null);\r\n setOpenModal(false);\r\n } else {\r\n notifyMessage(res.data.message, 'error');\r\n }\r\n });\r\n } catch (error) {\r\n notifyMessage(\r\n error?.response?.data?.message || 'Something went wrong!',\r\n 'error'\r\n );\r\n }\r\n };\r\n\r\n return (\r\n {\r\n setOpenModal(false);\r\n reset();\r\n setCurrentObj(null);\r\n }}\r\n dismissible\r\n >\r\n \r\n {isEditMode ? 'Edit Task Type' : 'Add Task Type'}\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n {\r\n setOpenModal(false);\r\n reset();\r\n setCurrentObj(null);\r\n }}\r\n >\r\n Cancel\r\n \r\n \r\n \r\n );\r\n};\r\nAddTaskTypeModal.propTypes = {\r\n openModal: PropTypes.bool,\r\n setOpenModal: PropTypes.func,\r\n fetchData: PropTypes.func,\r\n isEditMode: PropTypes.bool,\r\n initialData: PropTypes.shape({\r\n taskTypeName: PropTypes.string,\r\n taskTypeId: PropTypes.number,\r\n }),\r\n setCurrentObj: PropTypes.func,\r\n};\r\n\r\nAddTaskTypeModal.defaultProps = {\r\n isEditMode: false,\r\n initialData: {},\r\n};\r\nexport default AddTaskTypeModal;\r\n","import { useEffect, useState, useMemo, useCallback } from 'react';\r\nimport axios from 'axios';\r\nimport { ButtonVariants } from '~/components/common/Button';\r\nimport Card from '~/components/common/Card';\r\nimport SectionHeader from '~/components/common/SectionHeader';\r\nimport DataTable from '~/components/common/DataTable';\r\nimport { AppRelativePaths } from '~/routes/routes.const';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport { notifyMessage, baseUrl, hasPermission } from '~/utils/app.utils';\r\nimport AddTaskTypeModal from '~/components/task/AddTaskTypeModal';\r\nimport { usePermissionsContext } from '~/context/PermissionsProvider'; // Import permissions context\r\n\r\nexport default function TaskTypeList() {\r\n const [openModal, setOpenModal] = useState(false);\r\n const [countryData, setCountryData] = useState([]);\r\n const [currentObj, setCurrentObj] = useState(null);\r\n const { user } = useAuth();\r\n const [loading, setLoading] = useState(true);\r\n const { permissions } = usePermissionsContext();\r\n\r\n const breadcrumbs = useMemo(\r\n () => [\r\n { label: 'Dashboard', link: AppRelativePaths.ADMIN_DASHBOARD },\r\n { label: 'Task Type List', link: AppRelativePaths.LOCATION_COUNTRIES },\r\n ],\r\n []\r\n );\r\n\r\n const columns = useMemo(\r\n () => [\r\n {\r\n key: 'taskTypeName',\r\n title: 'Task Type Name',\r\n },\r\n ],\r\n []\r\n );\r\n\r\n const deleteCountry = useCallback(\r\n async (id) => {\r\n try {\r\n const response = await axios.delete(`${baseUrl}/task/${id}`, {\r\n headers: {\r\n Authorization: user.token,\r\n },\r\n });\r\n\r\n if (response?.data) {\r\n setCountryData((prevData) =>\r\n prevData.filter((country) => country.taskTypeId !== id)\r\n );\r\n setLoading(false);\r\n notifyMessage(response.data.message, 'success');\r\n } else {\r\n notifyMessage(\r\n response?.data?.message || 'Unexpected response from server',\r\n 'error'\r\n );\r\n setLoading(false);\r\n }\r\n } catch {\r\n notifyMessage('Something went wrong', 'error');\r\n setLoading(false);\r\n }\r\n },\r\n [user.token]\r\n );\r\n\r\n const getCountryData = useCallback(async () => {\r\n try {\r\n setLoading(true);\r\n const response = await axios.get(`${baseUrl}/tasks`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n });\r\n\r\n if (response?.data) {\r\n setCountryData(response.data.data);\r\n setLoading(false);\r\n } else {\r\n notifyMessage(\r\n response?.data?.message || 'Unexpected response from server',\r\n 'error'\r\n );\r\n setCountryData([]);\r\n }\r\n } catch {\r\n notifyMessage('Unable to fetch data. Please try again later.', 'error');\r\n setCountryData([]);\r\n } finally {\r\n setLoading(false);\r\n }\r\n }, [user.token]);\r\n\r\n useEffect(() => {\r\n getCountryData();\r\n }, [getCountryData]);\r\n\r\n const headerActionButtons = useMemo(\r\n () =>\r\n [\r\n {\r\n id: 'add',\r\n icon: 'plus',\r\n label: 'Add',\r\n variant: ButtonVariants.PRIMARY,\r\n onClick: () => setOpenModal(true), // Opens the modal\r\n moduleKey: 'TASK_TYPE',\r\n permission: 'Add',\r\n },\r\n ].filter((button) => {\r\n return hasPermission(\r\n permissions,\r\n button.moduleKey,\r\n button.permission,\r\n user\r\n );\r\n }),\r\n [permissions, user]\r\n );\r\n\r\n const actionButtons = useMemo(\r\n () =>\r\n [\r\n {\r\n label: 'Edit',\r\n onClick: (obj) => {\r\n setCurrentObj(obj);\r\n setOpenModal(true);\r\n },\r\n variant: ButtonVariants.PRIMARY,\r\n moduleKey: 'TASK_TYPE',\r\n permission: 'Edit',\r\n },\r\n {\r\n label: 'Delete',\r\n onClick: (obj) => deleteCountry(obj.taskTypeId),\r\n variant: ButtonVariants.SECONDARY,\r\n moduleKey: 'TASK_TYPE',\r\n permission: 'Delete',\r\n },\r\n ].filter((button) => {\r\n return hasPermission(\r\n permissions,\r\n button.moduleKey,\r\n button.permission,\r\n user\r\n );\r\n }),\r\n [deleteCountry, permissions, user]\r\n );\r\n\r\n return (\r\n
\r\n {openModal && (\r\n \r\n )}\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import { useEffect } from 'react';\r\nimport { useForm } from 'react-hook-form';\r\nimport { Button, Modal } from 'flowbite-react';\r\nimport axios from 'axios';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport { notifyMessage, baseUrl } from '~/utils/app.utils';\r\nimport InputField from '~/components/common/InputField';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst AddStatusModal = ({\r\n openModal,\r\n setOpenModal,\r\n fetchData,\r\n isEditMode = false,\r\n initialData = {},\r\n setCurrentObj,\r\n}) => {\r\n const {\r\n register,\r\n handleSubmit,\r\n formState: { errors },\r\n reset,\r\n setValue,\r\n setFocus,\r\n } = useForm();\r\n const { user } = useAuth();\r\n\r\n useEffect(() => {\r\n if (openModal) {\r\n if (isEditMode && initialData?.taskStatus) {\r\n setValue('taskStatus', initialData.taskStatus);\r\n } else {\r\n // Use setTimeout to ensure the modal is fully rendered before focusing\r\n setTimeout(() => {\r\n setFocus('taskStatus');\r\n }, 0);\r\n }\r\n }\r\n }, [openModal, isEditMode, initialData, setValue, setFocus]);\r\n\r\n const onSubmit = async (data) => {\r\n try {\r\n const endpoint = isEditMode\r\n ? `${baseUrl}/taskstatus/${initialData.taskStatusId}`\r\n : `${baseUrl}/taskstatus`;\r\n const method = isEditMode ? 'put' : 'post';\r\n\r\n await axios({\r\n method,\r\n url: endpoint,\r\n data: {\r\n taskStatus: data.taskStatus,\r\n },\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }).then((res) => {\r\n if (res.data.status === true) {\r\n notifyMessage(res.data.message, 'success');\r\n fetchData();\r\n reset();\r\n setCurrentObj(null);\r\n setOpenModal(false);\r\n } else {\r\n notifyMessage(res.data.message, 'error');\r\n }\r\n });\r\n } catch (error) {\r\n notifyMessage(\r\n error?.response?.data?.message || 'Something went wrong!',\r\n 'error'\r\n );\r\n }\r\n };\r\n\r\n return (\r\n {\r\n setOpenModal(false);\r\n reset();\r\n setCurrentObj(null);\r\n }}\r\n dismissible\r\n >\r\n \r\n {isEditMode ? 'Edit Task Status' : 'Add Task Status'}\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n {\r\n setOpenModal(false);\r\n reset();\r\n setCurrentObj(null);\r\n }}\r\n >\r\n Cancel\r\n \r\n \r\n \r\n );\r\n};\r\nAddStatusModal.propTypes = {\r\n openModal: PropTypes.bool,\r\n setOpenModal: PropTypes.func,\r\n fetchData: PropTypes.func,\r\n isEditMode: PropTypes.bool,\r\n initialData: PropTypes.shape({\r\n taskStatus: PropTypes.string,\r\n taskStatusId: PropTypes.number,\r\n }),\r\n setCurrentObj: PropTypes.func,\r\n};\r\n\r\nAddStatusModal.defaultProps = {\r\n isEditMode: false,\r\n initialData: {},\r\n};\r\nexport default AddStatusModal;\r\n","import PropTypes from 'prop-types';\r\nimport { useState, useRef, useEffect, useCallback } from 'react';\r\nimport { DndProvider, useDrag, useDrop } from 'react-dnd';\r\nimport { HTML5Backend } from 'react-dnd-html5-backend';\r\nimport { debounce } from 'lodash';\r\nimport useDataTable from './useDataTable';\r\nimport ColumnSelector from './columnSelector';\r\nimport Button, { ButtonVariants } from '~/components/common/Button';\r\nimport DataTableFooter from './dataTableFooter';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport axios from 'axios';\r\nimport { notifyMessage } from '~/utils/app.utils';\r\n\r\nconst ROW_TYPE = 'ROW';\r\n\r\nconst Loader = () => (\r\n
\r\n
\r\n
\r\n);\r\n\r\nconst DEFAULT_HEADER_ACTION_BUTTONS = [\r\n {\r\n id: 'export_to_excel',\r\n icon: 'download',\r\n label: 'Export to Excel',\r\n variant: ButtonVariants.PRIMARY,\r\n onClick: () => {},\r\n },\r\n {\r\n id: 'export_to_pdf',\r\n icon: 'download',\r\n label: 'Export to PDF',\r\n variant: ButtonVariants.SECONDARY,\r\n onClick: () => {},\r\n },\r\n];\r\n\r\n/**\r\n * Draggable Row Component\r\n */\r\nconst DraggableRow = ({\r\n row,\r\n index,\r\n moveRow,\r\n columns,\r\n visibleColumns,\r\n actionButtons,\r\n hasWinD,\r\n hasLossD,\r\n keyName,\r\n}) => {\r\n const ref = useRef(null);\r\n\r\n const [, drop] = useDrop({\r\n accept: ROW_TYPE,\r\n hover(item) {\r\n if (!ref.current) return;\r\n const dragIndex = item.index;\r\n const hoverIndex = index;\r\n if (dragIndex === hoverIndex) return;\r\n moveRow(dragIndex, hoverIndex);\r\n item.index = hoverIndex;\r\n },\r\n });\r\n\r\n const [{ isDragging }, drag] = useDrag({\r\n type: ROW_TYPE,\r\n item: { index },\r\n collect: (monitor) => ({\r\n isDragging: monitor.isDragging(),\r\n }),\r\n });\r\n\r\n drag(drop(ref));\r\n\r\n return (\r\n \r\n \r\n <>\r\n {/*?xml version=\"1.0\" encoding=\"utf-8\"?*/}\r\n {/* Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {columns\r\n .filter((col) => visibleColumns.includes(col.key))\r\n .map((col) => {\r\n if (col.key === 'actions') {\r\n return (\r\n \r\n {actionButtons?.map((button, idx) => {\r\n if (button.wlbtn) {\r\n if (row[keyName] == 1 && button.btnType == 'rw') {\r\n return (\r\n button?.onClick(row)}\r\n size=\"xs\"\r\n >\r\n {button?.label || 'Action'}\r\n \r\n );\r\n } else if (row[keyName] == 0 && button.btnType == 'rl') {\r\n return (\r\n button?.onClick(row)}\r\n size=\"xs\"\r\n >\r\n {button?.label || 'Action'}\r\n \r\n );\r\n } else if (\r\n button.btnType === 'w' &&\r\n !hasWinD &&\r\n row[keyName] == null\r\n // button.btnType === 'l'\r\n ) {\r\n return (\r\n button?.onClick(row)}\r\n size=\"xs\"\r\n >\r\n {button?.label || 'Action'}\r\n \r\n );\r\n } else if (\r\n button.btnType === 'l' &&\r\n !hasLossD &&\r\n row[keyName] == null\r\n // button.btnType === 'l'\r\n ) {\r\n return (\r\n button?.onClick(row)}\r\n size=\"xs\"\r\n >\r\n {button?.label || 'Action'}\r\n \r\n );\r\n }\r\n } else {\r\n return (\r\n button?.onClick(row)}\r\n size=\"xs\"\r\n >\r\n {button?.label || 'Action'}\r\n \r\n );\r\n }\r\n })}\r\n \r\n );\r\n }\r\n return (\r\n \r\n {row[col.key] || '-'}\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\nDraggableRow.propTypes = {\r\n row: PropTypes.object,\r\n index: PropTypes.number,\r\n moveRow: PropTypes.func,\r\n columns: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n key: PropTypes.string,\r\n title: PropTypes.string,\r\n })\r\n ),\r\n visibleColumns: PropTypes.arrayOf(PropTypes.string),\r\n actionButtons: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n id: PropTypes.string,\r\n label: PropTypes.string,\r\n onClick: PropTypes.func,\r\n variant: PropTypes.oneOf(Object.values(ButtonVariants)),\r\n wlbtn: PropTypes.bool,\r\n btnType: PropTypes.string,\r\n })\r\n ),\r\n hasWinD: PropTypes.bool,\r\n hasLossD: PropTypes.bool,\r\n keyName: PropTypes.string,\r\n};\r\n\r\nconst DndDataTable = ({\r\n initialData,\r\n loadingState,\r\n initialColumns,\r\n headerActionButtons = DEFAULT_HEADER_ACTION_BUTTONS,\r\n actionButtons = [],\r\n reorderApiUrl,\r\n isWinLossEnabled,\r\n hasWinLOSSdecided,\r\n hasWinD,\r\n hasLossD,\r\n keyName,\r\n statusIdkey,\r\n statusOrderkey,\r\n}) => {\r\n const { user } = useAuth();\r\n\r\n const {\r\n paginatedData,\r\n columns,\r\n visibleColumns,\r\n currentPage,\r\n totalPages,\r\n itemsPerPage,\r\n handlePageChange,\r\n handleItemsPerPageChange,\r\n handleColumnVisibilityChange,\r\n } = useDataTable(initialData, initialColumns);\r\n\r\n const [tableData, setTableData] = useState(paginatedData);\r\n useEffect(() => {\r\n setTableData(paginatedData);\r\n }, [paginatedData]);\r\n\r\n // Function to handle row movement\r\n const moveRow = (dragIndex, hoverIndex) => {\r\n const updatedData = [...tableData];\r\n const [movedRow] = updatedData.splice(dragIndex, 1);\r\n updatedData.splice(hoverIndex, 0, movedRow);\r\n\r\n // Update taskStatusOrder sequentially\r\n const reorderedData = updatedData.map((row, index) => ({\r\n ...row,\r\n [statusOrderkey]: index + 1, // Ensure unique and sequential order\r\n }));\r\n\r\n setTableData(reorderedData);\r\n };\r\n\r\n // Debounced function to update order in DB\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n const updateOrder = useCallback(\r\n debounce(async (data) => {\r\n const payload = {\r\n order: data.map((row) => ({\r\n [statusIdkey]: row[statusIdkey] || row.id,\r\n [statusOrderkey]: row[statusOrderkey],\r\n })),\r\n };\r\n\r\n if (data.length > 0) {\r\n try {\r\n await axios.post(reorderApiUrl, payload, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n });\r\n } catch {\r\n notifyMessage('Something went wrong!', 'error');\r\n }\r\n }\r\n }, 2000),\r\n [reorderApiUrl, user.token]\r\n );\r\n\r\n const isFirstRender = useRef(true);\r\n\r\n useEffect(() => {\r\n if (isFirstRender.current) {\r\n isFirstRender.current = false;\r\n return;\r\n }\r\n updateOrder(tableData);\r\n }, [tableData, updateOrder]);\r\n\r\n return (\r\n \r\n
\r\n {/* Header Section */}\r\n
\r\n \r\n
\r\n {headerActionButtons.map((btn) => (\r\n \r\n {btn.label}\r\n \r\n ))}\r\n
\r\n
\r\n\r\n {/* Table Section */}\r\n
\r\n \r\n \r\n \r\n \r\n {columns\r\n .filter((col) => visibleColumns.includes(col.key))\r\n .map((col) => (\r\n \r\n {col.title}\r\n \r\n ))}\r\n \r\n \r\n {loadingState ? (\r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n {tableData.map((row, index) => (\r\n \r\n ))}\r\n \r\n )}\r\n
\r\n \r\n
\r\n
\r\n\r\n {/* Footer Section */}\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nDndDataTable.propTypes = {\r\n initialData: PropTypes.arrayOf(PropTypes.object),\r\n loadingState: PropTypes.bool,\r\n initialColumns: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n key: PropTypes.string,\r\n title: PropTypes.string,\r\n })\r\n ),\r\n headerActionButtons: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n id: PropTypes.string,\r\n icon: PropTypes.string,\r\n label: PropTypes.string,\r\n variant: PropTypes.oneOf(Object.values(ButtonVariants)),\r\n onClick: PropTypes.func,\r\n })\r\n ),\r\n actionButtons: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n id: PropTypes.string,\r\n label: PropTypes.string,\r\n onClick: PropTypes.func,\r\n variant: PropTypes.oneOf(Object.values(ButtonVariants)),\r\n wlbtn: PropTypes.bool,\r\n btnType: PropTypes.string,\r\n })\r\n ),\r\n reorderApiUrl: PropTypes.string,\r\n isWinLossEnabled: PropTypes.bool,\r\n hasWinLOSSdecided: PropTypes.bool,\r\n hasWinD: PropTypes.bool,\r\n hasLossD: PropTypes.bool,\r\n keyName: PropTypes.string,\r\n statusIdkey: PropTypes.string,\r\n statusOrderkey: PropTypes.string,\r\n};\r\nexport default DndDataTable;\r\n","import { ButtonVariants } from '~/components/common/Button';\r\nimport Card from '~/components/common/Card';\r\nimport SectionHeader from '~/components/common/SectionHeader';\r\nimport { AppRelativePaths } from '~/routes/routes.const';\r\nimport { useCallback, useEffect, useState } from 'react';\r\nimport axios from 'axios';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport { notifyMessage, baseUrl, hasPermission } from '~/utils/app.utils';\r\nimport AddStatusModal from '~/components/task/AddStatusModal';\r\nimport DndDataTable from '~/components/common/DataTable/DndDataTable';\r\nimport { usePermissionsContext } from '~/context/PermissionsProvider'; // Import permissions context\r\n\r\nconst breadcrumbs = [\r\n { label: 'Dashboard', link: AppRelativePaths.ADMIN_DASHBOARD },\r\n { label: 'Task Status List', link: AppRelativePaths.LOCATION_COUNTRIES },\r\n];\r\n\r\nexport default function TaskStatus() {\r\n const [openModal, setOpenModal] = useState(false);\r\n const [taskstatusData, setTaskstatusData] = useState([]);\r\n const [currentObj, setCurrentObj] = useState(null);\r\n const { user } = useAuth();\r\n const [loading, setLoading] = useState(true);\r\n const { permissions } = usePermissionsContext();\r\n\r\n const columns = [\r\n {\r\n key: 'taskStatus',\r\n title: 'Task Status',\r\n },\r\n ];\r\n\r\n const deleteTaskstatus = async (id) => {\r\n try {\r\n await axios\r\n .delete(`${baseUrl}/taskstatus/${id}`, {\r\n headers: {\r\n Authorization: user.token,\r\n },\r\n })\r\n .then((res) => {\r\n if (res.data) {\r\n setTaskstatusData((prevData) =>\r\n prevData.filter((country) => country.taskStatusId !== id)\r\n );\r\n setLoading(false);\r\n notifyMessage(res.data.message, 'success');\r\n } else {\r\n notifyMessage(res.data.message);\r\n setLoading(false);\r\n }\r\n });\r\n } catch {\r\n notifyMessage('Something went wrong');\r\n }\r\n };\r\n const getTaskstatusData = useCallback(async () => {\r\n try {\r\n await axios\r\n .get(`${baseUrl}/alltaskstatus`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n })\r\n .then((res) => {\r\n if (res.data) {\r\n setTaskstatusData(res.data.data);\r\n setLoading(false);\r\n }\r\n })\r\n .catch(() => {\r\n setTaskstatusData([]);\r\n setLoading(false);\r\n });\r\n } catch {\r\n setLoading(false);\r\n }\r\n }, [user.token]);\r\n const hasWinLOSS = taskstatusData.some((item) => item.winLostTask !== null);\r\n const hasWinD = taskstatusData.some((item) => item.winLostTask == 1);\r\n const hasLossD = taskstatusData.some((item) => item.winLostTask == 0);\r\n\r\n useEffect(() => {\r\n getTaskstatusData();\r\n }, [getTaskstatusData]);\r\n\r\n const markAsWin = async (id) => {\r\n try {\r\n await axios\r\n .put(\r\n `${baseUrl}/taskstatus/win/${id}`,\r\n {},\r\n {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }\r\n )\r\n .then((res) => {\r\n if (res.data) {\r\n notifyMessage('Sucess', 'success');\r\n } else {\r\n notifyMessage('Error');\r\n }\r\n getTaskstatusData();\r\n });\r\n } catch {\r\n notifyMessage('Error');\r\n }\r\n };\r\n const markAsLoss = async (id) => {\r\n try {\r\n await axios\r\n .put(\r\n `${baseUrl}/taskstatus/lost/${id}`,\r\n {},\r\n {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }\r\n )\r\n .then((res) => {\r\n if (res.data) {\r\n notifyMessage('Sucess', 'success');\r\n } else {\r\n notifyMessage('Error');\r\n }\r\n getTaskstatusData();\r\n });\r\n } catch {\r\n notifyMessage('Error');\r\n }\r\n };\r\n const cancelDecision = async (id) => {\r\n try {\r\n await axios\r\n .put(\r\n `${baseUrl}/taskstatus/cancel/${id}`,\r\n {},\r\n {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }\r\n )\r\n .then((res) => {\r\n if (res.data) {\r\n notifyMessage('Sucess', 'success');\r\n } else {\r\n notifyMessage('Error');\r\n }\r\n getTaskstatusData();\r\n });\r\n } catch {\r\n notifyMessage('Error');\r\n }\r\n };\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n setOpenModal(true), // Opens the modal\r\n moduleKey: 'TASK_STATUS',\r\n permission: 'Add',\r\n },\r\n ].filter((button) => {\r\n return hasPermission(\r\n permissions,\r\n button.moduleKey,\r\n button.permission,\r\n user\r\n );\r\n })}\r\n actionButtons={[\r\n {\r\n label: 'Win',\r\n onClick: (obj) => {\r\n markAsWin(obj.taskStatusId);\r\n },\r\n variant: 'bg-green-200',\r\n wlbtn: true,\r\n btnType: 'w',\r\n moduleKey: 'TASK_STATUS',\r\n permission: 'Edit',\r\n },\r\n {\r\n label: 'Loss',\r\n onClick: (obj) => {\r\n markAsLoss(obj.taskStatusId);\r\n },\r\n variant: ButtonVariants.PRIMARY_GRAY,\r\n wlbtn: true,\r\n btnType: 'l',\r\n moduleKey: 'TASK_STATUS',\r\n permission: 'Edit',\r\n },\r\n {\r\n label: 'Remove From Win',\r\n onClick: (obj) => {\r\n cancelDecision(obj.taskStatusId);\r\n },\r\n variant: ButtonVariants.PRIMARY,\r\n wlbtn: true,\r\n btnType: 'rw',\r\n moduleKey: 'TASK_STATUS',\r\n permission: 'Edit',\r\n },\r\n {\r\n label: 'Remove from Loss',\r\n onClick: (obj) => {\r\n cancelDecision(obj.taskStatusId);\r\n },\r\n variant: ButtonVariants.PRIMARY_GRAY,\r\n wlbtn: true,\r\n btnType: 'rl',\r\n moduleKey: 'TASK_STATUS',\r\n permission: 'Edit',\r\n },\r\n {\r\n label: 'Edit',\r\n onClick: (obj) => {\r\n setCurrentObj(obj);\r\n setOpenModal(true);\r\n },\r\n variant: ButtonVariants.PRIMARY,\r\n moduleKey: 'TASK_STATUS',\r\n permission: 'Edit',\r\n },\r\n {\r\n label: 'Delete',\r\n onClick: (obj) => {\r\n deleteTaskstatus(obj.taskStatusId);\r\n },\r\n variant: ButtonVariants.SECONDARY,\r\n moduleKey: 'TASK_STATUS',\r\n permission: 'Delete',\r\n },\r\n ].filter((button) => {\r\n return hasPermission(\r\n permissions,\r\n button.moduleKey,\r\n button.permission,\r\n user\r\n );\r\n })}\r\n />\r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import { useEffect } from 'react';\r\nimport { useForm } from 'react-hook-form';\r\nimport { Button, Modal } from 'flowbite-react';\r\nimport axios from 'axios';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport { notifyMessage, baseUrl } from '~/utils/app.utils';\r\nimport InputField from '~/components/common/InputField';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst ProjectStatusModal = ({\r\n openModal,\r\n setOpenModal,\r\n fetchData,\r\n isEditMode = false,\r\n initialData = {},\r\n setCurrentObj,\r\n}) => {\r\n const {\r\n register,\r\n handleSubmit,\r\n formState: { errors },\r\n reset,\r\n setValue,\r\n setFocus,\r\n } = useForm();\r\n const { user } = useAuth();\r\n\r\n useEffect(() => {\r\n if (openModal) {\r\n if (isEditMode && initialData?.projectStatus) {\r\n setValue('projectStatus', initialData.projectStatus);\r\n } else {\r\n // Use setTimeout to ensure the modal is fully rendered before focusing\r\n setTimeout(() => {\r\n setFocus('projectStatus');\r\n }, 0);\r\n }\r\n }\r\n }, [openModal, isEditMode, initialData, setValue, setFocus]);\r\n\r\n const onSubmit = async (data) => {\r\n try {\r\n const endpoint = isEditMode\r\n ? `${baseUrl}/projectstatus/${initialData.projectStatusId}`\r\n : `${baseUrl}/projectstatus`;\r\n const method = isEditMode ? 'put' : 'post';\r\n\r\n await axios({\r\n method,\r\n url: endpoint,\r\n data: {\r\n projectStatus: data.projectStatus,\r\n },\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }).then((res) => {\r\n if (res.data.status === true) {\r\n notifyMessage(res.data.message, 'success');\r\n fetchData();\r\n reset();\r\n setCurrentObj(null);\r\n setOpenModal(false);\r\n } else {\r\n notifyMessage(res.data.message, 'error');\r\n }\r\n });\r\n } catch (error) {\r\n notifyMessage(\r\n error?.response?.data?.message || 'Something went wrong!',\r\n 'error'\r\n );\r\n }\r\n };\r\n\r\n return (\r\n {\r\n setOpenModal(false);\r\n reset();\r\n setCurrentObj(null);\r\n }}\r\n dismissible\r\n >\r\n \r\n {isEditMode ? 'Edit Project Status' : 'Add Project Status'}\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n {\r\n setOpenModal(false);\r\n reset();\r\n setCurrentObj(null);\r\n }}\r\n >\r\n Cancel\r\n \r\n \r\n \r\n );\r\n};\r\nProjectStatusModal.propTypes = {\r\n openModal: PropTypes.bool,\r\n setOpenModal: PropTypes.func,\r\n fetchData: PropTypes.func,\r\n isEditMode: PropTypes.bool,\r\n initialData: PropTypes.shape({\r\n projectStatus: PropTypes.string,\r\n projectStatusId: PropTypes.number,\r\n }),\r\n setCurrentObj: PropTypes.func,\r\n};\r\n\r\nProjectStatusModal.defaultProps = {\r\n isEditMode: false,\r\n initialData: {},\r\n};\r\nexport default ProjectStatusModal;\r\n","import { ButtonVariants } from '~/components/common/Button';\r\nimport Card from '~/components/common/Card';\r\nimport SectionHeader from '~/components/common/SectionHeader';\r\nimport { AppRelativePaths } from '~/routes/routes.const';\r\nimport { useCallback, useEffect, useState } from 'react';\r\nimport axios from 'axios';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport { notifyMessage, baseUrl } from '~/utils/app.utils';\r\nimport DndDataTable from '~/components/common/DataTable/DndDataTable';\r\nimport ProjectStatusModal from '~/components/task/ProjectStatus';\r\n\r\nconst breadcrumbs = [\r\n { label: 'Dashboard', link: AppRelativePaths.ADMIN_DASHBOARD },\r\n { label: 'Project Status List', link: AppRelativePaths.LOCATION_COUNTRIES },\r\n];\r\n\r\nexport default function ProjectStatus() {\r\n const [openModal, setOpenModal] = useState(false);\r\n const [projectStatusData, setProjectStatusData] = useState([]);\r\n const [currentObj, setCurrentObj] = useState(null);\r\n const { user } = useAuth();\r\n const [loading, setLoading] = useState(true);\r\n const columns = [\r\n {\r\n key: 'projectStatus',\r\n title: 'Project Status',\r\n },\r\n ];\r\n\r\n const deleteProjectStatus = async (id) => {\r\n try {\r\n await axios\r\n .delete(`${baseUrl}/projectstatus/${id}`, {\r\n headers: {\r\n Authorization: user.token,\r\n },\r\n })\r\n .then((res) => {\r\n if (res.data) {\r\n setProjectStatusData((prevData) =>\r\n prevData.filter((country) => country.projectStatusId !== id)\r\n );\r\n setLoading(false);\r\n notifyMessage(res.data.message, 'success');\r\n } else {\r\n notifyMessage(res.data.message);\r\n setLoading(false);\r\n }\r\n });\r\n } catch {\r\n notifyMessage('Something went wrong');\r\n }\r\n };\r\n const getProjectStatusData = useCallback(async () => {\r\n try {\r\n await axios\r\n .get(`${baseUrl}/allprojectstatus`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n })\r\n .then((res) => {\r\n if (res.data) {\r\n setProjectStatusData(res.data.data);\r\n setLoading(false);\r\n }\r\n })\r\n .catch(() => {\r\n setProjectStatusData([]);\r\n setLoading(false);\r\n });\r\n } catch {\r\n setLoading(false);\r\n }\r\n }, [user.token]);\r\n\r\n useEffect(() => {\r\n getProjectStatusData();\r\n }, [getProjectStatusData]);\r\n\r\n const markAsWin = async (id) => {\r\n try {\r\n await axios\r\n .put(\r\n `${baseUrl}/projectstatus/win/${id}`,\r\n {},\r\n {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }\r\n )\r\n .then((res) => {\r\n if (res.data) {\r\n notifyMessage('Sucess', 'success');\r\n } else {\r\n notifyMessage('Error');\r\n }\r\n // getProjectStatusData();\r\n });\r\n } catch {\r\n notifyMessage('Error');\r\n }\r\n };\r\n const markAsLoss = async (id) => {\r\n try {\r\n await axios\r\n .put(\r\n `${baseUrl}/projectstatus/lost/${id}`,\r\n {},\r\n {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }\r\n )\r\n .then((res) => {\r\n if (res.data) {\r\n notifyMessage('Sucess', 'success');\r\n } else {\r\n notifyMessage('Error');\r\n }\r\n getProjectStatusData();\r\n });\r\n } catch {\r\n notifyMessage('Error');\r\n }\r\n };\r\n const cancelDecision = async (id) => {\r\n try {\r\n await axios\r\n .put(\r\n `${baseUrl}/projectstatus/cancel/${id}`,\r\n {},\r\n {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }\r\n )\r\n .then((res) => {\r\n if (res.data) {\r\n notifyMessage('Sucess', 'success');\r\n } else {\r\n notifyMessage('Error');\r\n }\r\n getProjectStatusData();\r\n });\r\n } catch {\r\n notifyMessage('Error');\r\n }\r\n };\r\n\r\n const hasWinLOSS = projectStatusData.some(\r\n (item) => item.winLostProject !== null\r\n );\r\n const hasWinD = projectStatusData.some((item) => item.winLostProject == 1);\r\n const hasLossD = projectStatusData.some((item) => item.winLostProject == 0);\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n setOpenModal(true), // Opens the modal\r\n },\r\n ]}\r\n actionButtons={[\r\n {\r\n label: 'Win',\r\n onClick: (obj) => {\r\n markAsWin(obj.projectStatusId);\r\n },\r\n variant: 'bg-green-200',\r\n wlbtn: true,\r\n btnType: 'w',\r\n },\r\n {\r\n label: 'Loss',\r\n onClick: (obj) => {\r\n markAsLoss(obj.projectStatusId);\r\n },\r\n variant: ButtonVariants.PRIMARY_GRAY,\r\n wlbtn: true,\r\n btnType: 'l',\r\n },\r\n {\r\n label: 'Remove From Win',\r\n onClick: (obj) => {\r\n cancelDecision(obj.projectStatusId);\r\n },\r\n variant: ButtonVariants.PRIMARY,\r\n wlbtn: true,\r\n btnType: 'rw',\r\n },\r\n {\r\n label: 'Remove from Loss',\r\n onClick: (obj) => {\r\n cancelDecision(obj.projectStatusId);\r\n },\r\n variant: ButtonVariants.PRIMARY_GRAY,\r\n wlbtn: true,\r\n btnType: 'rl',\r\n },\r\n {\r\n label: 'Edit',\r\n onClick: (obj) => {\r\n setCurrentObj(obj);\r\n setOpenModal(true);\r\n },\r\n variant: ButtonVariants.PRIMARY,\r\n },\r\n {\r\n label: 'Delete',\r\n onClick: (obj) => {\r\n deleteProjectStatus(obj.projectStatusId);\r\n },\r\n variant: ButtonVariants.SECONDARY,\r\n },\r\n ]}\r\n />\r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import { useEffect } from 'react';\r\nimport { useForm } from 'react-hook-form';\r\nimport { Button, Modal } from 'flowbite-react';\r\nimport axios from 'axios';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport { notifyMessage, baseUrl } from '~/utils/app.utils';\r\nimport InputField from '~/components/common/InputField';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst AddSubparaMeterStatus = ({\r\n openModal,\r\n setOpenModal,\r\n fetchData,\r\n isEditMode = false,\r\n initialData = {},\r\n setCurrentObj,\r\n}) => {\r\n const {\r\n register,\r\n handleSubmit,\r\n formState: { errors },\r\n reset,\r\n setValue,\r\n setFocus,\r\n } = useForm();\r\n const { user } = useAuth();\r\n\r\n useEffect(() => {\r\n if (openModal) {\r\n if (isEditMode && initialData?.subParameterStatus) {\r\n setValue('subParameterStatus', initialData.subParameterStatus);\r\n } else {\r\n // Use setTimeout to ensure the modal is fully rendered before focusing\r\n setTimeout(() => {\r\n setFocus('subParameterStatus');\r\n }, 0);\r\n }\r\n }\r\n }, [openModal, isEditMode, initialData, setValue, setFocus]);\r\n\r\n const onSubmit = async (data) => {\r\n try {\r\n const endpoint = isEditMode\r\n ? `${baseUrl}/subparameterstatus/${initialData.subParameterStatusId}`\r\n : `${baseUrl}/subparameterstatus`;\r\n const method = isEditMode ? 'put' : 'post';\r\n\r\n await axios({\r\n method,\r\n url: endpoint,\r\n data: {\r\n subParameterStatus: data.subParameterStatus,\r\n },\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }).then((res) => {\r\n if (res.data.status === true) {\r\n notifyMessage(res.data.message, 'success');\r\n fetchData();\r\n reset();\r\n setCurrentObj(null);\r\n setOpenModal(false);\r\n } else {\r\n notifyMessage(res.data.message, 'error');\r\n }\r\n });\r\n } catch (error) {\r\n notifyMessage(\r\n error?.response?.data?.message || 'Something went wrong!',\r\n 'error'\r\n );\r\n }\r\n };\r\n\r\n return (\r\n {\r\n setOpenModal(false);\r\n reset();\r\n setCurrentObj(null);\r\n }}\r\n dismissible\r\n >\r\n \r\n {isEditMode ? 'Edit Subparameters Status' : 'Add Subparameteres Status'}\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n {\r\n setOpenModal(false);\r\n reset();\r\n setCurrentObj(null);\r\n }}\r\n >\r\n Cancel\r\n \r\n \r\n \r\n );\r\n};\r\nAddSubparaMeterStatus.propTypes = {\r\n openModal: PropTypes.bool,\r\n setOpenModal: PropTypes.func,\r\n fetchData: PropTypes.func,\r\n isEditMode: PropTypes.bool,\r\n initialData: PropTypes.shape({\r\n subParameterStatus: PropTypes.string,\r\n subParameterStatusId: PropTypes.number,\r\n }),\r\n setCurrentObj: PropTypes.func,\r\n};\r\n\r\nAddSubparaMeterStatus.defaultProps = {\r\n isEditMode: false,\r\n initialData: {},\r\n};\r\nexport default AddSubparaMeterStatus;\r\n","import { ButtonVariants } from '~/components/common/Button';\r\nimport Card from '~/components/common/Card';\r\nimport SectionHeader from '~/components/common/SectionHeader';\r\nimport { AppRelativePaths } from '~/routes/routes.const';\r\nimport { useCallback, useEffect, useState } from 'react';\r\nimport axios from 'axios';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport { notifyMessage, baseUrl, hasPermission } from '~/utils/app.utils';\r\nimport DndDataTable from '~/components/common/DataTable/DndDataTable';\r\nimport AddSubparaMeterStatus from '~/components/subParameter/AddSubparaMeterStatus';\r\nimport { usePermissionsContext } from '~/context/PermissionsProvider'; // Import permissions context\r\n\r\nconst breadcrumbs = [\r\n { label: 'Dashboard', link: AppRelativePaths.ADMIN_DASHBOARD },\r\n { label: 'Sub Parameter Status', link: AppRelativePaths.LOCATION_COUNTRIES },\r\n];\r\n\r\nexport default function SubParaStatus() {\r\n const [openModal, setOpenModal] = useState(false);\r\n const [countryData, setCountryData] = useState([]);\r\n const [currentObj, setCurrentObj] = useState(null);\r\n const { user } = useAuth();\r\n const [loading, setLoading] = useState(true);\r\n const { permissions } = usePermissionsContext();\r\n\r\n const columns = [\r\n {\r\n key: 'subParameterStatus',\r\n title: 'Sub Parameter Status',\r\n },\r\n ];\r\n\r\n const deleteCountry = async (id) => {\r\n try {\r\n await axios\r\n .delete(`${baseUrl}/subparameterstatus/${id}`, {\r\n headers: {\r\n Authorization: user.token,\r\n },\r\n })\r\n .then((res) => {\r\n if (res.data) {\r\n setCountryData((prevData) =>\r\n prevData.filter((country) => country.subParameterStatusId !== id)\r\n );\r\n setLoading(false);\r\n notifyMessage(res.data.message, 'success');\r\n } else {\r\n notifyMessage(res.data.message);\r\n setLoading(false);\r\n }\r\n });\r\n } catch {\r\n notifyMessage('Something went wrong');\r\n }\r\n };\r\n const getCountryData = useCallback(async () => {\r\n try {\r\n await axios\r\n .get(`${baseUrl}/allsubparameterstatus`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n })\r\n .then((res) => {\r\n if (res.data) {\r\n setCountryData(res.data.data);\r\n setLoading(false);\r\n }\r\n })\r\n .catch(() => {\r\n setCountryData([]);\r\n setLoading(false);\r\n });\r\n } catch {\r\n setLoading(false);\r\n }\r\n }, [user.token]);\r\n\r\n useEffect(() => {\r\n getCountryData();\r\n }, [getCountryData]);\r\n\r\n const markAsWin = async (id) => {\r\n try {\r\n await axios\r\n .put(\r\n `${baseUrl}/subparameterstatus/win/${id}`,\r\n {},\r\n {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }\r\n )\r\n .then((res) => {\r\n if (res.data) {\r\n notifyMessage('Sucess', 'success');\r\n } else {\r\n notifyMessage('Error');\r\n }\r\n getCountryData();\r\n });\r\n } catch {\r\n notifyMessage('Error');\r\n }\r\n };\r\n const markAsLoss = async (id) => {\r\n try {\r\n await axios\r\n .put(\r\n `${baseUrl}/subparameterstatus/lost/${id}`,\r\n {},\r\n {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }\r\n )\r\n .then((res) => {\r\n if (res.data) {\r\n notifyMessage('Sucess', 'success');\r\n } else {\r\n notifyMessage('Error');\r\n }\r\n getCountryData();\r\n });\r\n } catch {\r\n notifyMessage('Error');\r\n }\r\n };\r\n const cancelDecision = async (id) => {\r\n try {\r\n await axios\r\n .put(\r\n `${baseUrl}/subparameterstatus/cancel/${id}`,\r\n {},\r\n {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }\r\n )\r\n .then((res) => {\r\n if (res.data) {\r\n notifyMessage('Sucess', 'success');\r\n } else {\r\n notifyMessage('Error');\r\n }\r\n getCountryData();\r\n });\r\n } catch {\r\n notifyMessage('Error');\r\n }\r\n };\r\n\r\n const hasWinLOSS = countryData.some((item) => item.winLostSubPara !== null);\r\n const hasWinD = countryData.some((item) => item.winLostSubPara == 1);\r\n const hasLossD = countryData.some((item) => item.winLostSubPara == 0);\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n setOpenModal(true), // Opens the modal\r\n moduleKey: 'SUB_PARAMETER_STATUS',\r\n permission: 'Add',\r\n },\r\n ].filter((button) => {\r\n return hasPermission(\r\n permissions,\r\n button.moduleKey,\r\n button.permission,\r\n user\r\n );\r\n })}\r\n actionButtons={[\r\n {\r\n label: 'Win',\r\n onClick: (obj) => {\r\n markAsWin(obj.subParameterStatusId);\r\n },\r\n variant: 'bg-green-200',\r\n wlbtn: true,\r\n btnType: 'w',\r\n moduleKey: 'SUB_PARAMETER_STATUS',\r\n permission: 'Edit',\r\n },\r\n {\r\n label: 'Loss',\r\n onClick: (obj) => {\r\n markAsLoss(obj.subParameterStatusId);\r\n },\r\n variant: ButtonVariants.PRIMARY_GRAY,\r\n wlbtn: true,\r\n btnType: 'l',\r\n moduleKey: 'SUB_PARAMETER_STATUS',\r\n permission: 'Edit',\r\n },\r\n {\r\n label: 'Remove From Win',\r\n onClick: (obj) => {\r\n cancelDecision(obj.subParameterStatusId);\r\n },\r\n variant: ButtonVariants.PRIMARY,\r\n wlbtn: true,\r\n btnType: 'rw',\r\n moduleKey: 'SUB_PARAMETER_STATUS',\r\n permission: 'Edit',\r\n },\r\n {\r\n label: 'Remove from Loss',\r\n onClick: (obj) => {\r\n cancelDecision(obj.subParameterStatusId);\r\n },\r\n variant: ButtonVariants.PRIMARY_GRAY,\r\n wlbtn: true,\r\n btnType: 'rl',\r\n moduleKey: 'SUB_PARAMETER_STATUS',\r\n permission: 'Edit',\r\n },\r\n {\r\n label: 'Edit',\r\n onClick: (obj) => {\r\n setCurrentObj(obj);\r\n setOpenModal(true);\r\n },\r\n variant: ButtonVariants.PRIMARY,\r\n moduleKey: 'SUB_PARAMETER_STATUS',\r\n permission: 'Edit',\r\n },\r\n {\r\n label: 'Delete',\r\n onClick: (obj) => {\r\n deleteCountry(obj.subParameterStatusId);\r\n },\r\n variant: ButtonVariants.SECONDARY,\r\n moduleKey: 'SUB_PARAMETER_STATUS',\r\n permission: 'Delete',\r\n },\r\n ].filter((button) => {\r\n return hasPermission(\r\n permissions,\r\n button.moduleKey,\r\n button.permission,\r\n user\r\n );\r\n })}\r\n />\r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import { useEffect } from 'react';\r\nimport { useForm } from 'react-hook-form';\r\nimport { Button, Modal } from 'flowbite-react';\r\nimport axios from 'axios';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport { notifyMessage, baseUrl } from '~/utils/app.utils';\r\nimport InputField from '~/components/common/InputField';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst AddMeetingType = ({\r\n openModal,\r\n setOpenModal,\r\n fetchData,\r\n isEditMode = false,\r\n initialData = {},\r\n setCurrentObj,\r\n}) => {\r\n const {\r\n register,\r\n handleSubmit,\r\n formState: { errors },\r\n reset,\r\n setValue,\r\n setFocus,\r\n } = useForm();\r\n const { user } = useAuth();\r\n\r\n useEffect(() => {\r\n if (openModal) {\r\n if (isEditMode && initialData?.meetingTypeName) {\r\n setValue('meetingType', initialData.meetingTypeName);\r\n } else {\r\n // Use setTimeout to ensure the modal is fully rendered before focusing\r\n setTimeout(() => {\r\n setFocus('meetingType');\r\n }, 0);\r\n }\r\n }\r\n }, [openModal, isEditMode, initialData, setValue, setFocus]);\r\n\r\n const onSubmit = async (data) => {\r\n try {\r\n const endpoint = isEditMode\r\n ? `${baseUrl}/meetingType/${initialData.meetingTypeId}`\r\n : `${baseUrl}/meetingType`;\r\n const method = isEditMode ? 'put' : 'post';\r\n\r\n await axios({\r\n method,\r\n url: endpoint,\r\n data: {\r\n payload: {\r\n meetingTypeName: data.meetingType,\r\n },\r\n },\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }).then((res) => {\r\n if (res.data.status === true) {\r\n notifyMessage(res.data.message, 'success');\r\n fetchData();\r\n reset();\r\n setCurrentObj(null);\r\n setOpenModal(false);\r\n } else {\r\n notifyMessage(res.data.message, 'error');\r\n }\r\n });\r\n } catch (error) {\r\n notifyMessage(\r\n error?.response?.data?.message || 'Something went wrong!',\r\n 'error'\r\n );\r\n }\r\n };\r\n\r\n return (\r\n {\r\n setOpenModal(false);\r\n reset();\r\n setCurrentObj(null);\r\n }}\r\n dismissible\r\n >\r\n \r\n {isEditMode ? 'Edit Meeting Type' : 'Add Meeting Type'}\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n {\r\n setOpenModal(false);\r\n reset();\r\n setCurrentObj(null);\r\n }}\r\n >\r\n Cancel\r\n \r\n \r\n \r\n );\r\n};\r\nAddMeetingType.propTypes = {\r\n openModal: PropTypes.bool,\r\n setOpenModal: PropTypes.func,\r\n fetchData: PropTypes.func,\r\n isEditMode: PropTypes.bool,\r\n initialData: PropTypes.shape({\r\n meetingTypeId: PropTypes.number,\r\n meetingTypeName: PropTypes.string,\r\n }),\r\n setCurrentObj: PropTypes.func,\r\n};\r\n\r\nAddMeetingType.defaultProps = {\r\n isEditMode: false,\r\n initialData: {},\r\n};\r\nexport default AddMeetingType;\r\n","import { useEffect, useState, useMemo, useCallback } from 'react';\r\nimport axios from 'axios';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport { ButtonVariants } from '~/components/common/Button';\r\nimport Card from '~/components/common/Card';\r\nimport SectionHeader from '~/components/common/SectionHeader';\r\nimport DataTable from '~/components/common/DataTable';\r\nimport { AppRelativePaths } from '~/routes/routes.const';\r\nimport { notifyMessage, baseUrl, hasPermission } from '~/utils/app.utils';\r\nimport AddMeetingType from '~/components/meetingType/AddMeetingType';\r\nimport { usePermissionsContext } from '~/context/PermissionsProvider'; // Import permissions context\r\n\r\nexport default function MeetingTypeList() {\r\n const [openModal, setOpenModal] = useState(false);\r\n const [meetingTypeData, setMeetingTypeData] = useState([]);\r\n const [currentObj, setCurrentObj] = useState(null);\r\n const { user } = useAuth();\r\n const [loading, setLoading] = useState(true);\r\n const { permissions } = usePermissionsContext();\r\n\r\n const columns = useMemo(\r\n () => [\r\n {\r\n key: 'meetingTypeName',\r\n title: 'Meeting Type Name',\r\n },\r\n ],\r\n []\r\n );\r\n\r\n const breadcrumbsMemo = useMemo(\r\n () => [\r\n { label: 'Dashboard', link: AppRelativePaths.ADMIN_DASHBOARD },\r\n { label: 'Meeting Type List', link: AppRelativePaths.MEETING_LIST },\r\n ],\r\n []\r\n );\r\n\r\n const deleteMeetingType = useCallback(\r\n async (id) => {\r\n try {\r\n const response = await axios.delete(`${baseUrl}/meetingType/${id}`, {\r\n headers: {\r\n Authorization: user.token,\r\n },\r\n });\r\n\r\n if (response?.data?.status) {\r\n setMeetingTypeData((prevData) =>\r\n prevData.filter((meetingType) => meetingType.meetingTypeId !== id)\r\n );\r\n setLoading(false);\r\n notifyMessage(response.data.message, 'success');\r\n } else {\r\n notifyMessage(\r\n response?.data?.message || 'Unexpected response from server',\r\n 'error'\r\n );\r\n setLoading(false);\r\n }\r\n } catch {\r\n notifyMessage('Something went wrong', 'error');\r\n setLoading(false);\r\n }\r\n },\r\n [user.token]\r\n );\r\n\r\n const getMeetingTypeData = useCallback(async () => {\r\n try {\r\n setLoading(true);\r\n const response = await axios.get(`${baseUrl}/meetingTypes`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n });\r\n\r\n if (response?.data?.status) {\r\n setMeetingTypeData(response.data.data);\r\n } else {\r\n notifyMessage(\r\n response?.data?.message || 'Unexpected response from server',\r\n 'error'\r\n );\r\n setMeetingTypeData([]);\r\n }\r\n } catch {\r\n notifyMessage('Unable to fetch data. Please try again later.', 'error');\r\n setMeetingTypeData([]);\r\n } finally {\r\n setLoading(false);\r\n }\r\n }, [user.token]);\r\n\r\n useEffect(() => {\r\n getMeetingTypeData();\r\n }, [getMeetingTypeData]);\r\n\r\n const headerActionButtons = useMemo(\r\n () =>\r\n [\r\n {\r\n id: 'add',\r\n icon: 'plus',\r\n label: 'Add',\r\n variant: ButtonVariants.PRIMARY,\r\n onClick: () => setOpenModal(true), // Opens the modal\r\n moduleKey: 'MEETING_TYPE',\r\n permission: 'Add',\r\n },\r\n ].filter((button) => {\r\n return hasPermission(\r\n permissions,\r\n button.moduleKey,\r\n button.permission,\r\n user\r\n );\r\n }),\r\n [permissions, user]\r\n );\r\n\r\n const actionButtons = useMemo(\r\n () =>\r\n [\r\n {\r\n label: 'Edit',\r\n onClick: (obj) => {\r\n setCurrentObj(obj);\r\n setOpenModal(true);\r\n },\r\n variant: ButtonVariants.PRIMARY,\r\n moduleKey: 'MEETING_TYPE',\r\n permission: 'Edit',\r\n },\r\n {\r\n label: 'Delete',\r\n onClick: (obj) => {\r\n deleteMeetingType(obj.meetingTypeId);\r\n },\r\n variant: ButtonVariants.SECONDARY,\r\n moduleKey: 'MEETING_TYPE',\r\n permission: 'Delete',\r\n },\r\n ].filter((button) => {\r\n return hasPermission(\r\n permissions,\r\n button.moduleKey,\r\n button.permission,\r\n user\r\n );\r\n }),\r\n [deleteMeetingType, permissions, user]\r\n );\r\n\r\n return (\r\n
\r\n {openModal && (\r\n \r\n )}\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import { useEffect } from 'react';\r\nimport { useForm } from 'react-hook-form';\r\nimport { Button, Modal } from 'flowbite-react';\r\nimport axios from 'axios';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport { notifyMessage, baseUrl } from '~/utils/app.utils';\r\nimport InputField from '~/components/common/InputField';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst AddMeetingTypeStatus = ({\r\n openModal,\r\n setOpenModal,\r\n fetchData,\r\n isEditMode = false,\r\n initialData = {},\r\n setCurrentObj,\r\n}) => {\r\n const {\r\n register,\r\n handleSubmit,\r\n formState: { errors },\r\n reset,\r\n setValue,\r\n setFocus,\r\n } = useForm();\r\n const { user } = useAuth();\r\n\r\n useEffect(() => {\r\n if (openModal) {\r\n if (isEditMode && initialData?.meetingStatus) {\r\n setValue('meetingStatus', initialData.meetingStatus);\r\n } else {\r\n // Use setTimeout to ensure the modal is fully rendered before focusing\r\n setTimeout(() => {\r\n setFocus('meetingStatus');\r\n }, 0);\r\n }\r\n }\r\n }, [openModal, isEditMode, initialData, setValue, setFocus]);\r\n\r\n const onSubmit = async (data) => {\r\n try {\r\n const endpoint = isEditMode\r\n ? `${baseUrl}/meetingStatus/${initialData.meetingStatusId}`\r\n : `${baseUrl}/meetingStatus`;\r\n const method = isEditMode ? 'put' : 'post';\r\n\r\n // Convert data to x-www-form-urlencoded format\r\n const formUrlEncoded = new URLSearchParams();\r\n formUrlEncoded.append('meetingStatus', data.meetingStatus);\r\n\r\n await axios({\r\n method,\r\n url: endpoint,\r\n data: formUrlEncoded.toString(), // Send as string\r\n headers: {\r\n 'Content-Type': 'application/x-www-form-urlencoded',\r\n Authorization: user.token,\r\n },\r\n }).then((res) => {\r\n if (res.data.status === true) {\r\n notifyMessage(res.data.message, 'success');\r\n fetchData();\r\n reset();\r\n setCurrentObj(null);\r\n setOpenModal(false);\r\n } else {\r\n notifyMessage(res.data.message, 'error');\r\n }\r\n });\r\n } catch (error) {\r\n notifyMessage(\r\n error?.response?.data?.message || 'Something went wrong!',\r\n 'error'\r\n );\r\n }\r\n };\r\n\r\n return (\r\n {\r\n setOpenModal(false);\r\n reset();\r\n setCurrentObj(null);\r\n }}\r\n dismissible\r\n >\r\n \r\n {isEditMode ? 'Edit Meeting Status' : 'Add Meeting Status'}\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n {\r\n setOpenModal(false);\r\n reset();\r\n setCurrentObj(null);\r\n }}\r\n >\r\n Cancel\r\n \r\n \r\n \r\n );\r\n};\r\nAddMeetingTypeStatus.propTypes = {\r\n openModal: PropTypes.bool,\r\n setOpenModal: PropTypes.func,\r\n fetchData: PropTypes.func,\r\n isEditMode: PropTypes.bool,\r\n initialData: PropTypes.shape({\r\n meetingStatusId: PropTypes.number,\r\n meetingStatus: PropTypes.string,\r\n }),\r\n setCurrentObj: PropTypes.func,\r\n};\r\n\r\nAddMeetingTypeStatus.defaultProps = {\r\n isEditMode: false,\r\n initialData: {},\r\n};\r\nexport default AddMeetingTypeStatus;\r\n","import { useCallback, useEffect, useState } from 'react';\r\nimport axios from 'axios';\r\nimport { ButtonVariants } from '~/components/common/Button';\r\nimport Card from '~/components/common/Card';\r\nimport SectionHeader from '~/components/common/SectionHeader';\r\nimport { AppRelativePaths } from '~/routes/routes.const';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport { notifyMessage, baseUrl, hasPermission } from '~/utils/app.utils';\r\nimport AddMeetingTypeStatus from '~/components/meetingType/AddMeetingTypeStatus';\r\nimport DndDataTable from '~/components/common/DataTable/DndDataTable';\r\nimport { usePermissionsContext } from '~/context/PermissionsProvider'; // Import permissions context\r\n\r\nconst breadcrumbs = [\r\n { label: 'Dashboard', link: AppRelativePaths.ADMIN_DASHBOARD },\r\n { label: 'meeting Type Status', link: AppRelativePaths.MEETING_STATUS },\r\n];\r\n\r\nexport default function MeetingTypeStatus() {\r\n const [openModal, setOpenModal] = useState(false);\r\n const [meetingStatusData, setMeetingStatusData] = useState([]);\r\n const [currentObj, setCurrentObj] = useState(null);\r\n const { user } = useAuth();\r\n const [loading, setLoading] = useState(true);\r\n const { permissions } = usePermissionsContext();\r\n\r\n const columns = [\r\n {\r\n key: 'meetingStatus',\r\n title: 'Meeting Type Status Name',\r\n },\r\n ];\r\n const hasWinLOSS = meetingStatusData.some(\r\n (item) => item.winLostMeeting !== null\r\n );\r\n const hasWinD = meetingStatusData.some((item) => item.winLostMeeting == 1);\r\n const hasLossD = meetingStatusData.some((item) => item.winLostMeeting == 0);\r\n\r\n const deleteMeetingStatus = async (id) => {\r\n try {\r\n await axios\r\n .delete(`${baseUrl}/meetingStatus/${id}`, {\r\n headers: {\r\n Authorization: user.token,\r\n },\r\n })\r\n .then((res) => {\r\n if (res.data) {\r\n setMeetingStatusData((prevData) =>\r\n prevData.filter(\r\n (meetingStatus) => meetingStatus.meetingStatusId !== id\r\n )\r\n );\r\n setLoading(false);\r\n notifyMessage(res.data.message, 'success');\r\n } else {\r\n notifyMessage(res.data.message);\r\n setLoading(false);\r\n }\r\n });\r\n } catch {\r\n notifyMessage('Something went wrong');\r\n }\r\n };\r\n const getMeetingStatusData = useCallback(async () => {\r\n try {\r\n await axios\r\n .get(`${baseUrl}/meetingstatus`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n })\r\n .then((res) => {\r\n if (res.data) {\r\n setMeetingStatusData(res.data.data);\r\n setLoading(false);\r\n }\r\n })\r\n .catch(() => {\r\n setMeetingStatusData([]);\r\n setLoading(false);\r\n });\r\n } catch {\r\n setLoading(false);\r\n }\r\n }, [user.token]);\r\n\r\n useEffect(() => {\r\n getMeetingStatusData();\r\n }, [getMeetingStatusData]);\r\n\r\n const cancelDecision = async (id) => {\r\n try {\r\n await axios\r\n .put(\r\n `${baseUrl}/meetingstatus/cancel/${id}`,\r\n {},\r\n {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }\r\n )\r\n .then((res) => {\r\n if (res.data) {\r\n notifyMessage('Sucess', 'success');\r\n } else {\r\n notifyMessage('Error');\r\n }\r\n getMeetingStatusData();\r\n });\r\n } catch {\r\n notifyMessage('Error');\r\n }\r\n };\r\n const markAsWin = async (id) => {\r\n try {\r\n await axios\r\n .put(\r\n `${baseUrl}/meetingstatus/win/${id}`,\r\n {},\r\n {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }\r\n )\r\n .then((res) => {\r\n if (res.data) {\r\n notifyMessage('Sucess', 'success');\r\n } else {\r\n notifyMessage('Error');\r\n }\r\n getMeetingStatusData();\r\n });\r\n } catch {\r\n notifyMessage('Error');\r\n }\r\n };\r\n const markAsLoss = async (id) => {\r\n try {\r\n await axios\r\n .put(\r\n `${baseUrl}/meetingstatus/lost/${id}`,\r\n {},\r\n {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }\r\n )\r\n .then((res) => {\r\n if (res.data) {\r\n notifyMessage('Sucess', 'success');\r\n } else {\r\n notifyMessage('Error');\r\n }\r\n getMeetingStatusData();\r\n });\r\n } catch {\r\n notifyMessage('Error');\r\n }\r\n };\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n setOpenModal(true), // Opens the modal\r\n moduleKey: 'MEETING_STATUS',\r\n permission: 'Add',\r\n },\r\n ].filter((button) => {\r\n return hasPermission(\r\n permissions,\r\n button.moduleKey,\r\n button.permission,\r\n user\r\n );\r\n })}\r\n actionButtons={[\r\n {\r\n label: 'Win',\r\n onClick: (obj) => {\r\n markAsWin(obj.meetingStatusId);\r\n },\r\n variant: 'bg-green-200',\r\n wlbtn: true,\r\n btnType: 'w',\r\n moduleKey: 'MEETING_STATUS',\r\n permission: 'Edit',\r\n },\r\n {\r\n label: 'Loss',\r\n onClick: (obj) => {\r\n markAsLoss(obj.meetingStatusId);\r\n },\r\n variant: ButtonVariants.PRIMARY_GRAY,\r\n wlbtn: true,\r\n btnType: 'l',\r\n moduleKey: 'MEETING_STATUS',\r\n permission: 'Edit',\r\n },\r\n {\r\n label: 'Remove From Win',\r\n onClick: (obj) => {\r\n cancelDecision(obj.meetingStatusId);\r\n },\r\n variant: ButtonVariants.PRIMARY,\r\n wlbtn: true,\r\n btnType: 'rw',\r\n moduleKey: 'MEETING_STATUS',\r\n permission: 'Edit',\r\n },\r\n {\r\n label: 'Remove from Loss',\r\n onClick: (obj) => {\r\n cancelDecision(obj.meetingStatusId);\r\n },\r\n variant: ButtonVariants.PRIMARY_GRAY,\r\n wlbtn: true,\r\n btnType: 'rl',\r\n moduleKey: 'MEETING_STATUS',\r\n permission: 'Edit',\r\n },\r\n {\r\n label: 'Edit',\r\n onClick: (obj) => {\r\n setCurrentObj(obj);\r\n setOpenModal(true);\r\n },\r\n variant: ButtonVariants.PRIMARY,\r\n moduleKey: 'MEETING_STATUS',\r\n permission: 'Edit',\r\n },\r\n {\r\n label: 'Delete',\r\n onClick: (obj) => {\r\n deleteMeetingStatus(obj.meetingStatusId);\r\n },\r\n variant: ButtonVariants.SECONDARY,\r\n moduleKey: 'MEETING_STATUS',\r\n permission: 'Delete',\r\n },\r\n ].filter((button) => {\r\n return hasPermission(\r\n permissions,\r\n button.moduleKey,\r\n button.permission,\r\n user\r\n );\r\n })}\r\n />\r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import { useCallback, useEffect, useState } from 'react';\r\nimport { useForm } from 'react-hook-form';\r\nimport { Button, Modal, ToggleSwitch } from 'flowbite-react';\r\nimport axios from 'axios';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport { notifyMessage, baseUrl } from '~/utils/app.utils';\r\nimport InputField from '~/components/common/InputField';\r\nimport ReactSelectField from '~/components/common/ReactSelectField';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst KPIAddEditModal = ({\r\n openModal,\r\n setOpenModal,\r\n fetchData,\r\n isEditMode = false,\r\n initialData = {},\r\n setCurrentObj,\r\n}) => {\r\n const {\r\n register,\r\n handleSubmit,\r\n formState: { errors },\r\n reset,\r\n setValue,\r\n setFocus,\r\n watch,\r\n control,\r\n } = useForm();\r\n\r\n const isIndustrySpecific = watch('isIndustrySpecific', false); // Default false\r\n\r\n const { user } = useAuth();\r\n const [industryOptions, setIndustryOptions] = useState([]);\r\n useEffect(() => {\r\n if (openModal) {\r\n if (isEditMode && initialData?.KPIName) {\r\n reset({\r\n kpiName: initialData.KPIName,\r\n kpiLabel: initialData.KPILabel,\r\n industryId: {\r\n value: initialData?.Industry?.industryId,\r\n label: initialData?.Industry?.industryName,\r\n },\r\n isIndustrySpecific: initialData?.Industry?.industryId ? true : false,\r\n });\r\n } else {\r\n // // Reset the form for add mode\r\n reset();\r\n setTimeout(() => {\r\n setFocus('kpiName');\r\n }, 0);\r\n }\r\n }\r\n }, [openModal, isEditMode, initialData, setValue, reset, setFocus]);\r\n\r\n const getIndustryOptions = useCallback(async () => {\r\n try {\r\n const res = await axios.get(`${baseUrl}/industries`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n });\r\n if (res.data) {\r\n const options = res.data.data.map((el) => ({\r\n value: el.industryId,\r\n label: el.industryName,\r\n }));\r\n setIndustryOptions(options);\r\n }\r\n } catch {\r\n setIndustryOptions([]);\r\n }\r\n }, [user.token]);\r\n\r\n const onSubmit = async (data) => {\r\n try {\r\n const endpoint = isEditMode\r\n ? `${baseUrl}/company/kpi/${initialData.KPIMasterId}`\r\n : `${baseUrl}/company/kpi`;\r\n const method = isEditMode ? 'put' : 'post';\r\n const saveObj = {\r\n kpiName: data.kpiName,\r\n kpiLabel: data.kpiLabel,\r\n industryId: data.isIndustrySpecific ? data.industryId?.value : null,\r\n };\r\n await axios({\r\n method,\r\n url: endpoint,\r\n data: saveObj,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }).then((res) => {\r\n if (res.data.status === true) {\r\n notifyMessage(res.data.message, 'success');\r\n fetchData();\r\n reset();\r\n setCurrentObj(null);\r\n setOpenModal(false);\r\n } else {\r\n notifyMessage(res.data.message, 'error');\r\n }\r\n });\r\n } catch (error) {\r\n setOpenModal(false);\r\n\r\n notifyMessage(\r\n error?.response?.data?.message || 'Something went wrong!',\r\n 'error'\r\n );\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n getIndustryOptions();\r\n }, [getIndustryOptions]);\r\n\r\n return (\r\n {\r\n setOpenModal(false);\r\n reset();\r\n setCurrentObj(null);\r\n }}\r\n dismissible\r\n >\r\n {isEditMode ? 'Edit KPI' : 'Add KPI'}\r\n \r\n
\r\n \r\n \r\n
\r\n setValue('isIndustrySpecific', checked)}\r\n />\r\n {isIndustrySpecific && (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n \r\n
\r\n \r\n \r\n {\r\n setOpenModal(false);\r\n reset();\r\n setCurrentObj(null);\r\n }}\r\n >\r\n Cancel\r\n \r\n \r\n \r\n );\r\n};\r\nKPIAddEditModal.propTypes = {\r\n openModal: PropTypes.bool,\r\n setOpenModal: PropTypes.func,\r\n fetchData: PropTypes.func,\r\n isEditMode: PropTypes.bool,\r\n initialData: PropTypes.shape({\r\n KPIName: PropTypes.string,\r\n KPILabel: PropTypes.string,\r\n Industry: PropTypes.shape({\r\n industryId: PropTypes.number,\r\n industryName: PropTypes.string,\r\n }),\r\n KPIMasterId: PropTypes.number,\r\n }),\r\n setCurrentObj: PropTypes.func,\r\n};\r\n\r\nKPIAddEditModal.defaultProps = {\r\n isEditMode: false,\r\n initialData: {},\r\n};\r\n\r\nexport default KPIAddEditModal;\r\n","import { useEffect, useState, useMemo, useCallback } from 'react';\r\nimport axios from 'axios';\r\nimport { ButtonVariants } from '~/components/common/Button';\r\nimport Card from '~/components/common/Card';\r\nimport SectionHeader from '~/components/common/SectionHeader';\r\nimport DataTable from '~/components/common/DataTable';\r\nimport { AppRelativePaths } from '~/routes/routes.const';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport { notifyMessage, baseUrl, hasPermission } from '~/utils/app.utils';\r\nimport KPIAddEditModal from './KPIAddEditModal';\r\nimport { usePermissionsContext } from '~/context/PermissionsProvider'; // Import permissions context\r\n\r\nexport default function KPIMasterList() {\r\n const [openModal, setOpenModal] = useState(false);\r\n const [kpiMasterData, setKPIMasterData] = useState([]);\r\n const [currentObj, setCurrentObj] = useState(null);\r\n const [loading, setLoading] = useState(true);\r\n const { user } = useAuth();\r\n const { permissions } = usePermissionsContext();\r\n\r\n const columns = useMemo(\r\n () => [\r\n {\r\n key: 'KPIName',\r\n title: 'KPI Name',\r\n },\r\n {\r\n key: 'KPILabel',\r\n title: 'KPI Label',\r\n },\r\n {\r\n key: 'industryName',\r\n title: 'IndustryName',\r\n },\r\n ],\r\n []\r\n );\r\n\r\n const breadcrumbs = useMemo(\r\n () => [\r\n { label: 'Dashboard', link: AppRelativePaths.ADMIN_DASHBOARD },\r\n { label: 'KPI List', link: AppRelativePaths.KPI_LIST },\r\n ],\r\n []\r\n );\r\n\r\n const deleteKPI = useCallback(\r\n async (id) => {\r\n try {\r\n const res = await axios.delete(`${baseUrl}/company/kpi/${id}`, {\r\n headers: {\r\n Authorization: user.token,\r\n },\r\n });\r\n if (res.data) {\r\n setKPIMasterData((prevData) =>\r\n prevData.filter((kpi) => kpi.KPIMasterId !== id)\r\n );\r\n notifyMessage(res.data.message, 'success');\r\n } else {\r\n notifyMessage(res.data.message);\r\n }\r\n } catch {\r\n notifyMessage('Something went wrong');\r\n } finally {\r\n setLoading(false);\r\n }\r\n },\r\n [user.token]\r\n );\r\n\r\n const getKPIData = useCallback(async () => {\r\n try {\r\n setLoading(true);\r\n const res = await axios.get(`${baseUrl}/company/kpi/all`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n });\r\n if (res.data) {\r\n setKPIMasterData(res.data.data);\r\n }\r\n } catch {\r\n setKPIMasterData([]);\r\n } finally {\r\n setLoading(false);\r\n }\r\n }, [user.token]);\r\n\r\n useEffect(() => {\r\n getKPIData();\r\n }, [getKPIData]);\r\n\r\n const headerActionButtons = useMemo(\r\n () =>\r\n [\r\n {\r\n id: 'add',\r\n icon: 'plus',\r\n label: 'Add',\r\n variant: ButtonVariants.PRIMARY,\r\n onClick: () => setOpenModal(true),\r\n moduleKey: 'KPI',\r\n permission: 'Add',\r\n },\r\n ].filter((button) => {\r\n return hasPermission(\r\n permissions,\r\n button.moduleKey,\r\n button.permission,\r\n user\r\n );\r\n }),\r\n [permissions, user]\r\n );\r\n\r\n const actionButtons = useMemo(\r\n () =>\r\n [\r\n {\r\n label: 'Edit',\r\n onClick: (obj) => {\r\n setCurrentObj(obj);\r\n setOpenModal(true);\r\n },\r\n variant: ButtonVariants.PRIMARY,\r\n moduleKey: 'KPI',\r\n permission: 'Edit',\r\n },\r\n {\r\n label: 'Delete',\r\n onClick: (obj) => {\r\n deleteKPI(obj.KPIMasterId);\r\n },\r\n variant: ButtonVariants.SECONDARY,\r\n moduleKey: 'KPI',\r\n permission: 'Delete',\r\n },\r\n ].filter((button) => {\r\n return hasPermission(\r\n permissions,\r\n button.moduleKey,\r\n button.permission,\r\n user\r\n );\r\n }),\r\n [deleteKPI, permissions, user]\r\n );\r\n\r\n return (\r\n
\r\n {openModal && (\r\n \r\n )}\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import { useEffect, useState, useCallback } from 'react';\r\nimport axios from 'axios';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport { notifyMessage, baseUrl } from '~/utils/app.utils';\r\nimport { useForm } from 'react-hook-form';\r\nimport { Button, Table } from 'flowbite-react';\r\nimport useWindowDimensions from '~/hooks/useWindowDimensions';\r\nimport Card from '~/components/common/Card';\r\nimport SectionHeader from '~/components/common/SectionHeader';\r\nimport ReactSelectField from '~/components/common/ReactSelectField';\r\nimport { AppRelativePaths } from '~/routes/routes.const';\r\nimport Loader from '~/components/common/Loader';\r\nimport Access from '~/components/common/Access';\r\nimport CheckboxGroupRating from '~/components/common/CheckboxGroupRating';\r\n\r\nconst breadcrumbs = [\r\n { label: 'Dashboard', link: AppRelativePaths.ADMIN_DASHBOARD },\r\n { label: 'Default Health Score', link: AppRelativePaths.HEALTH_SCORE },\r\n];\r\nexport default function HealthScore() {\r\n const { user } = useAuth();\r\n const [coreParameterData, setCoreParameterData] = useState([]);\r\n const [subParameterData, setSubParameterData] = useState([]);\r\n const [coreParameterRows, setCoreParameterRows] = useState([]);\r\n const [isEditing, setIsEditing] = useState(false);\r\n const { height } = useWindowDimensions();\r\n const [loading, setLoading] = useState(false);\r\n\r\n const {\r\n control,\r\n watch,\r\n formState: { errors },\r\n } = useForm();\r\n const selectedCoreParameterId = watch('coreParameterId');\r\n\r\n const getAllCoreParameter = useCallback(async () => {\r\n try {\r\n const res = await axios.get(`${baseUrl}/coreparameters`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n });\r\n if (res.data) {\r\n const de = res.data.data || [];\r\n const updatedData = de.map((el) => ({\r\n value: el.coreParameterId,\r\n label: el.coreParameterName,\r\n }));\r\n setCoreParameterData(updatedData);\r\n }\r\n } catch {\r\n setCoreParameterData([]);\r\n }\r\n }, [user.token]);\r\n\r\n const getAllSubParameter = useCallback(\r\n async (coreParameterId) => {\r\n if (!coreParameterId) {\r\n setSubParameterData([]);\r\n return;\r\n }\r\n try {\r\n const response = await axios.get(\r\n `${baseUrl}/subparameters/coreParameter/${coreParameterId}`,\r\n {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }\r\n );\r\n if (response?.data?.data) {\r\n const formattedData = response.data.data.map((subParam) => ({\r\n subParameterId: subParam.subParameterId,\r\n subParameterName: subParam.subParameterName,\r\n score: subParam.defaultScore || 5, // Default value 5\r\n }));\r\n setSubParameterData(formattedData);\r\n }\r\n } catch {\r\n setSubParameterData([]);\r\n }\r\n },\r\n [user.token]\r\n );\r\n\r\n const getAllCoreParameterRows = useCallback(\r\n async (coreParameterId) => {\r\n setLoading(true);\r\n if (!coreParameterId) {\r\n setCoreParameterRows([]);\r\n return;\r\n }\r\n try {\r\n const response = await axios.get(\r\n `${baseUrl}/defaultHealthscore/${coreParameterId}`,\r\n {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }\r\n );\r\n if (response?.data?.data) {\r\n const updatedArray = response?.data?.data.map((item) => {\r\n const match = subParameterData.find(\r\n (el) => el.subParameterId === item.subParameterId\r\n );\r\n return {\r\n ...item,\r\n subParameterName: match ? match.subParameterName : null, // Add name if found\r\n };\r\n });\r\n setCoreParameterRows(updatedArray);\r\n }\r\n setLoading(false);\r\n } catch {\r\n setCoreParameterRows([]);\r\n setLoading(false);\r\n }\r\n },\r\n [user.token, subParameterData]\r\n );\r\n\r\n useEffect(() => {\r\n getAllCoreParameter();\r\n }, [getAllCoreParameter]);\r\n\r\n useEffect(() => {\r\n if (selectedCoreParameterId?.value) {\r\n getAllSubParameter(selectedCoreParameterId?.value);\r\n }\r\n }, [selectedCoreParameterId?.value, getAllSubParameter]);\r\n\r\n useEffect(() => {\r\n if (subParameterData.length > 0 && selectedCoreParameterId?.value) {\r\n getAllCoreParameterRows(selectedCoreParameterId?.value);\r\n }\r\n }, [\r\n subParameterData,\r\n selectedCoreParameterId?.value,\r\n getAllCoreParameterRows,\r\n ]);\r\n\r\n const handleSliderChange = useCallback((subParameterId, newValue) => {\r\n setCoreParameterRows((prevData) =>\r\n prevData.map((subParam) =>\r\n subParam.subParameterId === subParameterId\r\n ? { ...subParam, score: newValue }\r\n : subParam\r\n )\r\n );\r\n }, []);\r\n\r\n const handleSave = async () => {\r\n const flattenedData = coreParameterRows.map((item) => ({\r\n subParameterId: item.subParameterId,\r\n score: item.score,\r\n }));\r\n try {\r\n const response = await axios.post(\r\n `${baseUrl}/defaultHealthscore`,\r\n { payload: flattenedData },\r\n {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }\r\n );\r\n notifyMessage(response.data.message, 'success');\r\n setIsEditing(!isEditing);\r\n } catch {\r\n notifyMessage('Something went wrong');\r\n }\r\n };\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n setIsEditing(!isEditing)}\r\n >\r\n {isEditing ? 'Cancel' : 'Edit'}\r\n \r\n \r\n \r\n \r\n Save\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n {loading ? (\r\n \r\n ) : (\r\n \r\n \r\n \r\n Sub Parameter Name\r\n \r\n \r\n Score\r\n \r\n \r\n \r\n {coreParameterRows?.length > 0 ? (\r\n coreParameterRows.map((subParam) => (\r\n \r\n \r\n {subParam.subParameterName}\r\n \r\n \r\n \r\n handleSliderChange(\r\n subParam.subParameterId,\r\n Number(scoreValue)\r\n )\r\n }\r\n isDisabled={!isEditing}\r\n />\r\n \r\n \r\n ))\r\n ) : (\r\n \r\n \r\n Select Core Parameter\r\n \r\n \r\n )}\r\n \r\n
\r\n )}\r\n
\r\n
\r\n \r\n \r\n );\r\n}\r\n","import { useEffect, useState, useMemo, useCallback } from 'react';\r\nimport axios from 'axios';\r\nimport { ButtonVariants } from '~/components/common/Button';\r\nimport Card from '~/components/common/Card';\r\nimport SectionHeader from '~/components/common/SectionHeader';\r\nimport DataTable from '~/components/common/DataTable';\r\nimport { AppRelativePaths } from '~/routes/routes.const';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport { hasPermission, baseUrl } from '~/utils/app.utils'; // Utility function to check permission\r\nimport { usePermissionsContext } from '~/context/PermissionsProvider'; // Import permissions context\r\n\r\nexport default function AdminUserpermissionlist() {\r\n const [employeeData, setEmployeeData] = useState([]);\r\n const { user } = useAuth();\r\n\r\n const [loading, setLoading] = useState(true);\r\n const { permissions } = usePermissionsContext();\r\n const navigate = useNavigate();\r\n const breadcrumbs = useMemo(\r\n () => [\r\n { label: 'Dashboard', link: AppRelativePaths.DASHBOARD },\r\n {\r\n label: 'Permissionlist List',\r\n link: AppRelativePaths.ROLE_USER_PERMISSIONS,\r\n },\r\n ],\r\n []\r\n );\r\n\r\n const columns = useMemo(() => [{ key: 'adminUserName', title: 'Name' }], []);\r\n\r\n const getEmployeeData = useCallback(async () => {\r\n try {\r\n const res = await axios.get(`${baseUrl}/adminusers`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n });\r\n if (res?.data?.data) {\r\n const filterdUser = res.data?.data?.filter(\r\n (item) => item.isSuperAdmin === 0\r\n );\r\n setEmployeeData(filterdUser);\r\n }\r\n } catch {\r\n setEmployeeData([]);\r\n } finally {\r\n setLoading(false);\r\n }\r\n }, [user.token]);\r\n\r\n useEffect(() => {\r\n getEmployeeData();\r\n }, [getEmployeeData]);\r\n\r\n const actionButtons = useMemo(\r\n () =>\r\n [\r\n {\r\n label: 'Permission',\r\n onClick: (obj) => {\r\n navigate(AppRelativePaths.ROLE_USER_MODULES, {\r\n state: {\r\n adminUserId: obj?.adminUserId,\r\n userName: obj?.adminUserName,\r\n },\r\n });\r\n },\r\n variant: ButtonVariants.PRIMARY,\r\n moduleKey: 'ADMIN_ROLES_PERMISSION',\r\n permission: 'View',\r\n },\r\n ].filter((button) => {\r\n return hasPermission(\r\n permissions,\r\n button.moduleKey,\r\n button.permission,\r\n user\r\n );\r\n }),\r\n [permissions, navigate, user]\r\n );\r\n\r\n return (\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import { useState, useEffect, useCallback } from 'react';\r\nimport Card from '~/components/common/Card';\r\nimport SectionHeader from '~/components/common/SectionHeader';\r\nimport { AppRelativePaths } from '~/routes/routes.const';\r\nimport { Checkbox, Button, Table } from 'flowbite-react';\r\nimport axios from 'axios';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport { useLocation } from 'react-router-dom';\r\nimport Loader from '~/components/common/Loader';\r\nimport { notifyMessage, baseUrl } from '~/utils/app.utils';\r\nimport useWindowDimensions from '~/hooks/useWindowDimensions';\r\nimport Access from '~/components/common/Access';\r\n\r\nconst breadcrumbs = [\r\n {\r\n label: 'Permission list',\r\n link: AppRelativePaths.ROLE_USER_PERMISSIONS,\r\n },\r\n {\r\n label: 'Admin Roles & Permissions',\r\n link: AppRelativePaths.ROLE_PERMISSION_LIST,\r\n },\r\n];\r\nexport default function AdminRoleModules() {\r\n const location = useLocation();\r\n const { state } = location || {};\r\n const { user } = useAuth();\r\n const { height } = useWindowDimensions();\r\n\r\n const [permissions, setPermissions] = useState([]);\r\n const [modules, setModules] = useState([]);\r\n const [selectedPermissions, setSelectedPermissions] = useState({});\r\n const [loading, setLoading] = useState(true);\r\n const [isEditing, setIsEditing] = useState(false);\r\n\r\n const fetchData = useCallback(async () => {\r\n setLoading(true);\r\n try {\r\n const [permissionsRes, modulesRes] = await Promise.all([\r\n axios.get(`${baseUrl}/permission/all`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }),\r\n axios.get(`${baseUrl}/module/all`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }),\r\n ]);\r\n if (permissionsRes.data?.data) setPermissions(permissionsRes.data.data);\r\n if (modulesRes.data?.data) setModules(modulesRes.data.data);\r\n } catch {\r\n notifyMessage('Something went wrong!', 'error');\r\n } finally {\r\n setLoading(false);\r\n }\r\n }, [user.token]);\r\n\r\n const getAllEmployeePermissions = useCallback(async () => {\r\n try {\r\n const res = await axios.get(\r\n `${baseUrl}/adminUserPermission/0/${state?.adminUserId}`,\r\n {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }\r\n );\r\n\r\n if (res.data?.data) {\r\n const updatedModules = modules?.map((module) => {\r\n const modulePermissions = res.data.data\r\n .filter((check) => check.moduleId === module.moduleId)\r\n .map((check) => ({\r\n permissionId: check?.permission?.permissionId,\r\n permissionName: check?.permission?.permissionName,\r\n }));\r\n\r\n return {\r\n ...module,\r\n permissions: modulePermissions,\r\n };\r\n });\r\n // Transform to initialize selectedPermissions state\r\n const initialSelectedPermissions = {};\r\n updatedModules.forEach((module) => {\r\n if (module?.permissions?.length) {\r\n initialSelectedPermissions[module.moduleId] = new Set(\r\n module.permissions.map((perm) => perm.permissionId)\r\n );\r\n }\r\n });\r\n setSelectedPermissions(initialSelectedPermissions);\r\n setLoading(false);\r\n }\r\n } catch {\r\n setLoading(false);\r\n } finally {\r\n setLoading(false);\r\n }\r\n }, [user.token, modules, state?.adminUserId]);\r\n\r\n useEffect(() => {\r\n fetchData();\r\n }, [fetchData]);\r\n\r\n const isChecked = useCallback(\r\n (moduleId, permissionId) => {\r\n return selectedPermissions[moduleId]?.has(permissionId) || false;\r\n },\r\n [selectedPermissions]\r\n );\r\n\r\n useEffect(() => {\r\n if (modules.length && permissions.length && state?.adminUserId) {\r\n getAllEmployeePermissions();\r\n }\r\n }, [modules, permissions, state?.adminUserId, getAllEmployeePermissions]);\r\n\r\n // Handle checkbox changes\r\n const handleCheckboxChange = useCallback((moduleId, permissionId) => {\r\n setSelectedPermissions((prev) => {\r\n const modulePermissions = prev[moduleId] || new Set();\r\n if (modulePermissions.has(permissionId)) {\r\n modulePermissions.delete(permissionId); // Uncheck\r\n } else {\r\n modulePermissions.add(permissionId); // Check\r\n }\r\n return { ...prev, [moduleId]: modulePermissions };\r\n });\r\n }, []);\r\n\r\n // Save permissions\r\n const handleSave = async () => {\r\n const formattedData = Object.entries(selectedPermissions).flatMap(\r\n ([moduleId, permissionSet]) =>\r\n Array.from(permissionSet).map((permissionId) => ({\r\n moduleId: moduleId,\r\n permissionId,\r\n }))\r\n );\r\n try {\r\n const response = await axios.put(\r\n `${baseUrl}/adminUserPermission/${state?.adminUserId}`,\r\n { payload: formattedData },\r\n {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: user.token,\r\n },\r\n }\r\n );\r\n notifyMessage(response.data.message, 'success');\r\n getAllEmployeePermissions();\r\n setIsEditing(!isEditing);\r\n } catch {\r\n notifyMessage('Something went wrong');\r\n }\r\n };\r\n\r\n return (\r\n
\r\n \r\n \r\n {loading ? (\r\n \r\n ) : (\r\n
\r\n
\r\n

{state?.userName}

\r\n
\r\n \r\n setIsEditing(!isEditing)}\r\n >\r\n {isEditing ? 'Cancel' : 'Edit'}\r\n \r\n \r\n \r\n \r\n Save\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n Module\r\n \r\n {permissions.map((col) => (\r\n \r\n {col.permissionDisplayName}\r\n \r\n ))}\r\n \r\n \r\n {modules?.length > 0 ? (\r\n modules.map((module) => (\r\n \r\n \r\n

\r\n {module.moduleName}\r\n

\r\n
\r\n {permissions.map((col) => (\r\n \r\n \r\n handleCheckboxChange(\r\n module.moduleId,\r\n col.permissionId,\r\n e.target.checked\r\n )\r\n }\r\n disabled={!isEditing}\r\n className={`remove-outline-none w-5 h-5 ${\r\n !isEditing\r\n ? 'cursor-not-allowed'\r\n : 'cursor-pointer'\r\n }`}\r\n />\r\n \r\n ))}\r\n
\r\n ))\r\n ) : (\r\n \r\n \r\n No Data Found\r\n \r\n \r\n )}\r\n
\r\n
\r\n
\r\n
\r\n )}\r\n \r\n \r\n );\r\n}\r\n","import { Route, Routes, Navigate } from 'react-router-dom';\r\nimport DashboardLayout from '~/layouts/DashboardLayout';\r\nimport Dashboard from '~/pages/Dashboard';\r\nimport DepartmentList from '~/pages/DepartmentList';\r\nimport TaskStatusList from '~/pages/TaskStatusList';\r\nimport CompanyForm from '~/pages/CompanyForm';\r\nimport CompanyList from '~/pages/CompanyList';\r\nimport { AppPathObjects, AppRelativePaths } from './routes.const';\r\nimport CountriesList from '~/pages/LocationList/CountriesList';\r\nimport StateList from '~/pages/LocationList/StateList';\r\nimport CitiesList from '~/pages/LocationList/CitiesList';\r\nimport AdminTypeList from '~/pages/Admin/AdminTypeList';\r\nimport AdminUserList from '~/pages/Admin/AdminUserList';\r\nimport AdminAdd from '~/pages/Admin/AdminAdd';\r\nimport IndustryScale from '~/pages/IndustryList/IndustryScale';\r\nimport IndustryList from '~/pages/IndustryList/IndustryList';\r\nimport AddConsultant from '~/pages/Consultant/AddConsultant';\r\nimport ConsultantList from '~/pages/Consultant/ConsultantList';\r\nimport CoreParameter from '~/pages/Parameter/CoreParameter';\r\nimport SubParameter from '~/pages/Parameter/SubParameter';\r\nimport EngagementType from '~/pages/Engagement/EngagementType';\r\nimport TaskTypeList from '~/pages/Task/TaskTypeList';\r\nimport TaskStatus from '~/pages/Task/TaskStatus';\r\nimport ProjectStatus from '~/pages/Task/ProjectStatus';\r\nimport SubParaStatus from '~/pages/Parameter/SubParaStatus';\r\nimport MeetingTypeList from '~/pages/MeetingType/MeetingTypeList';\r\nimport MeetingTypeStatus from '~/pages/MeetingType/MeetingTypeStatus';\r\nimport Profile from '~/pages/Profile';\r\nimport NotFound from '~/pages/NotFound';\r\nimport KPIMasterList from '~/pages/KPI/KPIMasterList';\r\nimport DefaultHealthScoreList from '~/pages/DefaultHealthScore';\r\nimport ProtectedRoute from './protectedRoute';\r\nimport AdminUserpermissionlist from '~/pages/Roles/AdminUserpermissionlist';\r\nimport AdminRoleModules from '~/pages/Roles/AdminRoleModules';\r\n\r\nconst superAdminRoutes = () => {\r\n return (\r\n \r\n }\r\n />\r\n }>\r\n } />\r\n } />\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n {/* }\r\n /> */}\r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n } />\r\n \r\n );\r\n};\r\n\r\nexport default superAdminRoutes;\r\n","import {\r\n BrowserRouter as Router,\r\n Route,\r\n Routes,\r\n Navigate,\r\n} from 'react-router-dom';\r\nimport Login from '~/pages/Login';\r\nimport Splash from '~/pages/Splash';\r\nimport { useAuth } from '~/context/AuthProvider';\r\nimport EmployeeRoutes from './employeeRoutes';\r\nimport SuperAdminRoutes from './superAdminRoutes';\r\n\r\nconst AppRoutes = () => {\r\n const { isAuthenticated, appLoading, user } = useAuth();\r\n const isSuperAdmin = user?.role === 'SUPERADMIN';\r\n if (appLoading) {\r\n return ;\r\n }\r\n return (\r\n \r\n \r\n {isAuthenticated ? (\r\n isSuperAdmin ? (\r\n } />\r\n ) : (\r\n } />\r\n )\r\n ) : (\r\n <>\r\n } />\r\n } />\r\n \r\n )}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default AppRoutes;\r\n","import AppRoutes from '~/routes';\r\nimport AuthProvider from './context/AuthProvider';\r\nimport { ToastContainer } from 'react-toastify';\r\nimport 'react-toastify/dist/ReactToastify.css';\r\nimport { useEffect } from 'react';\r\nimport { PermissionsProvider } from './context/PermissionsProvider';\r\n\r\nconst App = () => {\r\n useEffect(() => {\r\n const inputs = document.querySelectorAll('input');\r\n inputs.forEach((input) => {\r\n input.setAttribute('autocomplete', 'off');\r\n input.setAttribute('autocorrect', 'off');\r\n input.setAttribute('spellcheck', 'false');\r\n });\r\n }, []);\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default App;\r\n","import { createRoot } from 'react-dom/client';\r\nimport App from './App.jsx';\r\nimport './index.css';\r\n\r\ncreateRoot(document.getElementById('root')).render();\r\n"],"file":"assets/index-COGQ8xrx.js"}