using System;
using System.Linq;
using System.Windows.Forms;
using Mesnac.Action.Base;
namespace Mesnac.Action.ChemicalWeighing.LjMixManager
{
    public class UpdateAction:ChemicalWeighingAction, IAction
    {
        private DbMCControl _materialGridControl = null; //物料列表控件
        private RuntimeParameter _runtime;
        
        
        public static event EventHandler OnUpdate;
        
        public void Run(RuntimeParameter runtime)
        {
            base.RunIni(runtime); //必须调用
            this._runtime = runtime;
            DbMCControl materialGridControl =
                this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "lj_mix_manager")
                    .FirstOrDefault(); //获取物料数据控件
            this._materialGridControl = materialGridControl;
            
            DataGridView clientGridView = this._materialGridControl.BaseControl as DataGridView;
            
            //验证是否选中某物料
            if (clientGridView.SelectedRows.Count != 1)
            {
               
                MessageBox.Show("请选择要修改的数据", Mesnac.Basic.LanguageHelper.Caption, 
                    MessageBoxButtons.OK, MessageBoxIcon.Information);
                this._runtime.IsReturn = true;
                return;
            }
            
            var dataGridViewRow = clientGridView.SelectedRows[0];
            var id = Convert.ToInt32(dataGridViewRow.Cells["Id"].Value);

            DialogResult result = DialogResult.OK;
            FrmMixA mixA = null;
            FrmMixB mixB= null;
            FrmMixC mixC= null;
            if (id < 5)
            {
                mixA = new FrmMixA(id);
                result = mixA.ShowDialog();
            }
            else
            {
                if (id < 13)
                {
                    mixB = new FrmMixB(id);
                    result = mixB.ShowDialog();
                }
                else
                {
                     mixC = new FrmMixC(id);
                    result = mixC.ShowDialog();
                }
            }
            
       
            this._runtime.BaseControl.MCEnabled = false;
            if (result == DialogResult.OK)
            {
                if (OnUpdate != null)
                {
                    OnUpdate(this._runtime.BaseControl.MCRoot, System.EventArgs.Empty);
                }

                if (mixA != null)
                {
                     mixA.Dispose();
                }
                
                if (mixB != null)
                {
                    mixB.Dispose();
                }
                
                if (mixC != null)
                {
                    mixC.Dispose();
                }
               
            }
            
            this._runtime.BaseControl.MCEnabled = true;
            
        }
        
        
    }
}