import type React from 'react';

import type { FinancialsContextModel } from '../../Store/Financials/financials-context';

export default function ifThereIsSelectedFinancialsSwitchToPageHandler(
	financialsContext: FinancialsContextModel,
	setSwitchPage: React.Dispatch<React.SetStateAction<boolean>>
): void {
	const selectedPlan: string = localStorage.getItem('plan') as string;
	financialsContext.activateUserHandler(selectedPlan);
	if (
		JSON.parse(localStorage.getItem('first-financial') as string) &&
		JSON.parse(localStorage.getItem('second-financial') as string)
	) {
		localStorage.setItem('switchToPage', JSON.stringify(true));
		setSwitchPage(true);
	}
}

export function switchToPageHelperHandler(
	numberOfSelectedFinancials: number,
	setSwitchPage: React.Dispatch<React.SetStateAction<boolean>>,
	setErrorMessage: React.Dispatch<React.SetStateAction<boolean>>,
	setErrorMessagePopup: React.Dispatch<React.SetStateAction<boolean>>
): void {
	const selectedFinancials = JSON.parse(localStorage.getItem('selected-financials') as string);
	if (selectedFinancials) {
		if (numberOfSelectedFinancials === selectedFinancials.length) {
			setSwitchPage(true);
			localStorage.setItem('switchToPage', JSON.stringify(true));
		} else if (selectedFinancials && selectedFinancials.length === 0) {
			setErrorMessage(true);
			localStorage.setItem('switchToPage', JSON.stringify(false));
		} else if (
			selectedFinancials &&
			selectedFinancials.length > 0 &&
			numberOfSelectedFinancials < selectedFinancials.length
		) {
			setErrorMessagePopup(true);
			localStorage.setItem('switchToPage', JSON.stringify(false));
			setTimeout(() => {
				setErrorMessagePopup(false);
			}, 3000);
		} else if (selectedFinancials && numberOfSelectedFinancials > selectedFinancials.length) {
			setErrorMessagePopup(true);
			setTimeout(() => {
				setErrorMessagePopup(false);
			}, 3000);
			localStorage.setItem('switchToPage', JSON.stringify(false));
		}
	} else if (!selectedFinancials) {
		setErrorMessage(true);
		localStorage.setItem('switchToPage', JSON.stringify(false));
	}
}
