diff --git a/alfa-client/apps/alfa-e2e/docker-compose.yml b/alfa-client/apps/alfa-e2e/docker-compose.yml index e541a7eef1c009fcd890726f87fb35cb11b50868..87ba1fd977b263593ca7afbf8f12308f276d808b 100644 --- a/alfa-client/apps/alfa-e2e/docker-compose.yml +++ b/alfa-client/apps/alfa-e2e/docker-compose.yml @@ -99,6 +99,7 @@ services: - OZGCLOUD_VORGANG_PROCESSOR_1_FORM_ENGINE_NAME=AFM - OZGCLOUD_VORGANG_PROCESSOR_1_FORM_ID=Erstattung_FAIL - OZGCLOUD_VORGANG_PROCESSOR_NAMES_0=ticketCheck + - OZGCLOUD_DMS_ENABLED=true - SPRING_PROFILES_ACTIVE=remotekc, e2e - LOGGING_CONFIG=classpath:log4j2-local.xml - BPL_DEBUG_ENABLED=true diff --git a/alfa-client/libs/design-system/src/index.ts b/alfa-client/libs/design-system/src/index.ts index d64022f37b2b81e968b4bed34e2eed7d5741ccae..eb0a752d38fbdc5feb3b11185278983743979abf 100644 --- a/alfa-client/libs/design-system/src/index.ts +++ b/alfa-client/libs/design-system/src/index.ts @@ -16,6 +16,7 @@ export * from './lib/form/radio-button-card/radio-button-card.component'; export * from './lib/form/text-input/text-input.component'; export * from './lib/form/textarea/textarea.component'; export * from './lib/icons/admin-logo-icon/admin-logo-icon.component'; +export * from './lib/icons/archive-icon/archive-icon.component'; export * from './lib/icons/attachment-icon/attachment-icon.component'; export * from './lib/icons/bescheid-generate-icon/bescheid-generate-icon.component'; export * from './lib/icons/bescheid-upload-icon/bescheid-upload-icon.component'; diff --git a/alfa-client/libs/ui/src/lib/ui/ui.module.ts b/alfa-client/libs/ui/src/lib/ui/ui.module.ts index 1de739a67321cc119503aa79f7ec17eb25e1fe33..168d6dfc0aa8938d3ab9c0cb82da0e8beb109e48 100644 --- a/alfa-client/libs/ui/src/lib/ui/ui.module.ts +++ b/alfa-client/libs/ui/src/lib/ui/ui.module.ts @@ -239,6 +239,7 @@ import { ValidationErrorComponent } from './validation-error/validation-error.co OzgcloudPasteTextButtonComponent, CheckboxEnumEditorComponent, FileUploadButtonComponent, + OzgcloudButtonContentComponent, ], providers: [ { diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-archive-container/vorgang-archive-confirmation-dialog-container/vorgang-archive-confirmation-dialog-container.component.html b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-archive-container/vorgang-archive-confirmation-dialog-container/vorgang-archive-confirmation-dialog-container.component.html new file mode 100644 index 0000000000000000000000000000000000000000..7841dbaf5d8b81fe52a6a1881b3fe39e55951e1a --- /dev/null +++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-archive-container/vorgang-archive-confirmation-dialog-container/vorgang-archive-confirmation-dialog-container.component.html @@ -0,0 +1,4 @@ +<alfa-vorgang-archive-confirmation-dialog + (confirmationButtonClicked)="onConfirmationButtonClicked()" + (cancelButtonClicked)="onCancelButtonClicked()" +/> \ No newline at end of file diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-archive-container/vorgang-archive-confirmation-dialog-container/vorgang-archive-confirmation-dialog-container.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-archive-container/vorgang-archive-confirmation-dialog-container/vorgang-archive-confirmation-dialog-container.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..daa41d9a53c14338ecf3205ce9fa114805b54008 --- /dev/null +++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-archive-container/vorgang-archive-confirmation-dialog-container/vorgang-archive-confirmation-dialog-container.component.spec.ts @@ -0,0 +1,84 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { createStateResource, StateResource } from '@alfa-client/tech-shared'; +import { mock } from '@alfa-client/test-utils'; +import { VorgangService, VorgangWithEingangResource } from '@alfa-client/vorgang-shared'; +import { DialogRef } from '@angular/cdk/dialog'; +import { createVorgangWithEingangResource } from 'libs/vorgang-shared/test/vorgang'; +import { MockComponent } from 'ng-mocks'; +import { describe } from 'node:test'; +import { of } from 'rxjs'; +import { VorgangArchiveConfirmationDialogContainerComponent } from './vorgang-archive-confirmation-dialog-container.component'; +import { VorgangArchiveConfirmationDialogComponent } from './vorgang-archive-confirmation-dialog/vorgang-archive-confirmation-dialog.component'; + +describe('VorgangArchiveConfirmationDialogContainerComponent', () => { + let component: VorgangArchiveConfirmationDialogContainerComponent; + let fixture: ComponentFixture<VorgangArchiveConfirmationDialogContainerComponent>; + + const vorgangWithEingang: VorgangWithEingangResource = createVorgangWithEingangResource(); + const dialogRef = { ...mock(DialogRef), config: { data: { vorgangWithEingang } } }; + + const vorgangArchiveState: StateResource<boolean> = createStateResource(true); + const vorgangService = { + ...mock(VorgangService), + getVorgangArchive: jest.fn().mockReturnValue(of(createStateResource(vorgangArchiveState))), + }; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ + VorgangArchiveConfirmationDialogContainerComponent, + MockComponent(VorgangArchiveConfirmationDialogComponent), + ], + providers: [ + { provide: DialogRef, useValue: dialogRef }, + { + provide: VorgangService, + useValue: vorgangService, + }, + ], + }).compileComponents(); + + fixture = TestBed.createComponent(VorgangArchiveConfirmationDialogContainerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); + + describe('component', () => { + describe('ngOnInit', () => { + it('should get archive', () => { + component.ngOnInit(); + + expect(vorgangService.getVorgangArchive).toHaveBeenCalled(); + }); + }); + + describe('archiveDoneHandler', () => { + it('should close dialog if archive is done', () => { + component.archiveDoneHandler(vorgangArchiveState); + + expect(dialogRef.close).toHaveBeenCalled(); + }); + }); + + describe('onCancelButtonClicked', () => { + it('should close dialog', () => { + component.onCancelButtonClicked(); + + expect(dialogRef.close).toHaveBeenCalled(); + }); + }); + + describe('onConfirmationButtonClicked', () => { + it('should archive vorgang', () => { + component.onConfirmationButtonClicked(); + + expect(vorgangService.archive).toHaveBeenCalledWith(vorgangWithEingang); + }); + }); + }); +}); diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-archive-container/vorgang-archive-confirmation-dialog-container/vorgang-archive-confirmation-dialog-container.component.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-archive-container/vorgang-archive-confirmation-dialog-container/vorgang-archive-confirmation-dialog-container.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..480855deff30a1fb85dddad4f80e32580e4ac5f2 --- /dev/null +++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-archive-container/vorgang-archive-confirmation-dialog-container/vorgang-archive-confirmation-dialog-container.component.ts @@ -0,0 +1,37 @@ +import { StateResource } from '@alfa-client/tech-shared'; +import { VorgangService, VorgangWithEingangResource } from '@alfa-client/vorgang-shared'; +import { DialogRef } from '@angular/cdk/dialog'; +import { Component, inject, OnInit } from '@angular/core'; +import { Observable, tap } from 'rxjs'; +import { VorgangArchiveConfirmationDialogData } from './vorgang-archive-confirmation-dialog/vorgang-archive-confirmation-dialog.model'; + +@Component({ + selector: 'alfa-vorgang-archive-confirmation-dialog-container', + templateUrl: './vorgang-archive-confirmation-dialog-container.component.html', +}) +export class VorgangArchiveConfirmationDialogContainerComponent implements OnInit { + private vorgangService = inject(VorgangService); + private dialogRef = inject(DialogRef<unknown, VorgangArchiveConfirmationDialogData>); + + private vorgangWithEingang: VorgangWithEingangResource = this.dialogRef.config.data.vorgangWithEingang; + + public archiveStateResource$: Observable<StateResource<boolean>>; + + ngOnInit(): void { + this.archiveStateResource$ = this.vorgangService + .getVorgangArchive() + .pipe(tap((vorgangArchiveStateResource) => this.archiveDoneHandler(vorgangArchiveStateResource))); + } + + archiveDoneHandler(vorgangArchiveStateResource: StateResource<boolean>): void { + if (vorgangArchiveStateResource.resource) this.dialogRef.close(); + } + + public onCancelButtonClicked(): void { + this.dialogRef.close(); + } + + public onConfirmationButtonClicked(): void { + this.vorgangService.archive(this.vorgangWithEingang); + } +} diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-archive-container/vorgang-archive-confirmation-dialog-container/vorgang-archive-confirmation-dialog/vorgang-archive-confirmation-dialog.component.html b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-archive-container/vorgang-archive-confirmation-dialog-container/vorgang-archive-confirmation-dialog/vorgang-archive-confirmation-dialog.component.html new file mode 100644 index 0000000000000000000000000000000000000000..1d348fb6912ee1f7238036c3d153c711fe951c2f --- /dev/null +++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-archive-container/vorgang-archive-confirmation-dialog-container/vorgang-archive-confirmation-dialog/vorgang-archive-confirmation-dialog.component.html @@ -0,0 +1,25 @@ +<div class="border border-grayborder rounded bg-background-50 p-8 shadow shadow-grayborder"> + <h1 class="text-xl font-bold text-primary-600 mb-8"> + Möchten Sie den Vorgang aus Alfa löschen und im DMS archivieren? + </h1> + + <p class="text-base mb-8"> + Diese Aktion kann nicht rückgängig gemacht werden! + </p> + + <div class="flex gap-6"> + <ods-button-with-spinner + dataTestId="archive-confirmation-button" + text="Löschen und archivieren" + [stateResource]="archiveStateResource" + (click)="confirmationButtonClicked.emit()" + /> + + <ods-button + dataTestId="archive-cancel-button" + text="Abbrechen" + variant="outline" + (click)="cancelButtonClicked.emit()" + /> + </div> +</div> diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-archive-container/vorgang-archive-confirmation-dialog-container/vorgang-archive-confirmation-dialog/vorgang-archive-confirmation-dialog.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-archive-container/vorgang-archive-confirmation-dialog-container/vorgang-archive-confirmation-dialog/vorgang-archive-confirmation-dialog.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..cf49db8cce831963560561581528dfa7d308db55 --- /dev/null +++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-archive-container/vorgang-archive-confirmation-dialog-container/vorgang-archive-confirmation-dialog/vorgang-archive-confirmation-dialog.component.spec.ts @@ -0,0 +1,29 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ButtonWithSpinnerComponent } from '@ods/component'; +import { ButtonComponent } from '@ods/system'; +import { MockComponent } from 'ng-mocks'; +import { VorgangArchiveConfirmationDialogComponent } from './vorgang-archive-confirmation-dialog.component'; + +describe('VorgangArchiveConfirmationDialogComponent', () => { + let component: VorgangArchiveConfirmationDialogComponent; + let fixture: ComponentFixture<VorgangArchiveConfirmationDialogComponent>; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [ + VorgangArchiveConfirmationDialogComponent, + MockComponent(ButtonWithSpinnerComponent), + MockComponent(ButtonComponent), + ], + }).compileComponents(); + + fixture = TestBed.createComponent(VorgangArchiveConfirmationDialogComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-archive-container/vorgang-archive-confirmation-dialog-container/vorgang-archive-confirmation-dialog/vorgang-archive-confirmation-dialog.component.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-archive-container/vorgang-archive-confirmation-dialog-container/vorgang-archive-confirmation-dialog/vorgang-archive-confirmation-dialog.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..d955da4738ef427adcbea7850f9cfd85975219ff --- /dev/null +++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-archive-container/vorgang-archive-confirmation-dialog-container/vorgang-archive-confirmation-dialog/vorgang-archive-confirmation-dialog.component.ts @@ -0,0 +1,13 @@ +import { StateResource } from '@alfa-client/tech-shared'; +import { Component, EventEmitter, Input, Output } from '@angular/core'; + +@Component({ + selector: 'alfa-vorgang-archive-confirmation-dialog', + templateUrl: './vorgang-archive-confirmation-dialog.component.html', +}) +export class VorgangArchiveConfirmationDialogComponent { + @Input() archiveStateResource: StateResource<boolean>; + + @Output() cancelButtonClicked = new EventEmitter(); + @Output() confirmationButtonClicked = new EventEmitter(); +} diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-archive-container/vorgang-archive-confirmation-dialog-container/vorgang-archive-confirmation-dialog/vorgang-archive-confirmation-dialog.model.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-archive-container/vorgang-archive-confirmation-dialog-container/vorgang-archive-confirmation-dialog/vorgang-archive-confirmation-dialog.model.ts new file mode 100644 index 0000000000000000000000000000000000000000..970fe72c357d5219599c1b08ae9b63fe4fa947e3 --- /dev/null +++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-archive-container/vorgang-archive-confirmation-dialog-container/vorgang-archive-confirmation-dialog/vorgang-archive-confirmation-dialog.model.ts @@ -0,0 +1,5 @@ +import { VorgangWithEingangResource } from '@alfa-client/vorgang-shared'; + +export type VorgangArchiveConfirmationDialogData = { + vorgangWithEingang: VorgangWithEingangResource; +}; diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-archive-container/vorgang-archive-container.component.html b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-archive-container/vorgang-archive-container.component.html index 8f1ba48d7d459923fdb801fbc5c7658e56b0f3fa..3e98adaa3682b9c15e2f4022337ae6b976bb7571 100644 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-archive-container/vorgang-archive-container.component.html +++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-archive-container/vorgang-archive-container.component.html @@ -1,7 +1,6 @@ <ozgcloud-button-with-spinner dataTestId="archive-vorgang" - [showSpinner]="(archiveStateResource$ | async)?.loading" - (clickEmitter)="archive()" - text="Herunterladen" - icon="save_alt" + (click)="openArchiveConfirmationDialog()" + text="Archivierung starten" + icon="archive" /> \ No newline at end of file diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-archive-container/vorgang-archive-container.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-archive-container/vorgang-archive-container.component.spec.ts index c3c01a82947c1c05557fceed89eb30eab2e7affe..719a3d1c86750caaef87f14d33bf391c27286977 100644 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-archive-container/vorgang-archive-container.component.spec.ts +++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-archive-container/vorgang-archive-container.component.spec.ts @@ -1,37 +1,39 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { createEmptyStateResource, createStateResource, StateResource } from '@alfa-client/tech-shared'; import { mock } from '@alfa-client/test-utils'; -import { OzgcloudButtonWithSpinnerComponent } from '@alfa-client/ui'; -import { VorgangService } from '@alfa-client/vorgang-shared'; +import { OzgcloudButtonWithSpinnerComponent, OzgcloudDialogService } from '@alfa-client/ui'; +import { createVorgangWithEingangResource } from 'libs/vorgang-shared/test/vorgang'; import { MockComponent } from 'ng-mocks'; import { describe } from 'node:test'; -import { of } from 'rxjs'; +import { VorgangArchiveConfirmationDialogContainerComponent } from './vorgang-archive-confirmation-dialog-container/vorgang-archive-confirmation-dialog-container.component'; import { VorgangArchiveContainerComponent } from './vorgang-archive-container.component'; describe('VorgangArchiveContainerComponent', () => { let component: VorgangArchiveContainerComponent; let fixture: ComponentFixture<VorgangArchiveContainerComponent>; - const vorgangArchiveState: StateResource<boolean> = createStateResource(true); - const vorgangService = { - ...mock(VorgangService), - getVorgangArchive: jest.fn().mockReturnValue(of(createStateResource(vorgangArchiveState))), - }; + const vorgangWithEingang = createVorgangWithEingangResource(); + + const dialogService = mock(OzgcloudDialogService); beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [VorgangArchiveContainerComponent, MockComponent(OzgcloudButtonWithSpinnerComponent)], + imports: [ + VorgangArchiveContainerComponent, + MockComponent(OzgcloudButtonWithSpinnerComponent), + MockComponent(VorgangArchiveConfirmationDialogContainerComponent), + ], providers: [ { - provide: VorgangService, - useValue: vorgangService, + provide: OzgcloudDialogService, + useValue: dialogService, }, ], }).compileComponents(); fixture = TestBed.createComponent(VorgangArchiveContainerComponent); component = fixture.componentInstance; + component.vorgangWithEingang = vorgangWithEingang; fixture.detectChanges(); }); @@ -40,29 +42,13 @@ describe('VorgangArchiveContainerComponent', () => { }); describe('component', () => { - describe('ngOnInit', () => { - it('should get archive', () => { - vorgangService.getVorgangArchive.mockReturnValueOnce(of(createEmptyStateResource<boolean>())); - component.ngOnInit(); - - expect(vorgangService.getVorgangArchive).toHaveBeenCalled(); - }); - }); - - describe('archiveDoneHandler', () => { - it('should closeMenu if archive is done', () => { - jest.spyOn(component.closeMenu, 'emit'); - component.archiveDoneHandler(vorgangArchiveState); - - expect(component.closeMenu.emit).toHaveBeenCalled(); - }); - }); - - describe('archive', () => { - it('should call archive', () => { - component.archive(); + describe('openArchiveConfirmationDialog', () => { + it('should call dialog service open', () => { + component.openArchiveConfirmationDialog(); - expect(vorgangService.archive).toHaveBeenCalled(); + expect(dialogService.open).toHaveBeenCalledWith(VorgangArchiveConfirmationDialogContainerComponent, { + vorgangWithEingang, + }); }); }); }); diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-archive-container/vorgang-archive-container.component.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-archive-container/vorgang-archive-container.component.ts index 4326ebf527478bee0bc0530c486408cd98e39d9a..e8928b9a514fbe1c75655491916c854c066efbc7 100644 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-archive-container/vorgang-archive-container.component.ts +++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-archive-container/vorgang-archive-container.component.ts @@ -1,32 +1,30 @@ -import { StateResource } from '@alfa-client/tech-shared'; -import { VorgangService, VorgangWithEingangResource } from '@alfa-client/vorgang-shared'; -import { Component, EventEmitter, inject, Input, OnInit, Output } from '@angular/core'; -import { Observable, tap } from 'rxjs'; +import { OzgcloudDialogService } from '@alfa-client/ui'; +import { VorgangWithEingangLinkRel, VorgangWithEingangResource } from '@alfa-client/vorgang-shared'; +import { Component, inject, Input } from '@angular/core'; +import { VorgangArchiveConfirmationDialogContainerComponent } from './vorgang-archive-confirmation-dialog-container/vorgang-archive-confirmation-dialog-container.component'; +import { VorgangArchiveConfirmationDialogData } from './vorgang-archive-confirmation-dialog-container/vorgang-archive-confirmation-dialog/vorgang-archive-confirmation-dialog.model'; @Component({ selector: 'alfa-vorgang-archive-container', templateUrl: './vorgang-archive-container.component.html', }) -export class VorgangArchiveContainerComponent implements OnInit { - private vorgangService = inject(VorgangService); +export class VorgangArchiveContainerComponent { + private dialogService = inject(OzgcloudDialogService); @Input() vorgangWithEingang: VorgangWithEingangResource; - @Output() public closeMenu: EventEmitter<void> = new EventEmitter(); + protected readonly vorgangWithEingangLinkRel = VorgangWithEingangLinkRel; - public archiveStateResource$: Observable<StateResource<boolean>>; - - ngOnInit(): void { - this.archiveStateResource$ = this.vorgangService - .getVorgangArchive() - .pipe(tap((vorgangArchiveStateResource) => this.archiveDoneHandler(vorgangArchiveStateResource))); - } - - archiveDoneHandler(vorgangArchiveStateResource: StateResource<boolean>): void { - if (vorgangArchiveStateResource.resource) this.closeMenu.emit(); + public openArchiveConfirmationDialog(): void { + this.dialogService.open<unknown, VorgangArchiveConfirmationDialogData>( + VorgangArchiveConfirmationDialogContainerComponent, + this.buildDialogData(), + ); } - public archive(): void { - this.vorgangService.archive(this.vorgangWithEingang); + private buildDialogData(): VorgangArchiveConfirmationDialogData { + return { + vorgangWithEingang: this.vorgangWithEingang, + }; } } diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-detail-more-menu.component.html b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-detail-more-menu.component.html index 23e11478c252a7ce31b6ad8d4e333a0f159e4772..fb87b2ef9c8d6442338ed144feaff7576537897c 100644 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-detail-more-menu.component.html +++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-detail-more-menu.component.html @@ -19,7 +19,6 @@ > <alfa-vorgang-archive-container [vorgangWithEingang]="vorgangWithEingang" - (closeMenu)="closeMenu()" ></alfa-vorgang-archive-container> </ozgcloud-menu-item> <ozgcloud-menu-item diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-detail-more-menu.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-detail-more-menu.component.spec.ts index 42e7b2a496d570e53e0706ee476e647387a1f753..4935e09e10f083ac8778a395433ae2448965f0f3 100644 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-detail-more-menu.component.spec.ts +++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-more-menu/vorgang-detail-more-menu.component.spec.ts @@ -213,7 +213,6 @@ describe('VorgangDetailMoreMenuComponent', () => { }); it('should contains icon', () => { - // TODO: change icon expect(menuItem.icon).toBe('xdomea_file'); }); diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts index 47bdf2bfc044cb547cb1455fcba6093605bbbb33..9f82390ab1212cf4e5d2b468510618684c8aad1e 100644 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts +++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts @@ -49,6 +49,7 @@ import { TextareaEditorComponent, } from '@ods/component'; import { + ArchiveIconComponent, AttachmentComponent, AttachmentWrapperComponent, BescheidGenerateIconComponent, @@ -110,6 +111,8 @@ import { VorgangDetailBescheidenUeberspringenDialogComponent } from './vorgang-d import { VorgangDetailBescheidenStepsComponent } from './vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps.component'; import { VorgangDetailBescheidenWeiterButtonComponent } from './vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-weiter-button/vorgang-detail-bescheiden-weiter-button.component'; import { VorgangDetailBescheidenComponent } from './vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden.component'; +import { VorgangArchiveConfirmationDialogContainerComponent } from './vorgang-detail-page/vorgang-detail-more-menu/vorgang-archive-container/vorgang-archive-confirmation-dialog-container/vorgang-archive-confirmation-dialog-container.component'; +import { VorgangArchiveConfirmationDialogComponent } from './vorgang-detail-page/vorgang-detail-more-menu/vorgang-archive-container/vorgang-archive-confirmation-dialog-container/vorgang-archive-confirmation-dialog/vorgang-archive-confirmation-dialog.component'; import { VorgangArchiveContainerComponent } from './vorgang-detail-page/vorgang-detail-more-menu/vorgang-archive-container/vorgang-archive-container.component'; import { VorgangDetailMoreMenuComponent } from './vorgang-detail-page/vorgang-detail-more-menu/vorgang-detail-more-menu.component'; import { VorgangExportContainerComponent } from './vorgang-detail-page/vorgang-detail-more-menu/vorgang-export-container/vorgang-export-container.component'; @@ -164,6 +167,7 @@ const routes: Routes = [ BescheidStatusTextComponent, ErrorMessageComponent, CollaborationModule, + ArchiveIconComponent, ], declarations: [ VorgangDetailPageComponent, @@ -216,6 +220,8 @@ const routes: Routes = [ VorgangDetailBescheidenResultNachrichtComponent, VorgangDetailDateienContainerComponent, VorgangArchiveContainerComponent, + VorgangArchiveConfirmationDialogContainerComponent, + VorgangArchiveConfirmationDialogComponent, ], exports: [VorgangDetailAntragstellerComponent, VorgangDetailAntragDataComponent, VorgangDetailBescheidenComponent], }) diff --git a/alfa-client/libs/vorgang-detail/src/test-setup.ts b/alfa-client/libs/vorgang-detail/src/test-setup.ts index e09d95a1bd4455db9bfd16809b94659c30a83956..03a84127dca1b63fa485fc51d162cec76921b596 100644 --- a/alfa-client/libs/vorgang-detail/src/test-setup.ts +++ b/alfa-client/libs/vorgang-detail/src/test-setup.ts @@ -25,10 +25,7 @@ import '@testing-library/jest-dom'; import 'jest-preset-angular/setup-jest'; import { getTestBed } from '@angular/core/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting, -} from '@angular/platform-browser-dynamic/testing'; +import { BrowserDynamicTestingModule, platformBrowserDynamicTesting } from '@angular/platform-browser-dynamic/testing'; getTestBed().resetTestEnvironment(); getTestBed().initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting(), { diff --git a/alfa-client/libs/vorgang-shared/src/lib/vorgang.service.ts b/alfa-client/libs/vorgang-shared/src/lib/vorgang.service.ts index aaccdb6ab0f27699625c0b725802fa44c2b69a6a..34947c9ce8fb745991de537b92f16b4ce9558b38 100644 --- a/alfa-client/libs/vorgang-shared/src/lib/vorgang.service.ts +++ b/alfa-client/libs/vorgang-shared/src/lib/vorgang.service.ts @@ -172,7 +172,9 @@ export class VorgangService { return of(createEmptyStateResource<boolean>()); } - public archive(vorgangWithEingang: VorgangWithEingangResource): void {} + public archive(vorgangWithEingang: VorgangWithEingangResource): Observable<StateResource<CommandResource>> { + return of(createEmptyStateResource<CommandResource>()); + } public processVorgang(vorgangWithEingang: VorgangWithEingangResource): Observable<StateResource<CommandResource>> { return this.commandService.createCommandByProps(this.createProcessVorgangCommandProps(vorgangWithEingang));