using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Windows.Forms;
using MercatorApi;
using MercatorUi;
using MercatorExtensions;
using MercatorDatabase;
// <CompileWithRoslyn />
namespace Action
{
public class Customizer : MercatorUi.ICustomizers.IActionEngineCreated, MercatorUi.ICustomizers.IActionEngineClosed
{
public void ActionEngineCreated(MercatorUi.Engine.Crm.ActionEngine actionEngine)
{
actionEngine.AfterSave += actionEngine_AfterSave;
}
public void ActionEngineClosed(MercatorUi.Engine.Crm.ActionEngine actionEngine)
{
actionEngine.AfterSave -= actionEngine_AfterSave;
}
void actionEngine_AfterSave(object sender, EventArgs e)
{
MercatorUi.Engine.Crm.ActionEngine actionEngine = (MercatorUi.Engine.Crm.ActionEngine)sender;
if ((actionEngine.ActionsRecord.PAR_ID != "") && (actionEngine.ActionsRecord.PAR_MODULE != ""))
{
object ox = Api.ZselectDirect(Globals.RepData, "select id from FILES where (filepath=@filepathchild) and (filename is null)", new MercatorSqlParam("@filepathchild", Api.AddBS(actionEngine.SqlFileViewDefaultDirectory), SqlDbType.Char));
if (ox is Guid id)
{
using (SqlCommand cmd = new SqlCommand())
{
cmd.CommandText = @"
if not exists(select * from FILES where (filepath = '<Files\Actions\'+@par_module+'\') and (filename is null))
insert into FILES (filepath) values ('<Files\Actions\'+@par_module+'\')
if not exists(select * from FILES where (filepath = '<Files\Actions\'+@par_module+'\'+@par_id+'\') and (filename is null))
insert into FILES (filepath) values ('<Files\Actions\'+@par_module+'\'+@par_id+'\')
if exists(select * from FILES where (filepath = '<Files\Actions\'+@par_module+'\'+@par_id+'\') and (filename like @idchild + '%.sqlfilealias'))
delete from FILES where (filepath = '<Files\Actions\'+@par_module+'\'+@par_id+'\') and (filename like @idchild + '%.sqlfilealias')
insert into FILES (filepath,[filename],filecontent) values ('<Files\Actions\'+@par_module+'\'+@par_id+'\', @idchild + ' - ' + @objetchild + '.sqlfilealias', @id)".UnIndent(7);
cmd.Parameters.AddWithValue("@id", id.ToByteArray()).SqlDbType = SqlDbType.VarBinary;
cmd.Parameters.AddWithValue("@idchild", actionEngine.Id).SqlDbType = SqlDbType.Char;
cmd.Parameters.AddWithValue("@objetchild", actionEngine.ActionsRecord.OBJET).SqlDbType = SqlDbType.Char;
cmd.Parameters.AddWithValue("@par_module", actionEngine.ActionsRecord.PAR_MODULE).SqlDbType = SqlDbType.Char;
cmd.Parameters.AddWithValue("@par_id", actionEngine.ActionsRecord.PAR_ID).SqlDbType = SqlDbType.Char;
Api.SqlExec(Globals.RepData, cmd);
}
}
}
}
}
}