Skip to content

Commit a571f25

Browse files
committed
Add mutation to reextract pnp progress data
1 parent f725e28 commit a571f25

File tree

2 files changed

+53
-0
lines changed

2 files changed

+53
-0
lines changed

src/components/progress-report/progress-report.module.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { forwardRef, Module } from '@nestjs/common';
2+
import { FileModule } from '../file/file.module';
23
import { PeriodicReportModule } from '../periodic-report/periodic-report.module';
34
import { ProgressReportCommunityStoryRepository } from './community-stories/progress-report-community-story.repository';
45
import { ProgressReportCommunityStoryResolver } from './community-stories/progress-report-community-story.resolver';
@@ -12,6 +13,7 @@ import { ProgressReportRepository } from './progress-report.repository';
1213
import { ProgressReportService } from './progress-report.service';
1314
import { ProgressReportEngagementConnectionResolver } from './resolvers/progress-report-engagement-connection.resolver';
1415
import { ProgressReportParentResolver } from './resolvers/progress-report-parent.resolver';
16+
import { ReextractPnpResolver } from './resolvers/reextract-pnp.resolver';
1517
import { ProgressReportTeamNewsRepository } from './team-news/progress-report-team-news.repository';
1618
import { ProgressReportTeamNewsResolver } from './team-news/progress-report-team-news.resolver';
1719
import { ProgressReportTeamNewsService } from './team-news/progress-report-team-news.service';
@@ -24,10 +26,12 @@ import { ProgressReportWorkflowModule } from './workflow/progress-report-workflo
2426
ProgressReportWorkflowModule,
2527
ProgressReportVarianceExplanationModule,
2628
ProgressReportMediaModule,
29+
FileModule,
2730
],
2831
providers: [
2932
ProgressReportParentResolver,
3033
ProgressReportEngagementConnectionResolver,
34+
ReextractPnpResolver,
3135
ProgressReportTeamNewsResolver,
3236
ProgressReportTeamNewsService,
3337
ProgressReportTeamNewsRepository,
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import { Mutation, Resolver } from '@nestjs/graphql';
2+
import { ID, IdArg, InputException, LoggedInSession, Session } from '~/common';
3+
import { IEventBus, Loader, LoaderOf } from '~/core';
4+
import { FileNodeLoader, FileService, resolveDefinedFile } from '../../file';
5+
import { PeriodicReportLoader } from '../../periodic-report';
6+
import { PeriodicReportUploadedEvent } from '../../periodic-report/events';
7+
import { PnpProgressExtractionResult } from '../../pnp/extraction-result';
8+
9+
@Resolver()
10+
export class ReextractPnpResolver {
11+
constructor(
12+
private readonly files: FileService,
13+
private readonly eventBus: IEventBus,
14+
) {}
15+
16+
@Mutation(() => PnpProgressExtractionResult)
17+
async reextractPnpProgress(
18+
@IdArg({
19+
name: 'reportId',
20+
description: 'An ID of a ProgressReport that has a reportFile uploaded',
21+
})
22+
reportId: ID,
23+
@Loader(PeriodicReportLoader) reportLoader: LoaderOf<PeriodicReportLoader>,
24+
@Loader(FileNodeLoader) fileLoader: LoaderOf<FileNodeLoader>,
25+
@LoggedInSession() session: Session,
26+
): Promise<PnpProgressExtractionResult> {
27+
const report = await reportLoader.load(reportId);
28+
if (report.type !== 'Progress') {
29+
throw new InputException(
30+
"Only ProgressReports can have PnP's re-extracted",
31+
);
32+
}
33+
const file = await resolveDefinedFile(fileLoader, report.reportFile);
34+
if (!file.value) {
35+
throw new InputException('This report does not have a PnP uploaded');
36+
}
37+
38+
const fv = await this.files.getFileVersion(
39+
file.value.latestVersionId,
40+
session,
41+
);
42+
const pnp = this.files.asDownloadable(fv);
43+
44+
const event = new PeriodicReportUploadedEvent(report, pnp, session);
45+
await this.eventBus.publish(event);
46+
47+
return event.pnpResult;
48+
}
49+
}

0 commit comments

Comments
 (0)