public async Task <ActionResult> Edit(DraftEditViewModel model) { if (!ModelState.IsValid) { return(View(model)); } var user = await User.GetCurrentAsync(); var draft = model.Entity; draft.RegisterDateTimeUtc = DateTime.UtcNow; draft.User = user; if (model.RegisterMode == DraftRegisterMode.Draft) { await _draftRepository.SaveAsync(draft); return(RedirectToAction("Index")); } var original = await _itemRepository.FindByIdAsync(model.Id); if (original != null && original.User.Id != User.Identity.GetUserId()) { return(new HttpStatusCodeResult(HttpStatusCode.Unauthorized)); } var item = model.Entity; if (model.RegisterMode == DraftRegisterMode.Private) { item.IsPrivate = true; } await _itemRepository.SaveAsync(item); await _draftRepository.DeleteAsync(draft); return(RedirectToRoute("ItemIndex", new { id = item.Id })); }