import { TCrudRoute, TMenuItem } from "./types/App"; import { FaHome, FaMoneyBill, FaSellcast } from "react-icons/fa"; import React from "react"; const Dummy = React.lazy(() => import("./Pages/Home/Dummy")); const Grade = React.lazy(() => import("./Pages/Admin/Grade/Page")); const Curriculum = React.lazy(() => import("./Pages/Admin/Curriculum/Page")); const Subject = React.lazy(() => import("./Pages/Admin/subject/Table/Page")); const Tags = React.lazy(() => import("./Pages/Admin/Tags/Page")); const Unit = React.lazy(() => import("./Pages/Admin/Unit/Page")); const Lesson = React.lazy(() => import("./Pages/Admin/lesson/Page")); const Question = React.lazy(() => import("./Pages/Admin/question/Page")); const AddQuestionPage = React.lazy( () => import("./Pages/Admin/question/AddPage"), ); const EditQuestionPage = React.lazy( () => import("./Pages/Admin/question/EditPage"), ); const Report = React.lazy(() => import("./Pages/Admin/Report/Page")); const Student = React.lazy(() => import("./Pages/Admin/Student/Page")); const ReSeller = React.lazy(() => import("./Pages/Admin/Reseller/Page")); const AddReSeller = React.lazy(() => import("./Pages/Admin/Reseller/Add/Page")); const EditReSeller = React.lazy(() => import("./Pages/Admin/Reseller/Edit/Page")); const User = React.lazy(() => import("./Pages/Admin/User/Page")); const Param = React.lazy(() => import("./Pages/Admin/Param/Page")); /// RESELLER /// const Student_Package = React.lazy(() => import("./Pages/ReSeller/StudentPackage/Page")); import { hasAbility } from "./utils/hasAbility"; import { ABILITIES_ENUM, ABILITIES_VALUES_ENUM } from "./enums/abilities"; import { ParamsEnum } from "./enums/params"; import { TbCategory } from "react-icons/tb"; import { UserTypeEnum } from "./enums/UserType"; export const menuItems: TMenuItem[] = [ { header: "page_header.dashboard", element: , icon: , text: "sidebar.dashboard", path: "/", abilities: ABILITIES_ENUM?.PASS, abilities_value: ABILITIES_VALUES_ENUM.INDEX, prevPath: 0, type:UserTypeEnum?.PASS }, { header: "page_header.grade", element: , icon: , text: "sidebar.grade", path: `/${ABILITIES_ENUM?.GRADE}`, abilities: ABILITIES_ENUM?.GRADE, abilities_value: ABILITIES_VALUES_ENUM.INDEX, prevPath: 0, }, { header: "page_header.tags", element: , icon: , text: "sidebar.tags", path: `/${ABILITIES_ENUM?.TAG}`, abilities: ABILITIES_ENUM?.TAG, abilities_value: ABILITIES_VALUES_ENUM.INDEX, prevPath: 0, }, { header: "page_header.tags", element: , icon: , text: "sidebar.report", path: `/${ABILITIES_ENUM?.Report}`, abilities: ABILITIES_ENUM?.Report, abilities_value: ABILITIES_VALUES_ENUM.INDEX, prevPath: 0, }, { header: "page_header.student", element: , icon: , text: "sidebar.student", path: `/${ABILITIES_ENUM?.STUDENT}`, abilities: ABILITIES_ENUM?.STUDENT, abilities_value: ABILITIES_VALUES_ENUM.INDEX, prevPath: 0, }, { header: "page_header.reSeller", element: , icon: , text: "sidebar.reseller", path: `/${ABILITIES_ENUM?.RE_SELLER}`, abilities: ABILITIES_ENUM?.RE_SELLER, abilities_value: ABILITIES_VALUES_ENUM.INDEX, prevPath: 0, }, { header: "page_header.user", element: , icon: , text: "sidebar.user", path: `/${ABILITIES_ENUM?.USER}`, abilities: ABILITIES_ENUM?.USER, abilities_value: ABILITIES_VALUES_ENUM.INDEX, prevPath: 0, }, { header: "page_header.param", element: , icon: , text: "sidebar.param", path: `/${ABILITIES_ENUM?.PARAM}`, abilities: ABILITIES_ENUM?.PARAM, abilities_value: ABILITIES_VALUES_ENUM.INDEX, prevPath: 0, }, /// RESELLER ///// { header: "page_header.student_package", element: , icon: , text: "sidebar.student_package", path: `/${ABILITIES_ENUM?.Student_Package}`, abilities: ABILITIES_ENUM?.Student_Package, abilities_value: ABILITIES_VALUES_ENUM.INDEX, prevPath: 0, type:UserTypeEnum.RE_SELLER }, // { // header: "page_header.tags", // element: , // icon: , // text: "sidebar.tags", // path: `/${ABILITIES_ENUM?.TAG}`, // abilities: ABILITIES_ENUM?.TAG, // abilities_value: ABILITIES_VALUES_ENUM.INDEX, // prevPath: 0, // }, // { // header: "page_header.subject", // element: , // icon: , // text: "sidebar.subject", // path: `/${ABILITIES_ENUM?.SUBJECT}`, // abilities: ABILITIES_ENUM?.SUBJECT, // abilities_value: ABILITIES_VALUES_ENUM.INDEX, // prevPath: 0, // }, // { // header: "page_header.package", // element: , // icon: , // text: "sidebar.package", // path: `/${ABILITIES_ENUM?.Package}`, // abilities: ABILITIES_ENUM?.Package, // abilities_value: ABILITIES_VALUES_ENUM.INDEX, // prevPath: 0, // }, // { // header: "page_header.subject", // element: , // icon: , // text: "sidebar.subject", // path: `/${ABILITIES_ENUM?.SUBJECT}`, // abilities: ABILITIES_ENUM?.SUBJECT, // abilities_value: ABILITIES_VALUES_ENUM.INDEX, // prevPath: 0, // }, // { // header: "page_header.tags", // element: , // icon: , // text: "sidebar.tags", // path: `/${ABILITIES_ENUM?.TAG}`, // abilities: ABILITIES_ENUM?.TAG, // abilities_value: ABILITIES_VALUES_ENUM.INDEX, // prevPath: 0, // }, ]; export const CrudRoute: TCrudRoute[] = [ { header: "page_header.Subject", element: , path: `/${ABILITIES_ENUM?.GRADE}/:${ParamsEnum?.GRADE_ID}`, abilities: ABILITIES_ENUM?.SUBJECT, abilities_value: ABILITIES_VALUES_ENUM.INDEX, prevPath: 1, }, { header: "page_header.unit", element: , path: `/${ABILITIES_ENUM?.GRADE}/:${ParamsEnum?.GRADE_ID}/${ABILITIES_ENUM?.SUBJECT}/:${ParamsEnum?.SUBJECT_ID}`, abilities: ABILITIES_ENUM?.UNIT, abilities_value: ABILITIES_VALUES_ENUM.INDEX, prevPath: 2, }, { header: "page_header.lesson", element: , path: `/${ABILITIES_ENUM?.GRADE}/:${ParamsEnum?.GRADE_ID}/${ABILITIES_ENUM?.SUBJECT}/:${ParamsEnum?.SUBJECT_ID}/${ABILITIES_ENUM?.UNIT}/:${ParamsEnum?.UNIT_ID}`, abilities: ABILITIES_ENUM?.LESSON, abilities_value: ABILITIES_VALUES_ENUM.INDEX, prevPath: 2, }, { header: "page_header.question", element: , path: `/${ABILITIES_ENUM?.GRADE}/:${ParamsEnum?.GRADE_ID}/${ABILITIES_ENUM?.SUBJECT}/:${ParamsEnum?.SUBJECT_ID}/${ABILITIES_ENUM?.UNIT}/:${ParamsEnum?.UNIT_ID}/${ABILITIES_ENUM?.LESSON}/:${ParamsEnum?.LESSON_ID}`, abilities: ABILITIES_ENUM?.QUESTION, abilities_value: ABILITIES_VALUES_ENUM.INDEX, prevPath: 2, }, { header: "page_header.add_Question", element: , path: `/${ABILITIES_ENUM?.GRADE}/:${ParamsEnum?.GRADE_ID}/${ABILITIES_ENUM?.SUBJECT}/:${ParamsEnum?.SUBJECT_ID}/${ABILITIES_ENUM?.UNIT}/:${ParamsEnum?.UNIT_ID}/${ABILITIES_ENUM?.LESSON}/:${ParamsEnum?.LESSON_ID}/${ABILITIES_ENUM?.QUESTION}/add`, abilities: ABILITIES_ENUM?.QUESTION, abilities_value: ABILITIES_VALUES_ENUM.INDEX, prevPath: 2, }, { header: "page_header.edit_Question", element: , path: `/${ABILITIES_ENUM?.GRADE}/:${ParamsEnum?.GRADE_ID}/${ABILITIES_ENUM?.SUBJECT}/:${ParamsEnum?.SUBJECT_ID}/${ABILITIES_ENUM?.UNIT}/:${ParamsEnum?.UNIT_ID}/${ABILITIES_ENUM?.LESSON}/:${ParamsEnum?.LESSON_ID}/${ABILITIES_ENUM?.QUESTION}/:${ParamsEnum?.QUESTION_ID}`, abilities: ABILITIES_ENUM?.QUESTION, abilities_value: ABILITIES_VALUES_ENUM.INDEX, prevPath: 2, }, { header: "page_header.add_reseller", element: , path: `/${ABILITIES_ENUM?.RE_SELLER}/add`, abilities: ABILITIES_ENUM?.RE_SELLER, abilities_value: ABILITIES_VALUES_ENUM.INDEX, prevPath: 0, }, { header: "page_header.edit_reseller", element: , path: `/${ABILITIES_ENUM?.RE_SELLER}/:id`, abilities: ABILITIES_ENUM?.RE_SELLER, abilities_value: ABILITIES_VALUES_ENUM.INDEX, prevPath: 0, }, ]; export const AppRoutes: Record = Object.fromEntries( menuItems.map((route) => [ route.path, route.header ? route.header : route.text, ]), ); export const CrudRoutes: any = Object.fromEntries( CrudRoute.map((route) => [route?.path, route?.header]), ); export const search_array: { label: string; value: string }[] = menuItems ?.filter((item: TMenuItem) => { return hasAbility(item.abilities, item.abilities_value); }) .map((item: TMenuItem) => ({ label: item.header as string, value: item.path as string, })); const AllRoute = [...menuItems, ...CrudRoute]; export const PrevRoutes: any = AllRoute.map((route) => ({ path: route.path, prevPath: route.prevPath, }));