/// <summary>
 ///删除选中数据信息的方法
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void tslDelCamera()
 {
     try
     {
         int j = 0;
         if (dgvCamera.SelectedRows.Count > 0)//选中删除
         {
             if (MessageBox.Show("确定要删除吗?", "提示", MessageBoxButtons.YesNo) == DialogResult.Yes)
             {
                 //选中数量
                 int    count = dgvCamera.SelectedRows.Count;
                 string id    = "";
                 //遍历
                 for (int i = 0; i < count; i++)
                 {
                     int cameraid = int.Parse(this.dgvCamera.SelectedRows[i].Cells["Camera_ID"].Value.ToString());
                     Expression <Func <Camera, bool> > funuserinfo = n => n.Camera_ID == cameraid;
                     string strContent = LinQBaseDao.Query("select Camera_Name from Camera where Camera_ID=" + cameraid).Tables[0].Rows[0][0].ToString();
                     if (CameraDAL.DeleteToMany(funuserinfo))
                     {
                         j++;
                         CommonalityEntity.WriteLogData("删除", "删除摄像头名称为:" + strContent + "的信息", CommonalityEntity.USERNAME);//添加操作日志
                     }
                 }
                 if (j == count)
                 {
                     MessageBox.Show("成功删除", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                 }
                 else
                 {
                     MessageBox.Show("删除失败", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                 }
             }
         }
         else//没有选中
         {
             MessageBox.Show("请选择要删除的行!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
         }
     }
     catch
     {
         CommonalityEntity.WriteTextLog("摄像头管理 tslDelCamera()+");
     }
     finally
     {
         LogInfoLoad("");
     }
 }
        /// <summary>
        /// 查重方法
        /// </summary>
        /// <returns></returns>
        private bool btnCheckupdate()
        {
            bool rbool = true;

            try
            {
                string PositionName  = this.cbxPositionName.Text.ToString();
                int    lenth         = cbxDrivewayName.Text.Trim().Length;
                string DrivewayName  = cbxDrivewayName.Text.Trim().Substring(0, 4);
                string DrivewayType  = cbxDrivewayName.Text.Trim().Substring(lenth - 1, 1);
                string CameraName    = this.txtCamera_Name.Text.Trim();
                string CameraCardAdd = this.txtCamera_CardAdd.Text.Trim();
                //判断名称是否已存在
                Expression <Func <View_Camera_Driveway_Position, bool> > funviewCamera = n => n.Position_Name == PositionName && n.Driveway_Name == DrivewayName && n.Camera_Name == CameraName && n.Camera_Name != this.dgvCamera.SelectedRows[0].Cells["Camera_Name"].Value.ToString();
                if (CameraDAL.QueryView(funviewCamera).Count() > 0)
                {
                    PublicClass.ShowToolTip(ToolTipIcon.Info, "提示", "该摄像头名称已存在", txtCamera_Name, this);
                    txtCamera_Name.Focus();
                    rbool = false;;
                }
                Expression <Func <View_Camera_Driveway_Position, bool> > funviewCamera1 = n => n.Position_Name == PositionName && n.Driveway_Name == DrivewayName && n.Camera_AddCard == CameraCardAdd && n.Camera_AddCard != this.dgvCamera.SelectedRows[0].Cells["Camera_AddCard"].Value.ToString();
                if (CameraDAL.QueryView(funviewCamera1).Count() > 0)
                {
                    PublicClass.ShowToolTip(ToolTipIcon.Info, "提示", "该摄像头地址码已存在", txtCamera_CardAdd, this);
                    txtCamera_CardAdd.Focus();
                    rbool = false;;
                }
                return(rbool);
            }
            catch
            {
                CommonalityEntity.WriteTextLog("摄像头管理 btnCheck()");
                rbool = false;
            }
            return(rbool);
        }
        /// <summary>
        /// 双击组件时发生
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void dgvCamera_DoubleClick(object sender, EventArgs e)
        {
            this.btnUpdate.Enabled = true;
            this.btnSave.Enabled   = false;
            if (this.dgvCamera.SelectedRows.Count > 0)//选中行
            {
                if (dgvCamera.SelectedRows.Count > 1)
                {
                    MessageBox.Show("修改只能选中一行!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
                else
                {
                    //修改的值
                    int ID = int.Parse(this.dgvCamera.SelectedRows[0].Cells["Camera_ID"].Value.ToString());
                    Expression <Func <View_Camera_Driveway_Position, bool> > funviewinto = n => n.Camera_ID == ID;
                    foreach (var n in CameraDAL.QueryView(funviewinto))
                    {
                        if (n.Position_Name != null)
                        {
                            // 门岗名称
                            this.cbxPositionName.Text = n.Position_Name;
                        }
                        if (n.Driveway_ID > 0)
                        {
                            //通道名称
                            this.cbxDrivewayName.Text = n.Driveway_Name + n.Driveway_Type;
                        }
                        if (n.Camera_AddCard != null)
                        {
                            // 摄像头地址码
                            this.txtCamera_CardAdd.Text = n.Camera_AddCard;
                        }
                        if (n.Camera_Name != null)
                        {
                            // 摄像头名称
                            this.txtCamera_Name.Text = n.Camera_Name;
                        }

                        if (n.Camera_State != null)
                        {
                            // 摄像头状态
                            this.cbxCamera_State.Text = n.Camera_State;
                        }
                        if (n.Camera_Location != null)
                        {
                            // 摄像头拍照位置
                            this.cbxCamera_Location.Text = n.Camera_Location;
                        }
                        if (n.Camera_Remark != null)
                        {
                            // 摄像头备注
                            this.txtCamera_Remark.Text = n.Camera_Remark;
                        }
                        break;
                    }
                }
            }
            else
            {
                MessageBox.Show("请选择要修改的行!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }
        /// <summary>
        /// “修改”  按钮的单击事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnUpdate_Click(object sender, EventArgs e)
        {
            try
            {
                if (this.txtCamera_Name.Text == "")
                {
                    PublicClass.ShowToolTip(ToolTipIcon.Info, "提示", "摄像头名称不能为空!", txtCamera_Name, this);
                    return;
                }
                if (this.txtCamera_CardAdd.Text == "")
                {
                    PublicClass.ShowToolTip(ToolTipIcon.Info, "提示", "摄像头地址码不能为空!", txtCamera_CardAdd, this);
                    return;
                }

                string PositionName = this.cbxPositionName.Text.ToString();
                int    lenth        = cbxDrivewayName.Text.Trim().Length;
                string DrivewayName = cbxDrivewayName.Text.Trim().Substring(0, 4);
                string DrivewayType = cbxDrivewayName.Text.Trim().Substring(lenth - 1, 1);
                int    DrivewayID   = 0;
                var    p            = DrivewayDAL.GetViewDrivewayName(String.Format("select Driveway_ID from View_DrivewayPosition where Position_Name='{0}' and  Driveway_Name= '{1}' and Driveway_Type= '{2}'", PositionName, DrivewayName, DrivewayType));
                if (p != null)
                {
                    foreach (var n in p)
                    {
                        if (n.Driveway_ID > 0)
                        {
                            DrivewayID = n.Driveway_ID;
                        }
                        break;
                    }
                }
                if (this.dgvCamera.SelectedRows.Count > 0)//选中行
                {
                    if (dgvCamera.SelectedRows.Count > 1)
                    {
                        MessageBox.Show("修改只能选中一行!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                    else
                    {
                        if (!btnCheckupdate())
                        {
                            return;                    // 去重复
                        }
                        Expression <Func <Camera, bool> > pc = n => n.Camera_ID == int.Parse(this.dgvCamera.SelectedRows[0].Cells["Camera_ID"].Value.ToString());
                        string          id         = "";
                        string          strfront   = "";
                        string          strcontent = "";
                        Action <Camera> ap         = s =>
                        {
                            strfront             = s.Camera_Driveway_ID + "," + s.Camera_Name + "," + s.Camera_AddCard + "," + s.Camera_State + "," + s.Camera_Location + "," + s.Camera_Remark;
                            s.Camera_Driveway_ID = DrivewayID;
                            s.Camera_Name        = this.txtCamera_Name.Text.Trim();
                            s.Camera_AddCard     = this.txtCamera_CardAdd.Text.Trim();
                            s.Camera_State       = this.cbxCamera_State.Text;
                            s.Camera_Location    = this.cbxCamera_Location.Text;
                            s.Camera_Remark      = this.txtCamera_Remark.Text.Trim();
                            s.Camera_DVIName     = cmbDVI.Text;
                            strcontent           = s.Camera_Driveway_ID + "," + s.Camera_Name + "," + s.Camera_AddCard + "," + s.Camera_State + "," + s.Camera_Location + "," + s.Camera_Remark;
                            id = s.Camera_ID.ToString();
                        };

                        if (CameraDAL.Update(pc, ap))
                        {
                            MessageBox.Show("修改成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            CommonalityEntity.WriteLogData("修改", "更新编号为:" + id + "的摄像头信息;修改前:" + strfront + ";修改后:" + strcontent, CommonalityEntity.USERNAME);//添加操作日志
                        }
                        else
                        {
                            MessageBox.Show("修改失败", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        }
                    }
                }
            }
            catch
            {
                CommonalityEntity.WriteTextLog("摄像头管理 btnUpdate_Click()");
            }
            finally
            {
                LogInfoLoad("");
                this.btnUpdate.Enabled = false;
                this.btnSave.Enabled   = true;
            }
        }
        /// <summary>
        /// “保存” 按钮的单击事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnSave_Click(object sender, EventArgs e)
        {
            try
            {
                if (this.txtCamera_Name.Text == "")
                {
                    PublicClass.ShowToolTip(ToolTipIcon.Info, "提示", "摄像头名称不能为空!", txtCamera_Name, this);
                    return;
                }
                if (this.txtCamera_CardAdd.Text == "")
                {
                    PublicClass.ShowToolTip(ToolTipIcon.Info, "提示", "摄像头地址码不能为空!", txtCamera_CardAdd, this);
                    return;
                }

                string PositionName = this.cbxPositionName.Text.ToString();
                int    lenth        = cbxDrivewayName.Text.Trim().Length;
                string DrivewayName = cbxDrivewayName.Text.Trim().Substring(0, 4);
                string DrivewayType = cbxDrivewayName.Text.Trim().Substring(lenth - 1, 1);
                int    DrivewayID   = 0;
                var    p            = DrivewayDAL.GetViewDrivewayName(String.Format("select Driveway_ID from View_DrivewayPosition where Position_Name='{0}' and  Driveway_Name= '{1}' and Driveway_Type= '{2}'", PositionName, DrivewayName, DrivewayType));
                if (p != null)
                {
                    foreach (var n in p)
                    {
                        if (n.Driveway_ID > 0)
                        {
                            DrivewayID = n.Driveway_ID;
                        }
                        break;
                    }
                }
                if (!btnCheck())
                {
                    return;              // 去重复
                }
                var Cameraadd = new Camera
                {
                    Camera_Driveway_ID = DrivewayID,
                    Camera_Name        = this.txtCamera_Name.Text.Trim(),
                    Camera_AddCard     = this.txtCamera_CardAdd.Text.Trim(),
                    Camera_State       = this.cbxCamera_State.Text,
                    Camera_Location    = this.cbxCamera_Location.Text,
                    Camera_Remark      = this.txtCamera_Remark.Text.Trim(),
                    Camera_DVIName     = cmbDVI.Text
                };

                if (CameraDAL.InsertOneCamera(Cameraadd))
                {
                    MessageBox.Show("添加成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    CommonalityEntity.WriteLogData("新增", "新增摄像头名称为:" + txtCamera_Name.Text.Trim() + "的信息", CommonalityEntity.USERNAME);//添加操作日志
                }
                else
                {
                    MessageBox.Show("添加失败", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }
            catch
            {
                CommonalityEntity.WriteTextLog("摄像头管理 btnSave_Click()");
            }
            finally
            {
                LogInfoLoad("");
            }
        }