Skip to content
Snippets Groups Projects
searchUser.ts 1.37 KiB
Newer Older
  • Learn to ignore specific revisions
  • This file handles actions for the searchUser redux state
    */
    
    
    Carl Schönfelder's avatar
    Carl Schönfelder committed
    import axios from 'axios'
    
    import { UserFilterParams } from '../interfaces/FilterParams'
    
    Carl Schönfelder's avatar
    Carl Schönfelder committed
    import { AppDispatch, RootState } from './../store'
    import Types from './types'
    
    
    /** Get all users using current filterParams in searchUser state */
    
    Carl Schönfelder's avatar
    Carl Schönfelder committed
    export const getSearchUsers = () => async (dispatch: AppDispatch, getState: () => RootState) => {
      const currentParams: UserFilterParams = getState().searchUsers.filterParams
      // Send params in snake-case for api
      const params = {
        page_size: currentParams.pageSize,
        role_id: currentParams.roleId,
        city_id: currentParams.cityId,
        name: currentParams.name,
        page: currentParams.page,
        email: currentParams.email,
      }
      await axios
    
        .get('/api/users/search', { params })
    
    Carl Schönfelder's avatar
    Carl Schönfelder committed
        .then((res) => {
          dispatch({
            type: Types.SET_SEARCH_USERS,
            payload: res.data.items,
          })
          dispatch({
            type: Types.SET_SEARCH_USERS_TOTAL_COUNT,
            payload: res.data.total_count,
          })
          dispatch({
            type: Types.SET_SEARCH_USERS_COUNT,
            payload: res.data.count,
          })
        })
        .catch((err) => {
          console.log(err)
        })
    }
    
    /** Set filterParams in searchUser state */
    
    Carl Schönfelder's avatar
    Carl Schönfelder committed
    export const setFilterParams = (params: UserFilterParams) => (dispatch: AppDispatch) => {
      dispatch({ type: Types.SET_SEARCH_USERS_FILTER_PARAMS, payload: params })
    }