public static IEnumerable <DotnetApps> ConvertToDotnetApps(this DotnetApp dotnetApp)
 {
     return(dotnetApp.Projects
            .Select(x => new DotnetApps
     {
         Name = x.ProjectFileName.FormatDotnetAppName(),
         Slug = dotnetApp.Slug,
         Repo = dotnetApp.Repository,
         Path = x.ProjectFilePath,
         SandboxDomain = dotnetApp.SandboxDomain,
         Url = dotnetApp.Url,
         DefaultBranch = dotnetApp.DefaultBranch,
         Primary = dotnetApp.IsPrimary,
         Deployed = dotnetApp.Deployed,
         Deprecated = dotnetApp.Deprecated,
         CreatedAt = dotnetApp.CreatedAt.DateTime,
         UpdatedAt = dotnetApp.UpdatedAt.DateTime
     }));
 }
        private async Task <IEnumerable <DotnetAppProjectNuget> > GetOldCsProjProjectNugets(DotnetApp dotnetApp,
                                                                                            DotnetAppProjectFile projectFile, string projectFileContent)
        {
            var query = "packages.config";

            if (!projectFileContent.Contains(query))
            {
                _logger.LogWarning($"{dotnetApp.Repository}/{projectFile.ProjectFilePath} has no packages.config file in csproj!");
                return(Enumerable.Empty <DotnetAppProjectNuget>());
            }

            var packagesConfigFile = await SearchFile(
                "packages.config",
                "config",
                dotnetApp.Repository,
                projectFile.ProjectFilePath.Replace($"/{projectFile.ProjectFileName}", string.Empty));

            if (packagesConfigFile == null)
            {
                _logger.LogWarning($"{dotnetApp.Repository}/{projectFile.ProjectFilePath} has no packages.config file in repo!");
                return(Enumerable.Empty <DotnetAppProjectNuget>());
            }

            var packagesConfigContent = await _githubAccess.GetFileContent(packagesConfigFile.ContentsUrl);

            var packagesConfigXmlDocument = packagesConfigContent.TryConvertToXDocument(_logger, out bool isPackagesConfigFileContentValid);

            if (!isPackagesConfigFileContentValid)
            {
                _logger.LogError($"{dotnetApp.Repository}/{packagesConfigFile.Path} is not valid!");
                return(Enumerable.Empty <DotnetAppProjectNuget>());
            }

            return(packagesConfigXmlDocument.GetPackagesConfigReferences());
        }
        public static IEnumerable <DotnetAppDotnetNugets> ConvertToDotnetAppDotnetNugetList(this DotnetApp dotnetApp,
                                                                                            IEnumerable <DotnetApps> dotnetAppsFromDb, IEnumerable <DotnetNugets> dotnetNugetsFromDb, Logger logger)
        {
            var result = new List <DotnetAppDotnetNugets>();

            foreach (var project in dotnetApp.Projects)
            {
                var dotnetAppsFromDbFiltered = dotnetAppsFromDb
                                               .Where(x =>
                                                      x.Repo.Equals(dotnetApp.Repository, StringComparison.OrdinalIgnoreCase) &&
                                                      x.Path.Equals(project.ProjectFilePath, StringComparison.OrdinalIgnoreCase));

                if (!dotnetAppsFromDbFiltered.Any())
                {
                    logger.LogWarning($"Nuget {dotnetApp.Repository}/{project.ProjectFilePath} not found in Apps Master List.");
                    continue;
                }

                foreach (var projectNuget in project.DotnetAppProject.ProjectNugets)
                {
                    var dotnetNugetsFromDBFiltered = dotnetNugetsFromDb
                                                     .Where(x =>
                                                            x.Slug.Equals(projectNuget.Name, StringComparison.OrdinalIgnoreCase));

                    if (!dotnetNugetsFromDBFiltered.Any())
                    {
                        logger.LogWarning($"Nuget {projectNuget.Name} not found in Nugets Master List.");
                        continue;
                    }

                    result.Add(new DotnetAppDotnetNugets
                    {
                        DotnetAppId   = dotnetAppsFromDbFiltered.First().Id,
                        DotnetNugetId = dotnetNugetsFromDBFiltered.First().Id,
                        Version       = GetVersionFroMetadatasource(projectNuget.Version, dotnetNugetsFromDBFiltered.First().GetVersions())
                    });
                }
            }

            return(result);
        }