public ActionResult Create(ReaderGroupDetailModel model)
        {
            if (ModelState.IsValid)
            {
                var domain = new ReaderGroup() { FriendlyName = model.DisplayName };
                var result = readerGroupRepo.Create(domain);
                if (result)
                {
                    TempData[TempDataInfMsg] = string.Format("Die Lesergruppe {0} wurde erfolgreich angelegt", domain.FriendlyName);
                }
                else
                {
                    TempData[TempDataInfMsg] = string.Format("Die Lesergruppe {0} konnte nicht angelegt werden. Bitte wenden Sie sich an den Aministrator", domain.FriendlyName);
                }

                return RedirectToAction("Index");
            }
            else
            {
                return View(model);
            }
        }
        private void EnhanceWebModel(ReaderGroupDetailModel model, bool withPossiblities)
        {
            model.CurrentReaders = readerRepo.GetReadersOfReaderGroup(model.ReaderGroupId);
            model.CurrentUserGroups = userGroupRepo.GetUserGroupsOfReaderGroup(model.ReaderGroupId);

            if (withPossiblities)
            {
                model.PossibleReaders = readerRepo.GetPossibleReadersOfReaderGroup(model.ReaderGroupId);
                model.PossibleUserGroups = userGroupRepo.GetPossibleUserGroupsOfReaderGroup(model.ReaderGroupId);
            }
        }
        public ActionResult Edit(Guid id, ReaderGroupDetailModel model)
        {
            bool isLinkAction = Request.Form.AllKeys.Contains("linkAction");
            model.ReaderGroupId = id;

            if (isLinkAction)
            {
                var group = readerGroupRepo.GetItemById(id);
                var sectionId = Request.Form["Selection"];

                if (string.IsNullOrWhiteSpace(sectionId))
                {
                    ModelState.AddModelError("Selection", "Es wurde keine Auswahl getroffen");
                }
                else
                {
                    var ids = sectionId.Split(',');
                    var successCount = 0;
                    var msg = string.Empty;

                    foreach (var gId in ids)
                    {
                        var otherId = Guid.Parse(gId);
                        var action = Request.Form["linkAction"];
                        var success = false;

                        if (action.Equals("DoLinkReader"))
                        {
                            success = readerGroupRepo.LinkGroupToReader(group, otherId);
                            msg = "Die Lesergruppe {0} wurde mit {1} Lesern verknüpft";
                        }
                        else if (action.Equals("UnlinkReader"))
                        {
                            success = readerGroupRepo.UnlinkGroupFromReader(group, otherId);
                            msg = "Aus der Lesergruppe {0} wurden {1} Leser herausgenommen";
                        }
                        else if (action.Equals("DoLinkUserGroup"))
                        {
                            success = readerGroupRepo.LinkGroupToUserGroup(group, otherId);
                            msg = "Die Lesergruppe {0} wurden mit {1} Benutzergruppen verknüpft";
                        }
                        else if (action.Equals("UnlinkUserGroup"))
                        {
                            success = readerGroupRepo.UnlinkGroupFromUserGroup(group, otherId);
                            msg = "Aus der Lesergruppe {0} wurden {1} Benutzergruppen herausgenommen";
                        }
                        else
                        {
                            throw new Exception("Keine Aktion erkannt");
                        }

                        successCount += success ? 1 : 0;
                    }

                    TempData[TempDataInfMsg] = string.Format(msg, group.FriendlyName, successCount);
                }
            }
            else if (ModelState.IsValid)
            {
                var group = readerGroupRepo.GetItemById(id);
                group.FriendlyName = model.DisplayName;

                var result = readerGroupRepo.Edit(id, group);
                if (!result)
                {
                    TempData[TempDateErrMsg] = string.Format("Die Änderungen an der Benutzergruppe {0} konnten nicht übernommen werden. Bitte kontaktieren Sie den Administrator.", group.FriendlyName);
                }
                else
                {

                    TempData[TempDataInfMsg] = string.Format("Die Änderungen an der Benutzergruppe {0} wurde erfolgreich übernommen", group.FriendlyName);
                }

                return RedirectToAction("Index");
            }

            EnhanceWebModel(model, true);
            return View(model);
        }