示例#1
0
        private void fillQAOld()
        {
            DB   clone;
            bool cloned = false;

            if (inter.IdB.Topics.Count == 0)
            {
                clone = inter.IdB;
            }
            else
            {
                clone  = new DB();
                cloned = true;
            }
            DB.TAMQA.AnswersTableAdapter.Fill(clone.Answers);
            DB.TAMQA.QuestionsTableAdapter.Fill(clone.Questions);
            DB.TAMQA.TopicsTableAdapter.Fill(clone.Topics);

            if (cloned)
            {
                foreach (var item in clone.Topics)
                {
                    inter.IdB.Topics.ImportRow(item);
                }
                DB.TAMQA.TopicsTableAdapter.Update(inter.IdB.Topics);
                foreach (var item in clone.Questions)
                {
                    inter.IdB.Questions.ImportRow(item);

                    DB.TAMQA.QuestionsTableAdapter.Update(inter.IdB.Questions);
                    DB.QuestionsRow last    = inter.IdB.Questions.Last();
                    AnswersRow[]    answers = item.GetAnswersRows();
                    foreach (var a in answers)
                    {
                        inter.IdB.Answers.ImportRow(a);
                        AnswersRow la = inter.IdB.Answers.Last();
                        la.QID = last.QID;
                    }

                    DB.TAMQA.AnswersTableAdapter.Update(inter.IdB.Answers);
                }
            }
            // DB.TAMQA.AnswersTableAdapter.Fill(inter.IdB.Answers);
            // DB.TAMQA.QuestionsTableAdapter.Fill(inter.IdB.Questions); DB.TAMQA.TopicsTableAdapter.Fill(inter.IdB.Topics);
        }
示例#2
0
文件: BS.cs 项目: hnjm/Exam
        /*
         * public bool Working
         * {
         *
         *  set
         *  {
         *      if (!value)
         *      {
         *          //    Exam.CurrentChanged += Exam_CurrentChanged;
         *          ExamsList.CurrentChanged += currentChanged;
         *          //     Student.CurrentChanged += Exam_CurrentChanged;
         *          StudentsList.CurrentChanged += currentChanged;
         *          Questions.CurrentChanged += currentChanged;
         *          //    Answers.CurrentChanged += Exam_CurrentChanged;
         *          //      Preferences.CurrentChanged += Exam_CurrentChanged;
         *          LogPref.CurrentChanged += currentChanged;
         *          //      Order.CurrentChanged += Exam_CurrentChanged;
         *          //     Class.CurrentChanged += Exam_CurrentChanged;
         *          //     AYear.CurrentChanged += Exam_CurrentChanged;
         *
         *          Topics.CurrentChanged += currentChanged;
         *      }
         *      else
         *      {
         *          //    Exam.CurrentChanged += Exam_CurrentChanged;
         *          ExamsList.CurrentChanged -= currentChanged;
         *          //     Student.CurrentChanged += Exam_CurrentChanged;
         *          StudentsList.CurrentChanged -= currentChanged;
         *          Questions.CurrentChanged -= currentChanged;
         *          //    Answers.CurrentChanged += Exam_CurrentChanged;
         *          //      Preferences.CurrentChanged += Exam_CurrentChanged;
         *          LogPref.CurrentChanged -= currentChanged;
         *          //      Order.CurrentChanged += Exam_CurrentChanged;
         *          //     Class.CurrentChanged += Exam_CurrentChanged;
         *          //     AYear.CurrentChanged += Exam_CurrentChanged;
         *
         *          Topics.CurrentChanged -= currentChanged;
         *      }
         *  }
         * }
         */
        private void currentChanged(object sender, EventArgs e)
        {
            if (Working)
            {
                return;
            }

            try
            {
                // DataGridView dgv = sender as DataGridView;
                BindingSource bs = sender as BindingSource;
                if (bs.Current == null)
                {
                    return;
                }
                DataRowView view = (bs.Current as DataRowView);
                DataRow     row  = view.Row;
                if (row == null)
                {
                    return;
                }

                //   byte[] auxiliar = null;

                if (sender.Equals(this.Topics))
                {
                    DB.TopicsRow          r  = row as DB.TopicsRow;
                    DB.QuestionsDataTable dt = set.Questions;
                    Questions.Filter = dt.TopicIDColumn.ColumnName + " = " + r.TopicID;
                }
                else if (sender.Equals(this.Questions))
                {
                    DB.QuestionsRow r  = row as DB.QuestionsRow;
                    string          dt = set.Answers.QIDColumn.ColumnName;
                    Answers.Filter = dt + " = " + r.QID;
                }
                else if (sender.Equals(this.RandomQuestions))
                {
                    DB.QuestionsRow r  = row as DB.QuestionsRow;
                    string          dt = auxiliar.Answers.QIDColumn.ColumnName;
                    RandomAnswers.Filter = dt + " = " + r.QID;
                }
                else if (sender.Equals(this.Exam))
                {
                    string      dt = auxiliar.Questions.QIDColumn.ColumnName;
                    DB.ExamsRow r  = row as DB.ExamsRow;
                    //        string[] aux  = r.AIDString.Split(',');
                    RandomQuestions.Position = RandomQuestions.Find(dt, r.QID);
                    Questions.Position       = Questions.Find(dt, r.QID);
                }
                else if (sender.Equals(this.StudentsList))
                {
                    DB.StuListRow       r  = row as DB.StuListRow;
                    DB.StudentDataTable dt = set.Student;
                    Student.Filter = dt.EIDColumn.ColumnName + " = " + r.SLID;

                    //     DB.TAM.ExamsTableAdapter.FillByEID(dt, r.EID);
                }
                else if (sender.Equals(this.ExamsList))
                {
                    DB.ExamsListRow r = row as DB.ExamsListRow;
                    //     DB.ExamsDataTable dt = set.Exams;
                    Exam.Filter = auxiliar.Exams.EIDColumn.ColumnName + " = " + r.EID;
                    Working     = true;
                    auxiliar.PopulateExamQuestions(ref r);
                    Working = false;
                    Exam.MoveFirst();
                }
                else if (sender.Equals(this.LogPref))
                {
                    DB.PreferencesRow     r  = row as DB.PreferencesRow;
                    DB.ExamsListDataTable dt = set.ExamsList;

                    ExamsList.Filter = dt.PIDColumn.ColumnName + " = " + r.PID;

                    DB.TAM.ExamsListTableAdapter.FillByPID(dt, r.PID);

                    /*
                     * if (!r.IsELDataNull())
                     * {
                     * // string pid = ExasmPath + r.PID.ToString() + ".xml";
                     *  auxiliar = r.ELData;
                     *  Tables.ReadDTBytes(ExasmPath,ref auxiliar, ref dt);
                     * }
                     * else
                     * {
                     *  DB.TAM.ExamsListTableAdapter.FillByPID(dt, r.PID);
                     *  // MakeTableBytes(ref r);
                     * }
                     */
                }
            }
            catch (SystemException ex)
            {
            }
        }
