コード例 #1
0
ファイル: ProjectService.cs プロジェクト: fzf003/EventFly
        public async Task Create(UserAggregate user, ProjectId projectId, ProjectName projectName)
        {
            var spec = new IsCanCreateProjectWithNameSpecification(user);

            if (spec.IsSatisfiedBy(projectName) == false)
            {
                throw new InvalidOperationException(String.Join("\n", spec.WhyIsNotSatisfiedBy(projectName)));
            }

            var result = await CommandBus.Publish(new CreateCommand(projectId, projectName));

            if (result.IsSuccess == false)
            {
                throw new InvalidOperationException(result.ToString());
            }

            await user.CreateProject(projectId, projectName);
        }