source: jobvista-frontend/src/redux/reducers/jobAdvertisementReducer.js@ b248810

main
Last change on this file since b248810 was b248810, checked in by 223021 <daniel.ilievski.2@…>, 4 months ago

Added no access page for new recruiters and admin panel for granting access

  • Property mode set to 100644
File size: 2.6 KB
Line 
1import {
2 ADD_JOB_ADVERTISEMENT,
3 CURRENT_USER, DELETE_JOB_ADVERTISEMENT, EDIT_JOB_ADVERTISEMENT,
4 FETCH_JOB_ADVERTISEMENTS,
5 FETCH_JOB_ADVERTISEMENTS_BY_RECRUITER, FILTER_JOB_ADVERTISEMENTS, FILTER_JOB_ADVERTISEMENTS_BY_RECRUITER
6} from "../actionTypes";
7import {sortElementsBy} from "../../utils/utils";
8import {useSelector} from "react-redux";
9
10const initialState = {
11 jobAdvertisements: [],
12 jobAdvertisementsByRecruiter: []
13}
14
15let currentUser = JSON.parse(localStorage.getItem(CURRENT_USER))
16export const JobAdvertisementReducer = (state = initialState, action) => {
17 let jobAdvertisements;
18 let jobAdvertisementsByRecruiter;
19 switch (action.type) {
20 case ADD_JOB_ADVERTISEMENT:
21
22 return {
23 ...state,
24 jobAdvertisements: sortElementsBy([...state.jobAdvertisements, action.jobAdvertisement]),
25 jobAdvertisementsByRecruiter: sortElementsBy([...state.jobAdvertisementsByRecruiter, action.jobAdvertisement], "postedOn")
26 }
27 case EDIT_JOB_ADVERTISEMENT:
28 jobAdvertisements = state.jobAdvertisements.filter(jobAd => jobAd.id !== action.jobAdvertisement.id)
29 jobAdvertisementsByRecruiter = state.jobAdvertisementsByRecruiter.filter(jobAd => jobAd.id !== action.jobAdvertisement.id)
30
31 return {
32 jobAdvertisements: sortElementsBy([...jobAdvertisements, action.jobAdvertisement], "postedOn"),
33 jobAdvertisementsByRecruiter: sortElementsBy([...jobAdvertisementsByRecruiter, action.jobAdvertisement], "postedOn")
34 }
35 case DELETE_JOB_ADVERTISEMENT:
36 jobAdvertisements = state.jobAdvertisements.filter(jobAd => jobAd.id !== action.id)
37 jobAdvertisementsByRecruiter = state.jobAdvertisementsByRecruiter.filter(jobAd => jobAd.id !== action.id)
38
39 return {
40 jobAdvertisements: sortElementsBy([...jobAdvertisements], "postedOn"),
41 jobAdvertisementsByRecruiter: sortElementsBy([...jobAdvertisementsByRecruiter], "postedOn")
42 }
43
44 case FETCH_JOB_ADVERTISEMENTS:
45 return {
46 ...state,
47 jobAdvertisements: sortElementsBy(action.jobAdvertisements, "postedOn")
48 }
49
50
51 case FETCH_JOB_ADVERTISEMENTS_BY_RECRUITER:
52 return {
53 ...state,
54 jobAdvertisementsByRecruiter: sortElementsBy(action.jobAdvertisementsByRecruiter, "postedOn")
55 }
56
57 default:
58 return {
59 ...state,
60 };
61 }
62}
63
64export default JobAdvertisementReducer
Note: See TracBrowser for help on using the repository browser.