Ejemplo n.º 1
0
        public async Task<EditNoteModel> Build(Guid userId, int noteId)
        {
            var userTask = _userService.GetUser(userId);
            var noteTask = _notesService.GetNote(noteId);

            await Task.WhenAll(userTask, noteTask);

            var user = userTask.Result;
            var note = noteTask.Result;

            if (user == null)
                throw new ModelBuilderException("user not found");

            if (note == null || !note.CanSee(user))
                throw new ModelBuilderException("note not found");

            var canEdit = note.CanEdit(user);
            var canDelete = note.CanDelete(user);

            var model = new EditNoteModel()
            {
                Body = note.Body,
                IsPublic = note.IsPublic,
                Title = note.Title,
                NoteId = noteId,
                CanEdit = canEdit,
                CanDelete = canDelete
            };

            return model;
        }
Ejemplo n.º 2
0
        public async Task<SaveNoteModelBuilderResult> Build(Guid userId, EditNoteModel request)
        {
            var result = new SaveNoteModelBuilderResult()
            {
                Model = request,
                IsSuccess = true
            };

            if (request == null)
                return result;

            if (request.NoteId.HasValue)
            {
                return await ExecuteEditCmd(userId, request, result);
            }
            else return await ExecuteCreateCmd(userId, request, result);
          
        }
Ejemplo n.º 3
0
        public async Task<ActionResult> Edit(EditNoteModel request)
        {
            if (!ModelState.IsValid)
            {
                request.CanEdit = true;
                return View(request);
            }

            var builder = DependencyResolver.Current.GetService<SaveNoteModelBuilder>();
            var result = await builder.Build(GetUserId().Value, request);

            if (result.IsSuccess)
            {
                TempData[KeysConstants.SuccessMessageKey] = NotesEditUIResources.NoteSuccessChanged;
                return RedirectToAction("Edit", new { noteId = request.NoteId.Value });
            }

            TempData[KeysConstants.ErrorMessageKey] = result.Error;
            return View(request);
        }
Ejemplo n.º 4
0
        private async Task<SaveNoteModelBuilderResult> ExecuteEditCmd(Guid userId,
            EditNoteModel request, SaveNoteModelBuilderResult result)
        {
            var args = new EditNoteArgs
            {
                Body = request.Body,
                ChangedByUserId = userId,
                IsPublic = request.IsPublic,
                NoteId = request.NoteId.Value,
                Title = request.Title
            };

            var cmdRes = await _editCommand.Execute(args);

            if (!cmdRes.IsSuccess)
            {
                result.IsSuccess = false;
                result.Error = cmdRes.ErrorMessage;
                return result;
            }
            else return result;
        }
Ejemplo n.º 5
0
        private async Task<SaveNoteModelBuilderResult> ExecuteCreateCmd(Guid userId,
            EditNoteModel request, SaveNoteModelBuilderResult result)
        {
            var createArgs = new CreateNoteArgs
            {
                Body = request.Body,
                IsPublic = request.IsPublic,
                Title = request.Title,
                UserId = userId
            };

            var createResult = await _createCommand.Execute(createArgs);

            if (!createResult.IsSuccess)
            {
                result.IsSuccess = false;
                result.Error = createResult.ErrorMessage;
                return result;
            }

            result.Model.NoteId = createResult.CreatedNoteId;
            return result;
        }