/// <summary>
        /// Kiểm tra câu hỏi đã có trong đề này chưa
        /// </summary>
        /// <param name="threadID"></param>
        /// <param name="questionID"></param>
        /// <returns></returns>
        bool TestCodeThreadQuestion(string threadID, string questionID)
        {
            TestOnlineDataContext db  = new TestOnlineDataContext();
            tblThreadQuestion     tbl = db.tblThreadQuestions.SingleOrDefault(c => c.ThreadsID == threadID && c.QuestionsID.ToString() == questionID);

            if (tbl != null)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
 protected void btnEdit1_Click(object sender, EventArgs e)
 {
     if (txtMaxScores.Text == "" || txtThreadID.Text == "" || txtThreadName.Text == "" || ddlSubject.SelectedIndex == (ddlSubject.Items.Count - 1))
     {
         lblThongBao.Text    = "Bạn chưa nhập đầy đủ thông tin";
         lblThongBao.Visible = true;
     }
     else
     {
         if (cls.KtraNumberFloat(txtMaxScores.Text) == true)
         {
             if (fulFile.HasFile)
             {
                 #region Tạo đề thi
                 tblThread th = db.tblThreads.SingleOrDefault(c => c.ThreadsID == txtThreadID.Text);
                 if (th != null)
                 {
                     UploadFile(fulFile);
                     th.SubjectID = ddlSubject.SelectedValue.ToString().Trim();
                     th.TheadName = txtThreadName.Text;
                     th.ThreadsID = txtThreadID.Text;
                     th.MaxScores = float.Parse(txtMaxScores.Text);
                     th.Status    = 4;
                     //tbl.DateTest = DateTime.Parse(date);
                     th.CreateDate = DateTime.Now;
                     db.SubmitChanges();
                     lblThongBao.Text    = "Bạn đã sửa thành công";
                     lblThongBao.Visible = true;
                     LoadGrid();
                     txtThreadID.Text = sinhmatudong();
                     #endregion
                     #region lấy dữ liệu từ excel vào Gridview
                     // OpenFileDialog openFi = new OpenFileDialog();
                     // fulFile.filt.Filter = "Kiểu file: (*.xls)|*.xls";
                     ex.Application excelObj = new Microsoft.Office.Interop.Excel.Application();
                     // if (openFi.ShowDialog() == DialogResult.OK)
                     // {
                     ex.Workbook  myWorkBook = excelObj.Workbooks.Open(Server.MapPath(@"/FileUpload/Question/" + fulFile.FileName), 0, true, 5, "", "", true, ex.XlPlatform.xlWindows, "\t", false, false, 0, true, 0, 0);
                     ex.Sheets    sheets     = myWorkBook.Worksheets;
                     ex.Worksheet worksheet  = (ex.Worksheet)sheets.get_Item(1);
                     object       rowIndex   = 7;
                     int          index      = 0;
                     int          count      = 7;
                     while (((ex.Range)worksheet.Cells[rowIndex, 2]).Value2 != null)
                     {
                         if (Convert.ToString(((ex.Range)worksheet.Cells[rowIndex, 1]).Value2) != null && ((Convert.ToString(((ex.Range)worksheet.Cells[rowIndex, 3]).Value2) != null)))
                         {
                             string subjectCode = Convert.ToString(((ex.Range)worksheet.Cells[2, 2]).Value2);
                             string content     = Convert.ToString(((ex.Range)worksheet.Cells[rowIndex, 2]).Value2);
                             string daA         = Convert.ToString(((ex.Range)worksheet.Cells[rowIndex, 3]).Value2);
                             string daB         = Convert.ToString(((ex.Range)worksheet.Cells[rowIndex, 4]).Value2);
                             string daC         = Convert.ToString(((ex.Range)worksheet.Cells[rowIndex, 5]).Value2);
                             string daD         = Convert.ToString(((ex.Range)worksheet.Cells[rowIndex, 6]).Value2);
                             string answer      = Convert.ToString(((ex.Range)worksheet.Cells[rowIndex, 7]).Value2);
                             string level       = Convert.ToString(((ex.Range)worksheet.Cells[rowIndex, 8]).Value2);
                             if (ddlSubject.SelectedValue.ToString().ToLower().Trim() == subjectCode.ToLower().Trim())
                             {
                                 if (TestQuestionCode(content) == false)
                                 {
                                     tblQuestion tbl = new tblQuestion();
                                     tbl.Content = content;
                                     tbl.ChocieA = daA;
                                     tbl.ChocieB = daB;
                                     tbl.ChocieC = daC;
                                     tbl.ChocieD = daD;
                                     if (answer.Trim().ToLower() == "a")
                                     {
                                         tbl.Answer = daA;
                                     }
                                     if (answer.Trim().ToLower() == "b")
                                     {
                                         tbl.Answer = daB;
                                     }
                                     if (answer.Trim().ToLower() == "c")
                                     {
                                         tbl.Answer = daC;
                                     }
                                     if (answer.Trim().ToLower() == "d")
                                     {
                                         tbl.Answer = daD;
                                     }
                                     tbl.SubjectID = subjectCode;
                                     tbl.Level     = int.Parse(level);
                                     db.tblQuestions.InsertOnSubmit(tbl);
                                     db.SubmitChanges();
                                     if (TestCodeThreadQuestion(th.ThreadsID, tbl.QuestionsID.ToString()) == false)
                                     {
                                         tblThreadQuestion thq = new tblThreadQuestion();
                                         thq.QuestionsID = tbl.QuestionsID;
                                         thq.ThreadsID   = th.ThreadsID;
                                         db.tblThreadQuestions.InsertOnSubmit(thq);
                                         db.SubmitChanges();
                                     }
                                 }
                                 else
                                 {
                                     tblQuestion tbQuestion = db.tblQuestions.SingleOrDefault(c => c.Content.Trim().ToLower() == content.ToLower());
                                     if (tbQuestion != null)
                                     {
                                         if (TestCodeThreadQuestion(th.ThreadsID, tbQuestion.QuestionsID.ToString()) == false)
                                         {
                                             tblThreadQuestion thq = new tblThreadQuestion();
                                             thq.QuestionsID = tbQuestion.QuestionsID;
                                             thq.ThreadsID   = th.ThreadsID;
                                             db.tblThreadQuestions.InsertOnSubmit(thq);
                                             db.SubmitChanges();
                                         }
                                     }
                                 }
                             }
                             else
                             {
                                 lblThongBao.Text    = "Mã môn học và mã file excel bạn chọn không trùng nhau";
                                 lblThongBao.Visible = true; break;
                             }
                             index++;
                         }
                         rowIndex = ++count;
                     }
                     #endregion
                 }
             }
             else
             {
                 lblThongBao.Text    = "Chưa chọn file câu hỏi";
                 lblThongBao.Visible = true;
             }
         }
         else
         {
             lblThongBao.Text    = "Tổng điểm bạn phải nhập số";
             lblThongBao.Visible = true;
         }
     }
 }
        void taodethi(int mucdo, string mamon, string made)
        {
            List <string> ketqua = new List <string>();

            //de kho
            if (mucdo == 1)
            {
                int           socaukho       = int.Parse(txtNumberQuestion.Text) * 60 / 100;
                int           socaude        = int.Parse(txtNumberQuestion.Text) * 20 / 100;
                int           socautrungbinh = int.Parse(txtNumberQuestion.Text) - (socaukho + socaude);
                var           cl             = from c in db.tblQuestions where c.SubjectID == mamon select new { c.QuestionsID, c.Level };
                List <string> caukho         = new List <string>();
                List <string> cautrungbinh   = new List <string>();
                List <string> caude          = new List <string>();
                foreach (var item in cl)
                {
                    if (item.Level == 1)
                    {
                        caude.Add(item.QuestionsID.ToString());
                    }
                    if (item.Level == 2)
                    {
                        cautrungbinh.Add(item.QuestionsID.ToString());
                    }
                    if (item.Level == 3)
                    {
                        caukho.Add(item.QuestionsID.ToString());
                    }
                }
                int i = 0;
                while (i != socaude)
                {
                    Random r   = new Random();
                    int    tmp = r.Next(caude.Count);
                    ketqua.Add(caude[tmp]);
                    caude.Remove(caude[tmp]);
                    i++;
                }
                int j = 0;
                while (j != socautrungbinh)
                {
                    Random r   = new Random();
                    int    tmp = r.Next(cautrungbinh.Count);
                    ketqua.Add(cautrungbinh[tmp]);
                    cautrungbinh.Remove(cautrungbinh[tmp]);
                    j++;
                }
                int k = 0;
                while (k != socaukho)
                {
                    Random r   = new Random();
                    int    tmp = r.Next(caukho.Count);
                    ketqua.Add(caukho[tmp]);
                    caukho.Remove(caukho[tmp]);
                    k++;
                }
            }
            //de trung binh
            if (mucdo == 2)
            {
                int           socaukho       = int.Parse(txtNumberQuestion.Text) * 50 / 100;
                int           socaude        = int.Parse(txtNumberQuestion.Text) * 25 / 100;
                int           socautrungbinh = int.Parse(txtNumberQuestion.Text) - (socaukho + socaude);
                var           cl             = from c in db.tblQuestions where c.SubjectID == mamon select new { c.QuestionsID, c.Level };
                List <string> caukho         = new List <string>();
                List <string> cautrungbinh   = new List <string>();
                List <string> caude          = new List <string>();
                foreach (var item in cl)
                {
                    if (item.Level == 1)
                    {
                        caude.Add(item.QuestionsID.ToString());
                    }
                    if (item.Level == 2)
                    {
                        cautrungbinh.Add(item.QuestionsID.ToString());
                    }
                    if (item.Level == 3)
                    {
                        caukho.Add(item.QuestionsID.ToString());
                    }
                }
                int i = 0;
                while (i != socaude)
                {
                    Random r   = new Random();
                    int    tmp = r.Next(caude.Count);
                    ketqua.Add(caude[tmp]);
                    caude.Remove(caude[tmp]);
                    i++;
                }
                int j = 0;
                while (j != socautrungbinh)
                {
                    Random r   = new Random();
                    int    tmp = r.Next(cautrungbinh.Count);
                    ketqua.Add(cautrungbinh[tmp]);
                    cautrungbinh.Remove(cautrungbinh[tmp]);
                    j++;
                }
                int k = 0;
                while (k != socaukho)
                {
                    Random r   = new Random();
                    int    tmp = r.Next(caukho.Count);
                    ketqua.Add(caukho[tmp]);
                    caukho.Remove(caukho[tmp]);
                    k++;
                }
            }
            // de de
            if (mucdo == 3)
            {
                int           socaukho       = int.Parse(txtNumberQuestion.Text) * 40 / 100;
                int           socaude        = int.Parse(txtNumberQuestion.Text) * 30 / 100;
                int           socautrungbinh = int.Parse(txtNumberQuestion.Text) - (socaukho + socaude);
                var           cl             = from c in db.tblQuestions where c.SubjectID == mamon select new { c.QuestionsID, c.Level };
                List <string> caukho         = new List <string>();
                List <string> cautrungbinh   = new List <string>();
                List <string> caude          = new List <string>();
                foreach (var item in cl)
                {
                    if (item.Level == 1)
                    {
                        caude.Add(item.QuestionsID.ToString());
                    }
                    if (item.Level == 2)
                    {
                        cautrungbinh.Add(item.QuestionsID.ToString());
                    }
                    if (item.Level == 3)
                    {
                        caukho.Add(item.QuestionsID.ToString());
                    }
                }
                int i = 0;
                while (i != socaude)
                {
                    Random r   = new Random();
                    int    tmp = r.Next(caude.Count);
                    ketqua.Add(caude[tmp]);
                    caude.Remove(caude[tmp]);
                    i++;
                }
                int j = 0;
                while (j != socautrungbinh)
                {
                    Random r   = new Random();
                    int    tmp = r.Next(cautrungbinh.Count);
                    ketqua.Add(cautrungbinh[tmp]);
                    cautrungbinh.Remove(cautrungbinh[tmp]);
                    j++;
                }
                int k = 0;
                while (k != socaukho)
                {
                    Random r   = new Random();
                    int    tmp = r.Next(caukho.Count);
                    ketqua.Add(caukho[tmp]);
                    caukho.Remove(caukho[tmp]);
                    k++;
                }
            }
            tblThreadQuestion tbl;

            foreach (string item in ketqua)
            {
                tbl             = new tblThreadQuestion();
                tbl.QuestionsID = int.Parse(item);
                tbl.ThreadsID   = made;
                db.tblThreadQuestions.InsertOnSubmit(tbl);
                db.SubmitChanges();
            }
        }