public void TestBewerk_ModelError_RedirectsToIndex()
        {
            _controller.ModelState.AddModelError("", "Model error");

            LoonkostViewModel model = new LoonkostViewModel();
            var result = _controller.Bewerk(_analyse, model) as RedirectToActionResult;

            Assert.Equal("Index", result?.ActionName);
        }
        public void TestBewerk_RepoGooitException_RedirectsToIndex()
        {
            _analyseRepository.Setup(r => r.Save()).Throws(new Exception());
            LoonkostViewModel model = new LoonkostViewModel {
                Id = 1
            };

            var result = _controller.Bewerk(_analyse, model) as RedirectToActionResult;

            Assert.Equal("Index", result?.ActionName);

            _exceptionLogRepository.Verify(r => r.Add(It.IsAny <ExceptionLog>()), Times.Once);
            _exceptionLogRepository.Verify(r => r.Save(), Times.Once);
        }
        public IActionResult Bewerk(Analyse analyse, LoonkostViewModel model)
        {
            try
            {
                analyse = _analyseRepository.GetById(analyse.AnalyseId, Soort.Loonkost);
                Loonkost         kost = KostOfBaatExtensions.GetBy(analyse.Loonkosten, model.Id);
                DecimalConverter dc   = new DecimalConverter();
                if (ModelState.IsValid && kost != null)
                {
                    kost.Id                     = model.Id;
                    kost.Beschrijving           = model.Beschrijving;
                    kost.AantalUrenPerWeek      = model.AantalUrenPerWeek;
                    kost.BrutoMaandloonFulltime = dc.ConvertToDecimal(model.BrutoMaandloonFulltime);
                    kost.Doelgroep              = _doelgroepRepository.GetById(model.Doelgroep.DoelgroepId);
                    kost.Ondersteuningspremie   = model.Ondersteuningspremie;
                    kost.AantalMaandenIBO       = model.AantalMaandenIBO;
                    kost.IBOPremie              = dc.ConvertToDecimal(model.IBOPremie);

                    if (kost.Doelgroep == null)
                    {
                        TempData["error"] =
                            "Opgelet! U heeft nog geen doelgroep geselecteerd. Er zal dus nog geen resultaat " +
                            "berekend worden bij deze kost.";
                    }

                    analyse.DatumLaatsteAanpassing = DateTime.Now;
                    _analyseRepository.Save();

                    TempData["message"] = Meldingen.OpslaanSuccesvolKost;
                }
            }
            catch (Exception e)
            {
                if (e is ArgumentException || e is FormatException)
                {
                    ModelState.AddModelError("", e.Message);
                }
                else
                {
                    _exceptionLogRepository.Add(new ExceptionLog(e, "LoonKosten", "Bewerk -- GET --"));
                    _exceptionLogRepository.Save();
                    TempData["error"] = Meldingen.OpslaanFoutmeldingKost;
                    return(RedirectToAction("Index"));
                }
            }
            return(RedirectToAction("Index"));
        }
        public void TestBewerk_Succes_RedirectsToIndex()
        {
            LoonkostViewModel model = new LoonkostViewModel
            {
                Id    = 1,
                Type  = Type.Kost,
                Soort = Soort.Loonkost,
                BrutoMaandloonFulltime = "" + 1800,
                AantalUrenPerWeek      = 37,
                Doelgroep            = new Doelgroep(Laaggeschoold, 2500M, 1550M),
                Ondersteuningspremie = 20,
                AantalMaandenIBO     = 2,
                IBOPremie            = "" + 564.0M
            };

            var result = _controller.Bewerk(_analyse, model) as RedirectToActionResult;

            Assert.Equal("Index", result?.ActionName);
        }