1
0
forked from Yara724/api

Merge pull request 'update the blame service' (#9) from s.hajizadeh/yara724api:main into main

Reviewed-on: Yara724/api#9
This commit is contained in:
2026-03-18 15:53:40 +03:30
2 changed files with 67 additions and 42 deletions

View File

@@ -269,8 +269,7 @@ export class RequestManagementService {
const step = stepByNumber ?? stepByKey;
if (!step) {
throw new InternalServerErrorException(
`Workflow step not found (${stepNumber ? `stepNumber=${stepNumber}` : ""}${
stepNumber && stepKey ? ", " : ""
`Workflow step not found (${stepNumber ? `stepNumber=${stepNumber}` : ""}${stepNumber && stepKey ? ", " : ""
}${stepKey ? `stepKey=${stepKey}` : ""})`,
);
}
@@ -304,7 +303,7 @@ export class RequestManagementService {
private readonly workflowStepDbService: WorkflowStepDbService,
private readonly hashService: HashService,
private readonly userAuthService: UserAuthService,
) {}
) { }
async createRequestV2(user: any, type: BlameRequestType) {
const firstStep = await this.getWorkflowStep({ stepNumber: 1 });
@@ -768,8 +767,7 @@ export class RequestManagementService {
);
if (err?.response) {
this.logger.error(
`[TEJARAT] block inquiry response for request=${req._id}: status=${
err.response.status
`[TEJARAT] block inquiry response for request=${req._id}: status=${err.response.status
}, data=${JSON.stringify(err.response.data)}`,
);
}
@@ -1310,9 +1308,9 @@ export class RequestManagementService {
if (foundRequest.expertInitiated && foundRequest.creationMethod === CreationMethod.LINK) {
// User should already be set in firstPartyDetails or secondPartyDetails
const isFirstParty = foundRequest.firstPartyDetails?.firstPartyId?.toString() === user.sub ||
foundRequest.firstPartyDetails?.firstPartyPhoneNumber === user.username;
foundRequest.firstPartyDetails?.firstPartyPhoneNumber === user.username;
const isSecondParty = foundRequest.secondPartyDetails?.secondPartyId?.toString() === user.sub ||
foundRequest.secondPartyDetails?.secondPartyPhoneNumber === user.username;
foundRequest.secondPartyDetails?.secondPartyPhoneNumber === user.username;
if (!isFirstParty && !isSecondParty) {
throw new ForbiddenException(
@@ -1358,8 +1356,8 @@ export class RequestManagementService {
} else if (
foundRequest?.firstPartyDetails?.firstPartyPhoneNumber == user.username ||
(foundRequest.expertInitiated &&
foundRequest.creationMethod === CreationMethod.LINK &&
foundRequest.firstPartyDetails?.firstPartyId?.toString() === user.sub)
foundRequest.creationMethod === CreationMethod.LINK &&
foundRequest.firstPartyDetails?.firstPartyId?.toString() === user.sub)
) {
// Normal flow or link-based - set full firstPartyDetails
const updatePayload: any = {
@@ -1636,7 +1634,7 @@ export class RequestManagementService {
// Check if nextStep is firstParty-addPlate OR if user is the first party phone number
const isFirstParty =
(request.nextStep === StepsEnum.F_addPlate ||
request.currentStep === StepsEnum.F_addPlate) &&
request.currentStep === StepsEnum.F_addPlate) &&
request.firstPartyDetails.firstPartyPhoneNumber === user.username;
if (!isFirstParty) {
@@ -3777,6 +3775,25 @@ export class RequestManagementService {
}));
}
async getAllBlameRequestsV2(user: any): Promise<any> {
console.log(user)
try {
const requests = await this.blameRequestDbService.find({
parties: {
$elemMatch: {
'person.userId': new Types.ObjectId(user.sub)
}
}
}, { select: "requestNo type status blameStatus createdAt updatedAt" });
return requests;
} catch (err) {
this.logger.error("Error: ", err);
throw new InternalServerErrorException(
"Something Went Wrong",
);
}
}
/**
* V2: Get one blame request by id. Access allowed if current user is a party (by userId or phone)
* or the initiating field expert. For expert-initiated LINK, party access by phone is sufficient.

View File

@@ -51,7 +51,7 @@ import { RequestManagementService } from "./request-management.service";
export class RequestManagementV2Controller {
constructor(
private readonly requestManagementService: RequestManagementService,
) {}
) { }
@Post()
@UseGuards(GlobalGuard)
@@ -65,6 +65,14 @@ export class RequestManagementV2Controller {
);
}
@Get()
@Roles(RoleEnum.USER, RoleEnum.FIELD_EXPERT)
async getAllBlameRequestsV2(
@CurrentUser() user: any,
) {
return this.requestManagementService.getAllBlameRequestsV2(user);
}
/**
* Get one blame request by id. Allowed for the request owner (party) or the initiating field expert.
*/