add permission country

This commit is contained in:
AmirHossein Mahmoodi
2025-05-24 13:51:56 +03:30
parent 6dc9d4995f
commit ff8e0fda93

View File

@@ -14,8 +14,14 @@ import ImageDialog from "./RowActions/ImageDialog";
import LocationForm from "./RowActions/LocationForm"; import LocationForm from "./RowActions/LocationForm";
import ShowPlate from "./RowActions/ShowPlate"; import ShowPlate from "./RowActions/ShowPlate";
import Toolbar from "./Toolbar"; import Toolbar from "./Toolbar";
import { usePermissions } from "@/lib/hooks/usePermissions";
import { useAuth } from "@/lib/contexts/auth";
const OperatorList = () => { const OperatorList = () => {
const { data: userPermissions } = usePermissions();
const hasCountryPermission = userPermissions?.includes("show-receipt");
const { user } = useAuth();
const statusOptions = [ const statusOptions = [
{ value: "", label: "همه وضعیت ها" }, { value: "", label: "همه وضعیت ها" },
{ value: 0, label: "بدون اقدام" }, { value: 0, label: "بدون اقدام" },
@@ -26,6 +32,42 @@ const OperatorList = () => {
{ value: 5, label: "نامه پلیس راه صادر شده است" }, { value: 5, label: "نامه پلیس راه صادر شده است" },
]; ];
const columns = useMemo(() => { const columns = useMemo(() => {
const provinceColumn = {
accessorKey: "province_id",
header: "استان",
id: "province_id",
enableColumnFilter: true,
datatype: "numeric",
filterMode: "equals",
grow: false,
size: 130,
ColumnSelectComponent: (props) => {
const { provinces, errorProvinces, loadingProvinces } = useProvinces();
const getColumnSelectOptions = useMemo(() => {
if (loadingProvinces) {
return [{ value: "loading", label: "در حال بارگذاری..." }];
}
if (errorProvinces) {
return [{ value: "error", label: "خطا در بارگذاری" }];
}
return [
{ value: "", label: "کل کشور" },
...provinces.map((province) => ({
value: province.id,
label: province.name_fa,
})),
];
}, [provinces, errorProvinces, loadingProvinces]);
return (
<CustomSelectByDependency
{...props}
value={loadingProvinces ? "loading" : props.filterParameters.value}
columnSelectOption={getColumnSelectOptions}
/>
);
},
Cell: ({ row }) => <>{row.original.province_fa}</>,
}
return [ return [
{ {
accessorKey: "id", accessorKey: "id",
@@ -66,42 +108,7 @@ const OperatorList = () => {
grow: false, grow: false,
size: 50, size: 50,
columns: [ columns: [
{ ...(hasCountryPermission ? [provinceColumn] : []),
accessorKey: "province_id",
header: "استان",
id: "province_id",
enableColumnFilter: true,
datatype: "numeric",
filterMode: "equals",
grow: false,
size: 130,
ColumnSelectComponent: (props) => {
const { provinces, errorProvinces, loadingProvinces } = useProvinces();
const getColumnSelectOptions = useMemo(() => {
if (loadingProvinces) {
return [{ value: "loading", label: "در حال بارگذاری..." }];
}
if (errorProvinces) {
return [{ value: "error", label: "خطا در بارگذاری" }];
}
return [
{ value: "", label: "کل کشور" },
...provinces.map((province) => ({
value: province.id,
label: province.name_fa,
})),
];
}, [provinces, errorProvinces, loadingProvinces]);
return (
<CustomSelectByDependency
{...props}
value={loadingProvinces ? "loading" : props.filterParameters.value}
columnSelectOption={getColumnSelectOptions}
/>
);
},
Cell: ({ row }) => <>{row.original.province_fa}</>,
},
{ {
accessorKey: "city_id", accessorKey: "city_id",
header: "شهرستان", // Office header: "شهرستان", // Office
@@ -109,17 +116,17 @@ const OperatorList = () => {
enableColumnFilter: true, enableColumnFilter: true,
datatype: "numeric", datatype: "numeric",
filterMode: "equals", filterMode: "equals",
dependencyId: "province_id", dependencyId: hasCountryPermission ? "province_id" : null,
grow: false, grow: false,
size: 120, size: 120,
ColumnSelectComponent: (props) => { ColumnSelectComponent: (props) => {
const { cityList, loadingCityList, errorCityList } = useCities( const { cityList, loadingCityList, errorCityList } = useCities(
props.dependencyFieldValue.value hasCountryPermission ? props.dependencyFieldValue.value : user.province_id
); );
const [prevDependency, setPrevDependency] = useState(props.dependencyFieldValue.value); const [prevDependency, setPrevDependency] = useState(hasCountryPermission ? props.dependencyFieldValue.value : user.province_id);
const getColumnSelectOptions = useMemo(() => { const getColumnSelectOptions = useMemo(() => {
if (props.dependencyFieldValue.value === "") { if (hasCountryPermission && props.dependencyFieldValue.value === "") {
return [{ value: "empty", label: "ابتدا استان را انتخاب کنید" }]; return [{ value: "empty", label: "ابتدا استان را انتخاب کنید" }];
} }
if (loadingCityList) { if (loadingCityList) {
@@ -137,10 +144,11 @@ const OperatorList = () => {
]; ];
}, [cityList, loadingCityList, errorCityList]); }, [cityList, loadingCityList, errorCityList]);
useEffect(() => { useEffect(() => {
if (hasCountryPermission) return;
if (prevDependency === props.dependencyFieldValue?.value) return; if (prevDependency === props.dependencyFieldValue?.value) return;
props.handleChange({ ...props.filterParameters, value: "" }); props.handleChange({ ...props.filterParameters, value: "" });
setPrevDependency(props.dependencyFieldValue?.value); setPrevDependency(props.dependencyFieldValue?.value);
}, [props.dependencyFieldValue?.value]); }, [props.dependencyFieldValue?.value, hasCountryPermission]);
return ( return (
<CustomSelectByDependency <CustomSelectByDependency
{...props} {...props}
@@ -148,8 +156,8 @@ const OperatorList = () => {
props.dependencyFieldValue?.value === "" props.dependencyFieldValue?.value === ""
? "empty" ? "empty"
: loadingCityList : loadingCityList
? "loading" ? "loading"
: props.filterParameters.value : props.filterParameters.value
} }
columnSelectOption={getColumnSelectOptions} columnSelectOption={getColumnSelectOptions}
/> />