private void txtlSrchEmpName_TextChanged(object sender, EventArgs e)
        {
            StaffDetailsSavers staffDetailsSavers = new StaffDetailsSavers();
            dt = staffDetailsSavers.getSearchDetails(txtSrchEmpName.Text, txtSrchEmpNo.Text);

            #region load the datagrid
            dt.Columns.Add("EMPLOYEE_ID");
            for (int i = 0; i <= dt.Rows.Count - 1; i++)
            {
                dt.Rows[i]["EMPLOYEE_ID"] = i + 1;
            }
            dt.Columns["EMPLOYEE_ID"].SetOrdinal(0);

            dt.Columns[0].Caption = "EMPLOYEE ID";
            dt.Columns[1].Caption = "EMPLOYEE NO.";
            dt.Columns[2].Caption = "EMPLOYEE NAME";

            this.dgvView.DataSource = dt.DefaultView;
            dgvView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
            #endregion load the datagrid
        }
        private void LoadDGV()
        {
            StaffDetailsSavers staffSaver = new StaffDetailsSavers(); ;
            dt = staffSaver.getStaffDetails();

            dt.Columns.Add("EMPLOYEE_ID");
            for (int i = 0; i <= dt.Rows.Count - 1; i++)
            {
                dt.Rows[i]["EMPLOYEE_ID"] = i + 1;
            }
            dt.Columns["EMPLOYEE_ID"].SetOrdinal(0);

            this.dgvView.DataSource = dt.DefaultView;
            dgvView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;

            dgvView.Columns[1].HeaderText = "EMPLOYEE_NO";
            dgvView.Columns[2].HeaderText = "EMPLOYEE_NAME";
        }
        private void checkEmpNo(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(txtEmpNo.Text))
            {
                return;
            }

            if (UpdateState != true)
            {
                StaffDetailsSavers staffSaver = new StaffDetailsSavers();
                if (Convert.ToInt16(staffSaver.fetchStaffCount(txtEmpNo.Text)) != 0)
                {
                    MessageBox.Show("Employee Number already exists." + Environment.NewLine + "Please enter a different number", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    txtEmpNo.Text = "";
                    txtEmpNo.Focus();
                }
            }
        }
        private void dgvView_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            DialogResult dr;
            StaffDetailsSavers staffSavers= new StaffDetailsSavers();
            string empNo = Convert.ToString(dgvView.Rows[e.RowIndex].Cells["ER_EMP_NO"].Value);

            # region DeleteUser
            if (DeleteState)
            {
                dr = MessageBox.Show("Do you want to delete the details of Employee " + Convert.ToString(dgvView.Rows[e.RowIndex].Cells["ER_EMP_NAME"].Value), "Delete User", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);
                if (dr == DialogResult.No)
                {
                    return;
                }

                staffSavers.deleteStaffDetails(empNo);
                staffSavers.deleteStaffProof(empNo);

                updateStatus(this, "User Deleted");
                LoadDGV();
                return;
            }
            # endregion delete

            # region PrintUser
            if (PrintState && e.RowIndex != -1)
            {
                WinformPdfViewer wfPdfView = new WinformPdfViewer(Convert.ToString(dgvView.Rows[e.RowIndex].Cells["ER_EMP_NO"].Value));
                wfPdfView.ShowDialog();
                this.Cursor = Cursors.Default;
                return;
            }
            # endregion PrintUser

            # region Modify/User
            dr = MessageBox.Show("Do you want to Modify the details of Employee " + Convert.ToString(dgvView.Rows[e.RowIndex].Cells[2].Value), "Modify Employee Details", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);
            if (dr == DialogResult.No)
            {
                return;
            }

            //add employee number and name to text box
            txtEmpNo.Text = Convert.ToString(dgvView[1, e.RowIndex].Value);
            txtName.Text = Convert.ToString(dgvView[2, e.RowIndex].Value);

            myReader = staffSavers.fetchStaffDetails(txtEmpNo.Text);
            while (myReader.Read())
            {
                txtFthrName.Text = (myReader["ER_FATHER_NAME"].ToString());
                dtpDob.Value = ((DateTime)myReader["ER_EMP_DOB"]);

                txtRead.Text = (myReader["ER_EMP_READ"].ToString());
                txtWrite.Text = (myReader["ER_EMP_WRITE"].ToString());
                txtSpeak.Text = (myReader["ER_EMP_SPEAK"].ToString());

                txtPermAdd.Text = (myReader["ER_EMP_PER_ADDRESS"].ToString());
                txtPhoneNo.Text = (myReader["ER_EMP_PHONE_NO"].ToString());
                txtPresAdd.Text = (myReader["ER_EMP_PRES_ADDRESS"].ToString());
                txtMobNo.Text = (myReader["ER_EMP_MOBILE_NO"].ToString());

                txtEduQual.Text = (myReader["ER_EMP_EDU_QUAL"].ToString());
                txtOthrQual.Text = (myReader["ER_EMP_OTHR_QUAL"].ToString());
                txtExpInSec.Text = (myReader["ER_EMP_EXPERIENCE_SEC_SER"].ToString());
                txtAbout.Text = (myReader["ER_EMP_ABOUT"].ToString());

                txtNameRef1.Text = (myReader["ER_REF1_NAME"].ToString());
                txtHouseNoRef1.Text = (myReader["ER_REF1_HOUSE_NO"].ToString());
                txtStreetNoRef1.Text = (myReader["ER_REF1_STREET_NO"].ToString());
                txtPostOffRef1.Text = (myReader["ER_REF1_POST_OFFICE"].ToString());
                txtDistRef1.Text = (myReader["ER_REF1_DISTRICT"].ToString());
                txtStateRef1.Text = (myReader["ER_REF1_STATE"].ToString());
                txtTeleRef1.Text = (myReader["ER_REF1_TELEPHONE"].ToString());
                txtPincodeRef1.Text = (myReader["ER_REF1_PINCODE"].ToString());
                txtOccRef1.Text = (myReader["ER_REF1_OCCUPATION"].ToString());

                txtNameRef2.Text = (myReader["ER_REF2_NAME"].ToString());
                txtHouseNoRef2.Text = (myReader["ER_REF2_HOUSE_NO"].ToString());
                txtStreetNoRef2.Text = (myReader["ER_REF2_STREET_NO"].ToString());
                txtPostOffRef2.Text = (myReader["ER_REF2_POST_OFFICE"].ToString());
                txtDistRef2.Text = (myReader["ER_REF2_DISTRICT"].ToString());
                txtStateRef2.Text = (myReader["ER_REF2_STATE"].ToString());
                txtTeleRef2.Text = (myReader["ER_REF2_TELEPHONE"].ToString());
                txtPincodeRef2.Text = (myReader["ER_REF2_PINCODE"].ToString());
                txtOccRef2.Text = (myReader["ER_REF2_OCCUPATION"].ToString());

                if (myReader["ER_EMP_MARITAL_STATUS"].ToString() == "Single")
                {
                    rdbSingle.Checked = true;
                    grbMarital.Enabled = false;
                }
                else
                {
                    rdbMarried.Checked = true;
                    txtWifeName.Text = (myReader["ER_WIFE_NAME"].ToString());
                    txtNoOfChild.Text = (myReader["ER_EMP_NOCHILD"].ToString());
                    if (File.Exists(myReader["EP_EMP_NOCHILD_PROOF"].ToString()))
                        txtNoOfChildProof.Text = (myReader["EP_EMP_NOCHILD_PROOF"].ToString());
                }

                pcbEmpImage.ImageLocation = (myReader["EP_EMP_PIC"].ToString());
                txtDobProof.Text = (myReader["EP_EMP_DOB_PROOF"].ToString());
                txtPerAddressProof.Text = (myReader["EP_EMP_PER_ADDRESS_PROOF"].ToString());
                txtPresAddressProof.Text = (myReader["EP_EMP_PRES_ADDRESS_PROOF"].ToString());
                txtEduProof.Text = (myReader["EP_EMP_EDU_QUAL_PROOF"].ToString());
                if (File.Exists(myReader["EP_EMP_OTHR_QUAL_PROOF"].ToString()))
                    txtOthrQualProof.Text = (myReader["EP_EMP_OTHR_QUAL_PROOF"].ToString());

                EmpPicext = Path.GetExtension(pcbEmpImage.ImageLocation);
                DOBext = Path.GetExtension(txtDobProof.Text);
                PermAddext = Path.GetExtension(txtPerAddressProof.Text);
                PresAddext = Path.GetExtension(txtPresAddressProof.Text);
                EduQualext = Path.GetExtension(txtEduProof.Text);

                if (!string.IsNullOrEmpty(txtNoOfChildProof.Text))
                {
                    NOChildext = Path.GetExtension(txtNoOfChildProof.Text);
                }

                if (!string.IsNullOrEmpty(txtOthrQualProof.Text))
                {
                    OthrQualext = Path.GetExtension(txtOthrQualProof.Text);
                }
            }

            //menustate close
            MenuMode(this, false);

            //pnlview
            pnlUsrView.Visible = false;

            //pnlnew.visible = true
            tabControl1.Visible = true;

            UpdateState = true;
            this.Cursor = Cursors.Default;
            # endregion ModifyUser
        }
        protected override void btnsave_Click(object sender, EventArgs e)
        {
            StaffDetailsSavers staffSaver = new StaffDetailsSavers();
            string[] Dest_Image_ImagePath = { };

            if (rdbSingle.Checked == false && rdbMarried.Checked == false)
            {
                MessageBox.Show("Please enter your Marital Status", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }

            string val = txtEmpNo.Text;
            List<string> exception_Control_List = new List<string> { "txtNoOfChildProof", "txtOthrQualProof" };
            if (rdbSingle.Checked == true)
            {
                //list of controls not to be considered on check
                exception_Control_List.Add("txtWifeName");
                exception_Control_List.Add("txtNoOfChild");
            }

            //check if textbox is empty or not
            if (com.isempty(tabControl1, true, exception_Control_List) == true)
                return;

            List<string> StrocProcKey = new List<string> { "pER_EMP_NO", "pER_EMP_NAME", "pER_FATHER_NAME", "pER_EMP_DOB", "pER_EMP_READ", "pER_EMP_WRITE", "pER_EMP_SPEAK", "pER_EMP_PER_ADDRESS", "pER_EMP_PRES_ADDRESS", "pER_EMP_PHONE_NO", "pER_EMP_MOBILE_NO", "pER_EMP_EDU_QUAL", "pER_EMP_OTHR_QUAL", "pER_EMP_EXPERIENCE_SEC_SER", "pER_REF1_NAME", "pER_REF1_HOUSE_NO", "pER_REF1_STREET_NO", "pER_REF1_POST_OFFICE", "pER_REF1_DISTRICT", "pER_REF1_STATE", "pER_REF1_TELEPHONE", "pER_REF1_PINCODE", "pER_REF1_OCCUPATION", "pER_REF2_NAME", "pER_REF2_HOUSE_NO", "pER_REF2_STREET_NO", "pER_REF2_POST_OFFICE", "pER_REF2_DISTRICT", "pER_REF2_STATE", "pER_REF2_TELEPHONE", "pER_REF2_PINCODE", "pER_REF2_OCCUPATION", "pER_EMP_ABOUT", "pER_EMP_MARITAL_STATUS", "pER_EMP_DOM", "pER_WIFE_NAME", "pER_EMP_NOCHILD" };

            List<object> StroProcVal = new List<object> { txtEmpNo.Text, txtName.Text, txtFthrName.Text, dtpDob.Value.ToString("yyyy-MM-dd"), txtRead.Text, txtWrite.Text, txtSpeak.Text, txtPermAdd.Text, txtPresAdd.Text, txtPhoneNo.Text, txtMobNo.Text, txtEduQual.Text, txtOthrQual.Text, txtExpInSec.Text, txtNameRef1.Text, txtHouseNoRef1.Text, txtStreetNoRef1.Text, txtPostOffRef1.Text, txtDistRef1.Text, txtStateRef1.Text, txtTeleRef1.Text, txtPincodeRef1.Text, txtOccRef1.Text, txtNameRef2.Text, txtHouseNoRef2.Text, txtStreetNoRef2.Text, txtPostOffRef2.Text, txtDistRef2.Text, txtStateRef2.Text, txtTeleRef2.Text, txtPincodeRef2.Text, txtOccRef2.Text, txtAbout.Text, rdbMarried.Checked ? "Married" : "Single", rdbSingle.Checked ? null : dtpDom.Value.ToString("yyyy-MM-dd"), string.IsNullOrEmpty(txtWifeName.Text) ? null : txtWifeName.Text, string.IsNullOrEmpty(txtNoOfChild.Text) ? null : txtNoOfChild.Text, (User.UserId).ToString(), DateTime.Now.Date.ToString("yyyy-MM-dd") + " " + DateTime.Now.ToString("HH:mm:ss") };

            if (UpdateState != true)
            {
                StrocProcKey.Add("pER_CREATED_BY");
                StrocProcKey.Add("pER_CREATED_ON");

                Dictionary<String, Object> dict = new Dictionary<String, Object>();
                for (int i = 0; i < StroProcVal.Count; i++)
                {
                    dict.Add(StrocProcKey[i], StroProcVal[i]);
                }

                if (MysqlConn.dictionaryToTable(dict, "insert_Emp_Details") >= 1)
                {
                    updateStatus(this, "Values Saved");

                    if (rdbSingle.Checked == true)
                        com.clearAllControl(grbMarital, true);

                    Dest_Image_ImagePath = transfer_Images(val);
                    staffSaver.saveStaffProof(Dest_Image_ImagePath, txtEmpNo.Text, rdbMarried.Checked, (!string.IsNullOrEmpty(txtNoOfChildProof.Text)), string.IsNullOrEmpty(txtOthrQualProof.Text));
                }
            }
            else
            {
                StrocProcKey.Add("pER_MODIFIED_BY");
                StrocProcKey.Add("pER_MODIFIED_ON");

                Dictionary<String, Object> dict = new Dictionary<String, Object>();
                for (int i = 0; i < StroProcVal.Count; i++)
                {
                    dict.Add(StrocProcKey[i], StroProcVal[i]);
                }

                if (staffSaver.saveUpdateDetails(dict) >= 1)
                {
                    // make grpMarital empty
                    if (rdbSingle.Checked == true)
                        com.clearAllControl(grbMarital, true);

                    Dest_Image_ImagePath = transfer_Images(val);
                    if (Path.GetExtension(Dest_Image_ImagePath[0]) == "")
                        Dest_Image_ImagePath[0] = Dest_Image_ImagePath[0] + ".jpg";

                    string[] updsource = { "EP_EMP_PIC", "EP_EMP_DOB_PROOF", "EP_EMP_PER_ADDRESS_PROOF", "EP_EMP_PRES_ADDRESS_PROOF", "EP_EMP_EDU_QUAL_PROOF" };
                    staffSaver.saveStaffProof(updsource, Dest_Image_ImagePath, txtEmpNo.Text, rdbMarried.Checked, (!string.IsNullOrEmpty(txtNoOfChildProof.Text)), (!string.IsNullOrEmpty(txtOthrQualProof.Text)));

                }
                txtEmpNo.Enabled = true;
                UpdateState = false;
            }
            //clear the form
            com.clearAllControl(tabControl1, true);
            txtEmpNo.Focus();
        }