public async Task <ProjectDTO> CopyProject(ProjectDTO dto) { var existingProject = await GetProjectWithBuildSteps(dto.Id); dto.Repository.Id = 0; var newProject = new ProjectDTO { Description = dto.Description, Name = dto.Name, OwnerId = dto.OwnerId, IsPublic = dto.IsPublic, IsFavorite = dto.IsFavorite, Repository = dto.Repository, CredentialsId = dto.CredentialsId, IsAutoCancelBranchBuilds = dto.IsAutoCancelBranchBuilds, IsCleanUpBeforeBuild = dto.IsCleanUpBeforeBuild, IsAutoCancelPullRequestBuilds = dto.IsAutoCancelPullRequestBuilds, CancelAfter = dto.CancelAfter, }; var createdProject = (await Context.AddAsync(Mapper.Map <Project>(newProject))).Entity; await Context.SaveChangesAsync(); int id = createdProject.Id; existingProject.BuildSteps.Select(buildStep => _buildStepService.Create(new NewBuildStepDTO { ProjectId = id, BuildStepName = buildStep.BuildStepName, PluginCommandId = buildStep.PluginCommand.PluginId, Index = buildStep.Index, BuildPluginParameters = buildStep.Parameters.ToList(), LoggingVerbosity = (int)buildStep.LoggingVerbosity })); var project = await Context.Projects .Include(p => p.BuildSteps) .Include(p => p.Owner) .FirstOrDefaultAsync(p => p.Id == id); return(Mapper.Map <ProjectDTO>(project)); }
public async Task <BuildStepDTO> Create(NewBuildStepDTO buildStep) { return(await _buildStepService.Create(buildStep)); }