import { createSlice } from '@reduxjs/toolkit';
import { aGetInitSuccess, aLocationChange, aSetFilterData } from './bonus';
/**
* @namespace reducer/jackpotReducer
*/
const initialState = {
jackpotsTypes: [],
jackpotStatus: [],
lastAssignedJackpotId: '',
lastJackpotAssignationDate: '',
jackpotsWon: [],
jackpotHistory: [],
assignedJackpotId: null,
stakeAccumulation: null,
jackpotAssignment: null,
percentageCouponsForAccumulation: 0,
enableAccumulation: 0,
enableJackpotRelease: 0,
thresholdJackpotPayment: 0,
jackpotsSettings: [],
refreshJackpotList: false,
};
const resetJackpot = (state) => {
state.jackpotsWon = [];
state.lastAssignedJackpotId = '';
state.lastJackpotAssignationDate = '';
state.jackpotHistory = [];
state.assignedJackpotId = null;
state.stakeAccumulation = null;
state.jackpotAssignment = null;
state.percentageCouponsForAccumulation = 0;
state.enableAccumulation = 0;
state.enableJackpotRelease = 0;
state.thresholdJackpotPayment = 0;
state.jackpotsSettings = [];
};
const setJackpotSettings = (state, action) => {
const {
stakeAccumulation,
jackpotAssignment,
percentageCouponsForAccumulation,
enableAccumulation,
enableJackpotRelease,
thresholdJackpotPayment,
jackpots,
} = action.payload.jackpotSettings;
state.stakeAccumulation = stakeAccumulation;
state.jackpotAssignment = jackpotAssignment;
state.percentageCouponsForAccumulation = percentageCouponsForAccumulation;
state.enableAccumulation = enableAccumulation;
state.enableJackpotRelease = enableJackpotRelease;
state.thresholdJackpotPayment = thresholdJackpotPayment;
state.jackpotsSettings = jackpots;
};
const jackpotSlice = createSlice({
name: 'jackpot',
initialState,
reducers: {
aGetJackpotWonSuccess: (state, action) => {
state.jackpotsWon = action.payload.jackpots;
state.lastAssignedJackpotId = action.payload.lastAssignedJackpotId;
state.lastJackpotAssignationDate = action.payload.lastJackpotAssignationDate;
},
aGetJackpotHistorySuccess: (state, action) => {
state.jackpotHistory = action.payload.jackpotHistory;
state.assignedJackpotId = action.payload.assignedJackpotId;
},
aGetJackpotSettingsSuccess: setJackpotSettings,
aSaveJackpotSettingsSuccess: setJackpotSettings,
aPayJackpotSuccess: (state, action) => {
state.jackpotsWon = action.payload.jackpotsWon;
state.refreshJackpotList = action.payload.refreshJackpotList;
},
aRefreshJackpotList: (state) => {
state.refreshJackpotList = false;
},
},
extraReducers: (builder) => {
builder.addCase(aGetInitSuccess, (state, action) => {
state.jackpotsTypes = action.payload.selects.jackpots;
state.jackpotStatus = action.payload.selects.jackpotStatus;
});
builder.addCase(aLocationChange, resetJackpot);
builder.addCase(aSetFilterData, resetJackpot);
},
});
export default jackpotSlice.reducer;
export const {
aGetJackpotWonSuccess,
aGetJackpotHistorySuccess,
aGetJackpotSettingsSuccess,
aSaveJackpotSettingsSuccess,
aPayJackpotSuccess,
aRefreshJackpotList,
} = jackpotSlice.actions;