using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.ServiceModel;
using DBFactory;
using System.Net.Sockets;
using System.Threading;

using Microsoft.VisualBasic;


namespace wcfControlMonitorClient
{
    /// <summary>
    /// Creator:Richard.liu
    /// µ÷¶ÈÈÎÎñ¹ÜÀí
    /// </summary>
    public partial class FrmModifyManage : Form
    {
        string _manstatus= " F_Status>=-1 ";
        private static FrmModifyManage _formInstance;

        public static FrmModifyManage FormInstance
        {
            get
            {
                if (_formInstance == null)
                {
                    _formInstance = new FrmModifyManage();
                }
                return _formInstance;
            }
            set { _formInstance = value; }
        }
        
        Model.MDevice devinfo;
        DBOperator dbo = CStaticClass.dbo;
        DBOperator dboM = CStaticClass.dboM;
        public FrmModifyManage()
        {
            InitializeComponent();
            _formInstance = this;
        }

        private void TSMrefresh_Click()
        {
           
            this.dgvManager.DataSource = dbo.ExceSQL("select * from V_Manage_Task where " + _manstatus).Tables[0].DefaultView;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                //if (this.textBox1.Text.Trim().Length == 0) return;
                if (this.comboBox1.Text == "ÌõÂë")
                {
                    //20091016
                    //_manstatus = " ÌõÂë='" + this.textBox1.Text.Trim() + "' ";
                    _manstatus = string.Format(" ÌõÂë like '%{0}%' ", this.textBox1.Text.Trim());
                }

                if (this.comboBox1.Text == "µ÷¶ÈÈÎÎñË÷Òý")
                {
                    //_manstatus = " µ÷¶ÈÈÎÎñË÷Òý='" + this.textBox1.Text.Trim() + "' ";
                    _manstatus = string.Format(" µ÷¶ÈÈÎÎñË÷Òý like '%{0}%' ", this.textBox1.Text.Trim());
                }
                string Type = comboTaskType.Text.Trim();//³öÈë¿âÈÎÎñÀàÐÍ
                string Floor = comboFloor.SelectedIndex <= 0 ? string.Empty : Convert.ToString(comboFloor.SelectedIndex);//ÈÎÎñËùÔÚÂ¥²ã ,Èë¿âºÍÒÆ¿âÈÎÎñÅÐ¶ÏÆðµã£¬³ö¿âÈÎÎñÅжÏÖÕµã
                string Lane = comboLane.SelectedIndex <= 0 ? string.Empty : string.Format("1800{0}", comboLane.SelectedIndex); //ÈÎÎñËùÔÚÏïµÀ,Èë¿âÈÎÎñÅжÏÖյ㣬³ö¿âÈÎÎñÅÐ¶ÏÆðµã
                string str1 = string.Format(" And (×÷ÒµÀàÐÍ like '%{0}%')  And (((×÷ÒµÀàÐÍ!='³ö¿â') and  (Æðµã like '{1}%'))  OR ((×÷ÒµÀàÐÍ='³ö¿â') and  (ÖÕµã like '{2}%')))", Type, Floor, Floor);

                //string str1 = string.Format(" And (×÷ÒµÀàÐÍ like '%{0}%')  And (((×÷ÒµÀàÐÍ='Èë¿â' OR ×÷ÒµÀàÐÍ like'%ÒÆ¿â%') and  (Æðµã like '{1}%'))  OR ((×÷ÒµÀàÐÍ='³ö¿â') and  (ÖÕµã like '{2}%')))", Type, Floor, Floor);
                string str2 = string.Format(" And ((ÖÕµã like '{0}%') OR (Æðµã like '{1}%'))", Lane, Lane);
                //string str2 = string.Format(" And (((×÷ÒµÀàÐÍ!='³ö¿â') and  (ÖÕµã like '{0}%'))  OR ((×÷ÒµÀàÐÍ='³ö¿â') and  (Æðµã like '{1}%')))", Lane, Lane);

                _manstatus = string.Format("{0}{1}{2}", _manstatus, str1, str2);

                TSMrefresh_Click();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "²Ù×÷Ìáʾ£º", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            _manstatus = " F_Status>=-1 ";

            TSMrefresh_Click();
        }

        private void dgvManager_DataSourceChanged(object sender, EventArgs e)
        {
            dgvManager.Columns["F_Status"].Visible = false;
        }

