private bool CorrectCollectionOfRatingsGiven(IEnumerable <PackageVersionRatings> ratingsCollection) { if (ratingsCollection.Count() != 1) { return(false); } PackageVersionRatings packageVersionRatings = ratingsCollection.Single(); return(packageVersionRatings.PackageId == _existingPackage.Id && packageVersionRatings.PackageVersion == _existingPackage.Version && packageVersionRatings.RatingAverage == 0 && packageVersionRatings.RatingCount == 0); }
private void UpdatePackages(IEnumerable <PackageVersionRatings> packageVersionRatings) { var packagesToUpdate = new List <Package>(); foreach (var versionRatings in packageVersionRatings) { PackageVersionRatings ratingsClosure = versionRatings; Package package = _packageRepository.Collection.Single(p => p.Id == ratingsClosure.PackageId && p.Version == ratingsClosure.PackageVersion); package.RatingAverage = ratingsClosure.RatingAverage; package.RatingsCount = ratingsClosure.RatingCount; packagesToUpdate.Add(package); } if (packagesToUpdate.Any()) { _packageRepository.Update(packagesToUpdate); } }
private void UpdatePublishedPackageRatings(IEnumerable <PackageVersionRatings> packageVersionRatings, IEnumerable <PackageDataAggregate> packageDataAggregates) { foreach (var versionRatings in packageVersionRatings) { PackageVersionRatings ratingClosure = versionRatings; var aggregate = packageDataAggregates.Single(pda => pda.PackageId == ratingClosure.PackageId); var publishedPackagesToUpdate = _publishedPackageRepository.Collection.Where(pp => pp.Id == ratingClosure.PackageId).ToList(); foreach (var publishedPackage in publishedPackagesToUpdate) { PublishedPackage package = publishedPackage; if (versionRatings.PackageId == publishedPackage.Id && versionRatings.PackageVersion == publishedPackage.Version) { PackageVersionRatings ratingsToUse = packageVersionRatings.Single(vr => vr.PackageId == package.Id && vr.PackageVersion == package.Version); package.VersionRating = ratingsToUse.RatingAverage; package.VersionRatingsCount = ratingsToUse.RatingCount; } package.RatingsCount = aggregate.RatingsCount; package.Rating = aggregate.Rating; } _publishedPackageRepository.Update(publishedPackagesToUpdate); } }