public ActionResult Create(UserGroupDetailModel model)
        {
            if (ModelState.IsValid)
            {
                var domain = Mappings.MapDetailViewModelToDomainModel(model);
                var result = userGroupRepo.Create(domain);
                if (result)
                {
                    TempData[TempDataInfMsg] = string.Format("Die Benutzergruppe {0} wurde erfolgreich angelegt", domain.FriendlyName);
                }
                else
                {
                    TempData[TempDataInfMsg] = string.Format("Die Benutzergruppe {0} konnte nicht angelegt werden. Bitte wenden Sie sich an den Aministrator", domain.FriendlyName);
                }

                return RedirectToAction("Index");
            }
            else
            {
                return View(model);
            }
        }
        private UserGroupDetailModel EnhanceWebModel(UserGroupDetailModel model, bool isPossibleNeeded)
        {
            model.CurrentUsers = userGroupRepo.GetAllUsersOfUserGroup(model.UserGroupId);
            model.CurrentReaderGroups = readerGroupRepo.GetReaderGroupsOfUserGroup(model.UserGroupId);

            if (isPossibleNeeded)
            {
                model.PossibleUsers = userGroupRepo.GetPossibleUsers(model.UserGroupId);
                model.PossibleReaderGroups = userGroupRepo.GetPossibleReaderGroups(model.UserGroupId);
            }

            return model;
        }
        public ActionResult Edit(Guid id, UserGroupDetailModel model)
        {
            bool isLinkAction = Request.Form.AllKeys.Contains("linkAction");
            model.UserGroupId = id;

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

                if (string.IsNullOrWhiteSpace(userId))
                {
                    ModelState.AddModelError("Selection", "Es wurde keine Auswahl getroffen");
                }
                else
                {
                    var ids = userId.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("DoLinkUser"))
                        {
                            success = userGroupRepo.LinkGroupToUser(group, otherId);
                            msg = "Der Benutzergruppe {0} wurde mit {1} Benutzer verknüpft";
                        }
                        else if (action.Equals("UnlinkUser"))
                        {
                            success = userGroupRepo.UnlinkGroupFromUser(group, otherId);
                            msg = "Aus der Benutzergruppe {0} wurden {1} Benutzer herausgenommen";
                        }
                        else if (action.Equals("DoLinkReaderGroup"))
                        {
                            success = userGroupRepo.LinkGroupToReaderGroup(group, otherId);
                            msg = "Die Benutzergruppe {0} wurden mit {1} Lesergruppen verknüpft";
                        }
                        else if (action.Equals("UnlinkReaderGroup"))
                        {
                            success = userGroupRepo.UnlinkGroupFromReaderGroup(group, otherId);
                            msg = "Aus der Benutzergruppe {0} wurden {1} Lesergruppen 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 = userGroupRepo.GetItemById(id);
                group = Mappings.ApplyViewModelToDomainModel(model, group);

                var result = userGroupRepo.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);
        }