示例#3
0
        /// <summary>
        /// MAIN FILE FOR GENERATING AN EXAM
        /// </summary>
        /// <param name="p"></param>
        private ExamsListRow doOneExam(ref PreferencesRow p)
        {
            inter.Status = Resources.Creando + inter.IdB.Questions.Count + Resources.PregAleatorias;

            Func <DB.QuestionsRow, bool> selector = x =>
            {
                bool?ok = x.TopicsRow?.UseIt;
                if (ok == null)
                {
                    ok = false;
                }
                return((bool)ok);
            };
            ///RANDOMNIZE RAW QUESTIONS
            IEnumerable <DB.QuestionsRow> questions = inter.IdB.Questions.Where(selector).ToArray(); //toma todas las preguntas

            if (questions.Count() == 0)
            {
                inter.Status = "No hay preguntas seleccionadas";
                return(null);
            }

            int times = 3;

            questions = Tools.RandomnizeStringsTimes(questions, times);

            IList <ExamsRow> exams = new List <ExamsRow>(); //todas las preguntas randomnizadas seran guardadas primero en esta lista

            foreach (QuestionsRow q in questions)
            {
                ExamsRow er = inter.IdB.Exams.NewExamsRow(); //crea rows pero no los metas en la tabla
                er.QID = q.QID;                              //dales el id de la pregunta
                exams.Add(er);                               //agregalos a la lista
            }

            inter.Status = Resources.Filtrando;

            IEnumerable <ExamsRow> join = weightThem(ref p, ref exams); //not re-ordered // preguntas seleccionadas y filtradas

            Application.DoEvents();

            inter.Status = Resources.OrderAleatorio; // de las preguntas del examen ya pesadas (filtradaS)

            join = Tools.RandomnizeStringsTimes(join, times);

            inter.Status = Resources.Seleccionando + join.Count() + Resources.PregAleatorias;
            Application.DoEvents();

            foreach (ExamsRow ex in join)
            {
                inter.IdB.Exams.AddExamsRow(ex); //agregalas a la tabla para salvarlas

                DB.QuestionsRow          q    = ex.QuestionsRow;
                IEnumerable <AnswersRow> answ = q.GetAnswersRows();
                ///RANDOMIZE RAW ASWERS
                answ = Tools.RandomnizeStringsTimes(answ, times);
                //CREATE EXAM QUESTION CODE! AIDSTRING
                string code = CreateExamQuestionCode(ref answ);
                ex.AIDString = code;
                ExamsRow auxiliar = ex;
                MakeTableBytes(ref auxiliar, examsPath);
            }

            DB.TAM.ExamsTableAdapter.Update(inter.IdB.Exams);
            Application.DoEvents();

            ExamsListRow ls = inter.IdB.AddExam(ref p);

            // Image img = Tools.CreateQRCode(ls.GUID, qrSizeDB); ls.QRCode = Tools.imageToByteArray(img);
            DB.TAM.ExamsListTableAdapter.Update(inter.IdB.ExamsList);
            Application.DoEvents();
            //este orden es importante

            foreach (DB.ExamsRow re in join)
            {
                re.EID = ls.EID;                              //ahora asocia las preguntas a cada examen generado
            }
            DB.TAM.ExamsTableAdapter.Update(inter.IdB.Exams);
            Application.DoEvents();

            return(ls);
        }