public DataSet GenerateExam(Int64 QuestionLimit, Int64 CategoryID) { DataSet Rv = new DataSet(); DataTable Dt_Question = null; DataTable Dt_Question_Answer = null; ClsConnection_SharePoint Cn = new ClsConnection_SharePoint(); try { Cn.Connect(); Dt_Question = Cn.GetData_Empty("RecruitmentTestQuestions").Clone(); Dt_Question_Answer = Cn.GetData_Empty("RecruitmentTestQuestionAnswers").Clone(); DataTable Dt_Source_Question = Cn.GetData("RecruitmentTestQuestions", null); DataTable Dt_Source_Question_Answer = Cn.GetData("RecruitmentTestQuestionAnswers", null); ; Int32 QuestionCount = Dt_Source_Question.Rows.Count; if (QuestionLimit < QuestionCount) { Dt_Source_Question.Columns.Add("Ct", typeof(Int64)); Int64 Ct = 0; foreach (DataRow Dr in Dt_Source_Question.Rows) { Ct++; Dr["Ct"] = Ct; } Random Rnd = new Random(); Ct = 0; while (Ct < QuestionLimit) { Int64 QuestionID = 0; Int64 Selected_Question_Ct; bool IsValid = false; while (!IsValid) { Selected_Question_Ct = Rnd.Next(1, QuestionCount); DataRow[] Inner_Arr_Dr = Dt_Source_Question.Select(@"Ct = " + Selected_Question_Ct); if (Inner_Arr_Dr.Length > 0) { QuestionID = Convert.ToInt64(Methods.IsNull(Inner_Arr_Dr[0]["RecruitmentTestQuestions"], 0)); } Inner_Arr_Dr = Dt_Question.Select(@"RecruitmentTestQuestionsID = " + QuestionID); if (Inner_Arr_Dr.Length == 0) { IsValid = true; } } DataRow[] Arr_Dr_Question = Dt_Source_Question.Select(@"RecruitmentTestQuestionsID = " + QuestionID); DataRow Dr_Question = null; if (Arr_Dr_Question.Length > 0) { Dr_Question = Arr_Dr_Question[0]; } List<Layer01_Constants.Str_Parameters> List_Sp = new List<Layer01_Constants.Str_Parameters>(); List_Sp.Add(new Layer01_Constants.Str_Parameters("RecruitmentTestQuestionsID", QuestionID)); List_Sp.Add(new Layer01_Constants.Str_Parameters("Question", Dr_Question["Question"])); Methods.AddDataRow(ref Dt_Question, List_Sp); DataRow[] Arr_Dr_Question_Answer = Dt_Source_Question_Answer.Select("RecruitmentTestQuestionsID = " + QuestionID); foreach (DataRow Inner_Dr in Arr_Dr_Question_Answer) { Dt_Question_Answer.Rows.Add(Inner_Dr.ItemArray); } Ct++; } } else { Dt_Question = Dt_Source_Question.Copy(); Dt_Question_Answer = Dt_Source_Question_Answer.Copy(); } } catch { } finally { Cn.Close(); } Rv.Tables.Add(Dt_Question); Rv.Tables.Add(Dt_Question_Answer); return Rv; }
public void Connect() { this.mConnection = new ClsConnection_SharePoint(); this.mConnection.Connect(); }