Example #1
0
        public Either <ActionResult, Release> GetLatestRelease(Guid publicationId)
        {
            var release = _releaseRepository.GetLatestPublishedRelease(publicationId);

            if (release is null)
            {
                return(new NotFoundResult());
            }

            return(release);
        }
Example #2
0
        public async Task <Either <ActionResult, PermalinkViewModel> > Create(PermalinkCreateViewModel request)
        {
            var publicationId = await _subjectRepository.GetPublicationIdForSubject(request.Query.SubjectId);

            var release = _releaseRepository.GetLatestPublishedRelease(publicationId);

            if (release == null)
            {
                return(new NotFoundResult());
            }

            return(await Create(release.Id, request));
        }
Example #3
0
        public async Task <Either <ActionResult, TableBuilderResultViewModel> > Query(
            ObservationQueryContext queryContext,
            CancellationToken cancellationToken = default)
        {
            var publicationId = await _subjectRepository.GetPublicationIdForSubject(queryContext.SubjectId);

            var release = _releaseRepository.GetLatestPublishedRelease(publicationId);

            if (release == null)
            {
                return(new NotFoundResult());
            }

            return(await Query(release, queryContext, cancellationToken));
        }
        public async Task <bool> IsSubjectForLatestPublishedRelease(Guid subjectId)
        {
            var publicationId = await GetPublicationIdForSubject(subjectId);

            var latestRelease = _releaseRepository.GetLatestPublishedRelease(publicationId);

            if (latestRelease == null)
            {
                return(false);
            }

            return(_context
                   .ReleaseSubject
                   .Any(r => r.ReleaseId == latestRelease.Id && r.SubjectId == subjectId));
        }
        private Task <Either <ActionResult, FastTrackViewModel> > BuildViewModel(FastTrack fastTrack)
        {
            return(_releaseRepository
                   .FindOrNotFoundAsync(fastTrack.ReleaseId)
                   .OnSuccessCombineWith(_ => _tableBuilderService.Query(fastTrack.ReleaseId, fastTrack.Query))
                   .OnSuccess(releaseAndResults =>
            {
                var(release, result) = releaseAndResults;
                var viewModel = _mapper.Map <FastTrackViewModel>(fastTrack);
                viewModel.FullTable = result;
                viewModel.Query.PublicationId = release.PublicationId;
                viewModel.ReleaseSlug = release.Slug;

                var latestRelease = _releaseRepository.GetLatestPublishedRelease(release.PublicationId);
                viewModel.LatestData = latestRelease?.Id == release.Id;
                viewModel.LatestReleaseTitle = latestRelease != null
                        ? TimePeriodLabelFormatter.Format(latestRelease.Year, latestRelease.TimeIdentifier,
                                                          FullLabelBeforeYear) : null;
                return viewModel;
            }));
        }