public Release(BusinessEntities.Release release) { Media = new Media(release.Media); ReleaseNumber = release.ReleaseNumber; SubReleaseNumber = release.SubReleaseNumber; Url = release.Url; Notified = release.Notified; }
private async Task <bool> IsNewNewest(BusinessEntities.Release release, CancellationToken cancellationToken) { var currentNewestResult = await _releaseDataStore.GetNewestReleaseForMedia(release.Media.MediaName, cancellationToken); if (currentNewestResult.IsSuccess) { _logger.LogInformation("Current newest release for media with name {mediaName} has releaseNumber {releaseNumber} and subReleaseNumber {subReleaseNumber}", currentNewestResult.Value?.Media?.MediaName, currentNewestResult.Value?.ReleaseNumber.ToString(), currentNewestResult.Value?.SubReleaseNumber.ToString()); // no release yet for this media if (currentNewestResult.Value == null) { return(true); } return(release.IsNewerThan(currentNewestResult.Value.ToBusinessEntity())); } return(false); }
public async Task <Result> AddRelease(BusinessEntities.Release release, CancellationToken cancellationToken) { if (await IsNewNewest(release, cancellationToken)) { var releaseDao = new Release(release); var mediaResult = await _mediaDataStore.GetMedia(release.Media.MediaName, cancellationToken); if (mediaResult.IsSuccess) { releaseDao.Media = mediaResult.Value; } _logger.LogInformation("Release with releaseNumber {releaseNumber}.{subReleaseNumber} is the newest for {mediaName} so it will be added", release.ReleaseNumber.ToString(), release.SubReleaseNumber.ToString(), release.Media.MediaName); return(await _releaseDataStore.AddRelease(releaseDao, cancellationToken)); } _logger.LogInformation("Release with releaseNumber {releaseNumber} is not newer for {mediaName} so it will be discarded", release.ReleaseNumber.ToString(), release.Media.MediaName); return(Result.Failure($"Release with releaseNumber {release.ReleaseNumber.ToString()} is not newer for {release.Media.MediaName}")); }