Skip to content
Snippets Groups Projects
Commit 6518d643 authored by Olivér FACKLAM's avatar Olivér FACKLAM
Browse files

requestModel.ts

parent 9052f60f
No related branches found
No related tags found
No related merge requests found
......@@ -183,6 +183,8 @@ import { Context } from './graphql/typeDefs/queries';
import { AuthorisationModel } from './graphql/connectors/authorisationModel';
import { UserModel } from './graphql/connectors/userModel';
import { GroupModel } from './graphql/connectors/groupModel';
import { MessageModel } from './graphql/connectors/messageModel';
import { RequestModel } from './graphql/connectors/requestModel';
const context = async ({ req }): Promise<Context> => {
// set a special uid for non-authenticated requests
// /!\ FOR DEVELOPMENT ONLY: use the one in the ldap config .json file
......@@ -211,7 +213,9 @@ const context = async ({ req }): Promise<Context> => {
models: {
auth: await AuthorisationModel.create(uid),
user: new UserModel(uid),
group: new GroupModel(uid)
group: new GroupModel(uid),
message: new MessageModel(uid),
request: new RequestModel(uid)
}
};
};
......
......@@ -162,20 +162,6 @@ export class GroupModel {
throw "Not implemented";
}
/**
* @memberof GraphQL.GroupModel#
* @function userRequestJoinGroup
* @summary Fonction pour demander a devenir membre
* @arg {string} gid - Identifiant du groupe.
* @arg {string} comment - Commentaire supplémentaire
* @return {Promise(Request)} Renvoie la requete créée.
* @async
* @rights viewer du groupe
*/
async userRequestJoinGroup(gid: string, comment: string): Promise<Request> {
throw "Not implemented";
}
/**
* @memberof GraphQL.GroupModel#
* @function userLeaveGroup
......
......@@ -8,7 +8,7 @@ import { Announcement, Event, PrivatePost, Question, Answer, Message } from "../
import knex from "../../../db/knex_router"
import { GroupCollection, GroupSet } from "./tools";
export class GroupModel {
export class MessageModel {
/**
* @memberof GraphQL
......
/**
* @file Fonctions qui implémentent les requetes relatives aux requetes
* @author ofacklam
* @memberof GraphQL
*/
import { Group, SimpleGroup, MetaGroup } from "../resolvers/groups";
import { Request, UserJoinGroup, GroupJoinMetagroup, GroupCoauthorEvent } from "../resolvers/requests";
import { User } from "../resolvers/users";
import knex from "../../../db/knex_router"
import { GroupCollection, GroupSet } from "./tools";
import { createSubgroupArgs, editGroupArgs } from "../typeDefs/queries";
export class RequestModel {
/**
* @memberof GraphQL
* @class RequestModel
* @summary Requetes relatives aux requetes.
* @classdesc Cette classe contient les méthodes implémentant les requetes relatives aux requetes.
* @arg {string} contextUser - L'identifiant de l'utilisateur du 'context'
*/
constructor(contextUser: string) {
this.contextUser = contextUser;
}
protected contextUser: string;
/**
* @memberof GraphQL.RequestModel#
* @function getUserJoinGroupRequest
* @summary Fonction qui renvoie une requete UserJoinGroup donnée.
* @arg {number} rid - Identifiant demandé.
* @return {Promise(UserJoinGroup)} Renvoie la requete dont l'identifiant est 'rid'
* @async
* @rights admin du groupe destinaire ou le user émetteur
*/
async getUserJoinGroupRequest(rid: number): Promise<UserJoinGroup> {
return UserJoinGroup.tryCreate(rid);
}
/**
* @memberof GraphQL.RequestModel#
* @function getGroupJoinMetagroupRequest
* @summary Fonction qui renvoie une requete GroupJoinMetagroup donnée.
* @arg {number} rid - Identifiant demandé.
* @return {Promise(GroupJoinMetagroup)} Renvoie la requete dont l'identifiant est 'rid'
* @async
* @rights admin du groupe émetteur ou destinataire
*/
async getGroupJoinMetagroupRequest(rid: number): Promise<GroupJoinMetagroup> {
return GroupJoinMetagroup.tryCreate(rid);
}
/**
* @memberof GraphQL.RequestModel#
* @function getGroupCoauthorEventRequest
* @summary Fonction qui renvoie une requete GroupCoauthorEvent donnée.
* @arg {number} rid - Identifiant demandé.
* @return {Promise(GroupCoauthorEvent)} Renvoie la requete dont l'identifiant est 'rid'
* @async
* @rights admin du groupe émetteur ou destinataire
*/
async getGroupCoauthorEventRequest(rid: number): Promise<GroupCoauthorEvent> {
return GroupCoauthorEvent.tryCreate(rid);
}
/**
* @memberof GraphQL.RequestModel#
* @function getRequestsToGroup
* @summary Fonction qui renvoie toutes les requetes destinées a ce groupe.
* @arg {string} gid - Identifiant du groupe.
* @return {Promise(Request[])} Renvoie la liste des requetes destinées a ce groupe.
* @async
* @rights admin du groupe
*/
async getRequestsToGroup(gid: string): Promise<Request[]> {
let r1 = await this.getUserJoinGroupRequestsToGroup(gid);
let r2 = await this.getGroupJoinMetagroupRequestsToGroup(gid);
let r3 = await this.getGroupCoauthorEventRequestsToGroup(gid);
let r: Request[];
return r.concat(r1, r2, r3);
}
/**
* @memberof GraphQL.RequestModel#
* @function getUserJoinGroupRequestsToGroup
* @summary Fonction qui renvoie toutes les requetes UserJoinGroup destinées a ce groupe.
* @arg {string} gid - Identifiant du groupe.
* @return {Promise(UserJoinGroup[])} Renvoie la liste des requetes destinées a ce groupe.
* @async
* @rights admin du groupe
*/
async getUserJoinGroupRequestsToGroup(gid: string): Promise<UserJoinGroup[]> {
throw "Not implemented";
}
/**
* @memberof GraphQL.RequestModel#
* @function getGroupJoinMetagroupRequestsToGroup
* @summary Fonction qui renvoie toutes les requetes GroupJoinMetagroup destinées a ce groupe.
* @arg {string} gid - Identifiant du groupe.
* @return {Promise(GroupJoinMetagroup[])} Renvoie la liste des requetes destinées a ce groupe.
* @async
* @rights admin du groupe
*/
async getGroupJoinMetagroupRequestsToGroup(gid: string): Promise<GroupJoinMetagroup[]> {
throw "Not implemented";
}
/**
* @memberof GraphQL.RequestModel#
* @function getGroupCoauthorEventRequestsToGroup
* @summary Fonction qui renvoie toutes les requetes GroupCoauthorEvent destinées a ce groupe.
* @arg {string} gid - Identifiant du groupe.
* @return {Promise(GroupCoauthorEvent[])} Renvoie la liste des requetes destinées a ce groupe.
* @async
* @rights admin du groupe
*/
async getGroupCoauthorEventRequestsToGroup(gid: string): Promise<GroupCoauthorEvent[]> {
throw "Not implemented";
}
/**
* @memberof GraphQL.RequestModel#
* @function userRequestJoinGroup
* @summary Fonction pour demander a devenir membre
* @arg {string} gid - Identifiant du groupe.
* @arg {string} comment - Commentaire supplémentaire
* @return {Promise(UserJoinGroup)} Renvoie la requete créée.
* @async
* @rights viewer du groupe
*/
async userRequestJoinGroup(gid: string, comment: string): Promise<UserJoinGroup> {
throw "Not implemented";
}
/**
* @memberof GraphQL.RequestModel#
* @function groupRequestCoauthorEvent
* @summary Fonction pour demander a co-organiser un évenement
* @arg {string} from_gid - Identifiant du groupe émetteur.
* @arg {string} to_gid - Identifiant du groupe destinataire.
* @arg {number} event_mid - Identifiant de l'évenement considéré.
* @arg {string} comment - Commentaire supplémentaire.
* @return {Promise(GroupCoauthorEvent)} Renvoie la requete créée.
* @async
* @rights speaker du groupe émetteur
*/
async groupRequestCoauthorEvent(from_gid: string, to_gid: string, event_mid: number, comment: string): Promise<GroupCoauthorEvent> {
//TODO : Vérifier que l'évenement est bien organisé par le groupe destinataire (to_gid) !!! => sinon erreur
throw "Not implemented";
}
/**
* @memberof GraphQL.RequestModel#
* @function groupRequestJoinMetagroup
* @summary Fonction pour demander a rejoindre un méta-groupe
* @arg {string} from_gid - Identifiant du groupe émetteur.
* @arg {string} to_gid - Identifiant du méta-groupe destinataire.
* @arg {string} comment - Commentaire supplémentaire.
* @return {Promise(GroupJoinMetagroup)} Renvoie la requete créée.
* @async
* @rights admin du groupe émetteur
*/
async groupRequestJoinMetagroup(from_gid: string, to_gid: string, comment: string): Promise<GroupJoinMetagroup> {
throw "Not implemented";
}
/**
* @memberof GraphQL.RequestModel#
* @function acceptUserJoinRequest
* @summary Fonction pour accepter une UserJoinGroup
* @arg {UserJoinGroup} req - L'objet requete.
* @arg {string} comment - Commentaire supplémentaire.
* @return {Promise(boolean)} Renvoie true si modification réussie.
* @async
* @rights admin du groupe destinataire
*/
async acceptUserJoinRequest(req: UserJoinGroup, comment: string): Promise<boolean> {
throw "Not implemented";
}
/**
* @memberof GraphQL.RequestModel#
* @function refuseUserJoinRequest
* @summary Fonction pour refuser une UserJoinGroup
* @arg {UserJoinGroup} req - L'objet requete.
* @arg {string} comment - Commentaire supplémentaire.
* @return {Promise(boolean)} Renvoie true si modification réussie.
* @async
* @rights admin du groupe destinataire
*/
async refuseUserJoinRequest(req: UserJoinGroup, comment: string): Promise<boolean> {
throw "Not implemented";
}
/**
* @memberof GraphQL.RequestModel#
* @function acceptGroupJoinRequest
* @summary Fonction pour accepter une GroupJoinMetagroup
* @arg {GroupJoinMetagroup} req - L'objet requete.
* @arg {string} comment - Commentaire supplémentaire.
* @return {Promise(boolean)} Renvoie true si modification réussie.
* @async
* @rights admin du groupe destinataire
*/
async acceptGroupJoinRequest(req: GroupJoinMetagroup, comment: string): Promise<boolean> {
throw "Not implemented";
}
/**
* @memberof GraphQL.RequestModel#
* @function refuseGroupJoinRequest
* @summary Fonction pour refuser une GroupJoinMetagroup
* @arg {GroupJoinMetagroup} req - L'objet requete.
* @arg {string} comment - Commentaire supplémentaire.
* @return {Promise(boolean)} Renvoie true si modification réussie.
* @async
* @rights admin du groupe destinataire
*/
async refuseGroupJoinRequest(req: GroupJoinMetagroup, comment: string): Promise<boolean> {
throw "Not implemented";
}
/**
* @memberof GraphQL.RequestModel#
* @function acceptGroupCoauthorEventRequest
* @summary Fonction pour accepter une GroupCoauthorEvent
* @arg {GroupCoauthorEvent} req - L'objet requete.
* @arg {string} comment - Commentaire supplémentaire.
* @return {Promise(boolean)} Renvoie true si modification réussie.
* @async
* @rights admin du groupe destinataire
*/
async acceptGroupCoauthorEventRequest(req: GroupCoauthorEvent, comment: string): Promise<boolean> {
throw "Not implemented";
}
/**
* @memberof GraphQL.RequestModel#
* @function refuseGroupCoauthorEventRequest
* @summary Fonction pour refuser une GroupCoauthorEvent
* @arg {GroupCoauthorEvent} req - L'objet requete.
* @arg {string} comment - Commentaire supplémentaire.
* @return {Promise(boolean)} Renvoie true si modification réussie.
* @async
* @rights admin du groupe destinataire
*/
async refuseGroupCoauthorEventRequest(req: GroupCoauthorEvent, comment: string): Promise<boolean> {
throw "Not implemented";
}
}
\ No newline at end of file
......@@ -21,7 +21,7 @@ type Query {
answer(mid:ID!): Answer
# Request queries de base
request(rid:ID!): Request
#request(rid:ID!): Request
userJoinGroupRequest(rid:ID!): UserJoinGroup
groupJoinMetagroupRequest(rid:ID!): GroupJoinMetagroup
groupCoauthorEventRequest(rid:ID!): GroupCoauthorEvent
......@@ -131,7 +131,7 @@ type Mutation {
forEvent: ID!
): Boolean
userRequestJoinGroup(toGroup: ID!, comment: String): Request
userRequestJoinGroup(toGroup: ID!, comment: String): UserJoinGroup
createQuestion(
toGroup: ID!,
......@@ -172,7 +172,7 @@ type Mutation {
toGroup: ID!,
forEvent: ID!,
comment: String
): Request
): GroupCoauthorEvent
createAnnouncement(
fromGroup: ID!,
......@@ -253,7 +253,7 @@ type Mutation {
school: String
): Group
groupRequestJoinMetagroup(fromGroup: ID!, toMetagroup: ID!, comment: String): Request
groupRequestJoinMetagroup(fromGroup: ID!, toMetagroup: ID!, comment: String): GroupJoinMetagroup
acceptUserJoinRequest(request: ID!, comment: String): Boolean
acceptGroupJoinRequest(request: ID!, comment: String): Boolean
......
import { AuthorisationModel } from "../connectors/authorisationModel";
import { UserModel } from "../connectors/userModel";
import { GroupModel } from "../connectors/groupModel";
import { MessageModel } from "../connectors/messageModel";
import { RequestModel } from "../connectors/requestModel";
interface Context {
request,
......@@ -8,7 +10,9 @@ interface Context {
models: {
auth: AuthorisationModel,
user: UserModel,
group: GroupModel
group: GroupModel,
message: MessageModel,
request: RequestModel
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment