public async Task <IActionResult> CopyReleaseBatch([FromRoute] string idOrName, [FromBody] string copyName) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var releaseBatch = await GetReleaseBatch(idOrName, true, true); if (releaseBatch == null) { return(NotFound()); } var copyReleaseBatch = new ReleaseBatch(); copyReleaseBatch.Name = copyName; copyReleaseBatch.Description = releaseBatch.Description; if (releaseBatch.Logo != null) { copyReleaseBatch.Logo = new ReleaseBatchLogo(); copyReleaseBatch.Logo.Content = releaseBatch.Logo.Content; copyReleaseBatch.Logo.ContentType = releaseBatch.Logo.ContentType; } if (releaseBatch.Items != null) { copyReleaseBatch.Items = new List <ReleaseBatchItem>(); foreach (var item in releaseBatch.Items) { var copyItem = new ReleaseBatchItem(); copyItem.ProjectId = item.ProjectId; copyItem.ProjectName = item.ProjectName; copyItem.ProjectSlug = item.ProjectSlug; copyItem.ReleaseId = item.ReleaseId; copyItem.ReleaseVersion = item.ReleaseVersion; copyReleaseBatch.Items.Add(copyItem); } } copyReleaseBatch.UpdateDateTime = DateTimeOffset.Now; copyReleaseBatch.UpdateUserName = User.Identity.Name; _context.ReleaseBatches.Add(copyReleaseBatch); await _context.SaveChangesAsync(); return(CreatedAtRoute("GetReleaseBatch", new { idOrName = copyReleaseBatch.Id }, copyReleaseBatch)); }
public async Task <IActionResult> LinkProject([FromRoute] string idOrName, [FromBody] LinkProjectRequestBody requestBody) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var releaseBatch = await GetReleaseBatch(idOrName, false, false); if (releaseBatch == null) { return(NotFound()); } if (releaseBatch.IsLocked) { return(GetLockedForbiddenUpdateResult(releaseBatch)); } var projectResource = await _octopusProxy.GetProjectAsync(requestBody.ProjectIdOrSlugOrName); if (projectResource == null) { return(BadRequest("Project Not Found")); } ReleaseResource releaseResource = null; if (requestBody.ReleaseVersion != null) { releaseResource = await _octopusProxy.GetReleaseAsync(projectResource.Id, requestBody.ReleaseVersion); if (releaseResource == null) { return(BadRequest("Release Not Found")); } } var releaseBatchItem = await _context.ReleaseBatchItems.SingleOrDefaultAsync(e => e.ReleaseBatchId == releaseBatch.Id && e.ProjectId == projectResource.Id); if (releaseBatchItem == null) { releaseBatchItem = new ReleaseBatchItem { ReleaseBatchId = releaseBatch.Id, ProjectId = projectResource.Id }; _context.ReleaseBatchItems.Add(releaseBatchItem); } releaseBatchItem.ProjectName = projectResource.Name; releaseBatchItem.ProjectSlug = projectResource.Slug; if (releaseResource != null) { releaseBatchItem.ReleaseId = releaseResource.Id; releaseBatchItem.ReleaseVersion = releaseResource.Version; } releaseBatch.UpdateDateTime = DateTimeOffset.Now; releaseBatch.UpdateUserName = User.Identity.Name; await _context.SaveChangesAsync(); return(new NoContentResult()); }