예제 #1
0
        public async Task <OperationDetailDTO <RepositoryDTO> > GetRepositoryByID(int id)
        {
            var detail = new OperationDetailDTO <RepositoryDTO>();

            try
            {
                var repoEntity = await _context.RepositoryModels
                                 .Include(r => r.Files)
                                 .FirstOrDefaultAsync(r => r.Id == id);

                if (repoEntity != null)
                {
                    var dto = RepositoryDTO.Map(repoEntity);
                    detail.Data      = dto;
                    detail.Succeeded = true;
                }
                else
                {
                    detail.ErrorMessages.Add("Репозиторий не найден");
                }
                return(detail);
            }

            catch (Exception e)
            {
                detail.ErrorMessages.Add(_serverErrorMessage + e.Message);
                return(detail);
            }
        }
        // test
        public async Task <OperationDetailDTO <List <RepositoryDTO> > > GetRepositoriesFromDBAsync(FilterDTO[] filters = null)
        {
            var detail = new OperationDetailDTO <List <RepositoryDTO> >();

            var resultList = new List <RepositoryDTO>();

            var currentUserEntity = await GetUserFromClaimsAsync();

            var teacherEntity = await _context.Teachers
                                .Include(t => t.User)
                                .Where(t => t.UserId == currentUserEntity.Id)
                                .FirstOrDefaultAsync();


            var repos = from r in _context.RepositoryModels
                        .Where(r => r.TeacherId == teacherEntity.Id)
                        .Include(r => r.Subject)
                        .Include(r => r.Files)
                        select r;

            repos.OrderBy(r => r.Name);

            if (filters != null)
            {
                foreach (var filter in filters)
                {
                    switch (filter.Name)
                    {
                    case "subjectId":
                    {
                        var value = Convert.ToInt32(filter.Value);
                        if (value > 0)
                        {
                            repos = repos.Where(r => r.SubjectId == value);
                        }
                        break;
                    }
                    }
                }
            }

            foreach (var entity in repos)
            {
                var repoDTO = RepositoryDTO.Map(entity);
                resultList.Add(repoDTO);
            }

            detail.Data      = resultList;
            detail.Succeeded = true;
            return(detail);
        }
예제 #3
0
        public async Task <OperationDetailDTO <List <RepositoryDTO> > > GetRepositoriesFromDBAsync(FilterDTO[] filters)
        {
            var detail = new OperationDetailDTO <List <RepositoryDTO> >();

            try
            {
                var resultList = new List <RepositoryDTO>();

                var repos = from r in _context.RepositoryModels
                            .Include(r => r.Subject)
                            .Include(r => r.Files)
                            .Include(r => r.Teacher)
                            select r;

                repos.OrderBy(r => r.Teacher.Name);

                if (filters != null)
                {
                    foreach (var filter in filters)
                    {
                        switch (filter.Name)
                        {
                        case "subjectId":
                        {
                            var value = Convert.ToInt32(filter.Value);
                            if (value > 0)
                            {
                                repos = repos.Where(r => r.SubjectId == value);
                            }
                            break;
                        }
                        }
                    }
                }

                foreach (var entity in repos)
                {
                    var repoDTO = RepositoryDTO.Map(entity);
                    resultList.Add(repoDTO);
                }

                detail.Data      = resultList;
                detail.Succeeded = true;
            }
            catch (Exception e)
            {
                detail.ErrorMessages.Add(_serverErrorMessage + e.Message);
            }

            return(detail);
        }
예제 #4
0
        private async Task AddSolutionsToRepositoryAsync(RepositoryDTO repositoryDTO)
        {
            string[] solutionsFilesPaths = fileService.GetFilesPaths(repositoryDTO.Path, SolutionSearchPattern);

            foreach (string solutionDirectoryPath in fileService.GetFilesDirectoriesPaths(solutionsFilesPaths))
            {
                SolutionDTO solutionDTO = new SolutionDTO
                {
                    Name = directoryService.GetName(solutionDirectoryPath),
                    Path = solutionDirectoryPath
                };

                await AddProjectsToSolutionAsync(solutionDTO);

                repositoryDTO.Solutions.Add(solutionDTO);
            }
        }
예제 #5
0
        public async Task <RepositoryDTO> GetParsedRepositoryAsync(string repositoryPath)
        {
            if (!directoryService.Exists(repositoryPath))
            {
                return(null);
            }

            RepositoryDTO repositoryDTO = new RepositoryDTO
            {
                Name = directoryService.GetName(repositoryPath),
                Path = repositoryPath
            };

            await AddSolutionsToRepositoryAsync(repositoryDTO);

            return(repositoryDTO);
        }
