Forked from an inaccessible project.
-
Olivér FACKLAM authoredOlivér FACKLAM authored
requestModel.ts 9.82 KiB
/**
* @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";
}
}