public async Task <(Project, Pipeline)> FindProjectByDataProviderInfoAsync(DataProviderPipelineInfo pipelineInfo)
        {
            int pipeIdINT = 0;

            if (!int.TryParse(pipelineInfo.PipelineId, out pipeIdINT))
            {
                return(null, null);
            }
            var project = await Context.Set <Project>().FirstOrDefaultAsync(p => p.ApiProjectId == pipelineInfo.ProjectId && p.DataProviderName == pipelineInfo.ProviderName);

            var pipe = project.Pipelines.FirstOrDefault(j => j.DataProviderPipelineId == pipeIdINT);

            return(project, pipe);
        }
Exemple #2
0
        private async Task UpdatePipeline(DataProviderPipelineInfo info, ICiDataProvider dataProvider)
        {
            var found = await _projectRepository.FindProjectByDataProviderInfoAsync(info);

            if (found.Item1 == null)
            {
                return;
            }
            var project  = found.Item1;
            var pipeline = found.Item2;

            if (pipeline != null)
            {
                var updatetedPipeline = await dataProvider.FetchPipelineById(project.ApiHostUrl, project.ApiAuthenticationToken, project.ApiProjectId, pipeline.DataProviderPipelineId);

                pipeline.Status = updatetedPipeline.Status;
                //pipeline.Stages = updatetedPipeline.Stages;
                await UpdatePipelineStages(pipeline, updatetedPipeline.Stages);

                pipeline.LastUpdate = DateTime.Now;
                //await _pipelineRepository.UpdateAsync(pipeline, pipeline.Id);
                await _pipelineRepository.SaveAsync();

                //pipeline.Status = info.Status;
                //await _pipelineRepository.SaveAsync();
            }
            else
            {
                int pipeIdINT = 0;
                if (!int.TryParse(info.PipelineId, out pipeIdINT))
                {
                    return;
                }
                var updatetedPipeline = await dataProvider.FetchPipelineById(project.ApiHostUrl, project.ApiAuthenticationToken, project.ApiProjectId, pipeIdINT);

                updatetedPipeline.LastUpdate = DateTime.Now;
                await InsertPipelineToDB(updatetedPipeline, project);
            }
        }