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

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

        public void BillingEngineClosed(MercatorUi.Engine.Gescom.BillingEngine billingEngine)
        {
            billingEngine.PenguinVirtualScannerAddingItem -= BillingEngine_PenguinVirtualScannerAddingItem;
            billingEngine.PenguinVirtualScannerDataPrepared -= BillingEngine_PenguinVirtualScannerDataPrepared;
        }

        private void BillingEngine_PenguinVirtualScannerAddingItem(object sender, MercatorUi.Engine.Gescom.BillingEngine.PenguinVirtualScannerAddingItemEventArgs e)
        {
            // on cherche la colonne calculée DISPO.DISPO
            MercatorUi.Engine.Gescom.BillingEngine billingEngine = (MercatorUi.Engine.Gescom.BillingEngine)sender;
            var colDispo = billingEngine.BillingForm.LinesEditor.Grid.Columns.OfType<MercatorUi.MovableControls.CommonObjects.LinesEditorReadOnlyColumnTextBox>().Where(c => c.SqlMember == "DISPO.DISPO").FirstOrDefault();
            if (colDispo == null)
                throw new ApplicationException("Read-only column DISPO.DISPO not found!");
            e.Item.Add("Cell3", "Stock = " + e.DataGridViewRow.Cells[colDispo.Name].FormattedValue.ToString());
        }

        private void BillingEngine_PenguinVirtualScannerDataPrepared(object sender, MercatorUi.Engine.Gescom.BillingEngine.PenguinVirtualScannerDataPreparedEventArgs e)
        {
            e.Xaml += "<Label Text=\"{Binding Path=Data[Cell3]}\" HorizontalOptions=\"StartAndExpand\" LineBreakMode=\"WordWrap\" VerticalTextAlignment=\"Center\" FontSize=\"Small\" />";
        }
    }
}