public IActionResult Start(decimal id, AntwoordViewModel antwoordViewModel)
        {
            var groep = _groepRepository.GetById(id);

            if (groep == null)
            {
                return(NotFound());
            }


            if (groep.getCurrentGroepPad(groep.Progress).Paden.Antwoord.Equals(antwoordViewModel.Antwoord))
            {
                groep.ResetFout();
                _groepRepository.SaveChanges();
                if (groep.Contactleer)
                {
                    return(RedirectToAction("Action", "Groep", new { Id = groep.Id }));
                }
                else
                {
                    groep.VerhoogProgress();
                    _groepRepository.SaveChanges();
                    if (groep.Progress <= groep.GroepPad.Count)
                    {
                        return(RedirectToAction("Start", "Groep", new { Id = groep.Id }));
                    }
                    else
                    {
                        return(View("Schatkist"));
                    }
                }
            }
            else
            {
                TempData["error"] = "Oplossing fout!";
                if (groep.Fout == 3)
                {
                    groep.Blok();
                    _groepRepository.SaveChanges();

                    return(RedirectToAction("Feedback", "Groep", new { Id = groep.Id }));
                }
                else if (groep.Fout < 3)
                {
                    groep.VerhoogFout();
                    _groepRepository.SaveChanges();

                    if (groep.Fout == 3)
                    {
                        groep.Blok();
                        _groepRepository.SaveChanges();

                        return(RedirectToAction("Feedback", "Groep", new { Id = groep.Id }));
                    }
                }
            }


            return(RedirectToAction("Start", "Groep", new { Id = groep.Id }));
        }
 public ActionResult VerbeterVegetatieVragen(Leerling leerling, [Bind(Prefix = "Antwoorden")] AntwoordViewModel antwoorden)
 {
     if (ModelState.IsValid)
     {
         try
         {
             var vm             = new OefeningLocatieVegTypesIndexViewModel(leerling);
             int index          = 0;
             int juist          = 0;
             var klimatogrammen = leerling.GeefKlimatogrammenDerdeGraad().ToList();
             foreach (var vraag in vm.Vragen)
             {
                 var klimatogram = klimatogrammen[index];
                 var antwoord    = antwoorden.Antwoord[index];
                 var res         = leerling.Graad.DeterminatieTabel.Determineer(klimatogram);
                 vraag.Correct = res.VegetatieType.Naam.Equals(antwoord);
                 if (vraag.Correct.Value)
                 {
                     juist++;
                 }
                 index++;
             }
             vm.AllesJuist = juist == antwoorden.Antwoord.Length;
             vm.Antwoorden = antwoorden;
             return(View("VegetatieTypes", vm));
         }
         catch (Exception exception)
         {
             ModelState.AddModelError("", exception.Message);
         }
     }
     return(View());
 }
        public void ValideertVragenFoutief()
        {
            AntwoordViewModel aVM = new AntwoordViewModel(new string[] { "Juli" });

            ViewResult result = _vraagController.Index(new Leerling {
                Graad = _graadMock.Object, Klimatogram = _mockKlimatogram.Object
            },
                                                       aVM) as ViewResult;

            VragenIndexViewModel vivm = result.Model as VragenIndexViewModel;

            Assert.IsNotNull(vivm.Vragen.ElementAt(0).Resultaat);
            Assert.IsFalse(vivm.Vragen.ElementAt(0).Resultaat.Value);
        }
        public void VerbeterVegetatieVragenGeeftVoorCorrectAntwoordTrue()
        {
            Leerling          leerling   = _leerling.Object;
            Klimatogram       k          = _mockKlimatogram.Object;
            AntwoordViewModel antwoorden = new AntwoordViewModel()
            {
                Antwoord = new[] { leerling.Graad.DeterminatieTabel.Determineer(k).VegetatieType.Naam }
            };
            ViewResult result = _locatieOefeningController.VerbeterVegetatieVragen(_leerling.Object, antwoorden) as ViewResult;

            OefeningLocatieVegTypesIndexViewModel vm = result.Model as OefeningLocatieVegTypesIndexViewModel;

            Assert.IsTrue(vm.AllesJuist.Value);
        }
        public void VerbeterVegetatieVragenGeeftEenViewWeer()
        {
            Leerling          leerling   = _leerling.Object;
            Klimatogram       k          = _mockKlimatogram.Object;
            AntwoordViewModel antwoorden = new AntwoordViewModel()
            {
                Antwoord = new[] { "blabla" }
            };
            ViewResult result = _locatieOefeningController.VerbeterVegetatieVragen(_leerling.Object, antwoorden) as ViewResult;

            OefeningLocatieVegTypesIndexViewModel vm = result.Model as OefeningLocatieVegTypesIndexViewModel;

            Assert.IsNotNull(vm);
        }
        public void VerbeterVegetatieVragenGeeftVoorFoutiefAntwoordGeeftFalse()
        {
            Leerling          leerling   = _leerling.Object;
            Klimatogram       k          = _mockKlimatogram.Object;
            AntwoordViewModel antwoorden = new AntwoordViewModel()
            {
                Antwoord = new[] { "blabla" }
            };
            ViewResult result = _locatieOefeningController.VerbeterVegetatieVragen(_leerling.Object, antwoorden) as ViewResult;

            OefeningLocatieVegTypesIndexViewModel vm = result.Model as OefeningLocatieVegTypesIndexViewModel;

            Assert.IsFalse(vm.AllesJuist.Value);
        }
        public ActionResult Index(Leerling leerling, [Bind(Prefix = "Antwoorden")] AntwoordViewModel antwoorden)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    ActionResult route = RedirectIndienNodig(leerling);
                    if (route != null)
                    {
                        return(route);
                    }

                    string[] antwden = leerling.ValideerVragen(antwoorden.Antwoord);

                    AntwoordViewModel    antw    = new AntwoordViewModel(antwden);
                    VragenIndexViewModel vraagVM = new VragenIndexViewModel(leerling.GeefVragen(), leerling.Klimatogram)
                    {
                        Antwoorden = antwoorden
                    };
                    int index = 0;
                    vraagVM.AllesJuist =
                        leerling.Graad.Vragen.Where(v =>
                    {
                        var res = v.ValideerVraag(antwoorden.Antwoord[index], leerling.Klimatogram);
                        var vr  = vraagVM.Vragen.ElementAt(index++);
                        switch (res)
                        {
                        case Resultaat.Juist:
                            vr.Resultaat = true;
                            break;

                        case Resultaat.Fout:
                            vr.Resultaat = false;
                            break;

                        default:
                            vr.Resultaat = null;
                            break;
                        }
                        return(res != Resultaat.Juist);
                    }).Count() == 0;
                    return(View(vraagVM));
                }
                catch (Exception exception)
                {
                    ModelState.AddModelError("", exception.Message);
                }
            }
            return(View());
        }
        public void AlleVragenZijnCorrect()
        {
            string[]          antwoorden = { "September" };
            AntwoordViewModel avm        = new AntwoordViewModel(antwoorden);



            ViewResult result = _vraagController.Index(new Leerling {
                Graad = _graadMock.Object, Klimatogram = _mockKlimatogram.Object
            },
                                                       avm) as ViewResult;

            VragenIndexViewModel vIVM = result.Model as VragenIndexViewModel;

            foreach (VraagViewModel vVM in vIVM.Vragen)
            {
                Assert.IsNotNull(vVM.Resultaat);
                Assert.IsTrue(vVM.Resultaat.Value);
            }
        }
        public IActionResult Index(String id)
        {
            List <Double> lijst1 = new List <double>();
            List <Double> lijst2 = new List <double>();
            List <Double> lijst3 = new List <double>();

            List <String> comp1 = new List <string>();
            List <String> comp2 = new List <string>();
            List <String> comp3 = new List <string>();



            IngevuldeVacature vac = _ingevuldeVacatureRepository.GetBy(id);
            ICollection <RapportViewModel> models = new List <RapportViewModel>();

            ViewBag.naam     = vac.VoornaamSollicitant + " " + vac.AchternaamSollicitant;
            ViewBag.telefoon = vac.TelefoonSollicitant;
            ViewBag.mail     = vac.EmailSollicitant;
            ViewBag.title    = vac.Vacature.Functie;
            ViewBag.desc     = vac.Vacature.Beschrijving;
            ViewBag.datum    = vac.DatumIngevuld;
            foreach (ResponseGroup rg in vac.ResponseGroup.OrderBy(o => o.Competentie.Type).ThenBy(ol => ol.Competentie.Id))
            {
                RapportViewModel rvm = new RapportViewModel();
                rvm.CompetentieNaam = rg.Competentie.Naam;
                rvm.Verklaring      = rg.Competentie.Verklaring;
                rvm.CompetentieType = rg.Competentie.Type;
                if (rg.Competentie.Vignet != null)
                {
                    rvm.Vignet = rg.Competentie.Vignet.Naam;
                }
                else
                {
                    rvm.Vignet = "LEEG";
                }
                foreach (Response r in rg.Responses.OrderBy(r => r.Vraag.VraagVolgorde))
                {
                    AntwoordViewModel avm = new AntwoordViewModel();

                    avm.VraagStelling = r.Vraag.VraagStelling;

                    avm.Antwoord = r.Vraag.OutputString;
                    if (r.OpenAntwoord != null && r.OpenAntwoord.Trim().Length != 0)
                    {
                        avm.Antwoord = avm.Antwoord.Replace("$$", r.OpenAntwoord);
                    }
                    else
                    {
                        if (r.OptieKeuze != null)
                        {
                            if (r.OptieKeuze.Output != null && r.OptieKeuze.Output.Trim().Length != 0)
                            {
                                avm.Antwoord = avm.Antwoord.Replace("$$", r.OptieKeuze.Output);
                            }
                            else
                            {
                                avm.Antwoord = avm.Antwoord.Replace("$$", r.OptieKeuze.Input);
                            }
                        }
                        else
                        {
                            avm.Antwoord = avm.Antwoord = "LEEG";
                        }
                    }


                    /* hier moet nog gezorgd worden dat de rubric kan vergeleken worden (dus soli en bedrijf antwoorden matchen)*/
                    if (r.Vraag.type.Equals(VraagType.RUBRIC))
                    {
                        int result;
                        VacatureCompetentie temp = vac.Vacature.CompetentiesLijst.Where(c => c.Competentie.Vragen.OrderBy(co => co.VraagVolgorde).FirstOrDefault().Id.Equals(r.Vraag.Id)).FirstOrDefault();

                        if (r.OptieKeuze == null || temp.GeselecteerdeOptie == null)
                        {
                            result = 0;
                        }
                        else
                        {
                            result = r.OptieKeuze.Score <= temp.GeselecteerdeOptie.Score ? 1 : 0;
                        }

                        if (r.Vraag.Competentie.Type.Equals(CompetentieType.GRONDHOUDING))
                        {
                            lijst1.Add(result);
                            comp1.Add(r.Vraag.Competentie.Naam);
                        }
                        if (r.Vraag.Competentie.Type.Equals(CompetentieType.KENNIS))
                        {
                            lijst2.Add(result);
                            comp2.Add(r.Vraag.Competentie.Naam);
                        }
                        if (r.Vraag.Competentie.Type.Equals(CompetentieType.VAARDIGHEDEN))
                        {
                            lijst3.Add(result);
                            comp3.Add(r.Vraag.Competentie.Naam);
                        }
                    }
                    ViewBag.comp1 = comp1;
                    ViewBag.comp2 = comp2;
                    ViewBag.comp3 = comp3;
                    rvm.vms.Add(avm);
                }
                models.Add(rvm);
            }
            ICollection <Group <string, RapportViewModel> > groups = new List <Group <string, RapportViewModel> >();
            var results = models.GroupBy(m => m.CompetentieType).ToList();

            FixDonutDiagrammen(lijst1, lijst2, lijst3);


            foreach (var item in results)
            {
                groups.Add(new Group <string, RapportViewModel> {
                    Key = item.Key.ToString(), Values = item.ToList()
                });
            }
            return(View(groups));
        }