[28b3398] | 1 | import {
|
---|
| 2 | CURRENT_USER,
|
---|
| 3 | FETCH_APPLICATIONS_BY_JOB_ID,
|
---|
[4d97b63] | 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
|
---|
[28b3398] | 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 | }
|
---|
[4d97b63] | 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 | }
|
---|
[28b3398] | 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 | }
|
---|
[4d97b63] | 47 | case FILTER_APPLICATIONS_BY_JOB_ID:
|
---|
| 48 | return {
|
---|
| 49 | ...state,
|
---|
| 50 | applicationsByJobAdId: action.applicationsByJobAdId
|
---|
| 51 | }
|
---|
| 52 |
|
---|
[28b3398] | 53 | case FETCH_APPLICATIONS_BY_JOB_SEEKER_ID:
|
---|
| 54 | return {
|
---|
| 55 | ...state,
|
---|
| 56 | applicationsByJobSeeker: action.applicationsByJobSeeker
|
---|
| 57 | }
|
---|
[4d97b63] | 58 | case FILTER_APPLICATIONS_BY_JOB_SEEKER_ID:
|
---|
| 59 | return {
|
---|
| 60 | ...state,
|
---|
| 61 | applicationsByJobSeeker: action.applicationsByJobSeeker
|
---|
| 62 | }
|
---|
[28b3398] | 63 | default:
|
---|
| 64 | return {
|
---|
| 65 | ...state,
|
---|
| 66 | };
|
---|
| 67 | }
|
---|
| 68 | }
|
---|
| 69 |
|
---|
| 70 | export default ApplicationReducer |
---|