Example #1
0
        public virtual async Task <IActionResult> CreatePipeline([Required] int pipelineIdentifier, [Required] string organization, [Required] string project)
        {
            Data.Models.ReleasePipeline pipeline = await _context.ReleasePipelines
                                                   .FirstOrDefaultAsync(rp =>
                                                                        rp.PipelineIdentifier == pipelineIdentifier &&
                                                                        rp.Organization.Equals(organization, StringComparison.OrdinalIgnoreCase) &&
                                                                        rp.Project.Equals(project, StringComparison.OrdinalIgnoreCase)
                                                                        );

            // If an release pipeline with same values already exist then do nothing
            if (pipeline != null)
            {
                return(StatusCode((int)HttpStatusCode.NotModified));
            }

            var pipelineModel = new Data.Models.ReleasePipeline
            {
                PipelineIdentifier = pipelineIdentifier,
                Organization       = organization,
                Project            = project
            };
            await _context.ReleasePipelines.AddAsync(pipelineModel);

            await _context.SaveChangesAsync();

            return(CreatedAtRoute(
                       new
            {
                action = "GetPipeline",
                id = pipelineModel.Id
            },
                       new ReleasePipeline(pipelineModel)));
        }
Example #2
0
        public virtual async Task <IActionResult> GetPipeline(int id)
        {
            Data.Models.ReleasePipeline pipeline = await _context.ReleasePipelines.Where(c => c.Id == id).FirstOrDefaultAsync();

            if (pipeline == null)
            {
                return(NotFound());
            }

            return(Ok(new ReleasePipeline(pipeline)));
        }
Example #3
0
        public virtual async Task <IActionResult> DeletePipeline(int id)
        {
            bool isPipelineInUse = await _context.ChannelReleasePipelines.AnyAsync(crp => crp.ReleasePipelineId == id);

            if (isPipelineInUse)
            {
                return(BadRequest(new ApiError($"The pipeline with id '{id}' is in use and cannot be deleted.")));
            }

            Data.Models.ReleasePipeline pipeline = await _context.ReleasePipelines
                                                   .FirstOrDefaultAsync(c => c.Id == id);

            if (pipeline == null)
            {
                return(NotFound());
            }

            _context.ReleasePipelines.Remove(pipeline);

            await _context.SaveChangesAsync();

            return(Ok(new ReleasePipeline(pipeline)));
        }