import cardStyles from '../../Financials/Components/FinancialsCards/FinancialsCards.module.scss';

export enum ManageSubscriptionPlan {
	undefined,
	basicPlan,
	growPlan,
	proPlan,
	included = 3,
	tenClients = 10,
	twentyFiveClients = 25,
	fiftyClients = 50
}

// reducer Handler helper

export interface ManageSubscriptionInterface {
	planButton1: string;
	planButton2: string;
	planButton3: string;
	clients1: string;
	clients2: string;
	clients3: string;
	clients4: string;
	defaultValuePlan: string;
	plan: string;
	clients: string;
	defaultClientsClass: string;
}

export interface Action {
	type: string;
	value: string | number;
}
export const manageSubscriptionState: ManageSubscriptionInterface = {
	planButton1: cardStyles.active,
	planButton2: cardStyles.nonActive,
	planButton3: cardStyles.nonActive,
	plan: '0 Basic Plan',
	defaultValuePlan: cardStyles.nonActive,
	clients: '0 3-clients',
	clients1: cardStyles.activeClients,
	clients2: cardStyles.nonActiveClients,
	clients3: cardStyles.nonActiveClients,
	clients4: cardStyles.nonActiveClients,
	defaultClientsClass: cardStyles.nonActiveClients
};

function ManageSubscriptionReducerHelper(
	state: ManageSubscriptionInterface,
	action: Action,
	initialState: ManageSubscriptionInterface
): ManageSubscriptionInterface {
	switch (action.type) {
		case 'BASIC_PLAN_SELECTED':
			return {
				...state,
				planButton1: action.value.toString(),
				planButton2: state.defaultValuePlan,
				planButton3: state.defaultValuePlan
			};
		case 'GROW_PLAN_SELECTED':
			return {
				...state,
				planButton2: action.value.toString(),
				planButton1: state.defaultValuePlan,
				planButton3: state.defaultValuePlan
			};
		case 'PRO_PLAN_SELECTED':
			return {
				...state,
				planButton3: action.value.toString(),
				planButton2: state.defaultValuePlan,
				planButton1: state.defaultValuePlan
			};
		case 'PLAN':
			return {
				...state,
				plan: action.value.toString()
			};
		case 'CLIENTS':
			return {
				...state,
				clients: action.value.toString()
			};
		case 'CLIENTS1':
			return {
				...state,
				clients1: action.value.toString(),
				clients2: state.defaultClientsClass.toString(),
				clients3: state.defaultClientsClass.toString(),
				clients4: state.defaultClientsClass.toString()
			};
		case 'CLIENTS2':
			return {
				...state,
				clients2: action.value.toString(),
				clients1: state.defaultClientsClass.toString(),
				clients3: state.defaultClientsClass.toString(),
				clients4: state.defaultClientsClass.toString()
			};
		case 'CLIENTS3':
			return {
				...state,
				clients3: action.value.toString(),
				clients2: state.defaultClientsClass.toString(),
				clients1: state.defaultClientsClass.toString(),
				clients4: state.defaultClientsClass.toString()
			};
		case 'CLIENTS4':
			return {
				...state,
				clients4: action.value.toString(),
				clients2: state.defaultClientsClass.toString(),
				clients3: state.defaultClientsClass.toString(),
				clients1: state.defaultClientsClass.toString()
			};
		default:
			return initialState;
	}
}

export default ManageSubscriptionReducerHelper;
