using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Linq;
using MercatorApi;
using MercatorController;
using System.Windows.Forms;
using MercatorExtensions;
using MercatorDatabase;
// <CompileWithRoslyn />
namespace MercatorUi.MovableControls.ButtonsCodes
{
public static class Script
{
public static void Exec(MercatorUi.MovableControls.MovableButton clickedButton)
{
// enter your customized code here
Forms.Sig.SigForm sigForm = (Forms.Sig.SigForm)clickedButton.Form;
if (string.IsNullOrWhiteSpace(sigForm.StockRecord.S_MODELE))
{
MercatorUi.Dialogs.Stop("De omschrijving in het Frans is leeg!");
return;
}
MercatorAI.FactoryGemini factory = new MercatorAI.FactoryGemini();
MercatorAI.Interfaces.IGeminiChat geminiChat = factory.CreateGeminiChat("gemini-2.5-flash", out string error);
if (!string.IsNullOrEmpty(error))
{
Dialogs.Stop("Kan de Gemini-chat niet initialiseren: " + error);
return;
}
string systemMessage = "Je bent een assistent die productnamen vertaalt in het Nederlands, Engels en Duits voor een doe-het-zelfwinkel.";
string chatMessage = "Te vertalen: \"" + sigForm.StockRecord.S_MODELE + "\"";
while (!string.IsNullOrEmpty(chatMessage))
{
Wait.WaitStatic.WaitWindowBaseThread(Api.Iif_langue(Globals.Langue, IifLangueEnum.AIisThinking));
Trad trad = null;
_BaseClasses.ExclusiveBackgroundWorkerAsync exclusiveBackgroundWorkerAsync = new _BaseClasses.ExclusiveBackgroundWorkerAsync(async () => trad = await geminiChat.AskAsync<Trad>(chatMessage, systemMessage: systemMessage));
Wait.WaitStatic.WaitClearBaseThread();
if (exclusiveBackgroundWorkerAsync.ExceptionDuringDoWork != null)
{
Wait.WaitStatic.WaitClearBaseThread();
Dialogs.Stop(exclusiveBackgroundWorkerAsync.ExceptionDuringDoWork.Message + (exclusiveBackgroundWorkerAsync.ExceptionDuringDoWork.InnerException != null ? "\r\n" + exclusiveBackgroundWorkerAsync.ExceptionDuringDoWork.InnerException.Message : ""));
return;
}
sigForm.StockRecord.S_MODELEN = trad.TradNL ?? "";
sigForm.StockRecord.S_MODELEE = trad.TradEN ?? "";
sigForm.StockRecord.S_MODELED = trad.TradDE ?? "";
Wait.WaitStatic.WaitClear();
string consigneSuppl = Dialogs.AskMemo("Vertalingen verfijnen met een extra instructie?", "");
if (!string.IsNullOrWhiteSpace(consigneSuppl))
chatMessage = consigneSuppl + "\n" + "Te vertalen: \"" + sigForm.StockRecord.S_MODELE + "\"";
else
return;
}
}
public class Trad
{
public string TradNL { get; set; }
public string TradEN { get; set; }
public string TradDE { get; set; }
}
}
}