using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Linq;
using MercatorApi;
using MercatorUi;
using MercatorExtensions;

// <CompileWithRoslyn />

namespace Billing
{
    public class Customizer : MercatorUi.ICustomizers.IBillingEngineCreated, MercatorUi.ICustomizers.IBillingEngineClosed
    {
        public void BillingEngineCreated(MercatorUi.Engine.Gescom.BillingEngine billingEngine)
        {
            billingEngine.BeforeSave += BillingEngine_BeforeSave;
        }

        public void BillingEngineClosed(MercatorUi.Engine.Gescom.BillingEngine billingEngine)
        {
            billingEngine.BeforeSave -= BillingEngine_BeforeSave;
        }

        void BillingEngine_BeforeSave(object sender, MercatorUi.Engine.Gescom.BillingEngine.BeforeSaveEventArgs e)
        {
            MercatorUi.Engine.Gescom.BillingEngine billingEngine = (MercatorUi.Engine.Gescom.BillingEngine)sender;
            MercatorUi.MovableControls.MovableTextBox textBoxReference = billingEngine.BillingForm?.MovableControls.Values.OfType<MercatorUi.MovableControls.MovableTextBox>().FirstOrDefault(c => c.Source == "REFERENCE");
            if ((textBoxReference != null) && !billingEngine.PiedsVRecord.REFERENCE.Contains("*"))
            {
                Dialogs.Stop("La zone \"Référence\" doit contenir le caractère * !");
                e.CancelSave = true;
                _Divers.FocusError(textBoxReference);
            }
        }
    }
}