public async Task PatchProjectService(Guid organizationId, Guid projectId, Guid serviceId, ProjectServicePatchtRp resource) { var service = await _projectServiceRepository.GetProjectServiceById(organizationId, projectId, serviceId); if (service == null) { await _domainManagerService.AddNotFound($"The pipe with id {serviceId} does not exists."); return; } if (resource.CommitStageId.HasValue) { service.CommitStageId = resource.CommitStageId.Value; } if (resource.ReleaseStageId.HasValue) { service.ReleaseStageId = resource.ReleaseStageId.Value; } if (resource.CommitServiceHookId.HasValue) { service.CommitServiceHookId = resource.CommitServiceHookId.Value; } if (resource.ReleaseServiceHookId.HasValue) { service.ReleaseServiceHookId = resource.ReleaseServiceHookId.Value; } if (resource.CodeServiceHookId.HasValue) { service.CodeServiceHookId = resource.CodeServiceHookId.Value; } if (resource.ReleaseStartedServiceHookId.HasValue) { service.ReleaseStartedServiceHookId = resource.ReleaseStartedServiceHookId.Value; } if (resource.ReleasePendingApprovalServiceHookId.HasValue) { service.ReleasePendingApprovalServiceHookId = resource.ReleasePendingApprovalServiceHookId.Value; } if (resource.ReleaseCompletedApprovalServiceHookId.HasValue) { service.ReleaseCompletedApprovalServiceHookId = resource.ReleaseCompletedApprovalServiceHookId.Value; } if (resource.PipelineStatus.HasValue) { service.PipelineStatus = resource.PipelineStatus.Value; } _projectServiceRepository.Update(service); await _projectServiceRepository.SaveChanges(); if (resource.ReleaseStageId.HasValue) { var @event = new ProjectEnvironmentCreatedEvent(_correlationId) { OrganizationId = service.Project.Organization.OrganizationId, OrganizationName = service.Project.Organization.Name, ProjectId = service.Project.ProjectId, ProjectExternalId = service.Project.ProjectExternalId, ProjectExternalEndpointId = service.Project.ProjectExternalEndpointId, ProjectVSTSFakeName = service.Project.ProjectVSTSFakeName, ProjectName = service.Project.Name, CMSType = service.Project.OrganizationCMS.Type, CMSAccountId = _dataProtectorService.Unprotect(service.Project.OrganizationCMS.AccountId), CMSAccountName = _dataProtectorService.Unprotect(service.Project.OrganizationCMS.AccountName), CMSAccessId = _dataProtectorService.Unprotect(service.Project.OrganizationCMS.AccessId), CMSAccessSecret = _dataProtectorService.Unprotect(service.Project.OrganizationCMS.AccessSecret), CMSAccessToken = _dataProtectorService.Unprotect(service.Project.OrganizationCMS.AccessToken), ReleseStageId = resource.ReleaseStageId.Value }; @event.Environments = new List <ProjectEnvironmentItemCreatedEvent>(); foreach (var item in service.Environments) { var parentEnvironment = service.Project.GetEnvironments().First(x => x.ProjectEnvironmentId == item.ProjectEnvironmentId); var serviceEnvironment = new ProjectEnvironmentItemCreatedEvent(); serviceEnvironment.Id = item.ProjectEnvironmentId; serviceEnvironment.Name = parentEnvironment.Name; serviceEnvironment.RequiredApproval = parentEnvironment.RequiresApproval; serviceEnvironment.Variables = new List <ProjectEnvironmentItemVariableCreatedEvent>(); serviceEnvironment.Rank = parentEnvironment.Rank; serviceEnvironment.LastSuccessVersionId = item.LastSuccessVersionId; serviceEnvironment.LastSuccessVersionName = item.LastSuccessVersionName; if (parentEnvironment.Variables != null) { foreach (var variable in parentEnvironment.Variables) { serviceEnvironment.Variables.Add(new ProjectEnvironmentItemVariableCreatedEvent() { Name = variable.Name, Value = variable.Value }); } } if (item.Variables != null) { foreach (var variable in item.Variables) { serviceEnvironment.Variables.Add(new ProjectEnvironmentItemVariableCreatedEvent() { Name = variable.Name, Value = variable.Value }); } } @event.Environments.Add(serviceEnvironment); } //Cloud Provider Data @event.CPSType = service.Project.OrganizationCPS.Type; @event.CPSAccessId = _dataProtectorService.Unprotect(service.Project.OrganizationCPS.AccessId); @event.CPSAccessName = _dataProtectorService.Unprotect(service.Project.OrganizationCPS.AccessName); @event.CPSAccessSecret = _dataProtectorService.Unprotect(service.Project.OrganizationCPS.AccessSecret); @event.CPSAccessRegion = _dataProtectorService.Unprotect(service.Project.OrganizationCPS.AccessRegion); await _eventBusService.Publish(queueName : "ProjectEnvironmentCreatedEvent", @event : @event); } }
public async Task <IActionResult> PatchService(Guid organizationId, Guid projectId, Guid serviceId, [FromBody] ProjectServicePatchtRp resource) { if (!ModelState.IsValid) { return(this.BadRequest(ModelState)); } await _internalProjectServiceService.PatchProjectService(organizationId, projectId, serviceId, resource); if (_domainManagerService.HasNotFounds()) { return(this.NotFound(_domainManagerService.GetNotFounds())); } if (_domainManagerService.HasConflicts()) { return(this.Conflict(_domainManagerService.GetConflicts())); } return(this.Ok()); }