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

main
Last change on this file since 19398ad was 19398ad, checked in by 223021 <daniel.ilievski.2@…>, 6 weeks ago

Implemented backend and frontend CRUD operations for job advertisements

  • Property mode set to 100644
File size: 2.5 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
6} from "../actionTypes";
7import {sortElementsByDateCreated} 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: sortElementsByDateCreated([...state.jobAdvertisements, action.jobAdvertisement]),
25 jobAdvertisementsByRecruiter: sortElementsByDateCreated([...state.jobAdvertisementsByRecruiter, action.jobAdvertisement])
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: sortElementsByDateCreated([...jobAdvertisements, action.jobAdvertisement]),
33 jobAdvertisementsByRecruiter: sortElementsByDateCreated([...jobAdvertisementsByRecruiter, action.jobAdvertisement])
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: sortElementsByDateCreated([...jobAdvertisements]),
41 jobAdvertisementsByRecruiter: sortElementsByDateCreated([...jobAdvertisementsByRecruiter])
42 }
43
44 case FETCH_JOB_ADVERTISEMENTS:
45 return {
46 ...state,
47 jobAdvertisements: sortElementsByDateCreated(action.jobAdvertisements)
48 }
49
50 case FETCH_JOB_ADVERTISEMENTS_BY_RECRUITER:
51 return {
52 ...state,
53 jobAdvertisementsByRecruiter: sortElementsByDateCreated(action.jobAdvertisementsByRecruiter)
54 }
55
56 default:
57 return {
58 ...state,
59 };
60 }
61}
62
63export default JobAdvertisementReducer
Note: See TracBrowser for help on using the repository browser.