diff --git a/src/components/dashboard/damages/operator/OperatorList.jsx b/src/components/dashboard/damages/operator/OperatorList.jsx
index 36e4b47..c52107e 100644
--- a/src/components/dashboard/damages/operator/OperatorList.jsx
+++ b/src/components/dashboard/damages/operator/OperatorList.jsx
@@ -14,8 +14,14 @@ import ImageDialog from "./RowActions/ImageDialog";
import LocationForm from "./RowActions/LocationForm";
import ShowPlate from "./RowActions/ShowPlate";
import Toolbar from "./Toolbar";
+import { usePermissions } from "@/lib/hooks/usePermissions";
+import { useAuth } from "@/lib/contexts/auth";
const OperatorList = () => {
+ const { data: userPermissions } = usePermissions();
+ const hasCountryPermission = userPermissions?.includes("show-receipt");
+ const { user } = useAuth();
+
const statusOptions = [
{ value: "", label: "همه وضعیت ها" },
{ value: 0, label: "بدون اقدام" },
@@ -26,6 +32,42 @@ const OperatorList = () => {
{ value: 5, label: "نامه پلیس راه صادر شده است" },
];
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 (
+
+ );
+ },
+ Cell: ({ row }) => <>{row.original.province_fa}>,
+ }
return [
{
accessorKey: "id",
@@ -66,42 +108,7 @@ const OperatorList = () => {
grow: false,
size: 50,
columns: [
- {
- 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 (
-
- );
- },
- Cell: ({ row }) => <>{row.original.province_fa}>,
- },
+ ...(hasCountryPermission ? [provinceColumn] : []),
{
accessorKey: "city_id",
header: "شهرستان", // Office
@@ -109,17 +116,17 @@ const OperatorList = () => {
enableColumnFilter: true,
datatype: "numeric",
filterMode: "equals",
- dependencyId: "province_id",
+ dependencyId: hasCountryPermission ? "province_id" : null,
grow: false,
size: 120,
ColumnSelectComponent: (props) => {
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(() => {
- if (props.dependencyFieldValue.value === "") {
+ if (hasCountryPermission && props.dependencyFieldValue.value === "") {
return [{ value: "empty", label: "ابتدا استان را انتخاب کنید" }];
}
if (loadingCityList) {
@@ -137,10 +144,11 @@ const OperatorList = () => {
];
}, [cityList, loadingCityList, errorCityList]);
useEffect(() => {
+ if (hasCountryPermission) return;
if (prevDependency === props.dependencyFieldValue?.value) return;
props.handleChange({ ...props.filterParameters, value: "" });
setPrevDependency(props.dependencyFieldValue?.value);
- }, [props.dependencyFieldValue?.value]);
+ }, [props.dependencyFieldValue?.value, hasCountryPermission]);
return (
{
props.dependencyFieldValue?.value === ""
? "empty"
: loadingCityList
- ? "loading"
- : props.filterParameters.value
+ ? "loading"
+ : props.filterParameters.value
}
columnSelectOption={getColumnSelectOptions}
/>