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.Action.ActionForm actionForm = (Forms.Action.ActionForm)clickedButton.Form;
Engine.Crm.ActionEngine actionEngine = actionForm.ActionEngine;
if (string.IsNullOrWhiteSpace(actionEngine.ActionsRecord.NOTE))
{
MovableTextBox textBoxNote = actionForm.MovableControls.Values.OfType<MovableTextBox>().First(p => p.Source == "NOTE");
_Divers.FocusError(textBoxNote);
return;
}
MercatorAI.FactoryOpenAI factory = new MercatorAI.FactoryOpenAI();
MercatorAI.Interfaces.IOpenAiChat openAiChat = factory.CreateOpenAiChat("gpt-5-mini", actionEngine.ActionsRecord.RESULTAT, out string error); // actionEngine.ActionsRecord.RESULTAT contient la conversation sous forme json
if (!string.IsNullOrEmpty(error))
{
Dialogs.Stop("Kan de OpenAI-chat niet initialiseren: " + error);
return;
}
Wait.WaitStatic.WaitWindowBaseThread(Api.Iif_langue(Globals.Langue, IifLangueEnum.AIisThinking));
string ret = "Geen antwoord";
_BaseClasses.ExclusiveBackgroundWorkerAsync exclusiveBackgroundWorkerAsync = new _BaseClasses.ExclusiveBackgroundWorkerAsync(async () => ret = await openAiChat.AskAsync(actionEngine.ActionsRecord.NOTE.Trim(),
responseFormat: MercatorAI.Tools.ChatResponseFormat.HtmlContent,
systemMessage: actionEngine.ActionsRecord.RESULTAT == "" ? "Je bent een assistent die vragen beantwoordt als onderdeel van mijn bedrijf genaamd Widget nv." : ""), formWhereToCenterLoadingCircle: actionForm);
Wait.WaitStatic.WaitClearBaseThread();
if (exclusiveBackgroundWorkerAsync.ExceptionDuringDoWork != null)
{
Dialogs.Stop(exclusiveBackgroundWorkerAsync.ExceptionDuringDoWork.Message);
return;
}
actionEngine.ActionsRecord.HTML =
"<div style=\"margin-top: 25px; margin-bottom: 25px; padding: 25px 15px; border-radius: 10px; background-color: rgb(249, 246, 241);\">"
+ actionEngine.ActionsRecord.NOTE.Trim().Replace("\r\n", "<br>")
+ "</div>"
+ "<div style=\"padding: 0px 15px 0px 15px;\">"
+ ret
+ "</div>"
+ (actionEngine.ActionsRecord.HTML != "" ? "<hr style=\"margin-top: 25px; margin-bottom: 25px\">" + actionEngine.ActionsRecord.HTML : "");
actionEngine.ActionsRecord.RESULTAT = openAiChat.ConversationJson;
actionEngine.ActionsRecord.NOTE = "";
}
}
}