@communecter/cocolight-api-client 1.0.19 → 1.0.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cocolight-api-client.browser.js +2 -2
- package/dist/cocolight-api-client.cjs +1 -1
- package/dist/cocolight-api-client.mjs.js +1 -1
- package/package.json +2 -1
- package/src/api/BaseEntity.js +1420 -34
- package/src/api/EndpointApi.js +443 -924
- package/src/api/EndpointApi.types.d.ts +3463 -0
- package/src/api/Organization.js +77 -0
- package/src/api/User.js +91 -327
- package/src/mixin/DraftStateMixin.js +0 -176
- package/src/mixin/EntityMixin.js +0 -428
- package/src/mixin/MutualEntityMixin.js +0 -269
- package/src/mixin/UtilMixin.js +0 -300
package/src/api/Organization.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ApiResponseError } from "../error.js";
|
|
1
2
|
import BaseEntity from "./BaseEntity.js";
|
|
2
3
|
|
|
3
4
|
export class Organization extends BaseEntity {
|
|
@@ -132,6 +133,82 @@ export class Organization extends BaseEntity {
|
|
|
132
133
|
return super.getSubscribers(data);
|
|
133
134
|
}
|
|
134
135
|
|
|
136
|
+
/**
|
|
137
|
+
* Récupérer les membres de l'organisation.
|
|
138
|
+
* Constant : GET_MEMBERS_ADMIN / GET_MEMBERS_NO_ADMIN
|
|
139
|
+
* @param {Object} data - Les données de requête.
|
|
140
|
+
* @param {Object} options - Options supplémentaires.
|
|
141
|
+
* @param {boolean} options.isAdmin - Indique si l'utilisateur est admin.
|
|
142
|
+
* @param {boolean} options.isInviting - Indique si l'utilisateur est en attente d'invitation.
|
|
143
|
+
* @param {Array} options.roles - Liste des rôles à filtrer.
|
|
144
|
+
* @returns {Promise<Object>} - Un objet contenant le nombre de membres et la liste des membres.
|
|
145
|
+
*/
|
|
146
|
+
async getMembers(data = {}, options = {}) {
|
|
147
|
+
const { isAdmin, isInviting, roles = [] } = options;
|
|
148
|
+
|
|
149
|
+
if(this.isMe){
|
|
150
|
+
data.pathParams = { type: this.getEntityType(), id: this.id };
|
|
151
|
+
// NOTE : dans le schema je crois que si pas de data.filters alors le default ce fait avec data.pathParams
|
|
152
|
+
// data.filters = {
|
|
153
|
+
// [`links.memberOf.${this.id}`]: { "$exists": true },
|
|
154
|
+
// [`links.memberOf.${this.id}.toBeValidated`]: { "$exists": false },
|
|
155
|
+
// [`links.memberOf.${this.id}.isInviting`]: { "$exists": false }
|
|
156
|
+
// };
|
|
157
|
+
} else {
|
|
158
|
+
delete data?.pathParams;
|
|
159
|
+
data.filters = this._buildMemberFilters(this.id, { isAdmin, isInviting, roles });
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
const fetchFn = this.isMe
|
|
163
|
+
? () => this.callIsMe(() => this.endpointApi.getMembersAdmin(data))
|
|
164
|
+
: () => this.endpointApi.getMembersNoAdmin(data);
|
|
165
|
+
|
|
166
|
+
const arrayObjet = await fetchFn();
|
|
167
|
+
if (!Array.isArray(arrayObjet.results)) {
|
|
168
|
+
throw new ApiResponseError("Erreur lors de la récupération des membres", 500, arrayObjet.results);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
// lier les entités au objets
|
|
172
|
+
const rawList = this._linkEntities(arrayObjet.results);
|
|
173
|
+
|
|
174
|
+
return {
|
|
175
|
+
count: arrayObjet.count?.poi ?? 0,
|
|
176
|
+
results: rawList
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
_buildMemberFilters(id, { isAdmin, isInviting, roles }) {
|
|
181
|
+
|
|
182
|
+
if (typeof isAdmin !== "undefined" && typeof isAdmin !== "boolean") {
|
|
183
|
+
throw new TypeError("isAdmin doit être un booléen.");
|
|
184
|
+
}
|
|
185
|
+
if (typeof isInviting !== "undefined" && typeof isInviting !== "boolean") {
|
|
186
|
+
throw new TypeError("isInviting doit être un booléen.");
|
|
187
|
+
}
|
|
188
|
+
if (!Array.isArray(roles)) {
|
|
189
|
+
throw new TypeError("roles doit être un tableau de chaînes.");
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
const filters = {
|
|
193
|
+
[`links.memberOf.${id}`]: { $exists: true },
|
|
194
|
+
[`links.memberOf.${id}.toBeValidated`]: { $exists: false }
|
|
195
|
+
};
|
|
196
|
+
|
|
197
|
+
if (isInviting === true || isInviting === false) {
|
|
198
|
+
filters[`links.memberOf.${id}.isInviting`] = { $exists: isInviting };
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
if (isAdmin === true) {
|
|
202
|
+
filters[`links.memberOf.${id}.isAdmin`] = { $exists: true };
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
if (Array.isArray(roles) && roles.length > 0) {
|
|
206
|
+
filters[`links.memberOf.${id}.roles`] = { $in: roles };
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
return filters;
|
|
210
|
+
}
|
|
211
|
+
|
|
135
212
|
/**
|
|
136
213
|
* Crée une instance de projet et récupère son profil si nécessaire.
|
|
137
214
|
*
|