Ejemplo n.º 1
0
        private void button4_Click(object sender, EventArgs e)
        {
            vTestCreatDeLector = serviciuLectori.GetTestCreatDeLectorByName(comboBox3.Text);
            vCursant           = serviciuLectori.GetCursantByCont(comboBox4.Text);
            var lista = serviciuLectori.GetListaTesteSalvateInBazaDeDateByID_CURSANT_ID_TestCreatDeLector(vCursant.IdCursant, vTestCreatDeLector.IdTest);

            foreach (var v in lista)
            {
                vListTestSalvatInBD.Add(v);
            }

            ActualizareInformatii(index);

            textBox1.ReadOnly = false;

            punctaje = new double[vTestCreatDeLector.NrIntrebari];
        }
        public ActionResult GenereazaTest()
        {
            if (!verificareSesiuneLogareLector())
            {
                return(RedirectToAction("Index", "Lector"));
            }

            string numeDisciplinaGenereazaTest = Request.Form["numeDisciplinaGenereazaTest"];

            if (numeDisciplinaGenereazaTest != null && numeDisciplinaGenereazaTest.Length != 0)
            {
                Session["numeDisciplinaGenereazaTest"] = numeDisciplinaGenereazaTest;
            }

            string genereazaTest = Request.Form["genereazaTest"];

            if (genereazaTest != null)
            {
                string        numarIntrebari        = Request.Form["numarIntrebari"].ToString();
                string        timpTest              = Request.Form["timpTest"].ToString();
                string        contLectorText        = Session["LogareLector"].ToString();
                List <string> numeCapitoleSelectate = new List <string>();

                //vom itera peste capitolele selectate si vom vedea daca avem un request de la formular
                var capitole = serviciu.GetListaCapitoleByNumeDisciplina(Session["numeDisciplinaGenereazaTest"].ToString());
                for (int p = 0; p < capitole.Length; p++)
                {
                    if (Request.Form[p.ToString()] != null)
                    {
                        numeCapitoleSelectate.Add(capitole[p].NumeCapitol);
                    }
                }



                //avem toate informatiile pt a genera un test
                // urmeaza codul pentru a genera acel test
                int nrCapitole = 0;

                string numeTest = "Test ";
                foreach (var v in numeCapitoleSelectate)
                {
                    numeTest += v + " ";
                    nrCapitole++;
                }

                numeTest += "- " + numarIntrebari + " intrebari";

                var contLector = serviciu.GetLectorByCont(contLectorText);

                TestCreatDeLector test = new TestCreatDeLector
                {
                    NumeTest        = numeTest,
                    LectoriIdLector = contLector.IdLector,
                    Timp            = timpTest,
                    NrIntrebari     = Convert.ToInt32(numarIntrebari)
                };

                test.State = State.Added;
                serviciu.TestCreatDeLectorUDI(test);

                test = serviciu.GetTestCreatDeLectorByName(numeTest);

                //algoritm intrebari
                int nrIntrebariTest    = Convert.ToInt32(numarIntrebari);
                int intrebariPeCapitol = 0;


                intrebariPeCapitol = nrIntrebariTest / nrCapitole;
                int primulTake = 0;

                if (intrebariPeCapitol * nrCapitole == nrIntrebariTest)
                {
                    primulTake = intrebariPeCapitol;
                }
                else
                {
                    primulTake = intrebariPeCapitol + nrIntrebariTest - intrebariPeCapitol * nrCapitole;
                }

                foreach (var v in numeCapitoleSelectate)
                {
                    var disci = serviciu.GetCapitolPentruTest(v.ToString());

                    // de motificat astfel incat acest take sa fie random
                    //OrderBy(r => Guid.NewGuid()) -- este pentru a lua intrebarile random din baza de date
                    var m = disci.Intrebaris.OrderBy(r => Guid.NewGuid()).Take(primulTake);
                    primulTake = intrebariPeCapitol;

                    foreach (var z in m)
                    {
                        // adaugam intrebarile pentru testul selectat
                        IntrebariTeste iT = new IntrebariTeste
                        {
                            TestCreatDeLectorIdTest = test.IdTest,
                            IntrebariIdIntrebare    = z.IdIntrebare
                        };

                        iT.State = State.Added;
                        serviciu.IntrebariTesteUDI(iT);
                    }
                }


                // am creat testul
                Session["numeDisciplinaGenereazaTest"] = null;
                ViewBag.MesajCreareTest = "true";
            }

            //var listaDiscipline = serviciu.GetListDisciplineByNumeLector(Session["LogareLector"].ToString());
            var listaDiscipline = serviciu.GetListaDiscipline();

            return(View(listaDiscipline.ToArray()));
        }