SUPPORT-9225: fix blocking requests

This commit is contained in:
gulnaz 2025-07-07 13:10:39 +03:00
parent 204c3ee741
commit 305ee2378e
6 changed files with 47 additions and 22 deletions

View file

@ -32,8 +32,8 @@ public class UserApplicationListRpcService extends Behavior {
}
@RpcCall
public void saveAgreedStatus(long appNumber) {
applicationListDao.saveAgreedStatus(appNumber);
public void saveStatus(String status, long appNumber) {
applicationListDao.saveStatus(status, appNumber);
}
@RpcCall

View file

@ -73,9 +73,9 @@ public class UserApplicationListDao {
.execute();
}
public void saveAgreedStatus(long appNumber) {
public void saveStatus(String status, long appNumber) {
dslContext.update(USER_APPLICATION_LIST)
.set(USER_APPLICATION_LIST.APPLICATION_STATUS, AGREED.name())
.set(USER_APPLICATION_LIST.APPLICATION_STATUS, status)
.where(USER_APPLICATION_LIST.NUMBER_APP.eq(appNumber))
.execute();
}

View file

@ -1,6 +1,5 @@
package ru.micord.ervu.account_applications.service;
import java.sql.Timestamp;
import java.time.LocalDateTime;
import java.util.List;
@ -30,10 +29,6 @@ public class UserApplicationListService {
this.securityContext = securityContext;
}
public void saveTraceId(String traceId, long appNumber) {
dao.saveTraceId(traceId, appNumber);
}
public Long savePassword(String traceId, String encodedPass) {
Long appNumber = dao.savePassword(traceId, encodedPass);
saveAuditStatusByTraceId(traceId, ACCEPTED.name());
@ -50,10 +45,6 @@ public class UserApplicationListService {
return appNumber;
}
public void saveAgreedStatus(long appNumber) {
dao.saveAgreedStatus(appNumber);
}
public Long saveError(String traceId, String errorMsg) {
Long appNumber = dao.saveError(traceId, errorMsg);
saveAuditStatusByTraceId(traceId, AGREED.name());

View file

@ -26,11 +26,14 @@ import {EditRolesData} from "./dto/edit/EditRolesData";
import {ResetPasswordAccount} from "./dto/password/ResetPasswordAccount";
import {ResetPasswordData} from "./dto/password/ResetPasswordData";
import {ProcessRequest} from "./dto/ProcessRequest";
import {StatusUpdateService} from "../../../modules/app/service/status-update.service";
import {ApplicationStatus} from "../enum/ApplicationStatus";
@AnalyticalScope(SaveButton)
export class UserManagementService extends Behavior {
private static PROCESS_START_PATH = '/service/wf/service/start';
private static USER_BLOCK_PATH = "/service/idm/accounts/blocked/v1";
@NotNull()
@ObjectRef()
@ -42,6 +45,7 @@ export class UserManagementService extends Behavior {
private sendToErvu: boolean = false;
private rpc: UserApplicationListRpcService;
private authService: AuthorizationService;
private statusUpdateService: StatusUpdateService;
initialize() {
super.initialize();
@ -49,6 +53,7 @@ export class UserManagementService extends Behavior {
this.httpClient = this.injector.get(HttpClient);
this.rpc = this.getScript(UserApplicationListRpcService);
this.authService = this.injector.get(AuthorizationService);
this.statusUpdateService = this.injector.get(StatusUpdateService);
this.onClickFunction = () => {
if (!this.authService.hasRole('security_administrator') || !this.sendToErvu) {
return;
@ -120,10 +125,10 @@ export class UserManagementService extends Behavior {
});
break;
case ApplicationKind.BLOCK_USER:
//TODO delete request
this.doBlockingRequest([accountId], appNumber, true);
break;
case ApplicationKind.UNBLOCK_USER:
//TODO post request
this.doBlockingRequest([accountId], appNumber, false);
break;
case ApplicationKind.RESET_PASSWORD:
let resetPasswordAccount = new ResetPasswordAccount();
@ -175,15 +180,36 @@ export class UserManagementService extends Behavior {
this.rpc.saveTraceId(response.traceId, appNumber);
}
else {
this.rpc.saveAgreedStatus(appNumber);
this.saveStatus(ApplicationStatus.AGREED, appNumber);
}
})
.catch(reason => {
console.error("Error while executing request:", reason.toString());
this.rpc.saveAgreedStatus(appNumber);
this.saveStatus(ApplicationStatus.AGREED, appNumber);
});
}
private doBlockingRequest(ids: string[], appNumber: number, block: boolean): void {
const url = window.location.origin + UserManagementService.USER_BLOCK_PATH;
let method = block ? 'delete' : 'post';
this.httpClient.request(method, url, { body: ids }).toPromise()
.then((response: any) => {
console.log(response);
let status = response.ok ? ApplicationStatus.ACCEPTED : ApplicationStatus.AGREED;
this.saveStatus(status, appNumber);
})
.catch(reason => {
console.error("Error while executing request:", reason.toString());
this.saveStatus(ApplicationStatus.AGREED, appNumber);
});
}
private saveStatus(status: string, appNumber: number): void {
this.rpc.saveStatus(status, appNumber)
.then(() => this.statusUpdateService.publishStatus(appNumber, status === 'ACCEPTED'))
.catch(err => console.log('failed to update application status', err));
}
bindEvents() {
super.bindEvents();
this.button.addClickListener(this.onClickFunction);

View file

@ -0,0 +1,4 @@
export enum ApplicationStatus {
AGREED = 'AGREED',
ACCEPTED = 'ACCEPTED'
}

View file

@ -18,11 +18,15 @@ export class StatusUpdateService {
public update(responseObj: any): void {
this.httpClient.put<number>('status', responseObj)
.toPromise()
.then(appNumber => this.statusMessage.next(
{
appNumber: appNumber,
status: responseObj.className === 'update' ? ApplicationStatus.ACCEPTED : ApplicationStatus.AGREED
}))
.then(appNumber => this.publishStatus(appNumber, responseObj.className === 'update'))
.catch(err => console.log('failed to update application status', err));
}
public publishStatus(appNumber: number, accepted: boolean) {
this.statusMessage.next(
{
appNumber: appNumber,
status: accepted ? ApplicationStatus.ACCEPTED : ApplicationStatus.AGREED
});
}
}