diff --git a/src/graphql/connectors/groupModel.ts b/src/graphql/connectors/groupModel.ts index cccc616c1336a140905063a4dbd0157e8444a76f..37b35654aa4cf700bc3eb7fab66d309753594da0 100644 --- a/src/graphql/connectors/groupModel.ts +++ b/src/graphql/connectors/groupModel.ts @@ -146,6 +146,7 @@ export class GroupModel { * @rights viewer du groupe */ async likeGroup(gid: string): Promise<boolean> { + // Pour l'instant, ce n'est pas a implémenter... throw "Not implemented"; } @@ -159,6 +160,7 @@ export class GroupModel { * @rights viewer du groupe */ async unlikeGroup(gid: string): Promise<boolean> { + // Pour l'instant, ce n'est pas a implémenter... throw "Not implemented"; } diff --git a/src/graphql/connectors/messageModel.ts b/src/graphql/connectors/messageModel.ts index bfb9070ba7931ac8b75414461dd260d1fa2b9f74..79d9525f8450829261a289cd17df2a543eafc0ce 100644 --- a/src/graphql/connectors/messageModel.ts +++ b/src/graphql/connectors/messageModel.ts @@ -189,6 +189,34 @@ export class MessageModel { throw "Not implemented"; } + /** + * @memberof GraphQL.MessageModel# + * @function groupParticipate + * @summary Fonction pour participer a un evenement. + * @arg {string} gid - Identifiant du groupe. + * @arg {number} forEvent - Identifiant de l'évenement. + * @return {Promise(boolean)} Renvoie true si modification réussie + * @async + * @rights member d'un groupe author ou recipient + */ + async groupParticipate(gid: string, forEvent: number): Promise<boolean> { + throw "Not implemented"; + } + + /** + * @memberof GraphQL.MessageModel# + * @function groupUnparticipate + * @summary Fonction pour ne plus participer a un evenement. + * @arg {string} gid - Identifiant du groupe. + * @arg {number} forEvent - Identifiant de l'évenement. + * @return {Promise(boolean)} Renvoie true si modification réussie + * @async + * @rights member d'un groupe author ou recipient + */ + async groupUnparticipate(gid: string, forEvent: number): Promise<boolean> { + throw "Not implemented"; + } + /** * @memberof GraphQL.MessageModel# * @function createQuestion diff --git a/src/graphql/connectors/requestModel.ts b/src/graphql/connectors/requestModel.ts index 5435ae0584afc1891826edd600b52a0801ec1d91..e8ea6c0736ed048ea4f1bd2d02175d2ab9d489a5 100644 --- a/src/graphql/connectors/requestModel.ts +++ b/src/graphql/connectors/requestModel.ts @@ -202,6 +202,7 @@ export class RequestModel { * @rights admin du groupe destinataire */ async acceptUserJoinRequest(req: UserJoinGroup, comment: string): Promise<boolean> { + //"comment" a envoyer par mail automatique throw "Not implemented"; } @@ -216,6 +217,7 @@ export class RequestModel { * @rights admin du groupe destinataire */ async refuseUserJoinRequest(req: UserJoinGroup, comment: string): Promise<boolean> { + //"comment" a envoyer par mail automatique throw "Not implemented"; } @@ -230,6 +232,7 @@ export class RequestModel { * @rights admin du groupe destinataire */ async acceptGroupJoinRequest(req: GroupJoinMetagroup, comment: string): Promise<boolean> { + //"comment" a envoyer par mail automatique throw "Not implemented"; } @@ -244,6 +247,7 @@ export class RequestModel { * @rights admin du groupe destinataire */ async refuseGroupJoinRequest(req: GroupJoinMetagroup, comment: string): Promise<boolean> { + //"comment" a envoyer par mail automatique throw "Not implemented"; } @@ -258,6 +262,7 @@ export class RequestModel { * @rights admin du groupe destinataire */ async acceptGroupCoauthorEventRequest(req: GroupCoauthorEvent, comment: string): Promise<boolean> { + //"comment" a envoyer par mail automatique throw "Not implemented"; /*let request = await knex('group_join_event').select().where('id', requestID); @@ -286,6 +291,7 @@ export class RequestModel { * @rights admin du groupe destinataire */ async refuseGroupCoauthorEventRequest(req: GroupCoauthorEvent, comment: string): Promise<boolean> { + //"comment" a envoyer par mail automatique throw "Not implemented"; /*await knex('group_join_event').where('id', requestID).del(); diff --git a/src/graphql/resolvers.ts b/src/graphql/resolvers.ts index 5fa111621c73cab2114c93e384c86b47acfc5e07..4951b0bcb393a2d16130a4dc98e74223bc77f994 100644 --- a/src/graphql/resolvers.ts +++ b/src/graphql/resolvers.ts @@ -364,6 +364,22 @@ export const resolvers = { throw new AuthenticationError("Not a speaker"); }, + // @rights speaker + groupParticipate: async function (root, args, context: Context): Promise<boolean> { + if (context.models.auth.isSpeaker(args.gid)) { + return context.models.message.groupParticipate(args.gid, args.forEvent); + } + throw new AuthenticationError("Not a speaker"); + }, + + // @rights speaker + groupUnparticipate: async function (root, args, context: Context): Promise<boolean> { + if (context.models.auth.isSpeaker(args.gid)) { + return context.models.message.groupUnparticipate(args.gid, args.forEvent); + } + throw new AuthenticationError("Not a speaker"); + }, + // @rights speaker du groupe émetteur groupRequestCoauthorEvent: async function (root, args, context: Context): Promise<GroupCoauthorEvent> { if (context.models.auth.isSpeaker(args.fromGroup)) { @@ -564,6 +580,7 @@ export const resolvers = { // @rights admin du groupe destinataire acceptGroupCoauthorEventRequest: async function (root, args, context: Context): Promise<boolean> { + // Pour l'instant, ce n'est pas a implémenter... let req = await GroupCoauthorEvent.tryCreate(args.request); throw "Not implemented"; //TODO : Vérifier les autorisations @@ -574,6 +591,7 @@ export const resolvers = { // @rights admin du groupe destinataire refuseGroupCoauthorEventRequest: async function (root, args, context: Context): Promise<boolean> { + // Pour l'instant, ce n'est pas a implémenter... let req = await GroupCoauthorEvent.tryCreate(args.request); throw "Not implemented"; //TODO : Vérifier les autorisations @@ -606,7 +624,7 @@ export const resolvers = { throw new AuthenticationError("Not an admin"); }, - // @rights admin du groupe + // @rights admin d'un groupe author censorAnnouncement: async function (root, args, context: Context): Promise<boolean> { throw "Not implemented"; //TODO : Vérifier les autorisations @@ -614,7 +632,7 @@ export const resolvers = { throw new AuthenticationError("Not an admin"); }, - // @rights admin du groupe + // @rights admin d'un groupe author censorEvent: async function (root, args, context: Context): Promise<boolean> { throw "Not implemented"; //TODO : Vérifier les autorisations diff --git a/src/graphql/typeDefs/actions.graphql b/src/graphql/typeDefs/actions.graphql index 42395a204c51cd0b881e99bacd1e2a710b7337b1..9deef7c3d4d7179b2ae736e0b89c1ff7502f91dd 100644 --- a/src/graphql/typeDefs/actions.graphql +++ b/src/graphql/typeDefs/actions.graphql @@ -13,7 +13,6 @@ type Query { metaGroup(gid:ID!): MetaGroup # Message queries de base - #message(mid:ID!): Message announcement(mid:ID!): Announcement event(mid:ID!): Event privatePost(mid:ID!): PrivatePost @@ -21,7 +20,6 @@ type Query { answer(mid:ID!): Answer # Request queries de base - #request(rid:ID!): Request userJoinGroupRequest(rid:ID!): UserJoinGroup groupJoinMetagroupRequest(rid:ID!): GroupJoinMetagroup groupCoauthorEventRequest(rid:ID!): GroupCoauthorEvent @@ -36,15 +34,6 @@ type Query { allGroups: [Group] allSimpleGroups: [SimpleGroup] - - # Toutes les Requests auxquelles un groupe doit répondre - requestsToGroup(gid:ID!): [Request] - userJoinGroupRequestsToGroup(gid:ID!): [UserJoinGroup] - groupJoinMetagroupRequestsToGroup(gid:ID!): [GroupJoinMetagroup] - groupCoauthorEventRequestsToGroup(gid:ID!): [GroupCoauthorEvent] - - - # TOL searchTOL( givenName: String, @@ -167,6 +156,9 @@ type Mutation { # Speaker mutations writePostsSummary(forGroup: ID!, content: String): Boolean + groupParticipate(gid: ID!, forEvent: ID!): Boolean + groupUnparticipate(gid: ID!, forEvent: ID!): Boolean + groupRequestCoauthorEvent( fromGroup: ID!, toGroup: ID!, diff --git a/src/graphql/typeDefs/objects.graphql b/src/graphql/typeDefs/objects.graphql index 05dc650ace078ee2a511d782b3577da4ae19d9de..e304fe2b6b8d30ed3d48aaef354a513eb6bf3252 100644 --- a/src/graphql/typeDefs/objects.graphql +++ b/src/graphql/typeDefs/objects.graphql @@ -76,13 +76,24 @@ interface Group { answers: [Answer] # permet d'obtenir les questions qui ont eu une réponse # Activité interne - announcementsFromGroup: [Announcement] # annonces écrites par le groupe + # Viewer pour voir les events/annonces adressés au groupe announcementsToGroup: [Announcement] # annonces adressées au groupe - eventsFromGroup: [Event] eventsToGroup: [Event] + + # Member pour voir les events/annonces créés par le groupe + announcementsFromGroup: [Announcement] # annonces écrites par le groupe + eventsFromGroup: [Event] + + # Member pour voir les posts privés privatePosts: [PrivatePost] postsSummary: String # récapitulatif de l'activité interne du groupe, en markdown + # Toutes les Requests auxquelles un groupe doit répondre (admin) + requestsToGroup: [Request] + userJoinGroupRequestsToGroup: [UserJoinGroup] + groupJoinMetagroupRequestsToGroup: [GroupJoinMetagroup] + groupCoauthorEventRequestsToGroup: [GroupCoauthorEvent] + # Graphe organique visibilityEdges: [Group] # se rendre visible par des groupes en plus du graphe organique } @@ -109,12 +120,23 @@ type SimpleGroup implements Group { answers: [Answer] # permet d'obtenir les questions qui ont eu une réponse # Activité interne - announcementsFromGroup: [Announcement] # annonces écrites par le groupe + # Viewer pour voir les events/annonces adressés au groupe announcementsToGroup: [Announcement] # annonces adressées au groupe - eventsFromGroup: [Event] eventsToGroup: [Event] + + # Member pour voir les events/annonces créés par le groupe + announcementsFromGroup: [Announcement] # annonces écrites par le groupe + eventsFromGroup: [Event] + + # Member pour voir les posts privés privatePosts: [PrivatePost] postsSummary: String # récapitulatif de l'activité interne du groupe, en markdown + + # Toutes les Requests auxquelles un groupe doit répondre (admin) + requestsToGroup: [Request] + userJoinGroupRequestsToGroup: [UserJoinGroup] + groupJoinMetagroupRequestsToGroup: [GroupJoinMetagroup] + groupCoauthorEventRequestsToGroup: [GroupCoauthorEvent] # Graphe organique des groupes parent: SimpleGroup # Groupe parent @@ -145,13 +167,24 @@ type MetaGroup implements Group { answers: [Answer] # permet d'obtenir les questions qui ont eu une réponse # Activité interne - announcementsFromGroup: [Announcement] # annonces écrites par le groupe + # Viewer pour voir les events/annonces adressés au groupe announcementsToGroup: [Announcement] # annonces adressées au groupe - eventsFromGroup: [Event] eventsToGroup: [Event] + + # Member pour voir les events/annonces créés par le groupe + announcementsFromGroup: [Announcement] # annonces écrites par le groupe + eventsFromGroup: [Event] + + # Member pour voir les posts privés privatePosts: [PrivatePost] postsSummary: String # récapitulatif de l'activité interne du groupe, en markdown + # Toutes les Requests auxquelles un groupe doit répondre (admin) + requestsToGroup: [Request] + userJoinGroupRequestsToGroup: [UserJoinGroup] + groupJoinMetagroupRequestsToGroup: [GroupJoinMetagroup] + groupCoauthorEventRequestsToGroup: [GroupCoauthorEvent] + # Graphe organique visibilityEdges: [Group] # se rendre visible par des groupes en plus du graphe organique }