Exemplo n.º 1
0
        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 }));
        }