Beispiel #1
0
 public async Task <CreatePackageResponse> CreatePackage(
     [FromRoute] string projectId,
     [FromRoute] int componentId,
     [FromBody] CreatePackageRequest request)
 {
     return(await _handler.Handle(projectId, componentId, request));
 }
Beispiel #2
0
        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
            });
        }