import { prodQuery } from "../prodSql/prodSqlQuery.controller.js";
import {
	type SqlQuery,
	sqlQuerySelector,
} from "../prodSql/prodSqlQuerySelector.utils.js";
import { tryCatch } from "../utils/trycatch.utils.js";

// disable the jobs
const jobNames: string[] = [
	"monitor_$_lots",
	"monitor_$_lots_2",
	"monitor$lots",
	"Monitor_APO", //listen for people to cry this is no longer a thing
	"Monitor_APO2",
	"Monitor_AutoConsumeMaterials", // TODO: migrate to lst
	"Monitor_AutoConsumeMaterials_iow1",
	"Monitor_AutoConsumeMaterials_iow2",
	"Monitor_BlockedINV_Loc",
	"monitor_inv_cycle",
	"monitor_inv_cycle_1",
	"monitor_inv_cycle_2",
	"monitor_edi_import", // TODO: migrate to lst -- for the query select count(*) from AlplaPROD_test3.dbo.T_EDIDokumente (nolock) where /* IdLieferant > 1  and */ add_date > DATEADD(MINUTE, -30, getdate())
	"Monitor_Lot_Progression",
	"Monitor_Lots", // TODO: migrate to lst -- this should be the one where we monitor the when a lot is assigned if its missing some data.
	"Monitor_MinMax", // TODO:Migrate to lst
	"Monitor_MinMax_iow2",
	"Monitor_PM",
	"Monitor_Purity",
	"monitor_wastebookings", // TODO: Migrate
	"LastPriceUpdate", // not even sure what this is
	"GETLabelsCount", // seems like an old jc job
	"jobforpuritycount", // was not even working correctly
	"Monitor_EmptyAutoConsumLocations", // not sure who uses this one
	"monitor_labelreprint", // Migrated but need to find out who really wants this
	"test", // not even sure why this is active
	"UpdateLastMoldUsed", // old jc inserts data into a table but not sure what its used for not linked to any other alert
	"UpdateWhsePositions3", // old jc inserts data into a table but not sure what its used for not linked to any other alert
	"UpdateWhsePositions4",
	"delete_print", // i think this was in here for when we was having lag prints in iowa1
	"INV_WHSE_1", // something random i wrote long time ago looks like an inv thing to see aged stuff
	"INV_WHSE_2",
	"laneAgeCheck", // another strange one thats been since moved to lst
	"monitor_blocking_2",
	"monitor_blocking", // already in lst
	"monitor_min_inv", // do we still want this one? it has a description of: this checks m-f the min inventory of materials based on the min level set in stock
	"Monitor_MixedLocations",
	"Monitor_PM",
	"Monitor_PM2",
	"wrong_lots_1",
	"wrong_lots_2",
	"invenotry check", // spelling error one of my stupids
	"monitor_hold_monitor",
	"Monitor_Silo_adjustments",
	"monitor_qualityLocMonitor", // validating with lima this is still needed
	"Monitor_Stock_Change",
];

export const sqlJobCleanUp = async () => {
	// running a query to disable jobs that are moved to lst to be better maintained
	const sqlQuery = sqlQuerySelector("disableJob") as SqlQuery;

	if (!sqlQuery.success) {
		console.error("Failed to load the query: ", sqlQuery.message);
		return;
	}
	for (const job of jobNames) {
		const { error } = await tryCatch(
			prodQuery(
				sqlQuery.query.replace("[jobName]", `${job}`),
				`Disabling job: ${job}`,
			),
		);

		if (error) {
			console.error(error);
		}

		//console.log(data);
	}
};
