1 | import {
|
---|
2 | CURRENT_USER,
|
---|
3 | FETCH_APPLICATIONS_BY_JOB_ID,
|
---|
4 | FETCH_APPLICATIONS_BY_JOB_SEEKER_ID, FILTER_APPLICATIONS_BY_JOB_ID, FILTER_APPLICATIONS_BY_JOB_SEEKER_ID,
|
---|
5 | SUBMIT_APPLICATION, UPDATE_APPLICATION, UPDATE_APPLICATION_STATUS
|
---|
6 | } from "../actionTypes";
|
---|
7 |
|
---|
8 | const initialState = {
|
---|
9 | applicationsByJobSeeker: [],
|
---|
10 | applicationsByJobAdId: []
|
---|
11 | }
|
---|
12 |
|
---|
13 | let currentUser = JSON.parse(localStorage.getItem(CURRENT_USER))
|
---|
14 |
|
---|
15 | export const ApplicationReducer = (state = initialState, action) => {
|
---|
16 | let applications;
|
---|
17 |
|
---|
18 | switch (action.type) {
|
---|
19 | case SUBMIT_APPLICATION:
|
---|
20 | return {
|
---|
21 | ...state,
|
---|
22 | applicationsByJobSeeker: [...state.applicationsByJobSeeker, action.application]
|
---|
23 | }
|
---|
24 | case UPDATE_APPLICATION:
|
---|
25 | return {
|
---|
26 | ...state,
|
---|
27 | applicationsByJobSeeker: state.applicationsByJobSeeker.map(application =>
|
---|
28 | application.id === action.application.id ?
|
---|
29 | action.application : // Replace with the updated application
|
---|
30 | application // Keep the old one
|
---|
31 | )
|
---|
32 | }
|
---|
33 | case UPDATE_APPLICATION_STATUS:
|
---|
34 | return {
|
---|
35 | ...state,
|
---|
36 | applicationsByJobAdId: state.applicationsByJobAdId.map(application =>
|
---|
37 | application.id === action.application.id ?
|
---|
38 | {...application, status: action.application.status} :
|
---|
39 | application
|
---|
40 | )
|
---|
41 | }
|
---|
42 | case FETCH_APPLICATIONS_BY_JOB_ID:
|
---|
43 | return {
|
---|
44 | ...state,
|
---|
45 | applicationsByJobAdId: action.applicationsByJobAdId
|
---|
46 | }
|
---|
47 | case FILTER_APPLICATIONS_BY_JOB_ID:
|
---|
48 | return {
|
---|
49 | ...state,
|
---|
50 | applicationsByJobAdId: action.applicationsByJobAdId
|
---|
51 | }
|
---|
52 |
|
---|
53 | case FETCH_APPLICATIONS_BY_JOB_SEEKER_ID:
|
---|
54 | return {
|
---|
55 | ...state,
|
---|
56 | applicationsByJobSeeker: action.applicationsByJobSeeker
|
---|
57 | }
|
---|
58 | case FILTER_APPLICATIONS_BY_JOB_SEEKER_ID:
|
---|
59 | return {
|
---|
60 | ...state,
|
---|
61 | applicationsByJobSeeker: action.applicationsByJobSeeker
|
---|
62 | }
|
---|
63 | default:
|
---|
64 | return {
|
---|
65 | ...state,
|
---|
66 | };
|
---|
67 | }
|
---|
68 | }
|
---|
69 |
|
---|
70 | export default ApplicationReducer |
---|