import { createSlice } from '@reduxjs/toolkit';
import { aGetInitSuccess, aLocationChange, aSetFilterData } from './bonus';
import { sortSettledCoupons } from '../utils/sort';
/**
* @namespace reducer/couponReducer
*/
const initialState = {
placedCoupons: null,
placedCouponsShop: null,
settledCoupons: null,
settledCouponsShop: null,
selectedCoupon: null,
lastCouponId: '',
lastPlacedDate: '',
gameStatuses: null,
shopGameStatuses: null,
turboLastCouponId: '',
turboLastPlacedDate: '',
settledCouponFilters: null,
isLoadingCoupons: false,
};
const resetCoupon = (state) => {
state.placedCoupons = null;
state.placedCouponsShop = null;
state.settledCoupons = null;
state.settledCouponsShop = null;
state.selectedCoupon = null;
state.lastCouponId = '';
state.lastPlacedDate = '';
state.turboLastCouponId = '';
state.turboLastPlacedDate = '';
};
const couponsSlice = createSlice({
name: 'coupons',
initialState,
reducers: {
aGetPlacedCouponsSuccess: (state, action) => {
state.placedCoupons = action.payload.coupons;
state.lastCouponId = action.payload.lastCouponId;
state.lastPlacedDate = action.payload.lastPlacedDate;
state.turboLastCouponId = action.payload.turboLastCouponId;
state.turboLastPlacedDate = action.payload.turboLastPlacedDate;
},
aGetPlacedCouponsShopSuccess: (state, action) => {
state.placedCouponsShop = action.payload.coupons;
state.lastCouponId = action.payload.lastCouponId;
state.lastPlacedDate = action.payload.lastPlacedDate;
state.turboLastCouponId = action.payload.turboLastCouponId;
state.turboLastPlacedDate = action.payload.turboLastPlacedDate;
},
aGetSettledCouponsSuccess: (state, action) => {
state.settledCoupons = sortSettledCoupons(
action.payload.coupons,
action.payload.sort.field,
action.payload.isShop,
action.payload.sort.direction
);
state.lastCouponId = action.payload.lastCouponId;
state.lastPlacedDate = action.payload.lastPlacedDate;
state.turboLastCouponId = action.payload.turboLastCouponId;
state.turboLastPlacedDate = action.payload.turboLastPlacedDate;
},
aGetUpdatedSettledCouponsSuccess: (state, action) => {
state.settledCoupons = action.payload.coupons;
state.selectedCoupon = null;
},
aGetSettledCouponsShopSuccess: (state, action) => {
state.settledCouponsShop = sortSettledCoupons(
action.payload.coupons,
action.payload.sort.field,
action.payload.isShop,
action.payload.sort.direction
);
state.lastCouponId = action.payload.lastCouponId;
state.lastPlacedDate = action.payload.lastPlacedDate;
state.turboLastCouponId = action.payload.turboLastCouponId;
state.turboLastPlacedDate = action.payload.turboLastPlacedDate;
},
aSetSelectedCoupon: (state, action) => {
state.selectedCoupon = action.payload.coupon;
},
aSortSettledCoupons: (state, action) => {
if (action.payload.isShop) {
state.settledCouponsShop = sortSettledCoupons(
state.settledCouponsShop,
action.payload.field,
action.payload.isShop,
action.payload.direction
);
} else {
state.settledCoupons = sortSettledCoupons(
state.settledCoupons,
action.payload.field,
action.payload.isShop,
action.payload.direction
);
}
},
aSetIsLoadingCoupons: (state, action) => {
state.isLoadingCoupons = action.payload.isLoadingCoupons;
},
},
extraReducers: (builder) => {
builder.addCase(aGetInitSuccess, (state, action) => {
state.gameStatuses = action.payload.selects.gameTypes;
state.settledCouponFilters = action.payload.settledCouponFilters;
state.shopGameStatuses = action.payload.selects.shopGameTypes;
state.couponSource = action.payload.selects.couponSource;
});
builder.addCase(aLocationChange, resetCoupon);
builder.addCase(aSetFilterData, resetCoupon);
},
});
export default couponsSlice.reducer;
export const {
aGetPlacedCouponsSuccess,
aGetPlacedCouponsShopSuccess,
aGetSettledCouponsSuccess,
aGetUpdatedSettledCouponsSuccess,
aGetSettledCouponsShopSuccess,
aSetSelectedCoupon,
aSortSettledCoupons,
aSetIsLoadingCoupons,
} = couponsSlice.actions;