        private void cmManager_Opening(object sender, CancelEventArgs e)
        {
            if (this.dgvManager.CurrentRow == null)
            {
                TSMmanagerOK.Visible = false;
                //TSMrefresh.Visible = false;
                TSManager.Visible = false;
                toolStripSeparator1.Visible = false;
                //TSMmanagerDisassemble.Visible = false;
                toolStripMenuItem1.Visible = false;
                toolStripSeparator2.Visible = false;
                return;
            }
            if (Convert.ToInt64(this.dgvManager.CurrentRow.Cells["µ÷¶ÈÈÎÎñË÷Òý"].Value) > 0)
            {
                TSMmanagerOK.Visible = true;

                TSManager.Visible = true;
                toolStripSeparator1.Visible = true;
                toolStripSeparator2.Visible = true;
                //TSMmanagerDisassemble.Visible = true;
                toolStripMenuItem1.Visible = true;
                TSManager.Text = "ÈÎÎñÀàÐÍ£º" + this.dgvManager.CurrentRow.Cells["ÈÎÎñÀàÐÍ"].Value.ToString() +
                    "£»µ÷¶ÈÈÎÎñË÷Òý£º" + this.dgvManager.CurrentRow.Cells["µ÷¶ÈÈÎÎñË÷Òý"].Value.ToString();


            }
        }

