예제 #1
0
        public async Task <IActionResult> ChangeTitle(
            [FromServices] IMediator mediator,
            [FromServices] ChangeTaskTitlePresenter presenter,
            [FromBody][Required] ChangeTaskTitleRequest request)
        {
            var accountId = this.HttpContext.User.Claims.FirstOrDefault(x => x.Type == "AccountId").Value;

            var input = new ChangeTitleTaskInput(
                new BaseEntityId(new Guid(accountId)),
                new BaseEntityId(request.TableId),
                new BaseEntityId(request.TaskId),
                new TaskText(request.Title));

            await mediator.PublishAsync(input);

            return(presenter.ViewModel);
        }
        public async Task Handle(ChangeTitleTaskInput input)
        {
            if (input is null)
            {
                outputPort.WriteError(Message.InputIsNull);
                return;
            }

            try
            {
                var task = await tableRepository.GetTaskAsync(input.TableId, input.AccountId, input.TaskId);

                task.ChangeTitle(input.Title);
                await unitOfWork.Save();

                BuildOutput(task);
            }
            catch (Exception e)
            {
                outputPort.WriteError(e.Message);
            }
        }