public void TestVoegToe_Succes()
        {
            Analyse analyse = new Analyse
            {
                Departement = _dbContext.Aldi
            };

            _departementRepository.Setup(r => r.GetById(It.IsAny <int>())).Returns(_dbContext.Aldi);

            ContactPersoonViewModel model = new ContactPersoonViewModel
            {
                AnalyseId = 1,
                Voornaam  = "Thomas",
                Naam      = "Aelbrecht",
                Email     = "*****@*****.**"
            };

            var result = _controller.VoegContactPersoonToe(analyse, model) as RedirectToActionResult;

            _departementRepository.Verify(c => c.Save(), Times.Once);
            _analyseRepository.Verify(c => c.Save(), Times.Once);

            Assert.Equal("Index", result?.ActionName);
            Assert.Equal("Kosten", result?.ControllerName);
        }
        public void TestBewerkPOST_RepositoryGooitException_ReturnViewWithModel()
        {
            _contactPersoonRepository.Setup(c => c.GetById(It.IsAny <int>())).Throws(new Exception());

            ContactPersoonViewModel expectedModel = new ContactPersoonViewModel
            {
                Voornaam    = "Thomas",
                Naam        = "Aelbrecht",
                Email       = "*****@*****.**",
                WerkgeverId = 0,
                PersoonId   = 0
            };

            var result      = _controller.Opslaan(expectedModel) as ViewResult;
            var resultModel = result?.Model as ContactPersoonViewModel;

            Assert.Equal("Index", result?.ViewName);
            Assert.Equal(expectedModel.Naam, resultModel?.Naam);
            Assert.Equal(expectedModel.Voornaam, resultModel?.Voornaam);
            Assert.Equal(expectedModel.Email, resultModel?.Email);
            Assert.Equal(expectedModel.WerkgeverId, resultModel?.WerkgeverId);
            Assert.Equal(expectedModel.PersoonId, resultModel?.PersoonId);

            _exceptionLogRepository.Verify(r => r.Add(It.IsAny <ExceptionLog>()), Times.Once);
            _exceptionLogRepository.Verify(r => r.Save(), Times.Once);
        }
        public void TestVoegToe_RepositoryGooitException_ReturnViewWithModel()
        {
            Analyse analyse = new Analyse
            {
                Departement = _dbContext.Aldi
            };

            _werkgeverRepository.Setup(w => w.GetById(It.IsAny <int>())).Throws(new Exception());
            ContactPersoonViewModel model = new ContactPersoonViewModel
            {
                AnalyseId = 1,
                Voornaam  = "Thomas",
                Naam      = "Aelbrecht",
                Email     = "*****@*****.**"
            };

            var result      = _controller.VoegContactPersoonToe(analyse, model) as ViewResult;
            var resultModel = result?.Model as ContactPersoonViewModel;

            Assert.Equal(model.Naam, resultModel?.Naam);
            Assert.Equal(model.Voornaam, resultModel?.Voornaam);
            Assert.Equal(model.Email, resultModel?.Email);
            Assert.Equal(model.AnalyseId, resultModel?.AnalyseId);
            Assert.Equal("Index", result?.ViewName);

            _exceptionLogRepository.Verify(r => r.Add(It.IsAny <ExceptionLog>()), Times.Once);
            _exceptionLogRepository.Verify(r => r.Save(), Times.Once);
        }
        public IActionResult VoegContactPersoonToe(int id)
        {
            ContactPersoonViewModel model = new ContactPersoonViewModel {
                WerkgeverId = id
            };

            return(View("Index", model));
        }
        public void TestBewerkPOST_Succes()
        {
            _contactPersoonRepository.Setup(c => c.GetById(It.IsAny <int>())).Returns(new ContactPersoon());

            ContactPersoonViewModel model = new ContactPersoonViewModel
            {
                Voornaam    = "Thomas",
                Naam        = "Aelbrecht",
                Email       = "*****@*****.**",
                WerkgeverId = 0,
                PersoonId   = 0
            };

            var result = _controller.Opslaan(model) as RedirectToActionResult;

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

            _contactPersoonRepository.Verify(c => c.Save(), Times.Once);
        }
        public void TestIndex_ContactPersoonReedsGeselecteerd_ReturnedIndexView()
        {
            _departementRepository.Setup(r => r.GetById(It.IsAny <int>())).Returns(_dbContext.Aldi);
            ContactPersoon          cp    = new ContactPersoon("Thomas", "Aelbrecht", "*****@*****.**");
            ContactPersoonViewModel model = new ContactPersoonViewModel(cp, 0);

            Analyse analyse = new Analyse {
                Departement = _dbContext.Aldi
            };

            var result      = _controller.Index(analyse) as ViewResult;
            var resultModel = result?.Model as ContactPersoonViewModel;

            Assert.Equal("Index", result?.ViewName);
            Assert.Equal(model.AnalyseId, resultModel?.AnalyseId);
            Assert.Equal(model.Email, resultModel?.Email);
            Assert.Equal(model.Naam, resultModel?.Naam);
            Assert.Equal(model.PersoonId, resultModel?.PersoonId);
            Assert.Equal(model.Voornaam, resultModel?.Voornaam);
            Assert.Equal(model.WerkgeverId, resultModel?.WerkgeverId);
        }
        public IActionResult Index(Analyse analyse)
        {
            try
            {
                if (analyse.Departement == null)
                {
                    TempData["error"] = "U hebt nog geen werkgever geselecteerd, gelieve deze eerst te selecteren";
                    return(RedirectToAction("Index", "Werkgever"));
                }

                ViewData["analyseId"] = analyse.AnalyseId;

                int id = analyse.Departement.Werkgever.WerkgeverId;
                ViewData["WerkgeverId"] = id;

                Werkgever werkgever = _werkgeverRepository.GetById(id);

                analyse.Departement = _departementRepository.GetById(analyse.Departement.DepartementId);

                if (analyse.Departement?.ContactPersoon != null)
                {
                    ContactPersoonViewModel model = new ContactPersoonViewModel(analyse.Departement?.ContactPersoon,
                                                                                analyse.Departement.Werkgever.WerkgeverId);
                    return(View("Index", model));
                }
                else
                {
                    TempData["error"] = "Er is nog geen contactpersoon, voeg hier eventueel een contactpersoon toe";
                    return(RedirectToAction("VoegContactPersoonToe", new { id = werkgever.WerkgeverId }));
                }
            }
            catch (Exception e)
            {
                _exceptionLogRepository.Add(new ExceptionLog(e, "ContactPersoon", "Index"));
                _exceptionLogRepository.Save();
                TempData["error"] = "Er ging onverwachts iets mis, probeer later opnieuw";
                return(RedirectToAction("Index", "Werkgever"));
            }
        }
        public void TestBewerkPOST_ModelStateInvalid_ReturnViewWithModel()
        {
            ContactPersoonViewModel expectedModel = new ContactPersoonViewModel
            {
                Voornaam    = "Thomas",
                Naam        = "Aelbrecht",
                Email       = "*****@*****.**",
                WerkgeverId = 0,
                PersoonId   = 0
            };

            _controller.ModelState.AddModelError("", "Error");

            var result      = _controller.Opslaan(expectedModel) as ViewResult;
            var resultModel = result?.Model as ContactPersoonViewModel;

            Assert.Equal("Index", result?.ViewName);
            Assert.Equal(expectedModel.Naam, resultModel?.Naam);
            Assert.Equal(expectedModel.Voornaam, resultModel?.Voornaam);
            Assert.Equal(expectedModel.Email, resultModel?.Email);
            Assert.Equal(expectedModel.WerkgeverId, resultModel?.WerkgeverId);
            Assert.Equal(expectedModel.PersoonId, resultModel?.PersoonId);
        }
        public void TestBewerkPOST_ContactPersoonNull_ReturnViewWithModel()
        {
            _contactPersoonRepository.Setup(c => c.GetById(It.IsAny <int>())).Returns(() => null);

            ContactPersoonViewModel expectedModel = new ContactPersoonViewModel
            {
                Voornaam    = "Thomas",
                Naam        = "Aelbrecht",
                Email       = "*****@*****.**",
                WerkgeverId = 0,
                PersoonId   = 0
            };

            var result      = _controller.Opslaan(expectedModel) as ViewResult;
            var resultModel = result?.Model as ContactPersoonViewModel;

            Assert.Equal("Index", result?.ViewName);
            Assert.Equal(expectedModel.Naam, resultModel?.Naam);
            Assert.Equal(expectedModel.Voornaam, resultModel?.Voornaam);
            Assert.Equal(expectedModel.Email, resultModel?.Email);
            Assert.Equal(expectedModel.WerkgeverId, resultModel?.WerkgeverId);
            Assert.Equal(expectedModel.PersoonId, resultModel?.PersoonId);
        }
        public IActionResult VoegContactPersoonToe(Analyse analyse, ContactPersoonViewModel model)
        {
            try
            {
                analyse.Departement = _departementRepository.GetById(analyse.Departement.DepartementId);
                ContactPersoon cp = new ContactPersoon(model.Voornaam, model.Naam, model.Email);

                analyse.Departement.ContactPersoon = cp;
                _departementRepository.Save();
                _analyseRepository.Save();

                TempData["message"] = "De contactpersoon " + cp.Voornaam + " " + cp.Naam + " is succesvol toegevoegd";
            }
            catch (Exception e)
            {
                _exceptionLogRepository.Add(new ExceptionLog(e, "ContactPersoon", "VoegToe"));
                _exceptionLogRepository.Save();
                TempData["error"] = "Er ging onverwachts iets mis, probeer later opnieuw";
                return(View("Index", model));
            }

            return(RedirectToAction("Index", "Kosten"));
        }
        public IActionResult Opslaan(ContactPersoonViewModel model)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    ContactPersoon cp = _contactPersoonRepository
                                        .GetById(model.PersoonId);

                    if (cp != null)
                    {
                        cp.Naam       = model.Naam;
                        cp.Voornaam   = model.Voornaam;
                        cp.Emailadres = model.Email;

                        _contactPersoonRepository.Save();

                        TempData["message"] = "De contactpersoon " + model.Voornaam + " " + model.Naam +
                                              " is succesvol opgeslaan";
                        return(RedirectToAction("Index"));
                    }
                    else
                    {
                        TempData["error"] = "Er ging iets mis tijdens het opslaan, probeer later opnieuw";
                    }
                }
            }
            catch (Exception e)
            {
                _exceptionLogRepository.Add(new ExceptionLog(e, "ContactPersoon", "Opslaan"));
                _exceptionLogRepository.Save();
                TempData["error"] = "Er ging onverwachts iets mis, probeer later opnieuw";
            }

            // als we hier komen, moet het formulier nog eens getoond worden
            return(View("Index", model));
        }