예제 #6
0
 public void OneTimeSetup()
 {
     accurateRepositoryDTO = new RepositoryDTO
     {
         Name      = RepositoryName,
         Solutions = new List <SolutionDTO>
         {
             new SolutionDTO
             {
                 Name     = SolutionName,
                 Projects = new List <ProjectDTO>
                 {
                     new ProjectDTO
                     {
                         Name     = FirstProjectName,
                         Packages = new List <PackageDTO>
                         {
                             new PackageDTO
                             {
                                 Name    = FirstPackageName,
                                 Version = VersionString
                             },
                             new PackageDTO
                             {
                                 Name    = SecondPackageName,
                                 Version = VersionString
                             }
                         }
                     },
                     new ProjectDTO
                     {
                         Name     = SecondProjectName,
                         Packages = new List <PackageDTO>
                         {
                             new PackageDTO
                             {
                                 Name    = FirstPackageName,
                                 Version = VersionString
                             }
                         }
                     }
                 }
             }
         }
     };
 }
        public async Task GetParsedRepositoryAsync_ShouldRepositoryNotNullAndPackagesCount5_WhenCoreAppType()
        {
            string[] filesPaths     = testList.ToArray();
            string   repositoryPath = testList.First();

            // Arrange
            directoryServiceMock
            .Setup(directoryService => directoryService.Exists(repositoryPath))
            .Returns(true);
            directoryServiceMock
            .Setup(directoryService => directoryService.GetName(repositoryPath))
            .Returns(repositoryPath);
            fileServiceMock
            .Setup(fileService => fileService.GetFilesPaths(repositoryPath, SolutionSearchPattern))
            .Returns(filesPaths);
            fileServiceMock
            .Setup(fileService => fileService.GetFilesDirectoriesPaths(filesPaths))
            .Returns(testList);
            fileServiceMock
            .Setup(fileService => fileService.GetFilesPaths(repositoryPath, CsProjSearchPattern))
            .Returns(filesPaths);
            fileServiceMock
            .Setup(fileService => fileService.GetFilePath(repositoryPath, PackagesConfigSearchPattern))
            .Returns((string)null);
            fileServiceMock
            .Setup(fileService => fileService.GetFilePath(repositoryPath, CsProjSearchPattern))
            .Returns(repositoryPath);
            fileServiceMock
            .Setup(fileService => fileService.GetContentAsync(repositoryPath))
            .ReturnsAsync(TestCsProjFileContent);

            // Act
            RepositoryDTO repotitory = await repositoryAnalyzerService.GetParsedRepositoryAsync(repositoryPath);

            // Assert
            Assert.IsNotNull(repotitory);
            double packagesCount = repotitory.Solutions.First().Projects.First().Packages.Count;

            Assert.AreEqual(5, packagesCount);
        }
        private async Task <Repository> ToDomainAsync(RepositoryDTO businessRepositoryDTO, int userId)
        {
            var dbRepository =
                await DatabaseRepository.GetSingleOrDefaultAsync(repository =>
                                                                 repository.Name == businessRepositoryDTO.Name);

            if (dbRepository != null)
            {
                DatabaseRepository.Delete(dbRepository.Id);
            }

            var domainRepository = CreateRepository(businessRepositoryDTO.Name, userId);

            foreach (var businessSolution in businessRepositoryDTO.Solutions)
            {
                domainRepository.Solutions.Add(CreateSolution(businessSolution.Name));
                var domainSolution =
                    domainRepository.Solutions.FirstOrDefault(solution => solution.Name == businessSolution.Name);

                foreach (var businessProject in businessSolution.Projects)
                {
                    domainSolution.Projects.Add(CreateProject(businessProject.Name));
                    var domainProject =
                        domainSolution.Projects.FirstOrDefault(project => project.Name == businessProject.Name);

                    foreach (var businessPackage in businessProject.Packages)
                    {
                        domainProject.ProjectPackageVersions.Add(await CreatePackageAsync(businessPackage.Name,
                                                                                          businessPackage.Version,
                                                                                          domainProject, domainRepository));
                    }
                }
            }

            return(domainRepository);
        }
 public async Task SaveAsync(RepositoryDTO repositoryDTO, int userId)
 {
     unitOfWork.GetRepository <Repository>().Add(await ToDomainAsync(repositoryDTO, userId));
     await unitOfWork.SaveChangesAsync();
 }
예제 #10
0
 public Task <OperationDetailDTO> UpdateRepoAsync(RepositoryDTO dto)
 {
     throw new NotImplementedException();
 }