        private void TSMmanagerOK_Click(object sender, EventArgs e)
        {
             
            char[] cc = new char[1] { '£º' };
            string[] split = TSManager.Text.Split(cc);
            if ((split[1] == "") || (split[2] == ""))
            {
                return;
            }
            try
            {
                char[] scc = new char[1] { '£»' };
                string[] strsplit = split[1].Split(scc);
                int mti = 0;
                long fid = Convert.ToInt64(split[2]);
                if (strsplit[0] == "") return;
                switch (strsplit[0])
                {
                    case "µ÷¶ÈÈÎÎñ":
                        mti = 1;
                        break;
                    case "×Ô¶¯ÈÎÎñ":
                        mti = 2;
                        break;
                    case "ÁÙʱÈÎÎñ":
                        mti = 3;
                        break;
                    case "ÊÖ¹¤ÈÎÎñ":
                        mti = 4;
                        break;
                }
                string cap = strsplit[0];
                string hw = "";
                if (this.dgvManager.CurrentRow.Cells["ÖÕµã»õλ"].Value.ToString() != "-")
                {
                    hw = ",ÖÕµã»õλ:" + this.dgvManager.CurrentRow.Cells["ÖÕµã»õλ"].Value.ToString();
                }
                //20100108
                if (MessageBox.Show("ÄúÈ·ÈÏÌõÂ룺¡°" + this.dgvManager.CurrentRow.Cells["ÌõÂë"].Value.ToString() + "¡±£¬" + cap + split[2] + "ÒѾ­±»°áÔ˵½ÖÕµãÉ豸¡°" + this.dgvManager.CurrentRow.Cells["ÖÕµã"].Value.ToString() + hw + "¡±ÁËÂð£¿", "²Ù×÷Ìáʾ£º", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) != DialogResult.OK)
                {
                    return;
                }
                
                CStaticClass.WcfControl.BeginModifyManageTask(mti, fid, Model.CGeneralFunction.TASKFINISH, new AsyncCallback(ModifyManageTaskCallBack), null);
                //{
                //    MessageBox.Show(cap, "²Ù×÷Ìáʾ£º", MessageBoxButtons.OK, MessageBoxIcon.Error);
                //}
                TSMrefresh_Click();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "²Ù×÷Ìáʾ£º", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void TSMmanagerDisassemble_Click(object sender, EventArgs e)
        {
            
                char[] cc = new char[1] { '£º' };
                string[] split = TSManager.Text.Split(cc);
                if ((split[1] == "") || (split[2] == ""))
                {
                    return;
                }
                char[] scc = new char[1] { '£»' };
                string[] strsplit = split[1].Split(scc);
                int mti = 0;
                int fid = Convert.ToInt32(split[2]);
                if (strsplit[0] == "") return;
                switch (strsplit[0])
                {
                    case "µ÷¶ÈÈÎÎñ":
                        mti = 1;
                        break;
                    case "×Ô¶¯ÈÎÎñ":
                        mti = 2;
                        break;
                    case "ÁÙʱÈÎÎñ":
                        mti = 3;
                        break;
                    case "ÊÖ¹¤ÈÎÎñ":
                        mti = 4;
                        break;
                }
                if (mti == 1)
                {
                    dbo.ExceSQL("update T_Manage_Task set FIntoStepOK='0' where FID=" + fid + " and FIntoStepOK='-' ");
                }
                TSMrefresh_Click();
            
        }

        private void FrmModifyManage_Load(object sender, EventArgs e)
        {
            rbmanRun_Click(sender, e);
        }

        private void toolStripMenuItem1_Click(object sender, EventArgs e)
        {
            //ɾ³ýµ÷¶ÈÈÎÎñ900
            try
            {
                char[] cc = new char[1] { '£º' };
                string[] split = TSManager.Text.Split(cc);
                if ((split[1] == "") || (split[2] == ""))
                {
                    return;
                }
                char[] scc = new char[1] { '£»' };
                string[] strsplit = split[1].Split(scc);
                int mti = 0;
                int fid = Convert.ToInt32(split[2]);
                if (strsplit[0] == "") return;
                switch (strsplit[0])
                {
                    case "µ÷¶ÈÈÎÎñ":
                        mti = 1;
                        break;
                    case "×Ô¶¯ÈÎÎñ":
                        mti = 2;
                        break;
                    case "ÁÙʱÈÎÎñ":
                        mti = 3;
                        break;
                    case "ÊÖ¹¤ÈÎÎñ":
                        mti = 4;
                        break;
                }
                string hw = "";
                if (this.dgvManager.CurrentRow.Cells["Æðµã»õλ"].Value.ToString() != "-")
                {
                    hw = ",Æðµã»õλ:" + this.dgvManager.CurrentRow.Cells["Æðµã»õλ"].Value.ToString();
                }
                string cap = strsplit[0];
                if (MessageBox.Show("ÄúÈ·ÈÏÌõÂ룺¡°" + this.dgvManager.CurrentRow.Cells["ÌõÂë"].Value.ToString() + "¡±£¬" + cap + split[2] + "ÒѾ­±»È¡Ïû²Ù×÷£¬¶øÇÒÈ˹¤°áÔËÍÐÅÌÍ˻ص½ÆðµãÉ豸¡°" + this.dgvManager.CurrentRow.Cells["Æðµã"].Value.ToString() + hw + "¡±ÁËÂð£¿", "²Ù×÷Ìáʾ£º", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) != DialogResult.OK)
                {
                    return;
                }
                
                CStaticClass.WcfControl.BeginModifyManageTask(mti, fid, Model.CGeneralFunction.TASKDELETE, new AsyncCallback(ModifyManageTaskCallBack), null);
                //{
                //    MessageBox.Show(cap, "²Ù×÷Ìáʾ£º", MessageBoxButtons.OK, MessageBoxIcon.Error);
                //}
                TSMrefresh_Click();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "²Ù×÷Ìáʾ£º", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
       
        int GetDeviceKindIdx(int devIdx)
        {
            try
            {
                devinfo = Model.CGetInfo.GetDeviceInfo(devIdx);
                return devinfo.DeviceKind;

            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        long GetManageTaskIndexfromMonitor(int monitorIdx)
        {
            DataView dv = dbo.ExceSQL("SELECT F_ManageTaskIndex FROM T_Monitor_Task WHERE (F_MonitorIndex = " + monitorIdx + ")").Tables[0].DefaultView;
            if (dv.Count > 0)
            {
                return Convert.ToInt64(dv[0]["F_ManageTaskIndex"]);
            }
            else
            {
                return -1;
            }
        }
        int GetManageTaskKindIndexFromMonitor(int monitorIdx)
        {
            DataView dv = dbo.ExceSQL("SELECT F_ManageTaskKindIndex FROM T_Monitor_Task WHERE (F_MonitorIndex = " + monitorIdx + ")").Tables[0].DefaultView;
            if (dv.Count > 0)
            {
                return Convert.ToInt32(dv[0]["F_ManageTaskKindIndex"]);
            }
            else
            {
                return -1;
            }
        }
        int GetDeviceOrderFromMonitor(int MonitorIndex)
        {
            try
            {
                string sql = "select F_DeviceCommandIndex from T_Monitor_Task where (F_DeviceCommandIndex IS NOT NULL) and F_MonitorIndex=" + MonitorIndex;
                DataView dv = dbo.ExceSQL(sql).Tables[0].DefaultView;
                if (dv.Count > 0)
                {
                    return Convert.ToInt32(dv[0]["F_DeviceCommandIndex"]);
                }
                else
                {
                    return -1;
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                string df = "";

                switch (this.comboBox1.Text)
                {
                    case "ÌõÂë":
                        df = "ÌõÂë";
                        break;
                    case "µ÷¶ÈÈÎÎñË÷Òý":
                        df = "µ÷¶ÈÈÎÎñË÷Òý";
                        break;
                    


                    default:
                        return;
                }
                //20100208
                string sql = "select distinct " + df + " from V_Manage_Task ";
                DataView dv = dbo.ExceSQL(sql).Tables[0].DefaultView;
                if (dv.Count > 0)
                {
                    this.textBox1.DataSource = null;
                    this.textBox1.DisplayMember = df;
                    this.textBox1.ValueMember = df;
                    this.textBox1.DataSource = dv;
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        private void dgvManager_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right)
            {
                if ((e.RowIndex >= 0) && (e.ColumnIndex >= 0))
                {
                    //ÈôÐÐÒÑÊÇÑ¡ÖÐ״̬¾Í²»ÔÙ½øÐÐÉèÖÃ
                    if (dgvManager.Rows[e.RowIndex].Selected == false)
                    {
                        dgvManager.ClearSelection();
                        dgvManager.Rows[e.RowIndex].Selected = true;
                    }
                    //ֻѡÖÐÒ»ÐÐʱÉèÖûµ¥Ôª¸ñ
                    if (dgvManager.SelectedRows.Count == 1)
                    {
                        dgvManager.CurrentCell = dgvManager.Rows[e.RowIndex].Cells[e.ColumnIndex];
                    }
                    //µ¯³ö²Ù×÷²Ëµ¥
                    cmManager.Show(MousePosition.X, MousePosition.Y);
                }
            }
        }
        void ModifyManageTaskCallBack(IAsyncResult ar)
        {
            string errtext=string.Empty;
            
            if (CStaticClass.WcfControl.EndModifyManageTask(out errtext, ar) == false)
            {
                MessageBox.Show(errtext, "²Ù×÷Ìáʾ£º", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            if (this.IsDisposed == true) return;
            this.BeginInvoke(new MethodInvoker (delegate()
                {
                    TSMrefresh_Click();
                }
            ));
            
        }

        private void FrmModifyManage_FormClosing(object sender, FormClosingEventArgs e)
        {
            _formInstance = null;
        }

        private void dgvManager_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            if ((e.ColumnIndex >= 0) && (e.RowIndex >= 0))
            {
                dgvManager.ClearSelection();
                dgvManager.Rows[e.RowIndex].Selected = true;
                dgvManager.CurrentCell = dgvManager.Rows[e.RowIndex].Cells[e.ColumnIndex];
                FrmModifyMonitor.FormInstance.comboBox1.Text = "ÌõÂë";
                FrmModifyMonitor.FormInstance.textBox1.Text = dgvManager.CurrentRow.Cells["ÌõÂë"].Value.ToString();
                FrmModifyMonitor.FormInstance.Show();
                FrmModifyMonitor.FormInstance.button1_Click(sender, e);
                this.Visible = false;
            }
        }

        private void rbmanAll_Click(object sender, EventArgs e)
        {
            RadioButton rb = (RadioButton)sender;
            if (rb.Checked == true)
            {
                _manstatus = " F_Status>=-1 ";
            }
            TSMrefresh_Click();
        }

        private void rbmanRun_Click(object sender, EventArgs e)
        {
            if (rbmanRun.Checked == true)
            {
                _manstatus = " F_Status>=1 ";
            }
            TSMrefresh_Click();
        }

        private void rbmanWait_Click(object sender, EventArgs e)
        {
            RadioButton rb = (RadioButton)sender;
            if (rb.Checked == true)
            {
                _manstatus = " F_Status=0 ";
            }
            TSMrefresh_Click();
        }

        private void button3_Click(object sender, EventArgs e)
        {
            FrmRelativeIDSet.FormInstance.Show();
        }

        private void RbmanAll_CheckedChanged(object sender, EventArgs e)
        {

        }
    }
}