public ActionResult KamerOpdracht(OpvangtehuisViewModel.KamerOpdrachtListViewModel model)
        {

            if (UserStillLoggedIn() || !(_gebruikerRepository.FindById((int)Session["gebruiker"]) is Opvoeder))
            {
                return ReturnToLogin();
            }

            if (!ImageIsValidType(model.KamerOpracht.ImageUpload))
            {
                ModelState.AddModelError("ImageUpload", "Dit is geen foto");
            }
            try
            {
                var opvangtehuis = _gebruikerRepository.FindById((int)Session["gebruiker"]).Opvangtehuis;
                if (ModelState.IsValid)
                {
                    opvangtehuis.AddOpdracht(new KamerControleOpdracht(model.KamerOpracht.Titel,
                        ImageUploadKamerControleAfbeelding(model.KamerOpracht.ImageUpload)));
                    _opvangtehuisRepository.SaveChanges();

                    this.AddNotification("Straf toegevoegd", NotificationType.SUCCESS);
                }

                opvangtehuis = _gebruikerRepository.FindById((int)Session["gebruiker"]).Opvangtehuis;
                var kol = new OpvangtehuisViewModel.KamerOpdrachtListViewModel();
                foreach (var opdracht in opvangtehuis.GetKamerControleOpdrachten())
                {
                    kol.AddItem(new OpvangtehuisViewModel.KamerOprachtViewModel(opdracht.Id, opdracht.Titel,
                        opdracht.ImageUrl));
                }
                return View(kol);
            }
            catch (ApplicationException e)
            {
                ModelState.AddModelError("", e.Message);
            }
            catch (NullReferenceException e)
            {
                ModelState.AddModelError("", e.Message);
                return RedirectToAction("OpvoederIndex", "Gebruiker");
            }
            catch (Exception e)
            {
                ModelState.AddModelError("", e.Message);
                return View("Error");
            }
            return View();
        }
        public ActionResult CreateMenu(OpvangtehuisViewModel.MenuViewModel model)
        {
            if (UserStillLoggedIn() || !(_gebruikerRepository.FindById((int)Session["gebruiker"]) is Opvoeder))
            {
                return ReturnToLogin();
            }

            if (model.BeginWeek.DayOfWeek != DayOfWeek.Monday)
            {
                ModelState.AddModelError("", "De dag die gekozen is, is geen maandag");
                this.AddNotification("De dag die gekozen is, is geen maandag", NotificationType.ERROR);
            }

            if (ModelState.IsValid)
            {
                try
                {
                    if (model.Id <= 0)
                    {


                        var opvangtehuis = _gebruikerRepository.FindById((int)Session["gebruiker"]).Opvangtehuis;
                        if (opvangtehuis.FindMenuByDate(model.BeginWeek) == null)
                        {
                            var menu = new Menu(model.BeginWeek);

                            if (model.MenuImageUpload != null)
                            {
                                if (ImageIsValidType(model.MenuImageUpload))
                                {
                                    menu.ImageUrl = ImageUploadMenuAfbeelding(model.MenuImageUpload);
                                    opvangtehuis.AddMenu(menu);
                                    _opvangtehuisRepository.SaveChanges();
                                    this.AddNotification("De menu is aangemaakt", NotificationType.SUCCESS);
                                }
                                else
                                {
                                    this.AddNotification("Dit is geen foto", NotificationType.ERROR);
                                    ModelState.AddModelError("MenuImageUpload", "Dit is geen foto");
                                }

                            }

                            menu.AddMenuItem("Maandag", model.MaandagViewModel.Hoofdgerecht,
                                model.MaandagViewModel.Voorgerecht,
                                model.MaandagViewModel.Dessert);
                            menu.AddMenuItem("Dinsdag", model.DinsdagViewModel.Hoofdgerecht,
                                model.DinsdagViewModel.Voorgerecht,
                                model.DinsdagViewModel.Dessert);
                            menu.AddMenuItem("Woensdag", model.WoensdagViewModel.Hoofdgerecht,
                                model.WoensdagViewModel.Voorgerecht, model.WoensdagViewModel.Dessert);
                            menu.AddMenuItem("Donderdag", model.DonderdagViewModel.Hoofdgerecht,
                                model.DonderdagViewModel.Voorgerecht, model.DonderdagViewModel.Dessert);
                            menu.AddMenuItem("Vrijdag", model.VrijdagViewModel.Hoofdgerecht,
                                model.VrijdagViewModel.Voorgerecht,
                                model.VrijdagViewModel.Dessert);
                            menu.AddMenuItem("Zaterdag", model.VrijdagViewModel.Hoofdgerecht,
                                model.VrijdagViewModel.Voorgerecht,
                                model.VrijdagViewModel.Dessert);
                            menu.AddMenuItem("Zondag", model.VrijdagViewModel.Hoofdgerecht,
                                model.VrijdagViewModel.Voorgerecht,
                                model.VrijdagViewModel.Dessert);

                            //var opvangtehuis = _gebruikerRepository.FindById((int)Session["gebruiker"]).Opvangtehuis;
                            opvangtehuis.AddMenu(menu);

                            this.AddNotification("De menu is aangemaakt", NotificationType.SUCCESS);
                        }
                        else
                        {
                            this.AddNotification("Er is al reeds een menu op deze dag", NotificationType.ERROR);
                            return RedirectToAction("CreateMenu");
                        }
                    }
                    else
                    {
                        var opvangtehuis = _gebruikerRepository.FindById((int)Session["gebruiker"]).Opvangtehuis;
                        if (opvangtehuis.FindMenuByDate(model.BeginWeek) == null)
                        {
                            var menu = opvangtehuis.Menus.FirstOrDefault(m => m.Id == model.Id);

                            menu.AanpassenBeginDatum(model.BeginWeek);

                            if (model.MenuImageUpload != null)
                            {
                                if (ImageIsValidType(model.MenuImageUpload))
                                {
                                    menu.ImageUrl = ImageUploadMenuAfbeelding(model.MenuImageUpload);
                                    opvangtehuis.AddMenu(menu);
                                    _opvangtehuisRepository.SaveChanges();
                                    this.AddNotification("De menu is aangemaakt", NotificationType.SUCCESS);

                                }
                                else
                                {
                                    ModelState.AddModelError("MenuImageUpload", "Dit is geen foto");
                                }

                            }

                            //Maandag
                            menu.MenuItems.FirstOrDefault(mi => mi.Dag == "Maandag").Voorgerecht = model.MaandagViewModel.Voorgerecht;
                            menu.MenuItems.FirstOrDefault(mi => mi.Dag == "Maandag").Hoofdgerecht = model.MaandagViewModel.Hoofdgerecht;
                            menu.MenuItems.FirstOrDefault(mi => mi.Dag == "Maandag").Dessert = model.MaandagViewModel.Dessert;

                            //Dinsdag
                            menu.MenuItems.FirstOrDefault(mi => mi.Dag == "Dinsdag").Voorgerecht = model.DinsdagViewModel.Voorgerecht;
                            menu.MenuItems.FirstOrDefault(mi => mi.Dag == "Dinsdag").Hoofdgerecht = model.DinsdagViewModel.Hoofdgerecht;
                            menu.MenuItems.FirstOrDefault(mi => mi.Dag == "Dinsdag").Dessert = model.DinsdagViewModel.Dessert;


                            //Woensdag
                            menu.MenuItems.FirstOrDefault(mi => mi.Dag == "Woensdag").Voorgerecht = model.WoensdagViewModel.Voorgerecht;
                            menu.MenuItems.FirstOrDefault(mi => mi.Dag == "Woensdag").Hoofdgerecht = model.WoensdagViewModel.Hoofdgerecht;
                            menu.MenuItems.FirstOrDefault(mi => mi.Dag == "Woensdag").Dessert = model.WoensdagViewModel.Dessert;


                            //Donderdag
                            menu.MenuItems.FirstOrDefault(mi => mi.Dag == "Donderdag").Voorgerecht = model.DonderdagViewModel.Voorgerecht;
                            menu.MenuItems.FirstOrDefault(mi => mi.Dag == "Donderdag").Hoofdgerecht = model.DonderdagViewModel.Hoofdgerecht;
                            menu.MenuItems.FirstOrDefault(mi => mi.Dag == "Donderdag").Dessert = model.DonderdagViewModel.Dessert;

                            //Vrijdag
                            menu.MenuItems.FirstOrDefault(mi => mi.Dag == "Vrijdag").Voorgerecht = model.VrijdagViewModel.Voorgerecht;
                            menu.MenuItems.FirstOrDefault(mi => mi.Dag == "Vrijdag").Hoofdgerecht = model.VrijdagViewModel.Hoofdgerecht;
                            menu.MenuItems.FirstOrDefault(mi => mi.Dag == "Vrijdag").Dessert = model.VrijdagViewModel.Dessert;

                            //Zaterdag
                            menu.MenuItems.FirstOrDefault(mi => mi.Dag == "Zaterdag").Voorgerecht = model.ZaterdagViewModel.Voorgerecht;
                            menu.MenuItems.FirstOrDefault(mi => mi.Dag == "Zaterdag").Hoofdgerecht = model.ZaterdagViewModel.Hoofdgerecht;
                            menu.MenuItems.FirstOrDefault(mi => mi.Dag == "Zaterdag").Dessert = model.ZaterdagViewModel.Dessert;

                            //Zondag
                            menu.MenuItems.FirstOrDefault(mi => mi.Dag == "Zondag").Voorgerecht = model.ZondagViewModel.Voorgerecht;
                            menu.MenuItems.FirstOrDefault(mi => mi.Dag == "Zondag").Hoofdgerecht = model.ZondagViewModel.Hoofdgerecht;
                            menu.MenuItems.FirstOrDefault(mi => mi.Dag == "Zondag").Dessert = model.ZondagViewModel.Dessert;

                            this.AddNotification("De menu is gewijzigd", NotificationType.SUCCESS);
                        }
                        else
                        {
                            this.AddNotification("Er is al reeds een menu op deze dag", NotificationType.ERROR);
                            return RedirectToAction("EditMenu", new {id = model.Id});
                        }
                    }
                    _opvangtehuisRepository.SaveChanges();
                    return RedirectToAction("MenuIndex");
                }
                catch (ApplicationException e)
                {
                    ModelState.AddModelError("", e.Message);
                }
                catch (Exception e)
                {
                    ModelState.AddModelError("", e.Message);
                    return View("Error");
                }
            }

            return RedirectToAction("CreateMenu");
        }
        public ActionResult Klacht(OpvangtehuisViewModel.KlachtViewModel model)
        {
            if (UserStillLoggedIn() || !(_gebruikerRepository.FindById((int)Session["gebruiker"]) is Client))
            {
                return ReturnToLogin();
            }

            if (ModelState.IsValid)
            {
                try
                {
                    var opvangtehuis = _gebruikerRepository.FindById((int)Session["gebruiker"]).Opvangtehuis;
                    opvangtehuis.AddKlacht(model.Omschrijving,
                        (Client)_gebruikerRepository.FindById((int)Session["gebruiker"]));

                    _opvangtehuisRepository.SaveChanges();

                    this.AddNotification("Je klacht wordt doorgegeven", NotificationType.SUCCESS);
                    return RedirectToAction("ClientIndex", "Gebruiker");
                }
                catch (ApplicationException e)
                {
                    ModelState.AddModelError("", e.Message);
                }
                catch (Exception e)
                {
                    ModelState.AddModelError("", e.Message);
                    return View("Error");
                }
            }
            return View();
        }
        public ActionResult CreateSuggestie(OpvangtehuisViewModel.CreateSuggestieViewModel model)
        {
            if (UserStillLoggedIn() || !(_gebruikerRepository.FindById((int)Session["gebruiker"]) is Client))
            {
                return ReturnToLogin();
            }

            if (ModelState.IsValid)
            {
                try
                {
                    var opvangtehuis = _gebruikerRepository.FindById((int)Session["gebruiker"]).Opvangtehuis;
                    opvangtehuis.AddSuggestie(model.Beschrijving, model.GeselecteerdGenre,
                        (Client)_gebruikerRepository.FindById((int)Session["gebruiker"]));
                    _opvangtehuisRepository.SaveChanges();

                    this.AddNotification("Je suggestie wordt doorgegeven", NotificationType.SUCCESS);
                    return RedirectToAction("ClientIndex", "Gebruiker");
                }
                catch (ApplicationException e)
                {
                    ModelState.AddModelError("", e.Message);
                }
                catch (Exception e)
                {
                    ModelState.AddModelError("", e.Message);
                    return View("Error");
                }
            }

            var csvm = new OpvangtehuisViewModel.CreateSuggestieViewModel();
            return View(csvm);

        }