import XLSX from "xlsx";
import { excelDateStuff } from "../utils/excelToDate.utils.js";
import { postData } from "./logistics.dm.postData.js";

export const abbottForecast = async (sheet: any, user: any) => {
	/*
	This is the forecast but will only be triggered when the actual sheet is passed over from the orders in. this is being done this way due to the truck list being sent over as well.
	*/
	const customerId = 8;
	const posting: any = [];

	const customHeaders = [
		"date",
		"time",
		"newton8oz",
		"newton10oz",
		"E",
		"F",
		"fDate",
		"f8ozqty",
		"I",
		"J",
		"K",
		"L",
		"M",
		"f10ozqty",
	];
	const forecastData = XLSX.utils.sheet_to_json(sheet, {
		range: 5, // Start at row 5 (index 4)
		header: customHeaders,
		defval: "", // Default value for empty cells
	});

	for (let i = 1; i < forecastData.length; i++) {
		const row: any = forecastData[i];
		//console.log(row);
		//if (row.fDate == undefined) continue;

		if (row.fDate !== "") {
			const date = isNaN(row.fDate)
				? new Date(row.fDate)
				: excelDateStuff(row.fDate);
			// for 8oz do
			if (row.f8ozqty > 0) {
				posting.push({
					customerArticleNo: "45300DA",
					quantity: row.f8ozqty,
					requirementDate: date,
				});
			}

			if (row.f10ozqty > 0) {
				posting.push({
					customerArticleNo: "43836DA",
					quantity: row.f10ozqty,
					requirementDate: date,
				});
			}
		}
	}
	// the predefined data that will never change
	const predefinedObject = {
		receivingPlantId: process.env.PROD_PLANT_TOKEN ?? "test1",
		documentName: `ForecastFromLST-${new Date(Date.now()).toLocaleString(
			"en-US",
		)}`,
		sender: user.username || "lst-system",
		customerId: customerId,
		positions: [],
	};

	// add the new forecast to the predefined data
	const updatedPredefinedObject = {
		...predefinedObject,
		positions: [...predefinedObject.positions, ...posting],
	};

	const forecast: any = await postData(
		{
			type: "forecast",
			endpoint: "/public/v1.0/DemandManagement/DELFOR",
			data: updatedPredefinedObject as any,
		},
		user,
	);

	return {
		success: forecast.success,
		message: forecast.message,
		data: forecast.data,
	};
};
