1
0
forked from Yara724/api

Fixed registrar and field expert

This commit is contained in:
SepehrYahyaee
2026-06-17 16:39:30 +03:30
parent a4eb98258b
commit bc5be99b59
19 changed files with 942 additions and 161 deletions

View File

@@ -5022,21 +5022,46 @@ export class RequestManagementService {
? { "parties.person.phoneNumber": user.username }
: null;
const filters = [userIdFilter, phoneFilter].filter(Boolean);
if (filters.length === 0) {
const orConditions: Record<string, unknown>[] = [];
if (userIdFilter) orConditions.push(userIdFilter);
if (phoneFilter) orConditions.push(phoneFilter);
if (user?.role === RoleEnum.FIELD_EXPERT && user?.sub) {
orConditions.push({
expertInitiated: true,
initiatedByFieldExpertId: new Types.ObjectId(user.sub),
});
} else if (user?.role === RoleEnum.REGISTRAR && user?.sub) {
orConditions.push({
registrarInitiated: true,
initiatedByRegistrarId: new Types.ObjectId(user.sub),
});
}
if (orConditions.length === 0) {
return { list: [], total: 0 };
}
const requests = await this.blameRequestDbService.find(
filters.length === 1 ? (filters[0] as any) : ({ $or: filters } as any),
orConditions.length === 1
? (orConditions[0] as any)
: ({ $or: orConditions } as any),
{
select:
"publicId requestNo type status blameStatus createdAt updatedAt parties",
"publicId requestNo type status blameStatus createdAt updatedAt parties expertInitiated registrarInitiated initiatedByFieldExpertId initiatedByRegistrarId creationMethod",
},
);
const enriched = requests.map((req: any) => {
const party = req.parties.find(
const isInitiator =
(user?.role === RoleEnum.FIELD_EXPERT &&
req.expertInitiated &&
String(req.initiatedByFieldExpertId) === String(user.sub)) ||
(user?.role === RoleEnum.REGISTRAR &&
req.registrarInitiated &&
String(req.initiatedByRegistrarId) === String(user.sub));
const party = req.parties?.find(
(p: any) =>
(p?.person?.userId &&
String(p.person.userId) === String(user.sub)) ||
@@ -5045,11 +5070,12 @@ export class RequestManagementService {
const obj = req.toObject();
delete obj.parties; // remove parties completely
delete obj.parties;
return {
...obj,
userSide: party?.role ?? null,
initiatedByMe: isInitiator,
};
});