コード例 #1
0
        public async Task <ProjectUserMessage> Handle(AddUserProjectCommand request, CancellationToken cancellationToken)
        {
            var userDomain    = _UserRepository.GetById(request.UserId).Result.ToDomain <User>(_Mapper);
            var projectDomain = _ProjectRepository.GetById(request.ProjectId).Result.ToDomain <Project>(_Mapper);

            projectDomain.Validate();
            //projectDomain.AddUser(userDomain);

            #region Persistence

            await _ProjectRepository.AddUser(projectDomain.ToModel <Command.UserProject>(_Mapper));

            await _UnitOfWork.Commit();

            #endregion

            #region Bus

            var addUserProjectMessage = new Message();
            addUserProjectMessage.MessageType = "UpdateUserProject";
            var response = new ProjectUserMessage
            {
                Project = projectDomain.ToQueryModel <Query.Project>(_Mapper),
                User    = userDomain.ToQueryModel <UserQuery.User>(_Mapper)
            };
            addUserProjectMessage.SetData(response);

            await _SendEndpointProvider.Send(addUserProjectMessage, cancellationToken);

            #endregion

            return(response);
        }