/* eslint-disable react/destructuring-assignment */
import type { ReactNode } from 'react';
import type React from 'react';
import { createContext, useState } from 'react';
import { useNavigate } from 'react-router-dom';

import environment from '../../Environments/environment';
import type { CompanyTypeInterface } from '../../Pages/ChooseCompanyType/companyTypeHelper';
import { createCompanyRequestHandler } from '../Companies/company-context-helper';

export type CompanyTypeContextModel = {
	getDataFromCompanyType: (event: CompanyTypeInterface) => void;
	responseMessage: string;
};

export const CompanyTypeContext: React.Context<CompanyTypeContextModel> =
	createContext<CompanyTypeContextModel>({
		getDataFromCompanyType: (): void => {},
		responseMessage: ''
	});

const CompanyTypeContextProvider: React.FC<{ children: ReactNode }> = (props: {
	children: ReactNode;
}) => {
	const { dashboard } = environment.frontendRoutes;
	//
	const navigate = useNavigate();
	const [responseMessage, setResponseMessage] = useState<string>('');

	function getDataFromCompanyType(event: CompanyTypeInterface): void {
		const randomIdNumber1: number = Math.random() * 100;
		const randomIdNumber2: number = Math.random() * 100;
		const companyId = `${randomIdNumber1}${randomIdNumber2}`;
		// if (event.companyType === 'Single Company') {
		// 	createCompanyRequestHandler({
		// 		company_id: companyId,
		// 		industry_type: 'Services',
		// 		company_name: event.company,
		// 		currency_symbol: 'USD',
		// 		industry_id: +event.industryId,
		// 		company_reg_number: +event.companyRegNumber
		// 	})
		// 		.then((response) => setResponseMessage(response.data as string))
		// 		.catch((error) => setResponseMessage(error.message));
		// } else if (event.companyType === 'Advisor') {
		// 	// console.log('send http request to database to get invite and compare with the account');
		// 	localStorage.setItem('company-type', JSON.stringify('Advisor'));
		// 	createCompanyRequestHandler({
		// 		company_id: companyId,
		// 		industry_type: 'Services',
		// 		company_name: event.company,
		// 		currency_symbol: 'USD',
		// 		industry_id: +event.industryId,
		// 		company_reg_number: +event.companyRegNumber
		// 	})
		// 		.then((response) => setResponseMessage(response.data as string))
		// 		.catch((error) => setResponseMessage(error.message));
		// 	navigate(dashboard);
		// }
	}

	// eslint-disable-next-line react/jsx-no-constructed-context-values
	const contextValue = {
		getDataFromCompanyType,
		responseMessage
	};
	return (
		<CompanyTypeContext.Provider value={contextValue}>{props.children}</CompanyTypeContext.Provider>
	);
};

export default CompanyTypeContextProvider;
