From 2bc35b639bbdb7a49753fb18387a121f39d5a624 Mon Sep 17 00:00:00 2001 From: julien vdb Date: Tue, 11 Nov 2025 02:04:43 +0100 Subject: [PATCH] 0.11.21 : change on event and group --- package.json | 2 +- src/api/event/controllers/create.ts | 10 + .../group-membership/schema.json | 3 +- src/api/group/services/group.ts | 23 +- src/components/group/activity.json | 11 + .../1.0.0/full_documentation.json | 212 +++++++++++++++--- types/generated/components.d.ts | 3 + types/generated/contentTypes.d.ts | 2 +- 8 files changed, 234 insertions(+), 32 deletions(-) diff --git a/package.json b/package.json index 7581303..39012c0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "harmony-back", - "version": "0.11.20", + "version": "0.11.21", "private": true, "description": "A Strapi application", "scripts": { diff --git a/src/api/event/controllers/create.ts b/src/api/event/controllers/create.ts index f6c69ef..ace62be 100644 --- a/src/api/event/controllers/create.ts +++ b/src/api/event/controllers/create.ts @@ -75,6 +75,16 @@ export default ({ strapi }: { strapi: Core.Strapi }) => `Event ${event.id} created by user ${userId} with owner relationship ${ownerRelationship.id}` ); + if (contextType === "group") { + await strapi + .service("api::group.group") + .addActivity( + contextId, + ctx.state.user?.username || `User ${userId}`, + `Evènement créé : ${event.title}` + ); + } + ctx.send({ data: event }, 201); } catch (error) { strapi.log.error("Error in create event controller:", error); diff --git a/src/api/group-membership/content-types/group-membership/schema.json b/src/api/group-membership/content-types/group-membership/schema.json index 7009259..397dff0 100644 --- a/src/api/group-membership/content-types/group-membership/schema.json +++ b/src/api/group-membership/content-types/group-membership/schema.json @@ -32,7 +32,8 @@ "owner", "follow", "pending", - "invited" + "invited", + "rejected" ] } } diff --git a/src/api/group/services/group.ts b/src/api/group/services/group.ts index 0ea74e0..a563cdf 100644 --- a/src/api/group/services/group.ts +++ b/src/api/group/services/group.ts @@ -4,4 +4,25 @@ import { factories } from '@strapi/strapi'; -export default factories.createCoreService('api::group.group'); +export default factories.createCoreService('api::group.group', ({ strapi }) => ({ + async addActivity(groupId: number, userName: string, message: string) { + const group = await strapi.entityService.findOne('api::group.group', groupId, { + populate: ['activities'], + }) as any; + + if (!group) { + throw new Error(`Group with id ${groupId} not found`); + } + + const activities = group.activities || []; + activities.push({ + activityUser: userName, + activityMessage: message, + activityDate: new Date(), + }); + + return await strapi.entityService.update('api::group.group', groupId, { + data: { activities }, + }); + }, +})); diff --git a/src/components/group/activity.json b/src/components/group/activity.json index b4d910e..57e328d 100644 --- a/src/components/group/activity.json +++ b/src/components/group/activity.json @@ -14,6 +14,17 @@ }, "activityDate": { "type": "datetime" + }, + "activityAvatar": { + "type": "media", + "multiple": false, + "required": false, + "allowedTypes": [ + "images", + "files", + "videos", + "audios" + ] } } } diff --git a/src/extensions/documentation/documentation/1.0.0/full_documentation.json b/src/extensions/documentation/documentation/1.0.0/full_documentation.json index 0a7b061..f3ab044 100644 --- a/src/extensions/documentation/documentation/1.0.0/full_documentation.json +++ b/src/extensions/documentation/documentation/1.0.0/full_documentation.json @@ -14,7 +14,7 @@ "name": "Apache 2.0", "url": "https://www.apache.org/licenses/LICENSE-2.0.html" }, - "x-generation-date": "2025-11-10T22:10:01.518Z" + "x-generation-date": "2025-11-11T01:04:38.039Z" }, "x-strapi-config": { "plugins": [ @@ -17091,7 +17091,8 @@ "owner", "follow", "pending", - "invited" + "invited", + "rejected" ] }, "createdAt": { @@ -18189,6 +18190,135 @@ "activityDate": { "type": "string", "format": "date-time" + }, + "activityAvatar": { + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "documentId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "alternativeText": { + "type": "string" + }, + "caption": { + "type": "string" + }, + "width": { + "type": "integer" + }, + "height": { + "type": "integer" + }, + "formats": {}, + "hash": { + "type": "string" + }, + "ext": { + "type": "string" + }, + "mime": { + "type": "string" + }, + "size": { + "type": "number", + "format": "float" + }, + "url": { + "type": "string" + }, + "previewUrl": { + "type": "string" + }, + "provider": { + "type": "string" + }, + "provider_metadata": {}, + "related": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "documentId": { + "type": "string" + } + } + } + }, + "folder": { + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "documentId": { + "type": "string" + } + } + }, + "folderPath": { + "type": "string" + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "updatedAt": { + "type": "string", + "format": "date-time" + }, + "publishedAt": { + "type": "string", + "format": "date-time" + }, + "createdBy": { + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "documentId": { + "type": "string" + } + } + }, + "updatedBy": { + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "documentId": { + "type": "string" + } + } + }, + "locale": { + "type": "string" + }, + "localizations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "documentId": { + "type": "string" + } + } + } + } + } } } }, @@ -20554,7 +20684,8 @@ "owner", "follow", "pending", - "invited" + "invited", + "rejected" ] }, "createdAt": { @@ -24484,7 +24615,8 @@ "owner", "follow", "pending", - "invited" + "invited", + "rejected" ] }, "createdAt": { @@ -27973,7 +28105,8 @@ "owner", "follow", "pending", - "invited" + "invited", + "rejected" ] }, "createdAt": { @@ -31910,7 +32043,8 @@ "owner", "follow", "pending", - "invited" + "invited", + "rejected" ] }, "createdAt": { @@ -36098,7 +36232,8 @@ "owner", "follow", "pending", - "invited" + "invited", + "rejected" ] }, "createdAt": { @@ -40735,7 +40870,8 @@ "owner", "follow", "pending", - "invited" + "invited", + "rejected" ] }, "createdAt": { @@ -44662,7 +44798,8 @@ "owner", "follow", "pending", - "invited" + "invited", + "rejected" ] }, "createdAt": { @@ -48491,7 +48628,8 @@ "owner", "follow", "pending", - "invited" + "invited", + "rejected" ] }, "createdAt": { @@ -52307,7 +52445,8 @@ "owner", "follow", "pending", - "invited" + "invited", + "rejected" ] }, "createdAt": { @@ -56159,7 +56298,8 @@ "owner", "follow", "pending", - "invited" + "invited", + "rejected" ] }, "createdAt": { @@ -60011,7 +60151,8 @@ "owner", "follow", "pending", - "invited" + "invited", + "rejected" ] }, "createdAt": { @@ -63824,7 +63965,8 @@ "owner", "follow", "pending", - "invited" + "invited", + "rejected" ] }, "createdAt": { @@ -67818,7 +67960,8 @@ "owner", "follow", "pending", - "invited" + "invited", + "rejected" ] }, "createdAt": { @@ -71301,7 +71444,8 @@ "owner", "follow", "pending", - "invited" + "invited", + "rejected" ] }, "createdAt": { @@ -75713,7 +75857,8 @@ "owner", "follow", "pending", - "invited" + "invited", + "rejected" ] }, "createdAt": { @@ -80588,7 +80733,8 @@ "owner", "follow", "pending", - "invited" + "invited", + "rejected" ] }, "createdAt": { @@ -80762,7 +80908,8 @@ "owner", "follow", "pending", - "invited" + "invited", + "rejected" ] }, "locale": { @@ -83635,7 +83782,8 @@ "owner", "follow", "pending", - "invited" + "invited", + "rejected" ] }, "createdAt": { @@ -84480,7 +84628,8 @@ "owner", "follow", "pending", - "invited" + "invited", + "rejected" ] }, "createdAt": { @@ -87468,7 +87617,8 @@ "owner", "follow", "pending", - "invited" + "invited", + "rejected" ] }, "createdAt": { @@ -91406,7 +91556,8 @@ "owner", "follow", "pending", - "invited" + "invited", + "rejected" ] }, "createdAt": { @@ -95245,7 +95396,8 @@ "owner", "follow", "pending", - "invited" + "invited", + "rejected" ] }, "createdAt": { @@ -98589,7 +98741,8 @@ "owner", "follow", "pending", - "invited" + "invited", + "rejected" ] }, "createdAt": { @@ -103142,7 +103295,8 @@ "owner", "follow", "pending", - "invited" + "invited", + "rejected" ] }, "createdAt": { @@ -107024,7 +107178,8 @@ "owner", "follow", "pending", - "invited" + "invited", + "rejected" ] }, "createdAt": { @@ -110866,7 +111021,8 @@ "owner", "follow", "pending", - "invited" + "invited", + "rejected" ] }, "createdAt": { diff --git a/types/generated/components.d.ts b/types/generated/components.d.ts index a96a2f8..f2a0cfc 100644 --- a/types/generated/components.d.ts +++ b/types/generated/components.d.ts @@ -26,6 +26,9 @@ export interface GroupActivity extends Struct.ComponentSchema { displayName: 'Activity'; }; attributes: { + activityAvatar: Schema.Attribute.Media< + 'images' | 'files' | 'videos' | 'audios' + >; activityDate: Schema.Attribute.DateTime; activityMessage: Schema.Attribute.String; activityUser: Schema.Attribute.String; diff --git a/types/generated/contentTypes.d.ts b/types/generated/contentTypes.d.ts index d1323cd..ee60ee1 100644 --- a/types/generated/contentTypes.d.ts +++ b/types/generated/contentTypes.d.ts @@ -1047,7 +1047,7 @@ export interface ApiGroupMembershipGroupMembership Schema.Attribute.Private; publishedAt: Schema.Attribute.DateTime; role: Schema.Attribute.Enumeration< - ['member', 'admin', 'owner', 'follow', 'pending', 'invited'] + ['member', 'admin', 'owner', 'follow', 'pending', 'invited', 'rejected'] >; updatedAt: Schema.Attribute.DateTime; updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> &