initial docker setup
This commit is contained in:
225
frontend/src/reducers/cart/cartReducers.js
Normal file
225
frontend/src/reducers/cart/cartReducers.js
Normal file
@@ -0,0 +1,225 @@
|
||||
import {
|
||||
RECEIVE_SHOP_CART_COUNT,
|
||||
REQUEST_SHOP_CART_ITEMS,
|
||||
RECEIVE_SHOP_CART_ITEMS,
|
||||
SET_CURRENT_STEP,
|
||||
RESET_STEPS,
|
||||
GO_TO_NEXT_STEP,
|
||||
GO_TO_PREVIOUS_STEP,
|
||||
LOAD_CART_STEPS,
|
||||
REQUEST_CART_DOCUMENTS,
|
||||
RECEIVE_CART_DOCUMENTS,
|
||||
REQUEST_CUSTOMER_DETAILS,
|
||||
RECEIVE_CUSTOMER_DETAILS,
|
||||
SELECT_COUNTRY_DELIVERY,
|
||||
SELECT_COUNTRY_BILLING,
|
||||
SET_ORDER_INFO,
|
||||
IS_CART_ITEMS_DISABLED,
|
||||
RECEIVE_ORDER_TOTAL_PRICE,
|
||||
UPDATE_CART_ITEMS,
|
||||
SET_NEXT_STEP,
|
||||
SET_PREV_STEP,
|
||||
SET_ORDER_PLACED,
|
||||
SET_ORDER_PLACED_REDIRECT
|
||||
} from '../../constants/cartConstants';
|
||||
import PriceHelper from '../../helpers/coMarket/PriceHelper';
|
||||
|
||||
const priceHelper = new PriceHelper();
|
||||
const moduleReducers = {};
|
||||
|
||||
const calculateTotalPrice = (cartItems) => {
|
||||
let fixedPrice = priceHelper.sumPrices(cartItems.map(item => { return item.quantity * item.totalPrices.fixedPrice}));
|
||||
let recurrentPrice = priceHelper.sumPrices(cartItems.map(item => { return item.quantity * item.totalPrices.recurrentPrice})) || 0;
|
||||
let servicesPrice = priceHelper.sumPrices(cartItems.map(item => { return item.quantity * item.totalPrices.servicesPrice})) || 0;
|
||||
|
||||
return {
|
||||
fixedPrice,
|
||||
recurrentPrice: priceHelper.sumPrices([recurrentPrice, servicesPrice]),
|
||||
periodUnit: cartItems[0].periodUnit,
|
||||
currency: cartItems[0].country.currency
|
||||
}
|
||||
}
|
||||
|
||||
moduleReducers[RECEIVE_SHOP_CART_COUNT] = (state, action) => {
|
||||
return Object.assign({}, state, {
|
||||
cartCount: action.cartCount
|
||||
});
|
||||
};
|
||||
|
||||
moduleReducers[UPDATE_CART_ITEMS] = (state, action) => {
|
||||
const newState = Object.assign({}, state);
|
||||
newState.cartItems.forEach((item) => {
|
||||
if(item.idCart === action.newItem.idCart){
|
||||
item = action.newItem;
|
||||
}
|
||||
});
|
||||
|
||||
return Object.assign({}, state, {
|
||||
cartItems: newState.cartItems,
|
||||
orderTotalPrice: calculateTotalPrice(newState.cartItems)
|
||||
});
|
||||
};
|
||||
|
||||
moduleReducers[REQUEST_SHOP_CART_ITEMS] = (state, action) => {
|
||||
return Object.assign({}, state, {
|
||||
isLoading: action.isLoading
|
||||
});
|
||||
};
|
||||
|
||||
moduleReducers[RECEIVE_SHOP_CART_ITEMS] = (state, action) => {
|
||||
return Object.assign({}, state, {
|
||||
cartItems: action.cartItems,
|
||||
isLoading: action.isLoading
|
||||
});
|
||||
};
|
||||
|
||||
moduleReducers[LOAD_CART_STEPS] = (state, action) => {
|
||||
return Object.assign({}, state, {
|
||||
cartSteps: action.cartSteps
|
||||
});
|
||||
};
|
||||
|
||||
moduleReducers[REQUEST_CUSTOMER_DETAILS] = (state, action) => {
|
||||
return Object.assign({}, state, {
|
||||
isLoading: action.isLoading
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
moduleReducers[RECEIVE_CUSTOMER_DETAILS] = (state, action) => {
|
||||
return Object.assign({}, state, {
|
||||
customerDetails: action.customerDetails,
|
||||
isLoading: action.isLoading
|
||||
});
|
||||
};
|
||||
|
||||
moduleReducers[SET_CURRENT_STEP] = (state, action) => {
|
||||
const cartSteps = Object.assign({}, state.cartSteps);
|
||||
|
||||
if(state.currentStep && cartSteps[state.currentStep]){
|
||||
cartSteps[state.currentStep].status = 'completed';
|
||||
}
|
||||
cartSteps[action.currentStep].status = 'active';
|
||||
|
||||
return Object.assign({}, state, {
|
||||
currentStep: action.currentStep,
|
||||
cartSteps
|
||||
});
|
||||
};
|
||||
|
||||
moduleReducers[RESET_STEPS] = (state, action) => {
|
||||
const cartSteps = Object.assign({}, state.cartSteps);
|
||||
Object.keys(cartSteps).forEach(stepName => {
|
||||
cartSteps[stepName].status = cartSteps[stepName].previous ? 'inactive' : 'active';
|
||||
});
|
||||
|
||||
return Object.assign({}, state, {
|
||||
cartSteps
|
||||
});
|
||||
};
|
||||
|
||||
moduleReducers[GO_TO_NEXT_STEP] = (state, action) => {
|
||||
const cartSteps = Object.assign({}, state.cartSteps);
|
||||
const nextStep = cartSteps[state.currentStep].next || '';
|
||||
|
||||
if(nextStep && nextStep !== ''){
|
||||
cartSteps[nextStep].status = 'active';
|
||||
cartSteps[state.currentStep].status = 'completed';
|
||||
}
|
||||
|
||||
return Object.assign({}, state, {
|
||||
currentStep: nextStep,
|
||||
cartSteps
|
||||
});
|
||||
};
|
||||
|
||||
moduleReducers[GO_TO_PREVIOUS_STEP] = (state, action) => {
|
||||
const cartSteps = Object.assign({}, state.cartSteps);
|
||||
const previousStep = cartSteps[state.currentStep].previous || '';
|
||||
|
||||
if(previousStep && previousStep !== ''){
|
||||
cartSteps[previousStep].status = 'active';
|
||||
cartSteps[state.currentStep].status = 'completed';
|
||||
}
|
||||
|
||||
return Object.assign({}, state, {
|
||||
currentStep: previousStep,
|
||||
cartSteps
|
||||
});
|
||||
};
|
||||
|
||||
moduleReducers[REQUEST_CART_DOCUMENTS] = (state, action) => {
|
||||
return Object.assign({}, state, {
|
||||
isLoading: action.isLoading
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
moduleReducers[RECEIVE_CART_DOCUMENTS] = (state, action) => {
|
||||
return Object.assign({}, state, {
|
||||
cartDocuments: action.cartDocuments,
|
||||
isLoading: action.isLoading
|
||||
});
|
||||
};
|
||||
|
||||
moduleReducers[SELECT_COUNTRY_DELIVERY] = (state, action) => {
|
||||
return Object.assign({}, state, {
|
||||
selectedCountryDelivery: action.selectedCountryDelivery
|
||||
});
|
||||
};
|
||||
|
||||
moduleReducers[SELECT_COUNTRY_BILLING] = (state, action) => {
|
||||
return Object.assign({}, state, {
|
||||
selectedCountryBilling: action.selectedCountryBilling
|
||||
});
|
||||
};
|
||||
|
||||
moduleReducers[SET_ORDER_INFO] = (state, action) => {
|
||||
return Object.assign({}, state, {
|
||||
orderInfo: action.orderInfo
|
||||
});
|
||||
};
|
||||
|
||||
moduleReducers[IS_CART_ITEMS_DISABLED] = (state, action) => {
|
||||
return Object.assign({}, state, {
|
||||
isCartItemsDisabled: action.isCartItemsDisabled
|
||||
});
|
||||
};
|
||||
|
||||
moduleReducers[RECEIVE_ORDER_TOTAL_PRICE] = (state, action) => {
|
||||
return Object.assign({}, state, {
|
||||
orderTotalPrice: calculateTotalPrice(action.cartItems)
|
||||
});
|
||||
};
|
||||
|
||||
moduleReducers[SET_NEXT_STEP] = (state, action) => {
|
||||
return Object.assign({}, state, {
|
||||
nextStepAction: action.nextStepAction
|
||||
});
|
||||
};
|
||||
|
||||
moduleReducers[SET_PREV_STEP] = (state, action) => {
|
||||
return Object.assign({}, state, {
|
||||
prevStepAction: action.prevStepAction
|
||||
});
|
||||
};
|
||||
|
||||
moduleReducers[SET_ORDER_PLACED] = (state, action) => {
|
||||
return Object.assign({}, state, {
|
||||
orderPlaced: action.orderPlaced
|
||||
});
|
||||
};
|
||||
|
||||
moduleReducers[SET_ORDER_PLACED_REDIRECT] = (state, action) => {
|
||||
return Object.assign({}, state, {
|
||||
orderPlacedRedirect: action.orderPlacedRedirect
|
||||
});
|
||||
};
|
||||
|
||||
const cartReducer = (state = {}, action) => {
|
||||
return moduleReducers[action.type] ?
|
||||
moduleReducers[action.type](state, action) :
|
||||
state;
|
||||
};
|
||||
|
||||
export default cartReducer;
|
||||
Reference in New Issue
Block a user