public async Task <CreatePackageResponse> CreatePackage( [FromRoute] string projectId, [FromRoute] int componentId, [FromBody] CreatePackageRequest request) { return(await _handler.Handle(projectId, componentId, request)); }
public async Task <CreatePackageResponse> Handle(string projectId, int componentId, CreatePackageRequest request) { var componentExists = await _dbContext .Components .FromProject(projectId) .WithId(componentId) .AnyAsync(); if (!componentExists) { throw new InvalidOperationException( $"Component {componentId} in project {projectId} doesn't exist." ); } var deploymentProcessId = await GetDeploymentProcess(componentId, request.DeploymentProcessId); var lastPackage = await GetLastPackage(projectId, componentId); var mappedVariables = MapVariables(request.VariableUpdates); var updatedVariables = UpdateExistingValues(lastPackage.Variables.Variables, mappedVariables); var newPackage = await _packageFactory.Create( projectId : projectId, deploymentProcessId : deploymentProcessId, componentId : componentId, description : request.Description, variableCollection : new VariableCollection { Variables = updatedVariables } ); _dbContext.Packages.Add(newPackage); await _dbContext.SaveChangesAsync(); return(new CreatePackageResponse { CreatedPackageId = newPackage.Id }); }