using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using MercatorApi;
using MercatorUi;
using System.Windows.Forms;

// <CompileWithRoslyn />

namespace Main
{
    public class Customizer : MercatorUi.ICustomizers.IExec
    {

        public void Main(MercatorUi.ICustomizers.ExecAction Action)
        {
            if (Action == MercatorUi.ICustomizers.ExecAction.DossierOpen)
            {
                Globals.Main.BaseFormCreating += Main_BaseFormCreating;
            }
            else if (Action == MercatorUi.ICustomizers.ExecAction.DossierClose)
            {
                Globals.Main.BaseFormCreating -= Main_BaseFormCreating;
            }
        }

        void Main_BaseFormCreating(object sender, MercatorUi.Main.BaseFormCreatingEventArgs e)
        {
            if (e.Form is MercatorUi.Forms.Accounting.AccountingBankDomicilForm accountingBankDomicilForm)
            {
                accountingBankDomicilForm.BeforeCreateFile += AccountingBankDomicilForm_BeforeCreateFile;
                accountingBankDomicilForm.FormClosed += AccountingBankDomicilForm_FormClosed;
            }
        }

        private void AccountingBankDomicilForm_FormClosed(object sender, FormClosedEventArgs e)
        {
            MercatorUi.Forms.Accounting.AccountingBankDomicilForm accountingBankDomicilForm = (MercatorUi.Forms.Accounting.AccountingBankDomicilForm)sender;
            accountingBankDomicilForm.BeforeCreateFile -= AccountingBankDomicilForm_BeforeCreateFile;
            accountingBankDomicilForm.FormClosed -= AccountingBankDomicilForm_FormClosed;
        }

        void AccountingBankDomicilForm_BeforeCreateFile(object sender, MercatorUi.Forms.Accounting.AccountingBankDomicilForm.BeforeCreateFileEventArgs e)
        {
            MercatorUi.Forms.Accounting.AccountingBankDomicilForm accountingBankDomicilForm = (MercatorUi.Forms.Accounting.AccountingBankDomicilForm)sender;
            string reference = Api.JustStem(e.Fichier);
            e.Xml.Replace("<PmtInfId>MERCATOR-", "<PmtInfId>M" + Api.Right(reference, 7) + "-");
        }
    }
}