|
@@ -421,7 +421,10 @@ class ClientPeController {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
- // участник
|
|
|
|
|
|
+ // участник или ребенок
|
|
|
|
+
|
|
|
|
+ let isMemberOrChild = false;
|
|
|
|
+
|
|
const isMember = await selPool.exists(
|
|
const isMember = await selPool.exists(
|
|
sql.unsafe`
|
|
sql.unsafe`
|
|
select
|
|
select
|
|
@@ -434,16 +437,39 @@ class ClientPeController {
|
|
and pm.is_active = true
|
|
and pm.is_active = true
|
|
`,
|
|
`,
|
|
);
|
|
);
|
|
|
|
+ if (isMember) {
|
|
|
|
+ isMemberOrChild = true;
|
|
|
|
+ } else {
|
|
|
|
+ const isChild = await selPool.exists(
|
|
|
|
+ sql.unsafe`
|
|
|
|
+ select
|
|
|
|
+ pm.pe_id
|
|
|
|
+ from
|
|
|
|
+ act.pe_members pm
|
|
|
|
+ join usr.users u on
|
|
|
|
+ u.user_id = pm.user_id and
|
|
|
|
+ u.is_child = true
|
|
|
|
+ and u.parent_id = ${user.userId}
|
|
|
|
+ where
|
|
|
|
+ pm.pe_id = ${peId}
|
|
|
|
+ and pm.is_active = true
|
|
|
|
+ `,
|
|
|
|
+ );
|
|
|
|
+ if (isChild) {
|
|
|
|
+ isMemberOrChild = true;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
|
|
- if (!isMember) throw ApiError.ForbiddenError();
|
|
|
|
|
|
+ if (!isMemberOrChild) throw ApiError.ForbiddenError();
|
|
|
|
|
|
const pe = await cPeService.getPeForMember(peId);
|
|
const pe = await cPeService.getPeForMember(peId);
|
|
|
|
+ const members = await cPeService.getActivePeMembersWithIdentity(peId);
|
|
if (!pe)
|
|
if (!pe)
|
|
throw ApiError.BadRequest("peNotFound", "Сущность участия не найдена");
|
|
throw ApiError.BadRequest("peNotFound", "Сущность участия не найдена");
|
|
|
|
|
|
RouterUtils.validAndSendResponse(api.client.pe.GET_PartEntity.res, res, {
|
|
RouterUtils.validAndSendResponse(api.client.pe.GET_PartEntity.res, res, {
|
|
code: "success",
|
|
code: "success",
|
|
- pe: { ...pe, userRole: "member" },
|
|
|
|
|
|
+ pe: { ...pe, userRole: "member", members: [...members] },
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
|