Source: data/Functions.js

import axios from 'axios';
import { RECOMMENDATION_ROUTE, SALARY_ROUTE } from './Constants';

/**
 * @param {string} str
 * @returns {string}
 */
export function capitalize(str) {
	if (typeof str !== 'string' || str.length === 0) {
		return '';
	}
	return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase();
}

/**
 *
 * @param {string} jobTitle The job title
 * @param {boolean} force Whether to fetch raw data
 * @returns
 */
export const estimateSalary = async (jobTitle, force) => {
	const payload = {
		field: jobTitle,
		force: force,
	};

	const response = await axios.post(SALARY_ROUTE, payload);
	const data = response.data;
	return data;
};

/**
 *
 * @param {number} salary1
 * @param {number} salary2
 * @param {string} user1
 * @param {string} user2
 */
export const fetchRecommendation = async (salary1, salary2, user1, user2) => {
	const payload = {
		job1: salary1,
		job2: salary2,
		user1: user1,
		user2: user2,
	};

	const response = await axios.post(RECOMMENDATION_ROUTE, payload);
	const data = response.data;
	return data;
};

export function calculateHourlyRate(
	annualSalary,
	hoursPerWeek = 40,
	weeksPerYear = 52
) {
	if (!annualSalary || annualSalary <= 0) return null;

	const hourly = annualSalary / (hoursPerWeek * weeksPerYear);
	return Number(hourly.toFixed(2));
}