complete system message

This commit is contained in:
2025-08-11 11:30:35 +03:30
parent 36fa5fc26f
commit 88f89662c6
34 changed files with 6702 additions and 7025 deletions

View File

@@ -9,26 +9,28 @@ import {
DialogActions,
DialogContent,
Divider,
FormControlLabel, FormHelperText,
Grid, Skeleton,
FormControlLabel,
FormHelperText,
Grid,
Skeleton,
Stack,
} from "@mui/material";
import { Controller, useForm } from "react-hook-form";
import { array, object, string } from "yup";
import useRequest from "@/lib/hooks/useRequest";
import { CREATE_ROLE } from "@/core/utils/routes";
import { ROLE_SERVICE } from "@/core/utils/routes";
import usePermissionsList from "@/lib/hooks/usePermissionsList";
const defaultValues = {
name: "",
name_fa: "",
permissions: []
permissions: [],
};
const validationSchema = object().shape({
name: string().required("نام فارسی نقش را وارد کنید"),
name_fa: string().required("نام انگلیسی نقش را وارد کنید"),
permissions: array().min(1, "حداقل یک دسترسی را انتخاب نمایید")
permissions: array().min(1, "حداقل یک دسترسی را انتخاب نمایید"),
});
const CreateRoleForm = ({ setOpen, mutate }) => {
@@ -43,7 +45,7 @@ const CreateRoleForm = ({ setOpen, mutate }) => {
const onSubmit = async (data) => {
try {
await requestServer(CREATE_ROLE, "post", {
await requestServer(ROLE_SERVICE, "post", {
data: {
permissions: data.permissions,
name: data.name,
@@ -104,17 +106,17 @@ const CreateRoleForm = ({ setOpen, mutate }) => {
name={"name_fa"}
/>
</Grid>
<Box sx={{width: "100%"}}>
<Box sx={{ width: "100%" }}>
<Divider>
<Chip label="سطوح دسترسی" size="medium" />
</Divider>
</Box>
<Grid container spacing={1} sx={{width: "100%"}}>
<Grid container spacing={1} sx={{ width: "100%" }}>
{!loadingPermissions ? (
<Controller
control={control}
name="permissions"
render={({ field, fieldState: {error} }) => (
render={({ field, fieldState: { error } }) => (
<>
{permissions.map((permission) => (
<Grid key={permission.id} size={{ xs: 12, md: 4 }}>
@@ -128,7 +130,9 @@ const CreateRoleForm = ({ setOpen, mutate }) => {
if (e.target.checked) {
field.onChange([...field.value, value]);
} else {
field.onChange(field.value.filter((id) => id !== value));
field.onChange(
field.value.filter((id) => id !== value)
);
}
}}
/>
@@ -137,18 +141,32 @@ const CreateRoleForm = ({ setOpen, mutate }) => {
/>
</Grid>
))}
<FormHelperText sx={{color: "error.main"}}>{!!error && error.message}</FormHelperText>
<FormHelperText sx={{ color: "error.main" }}>
{!!error && error.message}
</FormHelperText>
</>
)}
/>
) : (
<Grid container spacing={2} width="100%">
<Grid size={{ xs: 12, md: 4 }}><Skeleton animation="wave" /></Grid>
<Grid size={{ xs: 12, md: 4 }}><Skeleton animation="wave" /></Grid>
<Grid size={{ xs: 12, md: 4 }}><Skeleton animation="wave" /></Grid>
<Grid size={{ xs: 12, md: 4 }}><Skeleton animation="wave" /></Grid>
<Grid size={{ xs: 12, md: 4 }}><Skeleton animation="wave" /></Grid>
<Grid size={{ xs: 12, md: 4 }}><Skeleton animation="wave" /></Grid>
<Grid size={{ xs: 12, md: 4 }}>
<Skeleton animation="wave" />
</Grid>
<Grid size={{ xs: 12, md: 4 }}>
<Skeleton animation="wave" />
</Grid>
<Grid size={{ xs: 12, md: 4 }}>
<Skeleton animation="wave" />
</Grid>
<Grid size={{ xs: 12, md: 4 }}>
<Skeleton animation="wave" />
</Grid>
<Grid size={{ xs: 12, md: 4 }}>
<Skeleton animation="wave" />
</Grid>
<Grid size={{ xs: 12, md: 4 }}>
<Skeleton animation="wave" />
</Grid>
</Grid>
)}
</Grid>