public ActionResult Edit(Guid id, ReaderDetailModel model) { bool isLinkAction = Request.Form.AllKeys.Contains("linkAction"); model.ReaderId = id; if (isLinkAction) { var reader = readerRepo.GetItemById(id); var groupId = Request.Form["Selection"]; if (string.IsNullOrWhiteSpace(groupId)) { ModelState.AddModelError("Selection", "Es wurde keine Auswahl getroffen"); } else { var ids = groupId.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("DoLinkReaderGroup")) { success = readerRepo.LinkReaderToReaderGroup(reader, otherId); msg = "Der Benutzer {0} wurde mit {1} Benutzergruppen verknüpft"; } else if (action.Equals("UnlinkReaderGroup")) { success = readerRepo.UnlinkReaderFromReaderGroup(reader, otherId); msg = "Der Benutzer {0} wurde aus {1} Benutzergruppen herausgenommen"; } else { throw new Exception("Keine Aktion erkannt"); } successCount += success ? 1 : 0; } TempData[TempDataInfMsg] = string.Format(msg, reader.FriendlyName, successCount); } } else if (ModelState.IsValid) { var domain = readerRepo.GetItemById(id); var typeId = Guid.Parse(Request.Form["ReaderTypeId"]); bool typeLink = false; if (typeId.Equals(Guid.Empty)) { typeLink = readerRepo.UnlinkReaderFromReaderType(domain); } else { typeLink = readerRepo.LinkReaderToReaderType(domain, typeId); } domain.FriendlyName = model.DisplayName; domain.Parameter = model.Parameter; domain.SerialNr = model.SerialNr; var result = readerRepo.Edit(id, domain); result = result && typeLink; if (!result) { TempData[TempDateErrMsg] = string.Format("Die Änderungen am Leser {0} konnten nicht übernommen werden. Bitte kontaktieren Sie den Administrator.", domain.FriendlyName); } else { TempData[TempDataInfMsg] = string.Format("Die Änderungen am Leser {0} wurde erfolgreich übernommen", domain.FriendlyName); } return RedirectToAction("Index"); } EnhanceWebModel(model, true); return View(model); }
private void EnhanceWebModel(ReaderDetailModel model, bool withPossible) { model.ReaderTypeDisplayName = readerRepo.GetReaderTypeFriendlyNameOfReader(model.ReaderId); model.CurrentGroups = readerRepo.GetReaderGroupsOfReader(model.ReaderId); if (withPossible) { model.PossibleReaderTypes = readerRepo.GetPossibleReaderTytpesOfReader(model.ReaderId); model.PossibleGroups = readerRepo.GetPossibleReaderGroupsOfReader(model.ReaderId); } }