using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using QMAPP.ServicesAgent;
using QMAPP.WinForm.Common;
using QMFrameWork.Common.Serialization;
using QMFrameWork.Data;
using QMAPP.Entity;
using QMAPP.MD.Entity.Bucket;

namespace QMAPP.WinForm.Forms.Injection
{
    /// <summary>
    /// 
    /// 作    用:投料记录
    /// 作    者:张松男
    /// 编写日期:2021年07月24日
    ///</summary>
    public partial class InjectionMoldingNEWForm : Form
    {
        RawMaterial searchModel = new RawMaterial();//查询条件

        /// <summary>
        /// 
        /// </summary>
        public InjectionMoldingNEWForm()
        {
            InitializeComponent();
        }

        #region 窗体载入

        private void Form_Load(object sender, EventArgs e)
        {
            //初始化控件属性
            this.DGView.AutoGenerateColumns = false;
            #region 绑定下拉列表
            BasicData basicData = new BasicData();
            ////加载注塑设备列表
            //this.comMachine.DataSource = basicData.GetMachineInfoList(new string[] { EnumGeter.ProcessType_M.Injection.GetHashCode().ToString() }, true);
            //this.comMachine.DisplayMember = "MACHINENAME";
            //this.comMachine.ValueMember = "MACHINECODDE";
            //加载操作人
            //this.comOpereator.DataSource = basicData.GetOperatorInfoList(EnumGeter.MACHINETYPE.zhusu.GetHashCode().ToString(), true); ;
            //this.comOpereator.DisplayMember = "OPERATOR";
            //this.comOpereator.ValueMember = "PID";
            #endregion
            //初始化条件
            this.dtpCreateUserStart.ValueX = DateTime.Now.AddDays(-10);
            this.dtpCreateUserEnd.ValueX = DateTime.Now;
            //初始化分页
            this.pager1.Init();
           //加载默认查询条件
             SetSearchModel();
             BindGirdData();
        }


        #endregion

        #region 绑定数据

        private DataPage BindGirdData()
        {
            List<RawMaterial> recorders = null;//查询结果列表
            DataPage dataPage = new DataPage();
            var dataresle = new DataResult<DataPage>();
            //获取前台分页设置信息
            dataPage = pager1.DataPage;
            try
            {
                #region 服务查询
                QMAPP.ServicesAgent.ServiceAgent agent = ClientContext.GetServiceAgent();
                dataresle = agent.InvokeServiceFunction<DataResult<DataPage>>(B9BasicService.RawMaterialBLL_GetList.ToString(), searchModel, dataPage);
                dataPage = dataresle.Result;
                recorders = JsonConvertHelper.GetDeserialize<List<RawMaterial>>(dataPage.Result.ToString());
                #endregion
                this.DGView.DataSource = recorders;
                this.pager1.DataPage = dataPage;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return dataPage;
        }

        #endregion
        /// <summary>
        /// 分页事件
        /// </summary>
        /// <param name="e"></param>
        /// <returns></returns>
        private DataPage pager1_EventPaging(Controls.EventPagingArg e)
        {
            return BindGirdData();
        }

        /// <summary>
        /// 查询事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void tsbSearch_Click(object sender, EventArgs e)
        {
            SetSearchModel();
            this.pager1.Init();
            BindGirdData();
        }

        /// <summary>
        /// 设置查询条件
        /// </summary>
        private void SetSearchModel()
        {
            searchModel = new RawMaterial();
            
            //料筒
            if (string.IsNullOrEmpty(this.txtBucketCode.Text.Trim()) == false)
            {
                searchModel.BucketCode = this.txtBucketCode.Text.Trim();
            }
            //批次
            if (string.IsNullOrEmpty(this.txtBatch.Text.Trim()) == false)
            {
                searchModel.BatchCode = this.txtBatch.Text.Trim();
            }
            //开始时间
            if (string.IsNullOrEmpty(this.dtpCreateUserStart.Text.Trim()) == false)
            {
                searchModel.CreateDateStart = Convert.ToDateTime(this.dtpCreateUserStart.Text).ToString("yyyy-MM-dd").Trim();
            }
            //结束时间
            if (string.IsNullOrEmpty(this.dtpCreateUserEnd.Text.Trim()) == false)
            {
                searchModel.CreateDateEnd = Convert.ToDateTime(this.dtpCreateUserEnd.Text).AddDays(1).ToString("yyyy-MM-dd").Trim();
            }
        }

        /// <summary>
        /// 删除
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void tsbDelete_Click(object sender, EventArgs e)
        {
            if (this.DGView.SelectedRows.Count <= 0)
                return;
            if (MessageBox.Show(Resource1.ConfirmDelete, Resource1.ConfirmTitle, MessageBoxButtons.OKCancel) != DialogResult.OK)
                return;

            #region 执行删除
            string selectKey = this.DGView.SelectedRows[0].Cells["Pid"].Value.ToString();
            //删除校验判断该投料批次号是否已经生产出产品,如果已生产出产品则不允许删除,如果不允许则弹出提示'该批次号物料已使用,不能删除!'
            QMAPP.ServicesAgent.ServiceAgent agent = ClientContext.GetServiceAgent();
            DataResult<int> result = agent.InvokeServiceFunction<DataResult<int>>(B9BasicService.RawMaterialBLL_Delete.ToString(), selectKey);
            MessageBox.Show(result.Msg);
            if (result.IsSuccess && result.Result >0)
            {
                BindGirdData();
            }

            #endregion
        }

        /// <summary>
        /// 打开投料
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void tsbAdd_Click(object sender, EventArgs e)
        {
            InjectionMoldingNEWEditForm editForm = new InjectionMoldingNEWEditForm();
            DialogResult result = editForm.ShowDialog();
            if (result == System.Windows.Forms.DialogResult.OK)//判断是否投料窗口已做操作
            {
                this.pager1.Init();
                BindGirdData();
            }
        }

        /// <summary>
        /// 打开编辑
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void tsbEdit_Click(object sender, EventArgs e)
        {
            if (this.DGView.SelectedRows.Count > 0)
            {
                string selectKey = this.DGView.SelectedRows[0].Cells["Pid"].Value.ToString();
                InjectionMoldingNEWEditForm1 editForm = new InjectionMoldingNEWEditForm1(selectKey);
                DialogResult result = editForm.ShowDialog();
                if (result == System.Windows.Forms.DialogResult.OK)//判断是否投料窗口已做操作
                {
                    this.pager1.Init();
                    BindGirdData();
                }
            }
        }

        /// <summary>
        /// 行序号
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void DG_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e) 
        { 
            Rectangle rectangle = new Rectangle(e.RowBounds.Location.X, e.RowBounds.Location.Y, this.DGView.RowHeadersWidth - 4, e.RowBounds.Height);
            TextRenderer.DrawText(e.Graphics, (e.RowIndex + 1).ToString(), new Font("宋体", 12, FontStyle.Bold), rectangle, this.DGView.RowHeadersDefaultCellStyle.ForeColor, TextFormatFlags.VerticalCenter | TextFormatFlags.Right); 
        }
    }
}