1
0
Files
yel-dspace-angular/src/app/submission/sections/detect-duplicate/detect-duplicate.service.ts
2018-10-10 11:42:16 +02:00

34 lines
1.4 KiB
TypeScript

import { Store } from '@ngrx/store';
import { SubmissionState } from '../../submission.reducers';
import { Injectable } from '@angular/core';
import { SetDuplicateDecisionAction } from '../../objects/submission-objects.actions';
import { submissionSectionDataFromIdSelector } from '../../selectors';
import { WorkspaceitemSectionDetectDuplicateObject } from '../../../core/submission/models/workspaceitem-section-deduplication.model';
import { isEmpty } from '../../../shared/empty.util';
@Injectable()
export class DetectDuplicateService {
constructor(private store: Store<SubmissionState>) {
}
getDuplicateMatches(submissionId: string, sectionId: string) {
return this.store.select(submissionSectionDataFromIdSelector(submissionId, sectionId))
.map((sectionData: WorkspaceitemSectionDetectDuplicateObject) => {
return (isEmpty(sectionData)) ? {matches: {}} : sectionData
})
.startWith({matches: {}})
.distinctUntilChanged();
}
getDuplicateTotalMatches(submissionId: string, sectionId: string) {
return this.getDuplicateMatches(submissionId, sectionId)
.map((sectionData: WorkspaceitemSectionDetectDuplicateObject) => Object.keys(sectionData.matches).length)
.distinctUntilChanged();
}
saveDuplicateDecision(submissionId: string, sectionId: string): void {
this.store.dispatch(new SetDuplicateDecisionAction(submissionId, sectionId));
}
}