From 0e631fb7c4146adbb7a83fb78bf1f09a2fec94d1 Mon Sep 17 00:00:00 2001 From: domoberzin Date: Mon, 1 Apr 2024 13:46:42 +0800 Subject: [PATCH 1/8] add edit and approve functionality --- .../account-request-table.component.html | 8 ++- .../account-request-table.component.ts | 46 ++++++++++++++- .../account-request-table.module.ts | 4 ++ .../admin-edit-request-modal-model.ts | 9 +++ .../admin-edit-request-modal.component.html | 35 ++++++++++++ .../admin-edit-request-modal.component.scss | 0 .../admin-edit-request-modal.component.ts | 40 +++++++++++++ src/web/services/account.service.ts | 57 ++++++++++++++++++- 8 files changed, 196 insertions(+), 3 deletions(-) create mode 100644 src/web/app/components/account-requests-table/admin-edit-request-modal/admin-edit-request-modal-model.ts create mode 100644 src/web/app/components/account-requests-table/admin-edit-request-modal/admin-edit-request-modal.component.html create mode 100644 src/web/app/components/account-requests-table/admin-edit-request-modal/admin-edit-request-modal.component.scss create mode 100644 src/web/app/components/account-requests-table/admin-edit-request-modal/admin-edit-request-modal.component.ts diff --git a/src/web/app/components/account-requests-table/account-request-table.component.html b/src/web/app/components/account-requests-table/account-request-table.component.html index 2959ee3b480..dd35bbb0082 100644 --- a/src/web/app/components/account-requests-table/account-request-table.component.html +++ b/src/web/app/components/account-requests-table/account-request-table.component.html @@ -51,6 +51,11 @@
+
+ + + +
+ +
diff --git a/src/web/app/components/account-requests-table/account-request-table.component.ts b/src/web/app/components/account-requests-table/account-request-table.component.ts index dc3ef132795..b56c0493923 100755 --- a/src/web/app/components/account-requests-table/account-request-table.component.ts +++ b/src/web/app/components/account-requests-table/account-request-table.component.ts @@ -1,6 +1,7 @@ import { Component, Input } from '@angular/core'; -import { NgbModalRef } from '@ng-bootstrap/ng-bootstrap'; +import { NgbModalRef, NgbModal } from '@ng-bootstrap/ng-bootstrap'; import { AccountRequestTableRowModel } from './account-request-table-model'; +import { EditRequestModalComponent } from './admin-edit-request-modal/admin-edit-request-modal.component'; import { AccountService } from '../../../services/account.service'; import { SimpleModalService } from '../../../services/simple-modal.service'; import { StatusMessageService } from '../../../services/status-message.service'; @@ -31,6 +32,7 @@ export class AccountRequestTableComponent { private statusMessageService: StatusMessageService, private simpleModalService: SimpleModalService, private accountService: AccountService, + private ngbModal: NgbModal, ) {} /** @@ -51,6 +53,48 @@ export class AccountRequestTableComponent { } } + editAccountRequest(accountRequest: AccountRequestTableRowModel): void { + const modalRef: NgbModalRef = this.ngbModal.open(EditRequestModalComponent); + modalRef.componentInstance.accountRequestName = accountRequest.name; + modalRef.componentInstance.accountRequestEmail = accountRequest.email; + modalRef.componentInstance.accountRequestInstitution = accountRequest.instituteAndCountry; + modalRef.componentInstance.accountRequestComment = accountRequest.comments; + + modalRef.result.then(() => { + this.accountService.editAccountRequest( + accountRequest.id, + modalRef.componentInstance.accountRequestName, + modalRef.componentInstance.accountRequestEmail, + modalRef.componentInstance.accountRequestInstitution, + modalRef.componentInstance.accountRequestComment) + .subscribe({ + next: (resp: MessageOutput) => { + this.statusMessageService.showSuccessToast(resp.message); + accountRequest.comments = modalRef.componentInstance.accountRequestComment; + accountRequest.name = modalRef.componentInstance.accountRequestName; + accountRequest.email = modalRef.componentInstance.accountRequestEmail; + accountRequest.instituteAndCountry = modalRef.componentInstance.accountRequestInstitution; + }, + error: (resp: ErrorMessageOutput) => { + this.statusMessageService.showErrorToast(resp.error.message); + }, + }); + }); + } + + approveAccountRequest(accountRequest: AccountRequestTableRowModel): void { + this.accountService.approveAccountRequest(accountRequest.id, accountRequest.name, + accountRequest.email, accountRequest.instituteAndCountry, accountRequest.comments) + .subscribe({ + next: () => { + accountRequest.status = 'APPROVED'; + }, + error: (resp: ErrorMessageOutput) => { + this.statusMessageService.showErrorToast(resp.error.message); + }, + }); + } + resetAccountRequest(accountRequest: AccountRequestTableRowModel): void { const modalContent = `Are you sure you want to reset the account request for ${accountRequest.name} with email ${accountRequest.email} from diff --git a/src/web/app/components/account-requests-table/account-request-table.module.ts b/src/web/app/components/account-requests-table/account-request-table.module.ts index 1a05086cc4b..f0177f5fdc2 100644 --- a/src/web/app/components/account-requests-table/account-request-table.module.ts +++ b/src/web/app/components/account-requests-table/account-request-table.module.ts @@ -3,7 +3,9 @@ import { NgModule } from '@angular/core'; import { FormsModule } from '@angular/forms'; import { NgbTooltipModule, NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap'; import { AccountRequestTableComponent } from './account-request-table.component'; +import { EditRequestModalComponent } from './admin-edit-request-modal/admin-edit-request-modal.component'; import { Pipes } from '../../pipes/pipes.module'; +import { RichTextEditorModule } from '../rich-text-editor/rich-text-editor.module'; /** * Module for account requests table. @@ -11,6 +13,7 @@ import { Pipes } from '../../pipes/pipes.module'; @NgModule({ declarations: [ AccountRequestTableComponent, + EditRequestModalComponent, ], exports: [ AccountRequestTableComponent, @@ -21,6 +24,7 @@ import { Pipes } from '../../pipes/pipes.module'; NgbTooltipModule, NgbDropdownModule, Pipes, + RichTextEditorModule, ], }) export class AccountRequestTableModule { } diff --git a/src/web/app/components/account-requests-table/admin-edit-request-modal/admin-edit-request-modal-model.ts b/src/web/app/components/account-requests-table/admin-edit-request-modal/admin-edit-request-modal-model.ts new file mode 100644 index 00000000000..9d5a2ecea2c --- /dev/null +++ b/src/web/app/components/account-requests-table/admin-edit-request-modal/admin-edit-request-modal-model.ts @@ -0,0 +1,9 @@ +/** + * Result of {@link EditRequestModalComponent} + */ +export interface EditRequestModalComponentResult { + accountRequestName: string; + accountRequestEmail: string; + accountRequestInstitution: string; + accountRequestComment: string; +} diff --git a/src/web/app/components/account-requests-table/admin-edit-request-modal/admin-edit-request-modal.component.html b/src/web/app/components/account-requests-table/admin-edit-request-modal/admin-edit-request-modal.component.html new file mode 100644 index 00000000000..340901f756c --- /dev/null +++ b/src/web/app/components/account-requests-table/admin-edit-request-modal/admin-edit-request-modal.component.html @@ -0,0 +1,35 @@ + + diff --git a/src/web/app/components/account-requests-table/admin-edit-request-modal/admin-edit-request-modal.component.html b/src/web/app/components/account-requests-table/admin-edit-request-modal/admin-edit-request-modal.component.html index 3111e689e4b..a5a66887899 100644 --- a/src/web/app/components/account-requests-table/admin-edit-request-modal/admin-edit-request-modal.component.html +++ b/src/web/app/components/account-requests-table/admin-edit-request-modal/admin-edit-request-modal.component.html @@ -32,4 +32,3 @@