Compare commits
No commits in common. "687640f7a4f639025fbb9c1cfee7b5343afa1571" and "b18e139445d068ebce68fb5336c12f328573362f" have entirely different histories.
687640f7a4
...
b18e139445
12510
package-lock.json
generated
12510
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
|
|
@ -1,58 +0,0 @@
|
|||
import React from "react";
|
||||
import { getInitialValues, getValidationSchema } from "./formUtil";
|
||||
import { ModalEnum } from "../../../enums/Model";
|
||||
import LayoutModel from "../../../Layout/Dashboard/LayoutModel";
|
||||
import { QueryStatusEnum } from "../../../enums/QueryStatus";
|
||||
import ModelForm from "./ModelForm";
|
||||
import { useAddPackage } from "../../../api/package";
|
||||
import FormikForm from "../../../Layout/Dashboard/FormikForm";
|
||||
|
||||
const AddModel: React.FC = () => {
|
||||
const { mutate, status } = useAddPackage();
|
||||
|
||||
const handleSubmit = (values: any) => {
|
||||
mutate({
|
||||
...values,
|
||||
});
|
||||
};
|
||||
return (
|
||||
<>
|
||||
{/* <LayoutModel
|
||||
status={status as QueryStatusEnum}
|
||||
ModelEnum={ModalEnum.Package_ADD}
|
||||
modelTitle="package"
|
||||
handleSubmit={handleSubmit}
|
||||
getInitialValues={getInitialValues({})}
|
||||
getValidationSchema={getValidationSchema}
|
||||
>
|
||||
<ModelForm />
|
||||
moaz
|
||||
</LayoutModel> */}
|
||||
casascaas
|
||||
<FormikForm
|
||||
handleSubmit={handleSubmit}
|
||||
initialValues={getInitialValues('')}
|
||||
validationSchema={getValidationSchema}
|
||||
>
|
||||
<main className="w-100 exercise_add_main">
|
||||
<ModelForm />
|
||||
|
||||
<div className="exercise_add_buttons">
|
||||
{/* <div onClick={handleCancel}>{t("practical.back")}</div> */}
|
||||
{/* <button disabled={isLoading} className="relative" type="submit">
|
||||
{t("practical.add")}
|
||||
|
||||
{isLoading && (
|
||||
<span className="Spinier_Div">
|
||||
<Spin />
|
||||
</span>
|
||||
)}
|
||||
</button> */}
|
||||
</div>
|
||||
</main>
|
||||
</FormikForm>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
export default AddModel;
|
||||
|
|
@ -1,36 +0,0 @@
|
|||
import React from "react";
|
||||
import { getInitialValues, getValidationSchema } from "./formUtil";
|
||||
import { ModalEnum } from "../../../enums/Model";
|
||||
import LayoutModel from "../../../Layout/Dashboard/LayoutModel";
|
||||
import ModelForm from "./ModelForm";
|
||||
import { QueryStatusEnum } from "../../../enums/QueryStatus";
|
||||
import { useObjectToEdit } from "../../../zustand/ObjectToEditState";
|
||||
import { useUpdatePackage } from "../../../api/package";
|
||||
|
||||
const EditModel: React.FC = () => {
|
||||
const { mutate, status } = useUpdatePackage();
|
||||
const { objectToEdit } = useObjectToEdit((state) => state);
|
||||
|
||||
const handleSubmit = (values: any) => {
|
||||
mutate({
|
||||
...values,
|
||||
});
|
||||
};
|
||||
return (
|
||||
<>
|
||||
<LayoutModel
|
||||
status={status as QueryStatusEnum}
|
||||
ModelEnum={ModalEnum.Package_EDIT}
|
||||
modelTitle="package_details"
|
||||
handleSubmit={handleSubmit}
|
||||
getInitialValues={getInitialValues(objectToEdit)}
|
||||
getValidationSchema={getValidationSchema}
|
||||
isAddModal={false}
|
||||
>
|
||||
<ModelForm />
|
||||
</LayoutModel>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
export default EditModel;
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
import { Col, Row } from "reactstrap";
|
||||
import ValidationField from "../../../Components/ValidationField/ValidationField";
|
||||
|
||||
const Form = () => {
|
||||
return (
|
||||
<Row className="w-100">
|
||||
<Col>
|
||||
<ValidationField placeholder="name" label="name" name="name" />
|
||||
<ValidationField placeholder="price" label="price" name="price" />
|
||||
<ValidationField placeholder="name" label="name" name="name" />
|
||||
|
||||
</Col>
|
||||
</Row>
|
||||
);
|
||||
};
|
||||
|
||||
export default Form;
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
import * as Yup from "yup";
|
||||
export const getInitialValues = (objectToEdit: any): any => {
|
||||
return {
|
||||
id: objectToEdit?.id ?? null,
|
||||
name: objectToEdit?.name ?? null,
|
||||
price: objectToEdit?.price ?? null,
|
||||
grade_id: objectToEdit?.grade_id ?? null,
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
export const getValidationSchema = () => {
|
||||
return Yup.object().shape({
|
||||
name: Yup.string().required("validation.required"),
|
||||
});
|
||||
};
|
||||
|
|
@ -1,62 +0,0 @@
|
|||
import { FaPlus } from "react-icons/fa";
|
||||
import useModalHandler from "../../utils/useModalHandler";
|
||||
import { ModalEnum } from "../../enums/Model";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { lazy, Suspense } from "react";
|
||||
import { Spin } from "antd";
|
||||
import { canAddPackage } from "../../utils/hasAbilityFn";
|
||||
import useSetPageTitle from "../../Hooks/useSetPageTitle";
|
||||
import { useDeletePackage } from "../../api/package";
|
||||
import { useNavigate } from "react-router-dom";
|
||||
import { ABILITIES_ENUM } from "../../enums/abilities";
|
||||
const Table = lazy(() => import("./Table"));
|
||||
const AddModalForm = lazy(() => import("./Model/AddModel"));
|
||||
const EditModalForm = lazy(() => import("./Model/EditModel"));
|
||||
const DeleteModalForm = lazy(
|
||||
() => import("../../Layout/Dashboard/DeleteModels"),
|
||||
);
|
||||
const SearchField = lazy(
|
||||
() => import("../../Components/DataTable/SearchField"),
|
||||
);
|
||||
|
||||
const TableHeader = () => {
|
||||
const { handel_open_model } = useModalHandler();
|
||||
const [t] = useTranslation();
|
||||
const navigate = useNavigate();
|
||||
useSetPageTitle(t(`page_header.package`));
|
||||
const deleteMutation = useDeletePackage();
|
||||
|
||||
return (
|
||||
<div className="TableWithHeader">
|
||||
<Suspense fallback={<Spin />}>
|
||||
<header className="d-flex justify-content-between">
|
||||
<SearchField
|
||||
searchBy="name"
|
||||
placeholder={t("practical.search_here")}
|
||||
/>
|
||||
|
||||
{canAddPackage && (
|
||||
<div className="Selects">
|
||||
<button
|
||||
onClick={() => navigate(`/${ABILITIES_ENUM?.Package}/add`)}
|
||||
className="add_button"
|
||||
>
|
||||
{t("models.add_package")} <FaPlus />
|
||||
</button>
|
||||
</div>
|
||||
)}
|
||||
</header>
|
||||
|
||||
<Table />
|
||||
<DeleteModalForm
|
||||
deleteMutation={deleteMutation}
|
||||
ModelEnum={ModalEnum?.Package_DELETE}
|
||||
/>
|
||||
{/* <AddModalForm /> */}
|
||||
<EditModalForm />
|
||||
</Suspense>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default TableHeader;
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
import React from "react";
|
||||
import DataTable from "../../Layout/Dashboard/Table/DataTable";
|
||||
import { useColumns } from "./useTableColumns";
|
||||
import useSearchQuery from "../../api/utils/useSearchQuery";
|
||||
import { useGetAllPackage } from "../../api/package";
|
||||
const App: React.FC = () => {
|
||||
const [searchQuery] = useSearchQuery("name");
|
||||
|
||||
const response = useGetAllPackage({
|
||||
name: searchQuery,
|
||||
pagination: true,
|
||||
});
|
||||
|
||||
return <DataTable response={response} useColumns={useColumns} />;
|
||||
};
|
||||
|
||||
export default App;
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
import { useColumns } from "./useTableColumns";
|
||||
import Table from "./Table";
|
||||
|
||||
import { FaPlus } from "react-icons/fa";
|
||||
|
||||
import AddModalForm from "./Model/AddModel";
|
||||
import EditModalForm from "./Model/EditModel";
|
||||
|
||||
export {
|
||||
Table,
|
||||
useColumns,
|
||||
AddModalForm,
|
||||
EditModalForm,
|
||||
FaPlus,
|
||||
};
|
||||
|
|
@ -1,63 +0,0 @@
|
|||
import { TableColumnsType } from "antd";
|
||||
import { ModalEnum } from "../../enums/Model";
|
||||
import { useObjectToEdit } from "../../zustand/ObjectToEditState";
|
||||
import { useModalState } from "../../zustand/Modal";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { canDeletePackage,canEditPackage } from "../../utils/hasAbilityFn";
|
||||
import ActionButtons from "../../Components/Table/ActionButtons";
|
||||
|
||||
export const useColumns = () => {
|
||||
const [t] = useTranslation();
|
||||
|
||||
const { setIsOpen } = useModalState((state) => state);
|
||||
|
||||
const { setObjectToEdit } = useObjectToEdit((state) => state);
|
||||
const handelDelete = (record: any) => {
|
||||
setObjectToEdit(record);
|
||||
setIsOpen(ModalEnum?.Package_DELETE);
|
||||
};
|
||||
const handleEdit = (record: any) => {
|
||||
setObjectToEdit(record);
|
||||
setIsOpen(ModalEnum?.Package_EDIT);
|
||||
};
|
||||
|
||||
const columns: TableColumnsType<any> = [
|
||||
{
|
||||
title: t("columns.id"),
|
||||
dataIndex: "id",
|
||||
key: "id",
|
||||
align: "center",
|
||||
},
|
||||
{
|
||||
title: t("columns.name"),
|
||||
dataIndex: "name",
|
||||
key: "name",
|
||||
align: "center",
|
||||
},
|
||||
{
|
||||
title: t("columns.price"),
|
||||
dataIndex: "price",
|
||||
key: "price",
|
||||
align: "center",
|
||||
},
|
||||
{
|
||||
title: "",
|
||||
key: "actions",
|
||||
align: "end",
|
||||
width: "25vw",
|
||||
render: (_text, record, index) => {
|
||||
return (
|
||||
<ActionButtons
|
||||
canDelete={canEditPackage}
|
||||
canEdit={canDeletePackage}
|
||||
index={index}
|
||||
onDelete={() => handelDelete(record)}
|
||||
onEdit={() => handleEdit(record)}
|
||||
/>
|
||||
);
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
return columns;
|
||||
};
|
||||
|
|
@ -1,6 +1,5 @@
|
|||
import { TCrudRoute, TMenuItem } from "./types/App";
|
||||
import { FaHome, FaMoneyBill } from "react-icons/fa";
|
||||
import { LuPackage } from "react-icons/lu";
|
||||
import React from "react";
|
||||
const Dummy = React.lazy(() => import("./Pages/Home/Dummy"));
|
||||
|
||||
|
|
@ -8,7 +7,6 @@ const Subject = React.lazy(() => import("./Pages/subject/Table/Page"));
|
|||
|
||||
const Tags = React.lazy(() => import("./Pages/Tags/Page"));
|
||||
const Grade = React.lazy(() => import("./Pages/Grade/Page"));
|
||||
const Package = React.lazy(() => import("./Pages/Package/Page"));
|
||||
const Curriculum = React.lazy(() => import("./Pages/Curriculum/Page"));
|
||||
|
||||
const Unit = React.lazy(() => import("./Pages/Unit/Page"));
|
||||
|
|
@ -16,8 +14,6 @@ const Lesson = React.lazy(() => import("./Pages/lesson/Page"));
|
|||
const Question = React.lazy(() => import("./Pages/question/Page"));
|
||||
const AddQuestionPage = React.lazy(() => import("./Pages/question/AddPage"));
|
||||
const EditQuestionPage = React.lazy(() => import("./Pages/question/EditPage"));
|
||||
const AddPackagePage = React.lazy(() => import("./Pages/Package/Model/AddModel"));
|
||||
const EditPackagePage = React.lazy(() => import("./Pages/Package/Model/EditModel"));
|
||||
|
||||
import { hasAbility } from "./utils/hasAbility";
|
||||
import { ABILITIES_ENUM, ABILITIES_VALUES_ENUM } from "./enums/abilities";
|
||||
|
|
@ -44,16 +40,6 @@ export const menuItems: TMenuItem[] = [
|
|||
abilities_value: ABILITIES_VALUES_ENUM.INDEX,
|
||||
prevPath: 0,
|
||||
},
|
||||
{
|
||||
header: "page_header.package",
|
||||
element: <Package />,
|
||||
icon: <LuPackage />,
|
||||
text: "sidebar.package",
|
||||
path: `/${ABILITIES_ENUM?.Package}`,
|
||||
abilities: ABILITIES_ENUM?.Package,
|
||||
abilities_value: ABILITIES_VALUES_ENUM.INDEX,
|
||||
prevPath: 0,
|
||||
},
|
||||
// {
|
||||
// header: "page_header.subject",
|
||||
// element: <Subject />,
|
||||
|
|
@ -135,23 +121,6 @@ export const CrudRoute: TCrudRoute[] = [
|
|||
abilities_value: ABILITIES_VALUES_ENUM.INDEX,
|
||||
prevPath: 2,
|
||||
},
|
||||
|
||||
{
|
||||
header: "page_header.add_package",
|
||||
element: <AddPackagePage />,
|
||||
path: `/${ABILITIES_ENUM?.Package}/add`,
|
||||
abilities: ABILITIES_ENUM?.Package,
|
||||
abilities_value: ABILITIES_VALUES_ENUM.INDEX,
|
||||
prevPath: 0,
|
||||
},
|
||||
{
|
||||
header: "page_header.edit_package",
|
||||
element: <EditPackagePage />,
|
||||
path: `/${ABILITIES_ENUM?.Package}/add`,
|
||||
abilities: ABILITIES_ENUM?.Package,
|
||||
abilities_value: ABILITIES_VALUES_ENUM.INDEX,
|
||||
prevPath: 0,
|
||||
},
|
||||
];
|
||||
|
||||
export const AppRoutes: Record<string, string> = Object.fromEntries(
|
||||
|
|
|
|||
|
|
@ -1,20 +0,0 @@
|
|||
import useAddMutation from "./helper/useAddMutation";
|
||||
import useDeleteMutation from "./helper/useDeleteMutation";
|
||||
import useGetQuery from "./helper/useGetQuery";
|
||||
import useUpdateMutation from "./helper/useUpdateMutation";
|
||||
|
||||
const API = {
|
||||
GET: "/package",
|
||||
ADD: "/package",
|
||||
DELETE: "/package",
|
||||
UPDATE: "/package",
|
||||
};
|
||||
|
||||
const KEY = "package";
|
||||
|
||||
export const useGetAllPackage = (params?: any, options?: any) =>
|
||||
useGetQuery(KEY, API.GET, params, options);
|
||||
export const useAddPackage = () => useAddMutation(KEY, API.ADD);
|
||||
export const useUpdatePackage = (params?: any) => useUpdateMutation(KEY, API.GET);
|
||||
export const useDeletePackage = (params?: any) =>
|
||||
useDeleteMutation(KEY, API.DELETE);
|
||||
|
|
@ -152,11 +152,4 @@ export enum ModalEnum {
|
|||
CURRICULUM_EDIT = "CURRICULUM.edit",
|
||||
CURRICULUM_ADD = "CURRICULUM.add",
|
||||
CURRICULUM_DELETE = "CURRICULUM.delete",
|
||||
|
||||
///package
|
||||
|
||||
Package_EDIT = "Package.edit",
|
||||
Package_ADD = "Package.add",
|
||||
Package_DELETE = "Package.delete",
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@ export enum ABILITIES_ENUM {
|
|||
EARLY_DEPARTURE = "earlyDeparture",
|
||||
EDUCATION_CLASS = "eduClass",
|
||||
GRADE = "grade",
|
||||
Package = "package",
|
||||
HOMEWORK_ATTACHMENT = "homeworkAttachment",
|
||||
HOMEWORK = "homework",
|
||||
LATE_ARRIVAL = "lateArrival",
|
||||
|
|
|
|||
|
|
@ -154,9 +154,7 @@
|
|||
"max_mark": "العلامة الكاملة",
|
||||
"min_mark_to_pass": "علامة النجاح",
|
||||
"isBase": "سؤال رئيسي",
|
||||
"question_options_count": "عدد الخيارات",
|
||||
"price":"السعر",
|
||||
"grade_id":"رقم تعريف الدرجة"
|
||||
"question_options_count": "عدد الخيارات"
|
||||
},
|
||||
"practical": {
|
||||
"to_confirm_deletion_please_re_enter": "لتأكيد الحذف، يرجى إعادة الإدخال",
|
||||
|
|
@ -260,10 +258,7 @@
|
|||
"tags": "كلمات مفتاحية",
|
||||
|
||||
"tags_details": "تفاصيل الكلمة المفتاحية",
|
||||
"curriculum": "مقرر",
|
||||
"package":"حزمة",
|
||||
"package_details":"تفاصيل الحزمة",
|
||||
"add_package":"اضافة حزمة"
|
||||
"curriculum": "مقرر"
|
||||
},
|
||||
"education_class_actions": {
|
||||
"Student_Records": "سجلات الطلاب",
|
||||
|
|
@ -666,8 +661,7 @@
|
|||
"subject": "المواد",
|
||||
"tags": "كلمات مفتاحية",
|
||||
"grade": "الدرجات",
|
||||
"curriculum": "مقرر",
|
||||
"package":"حزمة"
|
||||
"curriculum": "مقرر"
|
||||
},
|
||||
"message": {
|
||||
"some_thing_went_wrong": "حدث خطأ ما",
|
||||
|
|
@ -723,7 +717,6 @@
|
|||
"add_Question": "لوحة القيادة /إضافة اسئلة ",
|
||||
"edit_Question": "لوحة القيادة /تعديل اسئلة ",
|
||||
"grade": "لوحة القيادة /الدرجات ",
|
||||
"curriculum": "لوحة القيادة / تعديل مقرر ",
|
||||
"package":"حزمة"
|
||||
"curriculum": "لوحة القيادة / تعديل مقرر "
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -315,8 +315,3 @@ export interface Question {
|
|||
QuestionOptions: QuestionOption[];
|
||||
tags: tags[]; // Assuming tags are strings, adjust as per actual data type
|
||||
}
|
||||
|
||||
|
||||
export type Package = {
|
||||
|
||||
};
|
||||
|
|
|
|||
|
|
@ -563,23 +563,3 @@ export const canIndexCurriculum = hasAbility(
|
|||
ABILITIES_ENUM.EDUCATION_CLASS,
|
||||
ABILITIES_VALUES_ENUM.INDEX,
|
||||
);
|
||||
|
||||
/// Package
|
||||
|
||||
export const canAddPackage = hasAbility(
|
||||
ABILITIES_ENUM.Package,
|
||||
ABILITIES_VALUES_ENUM.STORE,
|
||||
);
|
||||
|
||||
export const canEditPackage = hasAbility(
|
||||
ABILITIES_ENUM.Package,
|
||||
ABILITIES_VALUES_ENUM.UPDATE,
|
||||
);
|
||||
export const canDeletePackage = hasAbility(
|
||||
ABILITIES_ENUM.Package,
|
||||
ABILITIES_VALUES_ENUM.DELETE,
|
||||
);
|
||||
export const canShowPackage = hasAbility(
|
||||
ABILITIES_ENUM.Package,
|
||||
ABILITIES_VALUES_ENUM.SHOW,
|
||||
);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user