public ActionResult Back(int back) { PitanjeOdgovorVM.PitanjeInfo model = svaPitanja[back - 2]; model.PitanjeOrder = back - 1; return(View("Test", model)); }
public ActionResult Test(string[] odabir) { if (odabir == null) { TempData["error"] = true; return(RedirectToAction("Index")); } int brojOblasti = odabir.Length; int brojPitanjaPoOblasti = 10 / brojOblasti; int ostalo = 10 - brojPitanjaPoOblasti * brojOblasti; int[] pitanjaIzOb = new int[brojOblasti]; for (int i = 0; i < brojOblasti; i++) { pitanjaIzOb[i] = brojPitanjaPoOblasti; if (i <= ostalo - 1) { pitanjaIzOb[i] += 1; } } trenutniTest = new Test(); trenutniTest.IsDeleted = false; trenutniTest.KorisnikId = LogiraniKorisnik.Id; trenutniTest.Rezultat = 0; trenutniTest.VrijemePocetka = DateTime.Now; trenutniTest.VrijemeZavrsetka = DateTime.Now; List <TestOblast> tob = new List <TestOblast>(); int[] listaOblasti = new int[brojOblasti]; for (int i = 0; i < brojOblasti; i++) { listaOblasti[i] = int.Parse(odabir[i]); TestOblast to = new TestOblast { TestId = trenutniTest.Id, OblastId = int.Parse(odabir[i]) }; tob.Add(to); } db.TestOblast.AddRange(tob); db.Testovi.Add(trenutniTest); db.SaveChanges(); List <PitanjeOdgovorVM.PitanjeInfo>[] listaPitanjaPoOblastima = new List <PitanjeOdgovorVM.PitanjeInfo> [brojOblasti]; svaPitanja = new List <PitanjeOdgovorVM.PitanjeInfo>(); int trenutnaOblast; for (int i = 0; i < brojOblasti; i++) { trenutnaOblast = listaOblasti[i]; listaPitanjaPoOblastima[i] = db.Pitanja .Where(b => b.OblastId == trenutnaOblast) .OrderBy(a => Guid.NewGuid()).Take(pitanjaIzOb[i]) .Select(c => new PitanjeOdgovorVM.PitanjeInfo { Id = c.Id, Pitanje = c.Tekst, Bod = c.Bod, Vrsta = c.VrstaPitanja.Naziv, PitanjeOrder = 1, Odgovori = db.Odgovori .Where(d => d.PitanjeId == c.Id) .Select(e => new PitanjeOdgovorVM.OdgovorInfo { Id = e.Id, Odgovor = e.Tekst, IsCorrect = e.Tacan }).ToList() }).ToList(); svaPitanja.AddRange(listaPitanjaPoOblastima[i]); } List <PitanjeOdgovorVM.PitanjeInfo> randomPitanja = ShuffleList <PitanjeOdgovorVM.PitanjeInfo>(svaPitanja); svaPitanja = randomPitanja; PitanjeOdgovorVM.PitanjeInfo model = svaPitanja[0]; aktivniTest = new List <TestOdgovor>(); KorisnikOdgovori = new List <KorisnikOdgovor>(); return(View(model)); }
public ActionResult Rezultat(int pitanje, int[] oznaceniOdgovori) { PitanjeOdgovorVM.PitanjeInfo kraj = svaPitanja[pitanje - 1]; if (oznaceniOdgovori != null) { Test t = db.Testovi.SingleOrDefault(c => c.Id == trenutniTest.Id); t.VrijemeZavrsetka = DateTime.Now; TestOdgovor pit = new TestOdgovor { TestId = trenutniTest.Id, PitanjeId = kraj.Id, OdgovorTacan = false }; db.TestOdgovori.Add(pit); db.SaveChanges(); if (oznaceniOdgovori != null) { foreach (int item in oznaceniOdgovori) { KorisnikOdgovor ko = new KorisnikOdgovor { OdgovorId = item, TestOdgovorId = pit.Id }; KorisnikOdgovori.Add(ko); } } aktivniTest = db.TestOdgovori.Where(v => v.TestId == trenutniTest.Id).ToList(); db.KorisnikOdgovori.AddRange(KorisnikOdgovori); db.SaveChanges(); int brojOdg = 0; int brojPog = 0; for (int i = 0; i < svaPitanja.Count; i++) { for (int j = 0; j < svaPitanja[i].Odgovori.Count; j++) { for (int k = 0; k < KorisnikOdgovori.Count; k++) { if (svaPitanja[i].Vrsta == "MC-MA") { if (brojOdg == 0) { int l = svaPitanja[i].Id; brojOdg = db.Odgovori.Where(m => m.PitanjeId == l && m.Tacan == true).Count(); } if (svaPitanja[i].Odgovori[j].Id == KorisnikOdgovori[k].OdgovorId && svaPitanja[i].Odgovori[j].IsCorrect) { brojPog++; } if (brojOdg == brojPog) { aktivniTest[i].OdgovorTacan = true; } } else if (svaPitanja[i].Odgovori[j].Id == KorisnikOdgovori[k].OdgovorId && svaPitanja[i].Odgovori[j].IsCorrect) { aktivniTest[i].OdgovorTacan = true; } } } brojOdg = 0; brojPog = 0; } db.SaveChanges(); float ukupnoBodova = db.TestOdgovori.Where(r => r.TestId == trenutniTest.Id).Sum(z => z.Pitanje.Bod); float?osvojenoBodova = db.TestOdgovori.Where(c => c.OdgovorTacan == true && c.TestId == trenutniTest.Id).Sum(d => (int?)d.Pitanje.Bod); float bodovi = 0; if (osvojenoBodova != null) { bodovi = (float)osvojenoBodova; } float model = (bodovi / ukupnoBodova) * 100; t.Rezultat = model; db.SaveChanges(); return(View("Rezultat", model)); } else { ModelState.AddModelError("", "Odabrati barem jedan odgovor!"); return(View("Test", kraj)); } }