import { createSlice, PayloadAction } from '@reduxjs/toolkit';
import { fetchPizzaToCard } from './stock';
import { PizzaToCard, PizzaToCardSliceState, Status } from './types';

const initialState: PizzaToCardSliceState = {
    pizzaToCard_items: [],
    pizzaToCard_status: Status.LOADING, // loading | success | error
};

const pizzaToCardSlice = createSlice({
  name: 'pizza',
  initialState,
  reducers: {
    setPizzaToCard(pizzaToCard_status, action: PayloadAction<PizzaToCard[]>) {
      pizzaToCard_status.pizzaToCard_items = action.payload;
    },
  },
  extraReducers: (builder) => {
    builder.addCase(fetchPizzaToCard.pending, (pizzaToCard_status, action) => {
      pizzaToCard_status.pizzaToCard_status = Status.LOADING;
      pizzaToCard_status.pizzaToCard_items = [];
    });

    builder.addCase(fetchPizzaToCard.fulfilled, (pizzaToCard_status, action) => {
      pizzaToCard_status.pizzaToCard_status = Status.SUCCESS;
      pizzaToCard_status.pizzaToCard_items = action.payload;
    });

    builder.addCase(fetchPizzaToCard.rejected, (pizzaToCard_status, action) => {
      pizzaToCard_status.pizzaToCard_status = Status.ERROR;
      pizzaToCard_status.pizzaToCard_items = [];
    });
  },
});

export const { setPizzaToCard } = pizzaToCardSlice.actions;

export default pizzaToCardSlice.reducer;
