import { ROOM_CHECK_AVAILABILITY_REQUEST, ROOM_CHECK_AVAILABILITY_SUCCESS, ROOM_CHECK_AVAILABILITY_RESET, ROOM_CHECK_AVAILABILITY_FAIL, ROOM_MAKE_REVIEW_REQUEST, ROOM_MAKE_REVIEW_SUCCESS, ROOM_MAKE_REVIEW_RESET, ROOM_MAKE_REVIEW_FAIL, ROOM_FETCH_BOOKED_DATES_SUCCESS, ROOM_FETCH_BOOKED_DATES_FAIL, ALL_ROOMS_FAIL, ALL_ROOMS_SUCCESS, ROOM_DETAILS_SUCCESS, ROOM_DETAILS_FAIL, CLEAR_ERRORS } from "../constants/roomConstants"; // All rooms reducer. export const allRoomsReducer = (state = { rooms: [] }, action) => { switch (action.type) { case ALL_ROOMS_SUCCESS: return { roomsCount: action.payload.meta.pagination.total, resultsPerPage: action.payload.meta.pagination.pageSize, filteredRoomsCount: 0, rooms: action.payload.data }; case ALL_ROOMS_FAIL: return { error: action.payload.error.message }; case CLEAR_ERRORS: return { ...state, error: null }; default: return state; } }; // Room details reducer. export const roomDetailsReducer = (state = { room: {} }, action) => { switch (action.type) { case ROOM_DETAILS_SUCCESS: return { room: action.payload.data }; case ROOM_DETAILS_FAIL: return { error: action.payload.error.message }; case CLEAR_ERRORS: return { ...state, error: null }; default: return state; } }; // room availability export const checkRoomAvailabilityReducer = (state = { available: true }, action) => { switch (action.type) { case ROOM_CHECK_AVAILABILITY_REQUEST: return { loading: true }; case ROOM_CHECK_AVAILABILITY_SUCCESS: return { loading: false, available: action.payload.isAvailable }; case ROOM_CHECK_AVAILABILITY_RESET: return { loading: false, available: null }; case ROOM_CHECK_AVAILABILITY_FAIL: return { loading: false, error: action.payload.error.message }; case CLEAR_ERRORS: return { ...state, error: null }; default: return state; } }; // room availability export const makeReviewReducer = (state = { review: null }, action) => { switch (action.type) { case ROOM_MAKE_REVIEW_REQUEST: return { loading: true }; case ROOM_MAKE_REVIEW_SUCCESS: return { loading: false, review: action.payload.review }; case ROOM_MAKE_REVIEW_RESET: return { review: null }; case ROOM_MAKE_REVIEW_FAIL: return { loading: false, error: action.payload.error.message }; case CLEAR_ERRORS: return { ...state, error: null }; default: return state; } }; // Get all booked dates. export const fetchRoomBookedDatesReducer = (state = { bookedDates: [] }, action) => { switch (action.type) { case ROOM_FETCH_BOOKED_DATES_SUCCESS: return { loading: false, bookedDates: action.payload.bookedDates.map(bookedDate => new Date(bookedDate)) }; case ROOM_FETCH_BOOKED_DATES_FAIL: return { loading: false, error: action.payload.error.message }; case CLEAR_ERRORS: return { ...state, error: null }; default: return state; } };