diff --git a/alcs-frontend/src/app/features/application/documents/documents.component.ts b/alcs-frontend/src/app/features/application/documents/documents.component.ts index deb7d5e2f..6b6c278bd 100644 --- a/alcs-frontend/src/app/features/application/documents/documents.component.ts +++ b/alcs-frontend/src/app/features/application/documents/documents.component.ts @@ -18,6 +18,25 @@ import { DocumentUploadDialogComponent, VisibilityGroup, } from '../../../shared/document-upload-dialog/document-upload-dialog.component'; +import { + DocumentUploadDialogData, + DocumentUploadDialogOptions, +} from '../../../shared/document-upload-dialog/document-upload-dialog.interface'; + +const DOCUMENT_UPLOAD_DIALOG_OPTIONS: DocumentUploadDialogOptions = { + allowedVisibilityFlags: ['A', 'C', 'G', 'P'], + allowsFileEdit: true, + documentTypeOverrides: { + [DOCUMENT_TYPE.CERTIFICATE_OF_TITLE]: { + visibilityGroups: [VisibilityGroup.INTERNAL], + allowsFileEdit: false, + }, + [DOCUMENT_TYPE.CORPORATE_SUMMARY]: { + visibilityGroups: [VisibilityGroup.INTERNAL], + allowsFileEdit: false, + }, + }, +}; @Component({ selector: 'app-documents', @@ -63,37 +82,19 @@ export class DocumentsComponent implements OnInit { } async onUploadFile() { - const submission = await this.applicationSubmissionService.fetchSubmission(this.fileId); - const parcels = await this.applicationParcelService.fetchParcels(this.fileId); + const data: DocumentUploadDialogData = Object.assign(DOCUMENT_UPLOAD_DIALOG_OPTIONS, { + fileId: this.fileId, + documentService: this.applicationDocumentService, + parcelService: this.applicationParcelService, + submissionService: this.applicationSubmissionService, + }); this.dialog .open(DocumentUploadDialogComponent, { minWidth: '600px', maxWidth: '800px', width: '70%', - data: { - fileId: this.fileId, - documentService: this.applicationDocumentService, - selectableParcels: parcels.map((parcel, index) => ({ ...parcel, index })), - selectableOwners: submission.owners - .filter((owner) => owner.type.code === 'ORGZ') - .map((owner) => ({ - label: owner.organizationName ?? owner.displayName, - uuid: owner.uuid, - })), - allowedVisibilityFlags: ['A', 'C', 'G', 'P'], - allowsFileEdit: true, - documentTypeOverrides: { - [DOCUMENT_TYPE.CERTIFICATE_OF_TITLE]: { - visibilityGroups: [VisibilityGroup.INTERNAL], - allowsFileEdit: false, - }, - [DOCUMENT_TYPE.CORPORATE_SUMMARY]: { - visibilityGroups: [VisibilityGroup.INTERNAL], - allowsFileEdit: false, - }, - }, - }, + data, }) .afterClosed() .subscribe((isDirty) => { @@ -126,37 +127,21 @@ export class DocumentsComponent implements OnInit { } async onEditFile(element: ApplicationDocumentDto) { - const submission = await this.applicationSubmissionService.fetchSubmission(this.fileId); - const parcels = await this.applicationParcelService.fetchParcels(this.fileId); + const data: DocumentUploadDialogData = Object.assign(DOCUMENT_UPLOAD_DIALOG_OPTIONS, { + allowsFileEdit: element.system === DOCUMENT_SYSTEM.ALCS, + fileId: this.fileId, + existingDocument: element, + documentService: this.applicationDocumentService, + parcelService: this.applicationParcelService, + submissionService: this.applicationSubmissionService, + }); this.dialog .open(DocumentUploadDialogComponent, { minWidth: '600px', maxWidth: '800px', width: '70%', - data: { - fileId: this.fileId, - existingDocument: element, - documentService: this.applicationDocumentService, - selectableParcels: parcels.map((parcel, index) => ({ ...parcel, index })), - selectableOwners: submission.owners - .filter((owner) => owner.type.code === 'ORGZ') - .map((owner) => ({ - label: owner.organizationName ?? owner.displayName, - uuid: owner.uuid, - })), - allowsFileEdit: element.system === DOCUMENT_SYSTEM.ALCS, - documentTypeOverrides: { - [DOCUMENT_TYPE.CERTIFICATE_OF_TITLE]: { - visibilityGroups: [VisibilityGroup.INTERNAL], - allowsFileEdit: false, - }, - [DOCUMENT_TYPE.CORPORATE_SUMMARY]: { - visibilityGroups: [VisibilityGroup.INTERNAL], - allowsFileEdit: false, - }, - }, - }, + data, }) .afterClosed() .subscribe((isDirty: boolean) => { diff --git a/alcs-frontend/src/app/features/inquiry/documents/documents.component.ts b/alcs-frontend/src/app/features/inquiry/documents/documents.component.ts index 57a8dde9d..bf9f10799 100644 --- a/alcs-frontend/src/app/features/inquiry/documents/documents.component.ts +++ b/alcs-frontend/src/app/features/inquiry/documents/documents.component.ts @@ -11,6 +11,7 @@ import { ConfirmationDialogService } from '../../../shared/confirmation-dialog/c import { DOCUMENT_SYSTEM } from '../../../shared/document/document.dto'; import { FILE_NAME_TRUNCATE_LENGTH } from '../../../shared/constants'; import { DocumentUploadDialogComponent } from '../../../shared/document-upload-dialog/document-upload-dialog.component'; +import { DocumentUploadDialogData } from '../../../shared/document-upload-dialog/document-upload-dialog.interface'; @Component({ selector: 'app-documents', @@ -47,16 +48,18 @@ export class DocumentsComponent implements OnInit { } async onUploadFile() { + const data: DocumentUploadDialogData = { + allowsFileEdit: true, + fileId: this.fileId, + documentService: this.inquiryDocumentService, + }; + this.dialog .open(DocumentUploadDialogComponent, { minWidth: '600px', maxWidth: '800px', width: '70%', - data: { - fileId: this.fileId, - documentService: this.inquiryDocumentService, - allowsFileEdit: true, - }, + data, }) .afterClosed() .subscribe((isDirty) => { @@ -89,17 +92,19 @@ export class DocumentsComponent implements OnInit { } onEditFile(element: PlanningReviewDocumentDto) { + const data: DocumentUploadDialogData = { + allowsFileEdit: element.system === DOCUMENT_SYSTEM.ALCS, + fileId: this.fileId, + existingDocument: element, + documentService: this.inquiryDocumentService, + }; + this.dialog .open(DocumentUploadDialogComponent, { minWidth: '600px', maxWidth: '800px', width: '70%', - data: { - fileId: this.fileId, - existingDocument: element, - documentService: this.inquiryDocumentService, - allowsFileEdit: element.system === DOCUMENT_SYSTEM.ALCS, - }, + data, }) .afterClosed() .subscribe((isDirty: boolean) => { diff --git a/alcs-frontend/src/app/features/notice-of-intent/documents/documents.component.ts b/alcs-frontend/src/app/features/notice-of-intent/documents/documents.component.ts index 60fc85646..994df384a 100644 --- a/alcs-frontend/src/app/features/notice-of-intent/documents/documents.component.ts +++ b/alcs-frontend/src/app/features/notice-of-intent/documents/documents.component.ts @@ -23,6 +23,25 @@ import { } from '../../../shared/document-upload-dialog/document-upload-dialog.component'; import { NoticeOfIntentSubmissionService } from '../../../services/notice-of-intent/notice-of-intent-submission/notice-of-intent-submission.service'; import { NoticeOfIntentParcelService } from '../../../services/notice-of-intent/notice-of-intent-parcel/notice-of-intent-parcel.service'; +import { + DocumentUploadDialogData, + DocumentUploadDialogOptions, +} from '../../../shared/document-upload-dialog/document-upload-dialog.interface'; + +const DOCUMENT_UPLOAD_DIALOG_OPTIONS: DocumentUploadDialogOptions = { + allowedVisibilityFlags: ['A', 'C', 'G', 'P'], + allowsFileEdit: true, + documentTypeOverrides: { + [DOCUMENT_TYPE.CERTIFICATE_OF_TITLE]: { + visibilityGroups: [VisibilityGroup.INTERNAL], + allowsFileEdit: false, + }, + [DOCUMENT_TYPE.CORPORATE_SUMMARY]: { + visibilityGroups: [VisibilityGroup.INTERNAL], + allowsFileEdit: false, + }, + }, +}; @Component({ selector: 'app-noi-documents', @@ -67,37 +86,19 @@ export class NoiDocumentsComponent implements OnInit { } async onUploadFile() { - const submission = await this.noiSubmissionService.fetchSubmission(this.fileId); - const parcels = await this.noiParcelService.fetchParcels(this.fileId); + const data: DocumentUploadDialogData = Object.assign(DOCUMENT_UPLOAD_DIALOG_OPTIONS, { + fileId: this.fileId, + documentService: this.noiDocumentService, + parcelService: this.noiParcelService, + submissionService: this.noiSubmissionService, + }); this.dialog .open(DocumentUploadDialogComponent, { minWidth: '600px', maxWidth: '800px', width: '70%', - data: { - fileId: this.fileId, - documentService: this.noiDocumentService, - selectableParcels: parcels.map((parcel, index) => ({ ...parcel, index })), - selectableOwners: submission.owners - .filter((owner) => owner.type.code === 'ORGZ') - .map((owner) => ({ - label: owner.organizationName ?? owner.displayName, - uuid: owner.uuid, - })), - allowedVisibilityFlags: ['A', 'C', 'G', 'P'], - allowsFileEdit: true, - documentTypeOverrides: { - [DOCUMENT_TYPE.CERTIFICATE_OF_TITLE]: { - visibilityGroups: [VisibilityGroup.INTERNAL], - allowsFileEdit: false, - }, - [DOCUMENT_TYPE.CORPORATE_SUMMARY]: { - visibilityGroups: [VisibilityGroup.INTERNAL], - allowsFileEdit: false, - }, - }, - }, + data, }) .afterClosed() .subscribe((isDirty) => { @@ -116,38 +117,21 @@ export class NoiDocumentsComponent implements OnInit { } async onEditFile(element: NoticeOfIntentDocumentDto) { - const submission = await this.noiSubmissionService.fetchSubmission(this.fileId); - const parcels = await this.noiParcelService.fetchParcels(this.fileId); + const data: DocumentUploadDialogData = Object.assign(DOCUMENT_UPLOAD_DIALOG_OPTIONS, { + allowsFileEdit: element.system === DOCUMENT_SYSTEM.ALCS, + fileId: this.fileId, + existingDocument: element, + documentService: this.noiDocumentService, + parcelService: this.noiParcelService, + submissionService: this.noiSubmissionService, + }); this.dialog .open(DocumentUploadDialogComponent, { minWidth: '600px', maxWidth: '800px', width: '70%', - data: { - fileId: this.fileId, - existingDocument: element, - documentService: this.noiDocumentService, - selectableParcels: parcels.map((parcel, index) => ({ ...parcel, index })), - selectableOwners: submission.owners - .filter((owner) => owner.type.code === 'ORGZ') - .map((owner) => ({ - label: owner.organizationName ?? owner.displayName, - uuid: owner.uuid, - })), - allowedVisibilityFlags: ['A', 'C', 'G', 'P'], - allowsFileEdit: element.system === DOCUMENT_SYSTEM.ALCS, - documentTypeOverrides: { - [DOCUMENT_TYPE.CERTIFICATE_OF_TITLE]: { - visibilityGroups: [VisibilityGroup.INTERNAL], - allowsFileEdit: false, - }, - [DOCUMENT_TYPE.CORPORATE_SUMMARY]: { - visibilityGroups: [VisibilityGroup.INTERNAL], - allowsFileEdit: false, - }, - }, - }, + data, }) .afterClosed() .subscribe((isDirty: boolean) => { diff --git a/alcs-frontend/src/app/features/notification/documents/documents.component.ts b/alcs-frontend/src/app/features/notification/documents/documents.component.ts index 304785905..b34c4d720 100644 --- a/alcs-frontend/src/app/features/notification/documents/documents.component.ts +++ b/alcs-frontend/src/app/features/notification/documents/documents.component.ts @@ -12,6 +12,15 @@ import { ConfirmationDialogService } from '../../../shared/confirmation-dialog/c import { DOCUMENT_SYSTEM } from '../../../shared/document/document.dto'; import { FILE_NAME_TRUNCATE_LENGTH } from '../../../shared/constants'; import { DocumentUploadDialogComponent } from '../../../shared/document-upload-dialog/document-upload-dialog.component'; +import { + DocumentUploadDialogData, + DocumentUploadDialogOptions, +} from '../../../shared/document-upload-dialog/document-upload-dialog.interface'; + +const DOCUMENT_UPLOAD_DIALOG_OPTIONS: DocumentUploadDialogOptions = { + allowedVisibilityFlags: ['A', 'G', 'P'], + allowsFileEdit: true, +}; @Component({ selector: 'app-notification-documents', @@ -48,17 +57,17 @@ export class NotificationDocumentsComponent implements OnInit { } async onUploadFile() { + const data: DocumentUploadDialogData = Object.assign(DOCUMENT_UPLOAD_DIALOG_OPTIONS, { + fileId: this.fileId, + documentService: this.notificationDocumentService, + }); + this.dialog .open(DocumentUploadDialogComponent, { minWidth: '600px', maxWidth: '800px', width: '70%', - data: { - fileId: this.fileId, - documentService: this.notificationDocumentService, - allowedVisibilityFlags: ['A', 'G', 'P'], - allowsFileEdit: true, - }, + data, }) .afterClosed() .subscribe((isDirty) => { @@ -91,18 +100,19 @@ export class NotificationDocumentsComponent implements OnInit { } onEditFile(element: NoticeOfIntentDocumentDto) { + const data: DocumentUploadDialogData = Object.assign(DOCUMENT_UPLOAD_DIALOG_OPTIONS, { + allowsFileEdit: element.system === DOCUMENT_SYSTEM.ALCS, + fileId: this.fileId, + existingDocument: element, + documentService: this.notificationDocumentService, + }); + this.dialog .open(DocumentUploadDialogComponent, { minWidth: '600px', maxWidth: '800px', width: '70%', - data: { - fileId: this.fileId, - existingDocument: element, - documentService: this.notificationDocumentService, - allowedVisibilityFlags: ['A', 'G', 'P'], - allowsFileEdit: element.system === DOCUMENT_SYSTEM.ALCS, - }, + data, }) .afterClosed() .subscribe((isDirty: boolean) => { diff --git a/alcs-frontend/src/app/features/planning-review/documents/documents.component.ts b/alcs-frontend/src/app/features/planning-review/documents/documents.component.ts index f666bed56..25e50b576 100644 --- a/alcs-frontend/src/app/features/planning-review/documents/documents.component.ts +++ b/alcs-frontend/src/app/features/planning-review/documents/documents.component.ts @@ -10,6 +10,15 @@ import { ConfirmationDialogService } from '../../../shared/confirmation-dialog/c import { DOCUMENT_SYSTEM } from '../../../shared/document/document.dto'; import { FILE_NAME_TRUNCATE_LENGTH } from '../../../shared/constants'; import { DocumentUploadDialogComponent } from '../../../shared/document-upload-dialog/document-upload-dialog.component'; +import { + DocumentUploadDialogData, + DocumentUploadDialogOptions, +} from '../../../shared/document-upload-dialog/document-upload-dialog.interface'; + +const DOCUMENT_UPLOAD_DIALOG_OPTIONS: DocumentUploadDialogOptions = { + allowedVisibilityFlags: ['C'], + allowsFileEdit: true, +}; @Component({ selector: 'app-documents', @@ -48,17 +57,17 @@ export class DocumentsComponent implements OnInit { } async onUploadFile() { + const data: DocumentUploadDialogData = Object.assign(DOCUMENT_UPLOAD_DIALOG_OPTIONS, { + fileId: this.fileId, + documentService: this.planningReviewDocumentService, + }); + this.dialog .open(DocumentUploadDialogComponent, { minWidth: '600px', maxWidth: '800px', width: '70%', - data: { - fileId: this.fileId, - documentService: this.planningReviewDocumentService, - allowedVisibilityFlags: ['C'], - allowsFileEdit: true, - }, + data, }) .afterClosed() .subscribe((isDirty) => { @@ -91,18 +100,19 @@ export class DocumentsComponent implements OnInit { } onEditFile(element: PlanningReviewDocumentDto) { + const data: DocumentUploadDialogData = Object.assign(DOCUMENT_UPLOAD_DIALOG_OPTIONS, { + allowsFileEdit: element.system === DOCUMENT_SYSTEM.ALCS, + fileId: this.fileId, + existingDocument: element, + documentService: this.planningReviewDocumentService, + }); + this.dialog .open(DocumentUploadDialogComponent, { minWidth: '600px', maxWidth: '800px', width: '70%', - data: { - fileId: this.fileId, - existingDocument: element, - documentService: this.planningReviewDocumentService, - allowsFileEdit: true, - allowedVisibilityFlags: ['C'], - }, + data, }) .afterClosed() .subscribe((isDirty: boolean) => { diff --git a/alcs-frontend/src/app/shared/document-upload-dialog/document-upload-dialog.component.html b/alcs-frontend/src/app/shared/document-upload-dialog/document-upload-dialog.component.html index 0931a4cc9..a4bcb11c6 100644 --- a/alcs-frontend/src/app/shared/document-upload-dialog/document-upload-dialog.component.html +++ b/alcs-frontend/src/app/shared/document-upload-dialog/document-upload-dialog.component.html @@ -86,23 +86,23 @@

{{ title }} Document

-
+
Associated Parcel - - #{{ parcel.index + 1 }} PID: + + #{{ i + 1 }} PID: {{ parcel.pid | mask: '000-000-000' }} No Data
-
+
Associated Organization - + {{ owner.label }} diff --git a/alcs-frontend/src/app/shared/document-upload-dialog/document-upload-dialog.component.ts b/alcs-frontend/src/app/shared/document-upload-dialog/document-upload-dialog.component.ts index 8dcd3d988..517d01bc9 100644 --- a/alcs-frontend/src/app/shared/document-upload-dialog/document-upload-dialog.component.ts +++ b/alcs-frontend/src/app/shared/document-upload-dialog/document-upload-dialog.component.ts @@ -3,29 +3,23 @@ import { Component, EventEmitter, Inject, OnDestroy, OnInit, Output } from '@ang import { FormControl, FormGroup, Validators } from '@angular/forms'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; import { ToastService } from '../../services/toast/toast.service'; -import { DOCUMENT_SOURCE, DOCUMENT_SYSTEM, DOCUMENT_TYPE, DocumentTypeDto } from '../document/document.dto'; +import { DOCUMENT_SOURCE, DOCUMENT_TYPE, DocumentTypeDto } from '../document/document.dto'; import { FileHandle } from '../drag-drop-file/drag-drop-file.directive'; import { splitExtension } from '../utils/file'; -import { DecisionService, DocumentService } from './document-upload-dialog.interface'; import { CreateDocumentDto, - DocumentDto, SelectableOwnerDto, SelectableParcelDto, UpdateDocumentDto, } from './document-upload-dialog.dto'; import { Subject } from 'rxjs'; +import { DocumentUploadDialogData } from './document-upload-dialog.interface'; export enum VisibilityGroup { INTERNAL = 'Internal', PUBLIC = 'Public', } -export interface DocumentTypeConfig { - visibilityGroups: VisibilityGroup[]; - allowsFileEdit: boolean; -} - @Component({ selector: 'app-document-upload-dialog', templateUrl: './document-upload-dialog.component.html', @@ -74,20 +68,12 @@ export class DocumentUploadDialogComponent implements OnInit, OnDestroy { internalVisibilityLabel = ''; + selectableParcels: SelectableParcelDto[] = []; + selectableOwners: SelectableOwnerDto[] = []; + constructor( @Inject(MAT_DIALOG_DATA) - public data: { - fileId: string; - decisionUuid?: string; - existingDocument?: DocumentDto; - decisionService?: DecisionService; - documentService?: DocumentService; - selectableParcels?: SelectableParcelDto[]; - selectableOwners?: SelectableOwnerDto[]; - allowedVisibilityFlags?: ('A' | 'C' | 'G' | 'P')[]; - allowsFileEdit?: boolean; - documentTypeOverrides?: Record; - }, + public data: DocumentUploadDialogData, protected dialog: MatDialogRef, private toastService: ToastService, ) {} @@ -104,7 +90,7 @@ export class DocumentUploadDialogComponent implements OnInit, OnDestroy { this.allowsFileEdit = this.data.allowsFileEdit ?? this.allowsFileEdit; if (document.type && this.data.documentTypeOverrides && this.data.documentTypeOverrides[document.type.code]) { - this.allowsFileEdit = this.data.documentTypeOverrides[document.type.code].allowsFileEdit; + this.allowsFileEdit = !!this.data.documentTypeOverrides[document.type.code]?.allowsFileEdit; } if (document.type?.code === DOCUMENT_TYPE.CERTIFICATE_OF_TITLE) { @@ -267,32 +253,54 @@ export class DocumentUploadDialogComponent implements OnInit, OnDestroy { } async prepareCertificateOfTitleUpload(uuid?: string) { - if (this.data.selectableParcels && this.data.selectableParcels.length > 0) { - this.parcelId.setValidators([Validators.required]); - this.parcelId.updateValueAndValidity(); - this.source.setValue(DOCUMENT_SOURCE.APPLICANT); + this.source.setValue(DOCUMENT_SOURCE.APPLICANT); + this.parcelId.setValidators([Validators.required]); + this.parcelId.updateValueAndValidity(); - const selectedParcel = this.data.selectableParcels.find((parcel) => parcel.certificateOfTitleUuid === uuid); - if (selectedParcel) { - this.parcelId.setValue(selectedParcel.uuid); - } else if (uuid) { - this.showSupersededWarning = true; - } + if (!this.data.parcelService) { + return; + } + + this.selectableParcels = await this.data.parcelService.fetchParcels(this.data.fileId); + + if (this.selectableParcels.length < 1) { + return; + } + + const selectedParcel = this.selectableParcels.find((parcel) => parcel.certificateOfTitleUuid === uuid); + if (selectedParcel) { + this.parcelId.setValue(selectedParcel.uuid); + } else if (uuid) { + this.showSupersededWarning = true; } } async prepareCorporateSummaryUpload(uuid?: string) { - if (this.data.selectableOwners && this.data.selectableOwners.length > 0) { - this.ownerId.setValidators([Validators.required]); - this.ownerId.updateValueAndValidity(); - this.source.setValue(DOCUMENT_SOURCE.APPLICANT); + this.source.setValue(DOCUMENT_SOURCE.APPLICANT); + this.ownerId.setValidators([Validators.required]); + this.ownerId.updateValueAndValidity(); - const selectedOwner = this.data.selectableOwners.find((owner) => owner.corporateSummaryUuid === uuid); - if (selectedOwner) { - this.ownerId.setValue(selectedOwner.uuid); - } else if (uuid) { - this.showSupersededWarning = true; - } + if (!this.data.submissionService) { + return; + } + + const submission = await this.data.submissionService.fetchSubmission(this.data.fileId); + this.selectableOwners = submission.owners + .filter((owner) => owner.type.code === 'ORGZ') + .map((owner) => ({ + ...owner, + label: owner.organizationName ?? owner.displayName, + })); + + if (this.selectableOwners.length < 1) { + return; + } + + const selectedOwner = this.selectableOwners.find((owner) => owner.corporateSummaryUuid === uuid); + if (selectedOwner) { + this.ownerId.setValue(selectedOwner.uuid); + } else if (uuid) { + this.showSupersededWarning = true; } } @@ -302,7 +310,7 @@ export class DocumentUploadDialogComponent implements OnInit, OnDestroy { } if (this.data.documentTypeOverrides && this.data.documentTypeOverrides[$event.code]) { - for (const visibilityGroup of this.data.documentTypeOverrides[$event.code].visibilityGroups) { + for (const visibilityGroup of this.data.documentTypeOverrides[$event.code]?.visibilityGroups ?? []) { if (visibilityGroup === VisibilityGroup.INTERNAL) { this.visibleToInternal.setValue(true); } diff --git a/alcs-frontend/src/app/shared/document-upload-dialog/document-upload-dialog.dto.ts b/alcs-frontend/src/app/shared/document-upload-dialog/document-upload-dialog.dto.ts index 73bb4085f..3f731540c 100644 --- a/alcs-frontend/src/app/shared/document-upload-dialog/document-upload-dialog.dto.ts +++ b/alcs-frontend/src/app/shared/document-upload-dialog/document-upload-dialog.dto.ts @@ -1,4 +1,5 @@ import { DOCUMENT_SOURCE, DOCUMENT_SYSTEM, DOCUMENT_TYPE, DocumentTypeDto } from '../../shared/document/document.dto'; +import { BaseCodeDto } from '../dto/base.dto'; export interface UpdateDocumentDto { file?: File; @@ -32,13 +33,24 @@ export interface DocumentDto { export interface SelectableParcelDto { uuid: string; - pid: string; - certificateOfTitleUuid: string; - index: string; + pid?: string; + certificateOfTitleUuid?: string; +} + +export interface OwnerDto { + uuid: string; + displayName: string; + organizationName?: string | null; + corporateSummaryUuid?: string; + type: BaseCodeDto; } export interface SelectableOwnerDto { - label: string; uuid: string; - corporateSummaryUuid: string; + corporateSummaryUuid?: string; + label: string; +} + +export interface SubmissionOwnersDto { + owners: OwnerDto[]; } diff --git a/alcs-frontend/src/app/shared/document-upload-dialog/document-upload-dialog.interface.ts b/alcs-frontend/src/app/shared/document-upload-dialog/document-upload-dialog.interface.ts index 34e7f4dbc..70e249a65 100644 --- a/alcs-frontend/src/app/shared/document-upload-dialog/document-upload-dialog.interface.ts +++ b/alcs-frontend/src/app/shared/document-upload-dialog/document-upload-dialog.interface.ts @@ -1,5 +1,33 @@ -import { DocumentTypeDto } from '../document/document.dto'; -import { CreateDocumentDto, UpdateDocumentDto } from './document-upload-dialog.dto'; +import { DOCUMENT_TYPE, DocumentTypeDto } from '../document/document.dto'; +import { VisibilityGroup } from './document-upload-dialog.component'; +import { + CreateDocumentDto, + DocumentDto, + SelectableParcelDto, + SubmissionOwnersDto, + UpdateDocumentDto, +} from './document-upload-dialog.dto'; + +export interface DocumentTypeConfig { + visibilityGroups: VisibilityGroup[]; + allowsFileEdit: boolean; +} + +export interface DocumentUploadDialogOptions { + allowedVisibilityFlags?: ('A' | 'C' | 'G' | 'P')[]; + allowsFileEdit?: boolean; + documentTypeOverrides?: Partial>; +} + +export interface DocumentUploadDialogData extends DocumentUploadDialogOptions { + fileId: string; + decisionUuid?: string; + existingDocument?: DocumentDto; + decisionService?: DecisionService; + documentService?: DocumentService; + parcelService?: ParcelFetchingService; + submissionService?: SubmissionFetchingService; +} export interface DecisionService { uploadFile(decisionUuid: string, file: File): Promise; @@ -15,3 +43,11 @@ export interface DocumentService { fetchTypes(): Promise; delete(uuid: string): Promise; } + +export interface ParcelFetchingService { + fetchParcels(fileNumber: string): Promise; +} + +export interface SubmissionFetchingService { + fetchSubmission(fileNumber: string): Promise; +}