add permission country
This commit is contained in:
@@ -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}
|
||||||
/>
|
/>
|
||||||
|
|||||||
Reference in New Issue
Block a user