diff --git a/src/_reducers/authentication/index.js b/src/_reducers/authentication/index.js index 274e915..1b09377 100644 --- a/src/_reducers/authentication/index.js +++ b/src/_reducers/authentication/index.js @@ -6,17 +6,22 @@ const initialState = { }; const authentication = (state = initialState, action) => { - switch (action.type) { - case TYPE_DISPATCH.LOGIN: - return { - ...state, - user: action.payload.user, - jwt_token: action.payload.jwt_token, - }; - case TYPE_DISPATCH.RESET_AUTHENTICATION: + if(action.payload?.user?.role !=="student"){ + switch (action.type) { + case TYPE_DISPATCH.LOGIN: + return { + ...state, + user: action.payload.user, + jwt_token: action.payload.jwt_token, + }; + case TYPE_DISPATCH.RESET_AUTHENTICATION: + return initialState; + default: + return state; + } + }else{ + alert('Bạn không có quyền truy cập'); return initialState; - default: - return state; } }; diff --git a/src/_screens/criteria/criteria-manage/index.js b/src/_screens/criteria/criteria-manage/index.js index b2a8691..2f38fd4 100644 --- a/src/_screens/criteria/criteria-manage/index.js +++ b/src/_screens/criteria/criteria-manage/index.js @@ -13,13 +13,13 @@ import { history } from "../../../_helpers/history"; import { PATH } from "../../../_constants/path"; import { apiCaller } from "../../../_helpers"; import { configConstants } from "../../../_constants"; -import { listStatusCriteria } from "../../../_constants/common"; +import { listStatusCriteria, TYPE_DISPATCH } from "../../../_constants/common"; import moment from "moment"; -import { useDispatch } from "react-redux"; +import { useDispatch, useSelector } from "react-redux"; import { alertActions } from "../../../_actions"; export default function CriteriaManage() { - const [searchText, setSearchText] = useState(); + const [searchText, setSearchText] = useState(''); const [listIdSelected, setListIdSelected] = useState([]); const [listData, setListData] = useState([]); const [listProvince, setListProvince] = useState([ @@ -32,13 +32,10 @@ export default function CriteriaManage() { ]); const [districtSelect, setDistrictSelect] = useState(listDistrict[0]); const [isLoadingDistrict, setIsLoadingDistrict] = useState(false); - const [statusCriteriaSelected, setStatusCriteriaSelected] = useState( - listStatusCriteria[0], - ); + const [statusCriteriaSelected, setStatusCriteriaSelected] = useState(listStatusCriteria[0]); const [isLoading, setIsLoading] = useState(false); const [isFiltered, setIsFiltered] = useState(false); const dispatch = useDispatch(); - const changeProvince = (item) => { setProvinceSelect(item); setDistrictSelect({ value: "", label: "Lọc theo huyện" }); @@ -117,9 +114,9 @@ export default function CriteriaManage() { }), ); setListIdSelected([]); - await setSearchText(""); - await changeProvince(listProvince[0]); - await setStatusCriteriaSelected(listStatusCriteria[0]); + // await setSearchText(""); + // await changeProvince(listProvince[0]); + // await setStatusCriteriaSelected(listStatusCriteria[0]); getDataCriteria(); } } catch (err) { @@ -147,20 +144,38 @@ export default function CriteriaManage() { const getDataCriteria = async (isFilter = false) => { try { setIsLoading(true); - const endPoint = - `/report/api_report/getOrganizationAndCriteria` + - (isFilter - ? `?province_id=${ - !!provinceSelect?.value ? provinceSelect?.value : "" - } - ${!!districtSelect?.value ? `&district_id=${districtSelect?.value}` : ""} - ${ - !!statusCriteriaSelected?.value - ? `&status=${statusCriteriaSelected?.value}` - : "" + const queryParams = []; + + const addParam = (key, value) => { + if (value !== undefined && value !== null && value !== '') { + queryParams.push(`${key}=${value}`); + } + }; + + addParam('province_id', provinceSelect?.value); + addParam('district_id', districtSelect?.value); + if (statusCriteriaSelected?.value !== undefined && statusCriteriaSelected?.value !== null) { + const statusValue = statusCriteriaSelected.value === '0' + ? JSON.stringify(statusCriteriaSelected.value) + : statusCriteriaSelected.value; + addParam('status', statusValue); } - ${!!searchText ? `&school_name=${searchText}` : ""}` - : ""); + addParam('school_name', searchText); + + const obj = queryParams.reduce((acc, curr) => { + const [key, value] = curr.split('='); + acc[key] = value; + return acc; + }, {}); + + dispatch({ + type: TYPE_DISPATCH.SET_FILTER_CRITERIA, + payload: obj, + }); + + const endPoint = `/report/api_report/getOrganizationAndCriteria${ + isFilter && queryParams.length ? `?${queryParams.join("&")}` : "" + }`; const res = await apiCaller(endPoint, "GET"); if (res?.status) { setListData(res?.data); @@ -235,6 +250,14 @@ export default function CriteriaManage() { // getDataCriteria(); }, []); + const isDisabled = () => + !( + searchText || + provinceSelect.value || + districtSelect.value || + statusCriteriaSelected.value + ); + return (