Exemple #1
0
        public void DeletePackage(string packageId, string packageVersion)
        {
            Package existingPackage = _packageRepository.Collection.SingleOrDefault(p => p.Id == packageId && p.Version == packageVersion);

            if (existingPackage == null)
            {
                throw new PackageDoesNotExistException(packageId, packageVersion);
            }
            bool wasPackageRecommended = existingPackage.IsLatestVersion;

            _screenshotRespository.DeleteMany(s => s.PackageId == packageId && s.PackageVersion == packageVersion);
            _dependencyRepository.DeleteMany(d => d.PackageId == packageId && d.PackageVersion == packageVersion);
            _packageRepository.DeleteSingle(p => p.Id == packageId && p.Version == packageVersion);

            _publishedScreenshotRepository.DeleteMany(ps => ps.PublishedPackageId == packageId && ps.PublishedPackageVersion == packageVersion);
            _publishedPackageRepository.DeleteMany(p => p.Id == packageId && p.Version == packageVersion);

            _packageLogEntryCreator.Create(packageId, packageVersion, PackageLogAction.Delete);

            var filePath = _packageFileGetter.GetPackagePath(packageId, packageVersion);

            _fileSystem.DeleteFileIfItExists(filePath);
            _fileSystem.DeleteDirectoryIfEmpty(_packageFileGetter.GetPackageDirectory(packageId, packageVersion), true);

            if (wasPackageRecommended)
            {
                _packageRecommendedVersionManager.SetLatestVersionAsRecommended(packageId, false);
                _publishedPackagePublishedPackageRecommendedVersionManager.SetLatestVersionAsRecommended(packageId, true);
            }

            if (_packageRepository.Collection.Any(p => p.Id == packageId))
            {
                _packageDataAggregateUpdater.RecalculateTotalDownloadCount(packageId);
                _packageDataAggregateUpdater.UpdateAggregateRatings(new[] { new PackageVersionRatings {
                                                                                PackageId = packageId, PackageVersion = packageVersion
                                                                            } });
            }
            else
            {
                _packageDataAggregateRepository.DeleteSingle(pda => pda.PackageId == packageId);
            }
        }