Skip to content
Snippets Groups Projects
Commit 38eaee65 authored by Anatole ROMON's avatar Anatole ROMON
Browse files

plus de resolvers

parent aa5441f9
No related branches found
No related tags found
No related merge requests found
exports.seed = function(knex, Promise) {
// Deletes ALL existing entries
return knex('events').del()
.then(function () {
// Inserts seed entries
return knex('events').insert([
{
id : 42,
title : "coder sigma",
content : "Tous ensemble pour faire du Dev. Que demander de plus ? (a part du sommeil)",
start_time : knex.fn.now(),
end_time : knex.fn.now(),
authors : [],
is_announcement : false
}
]);
});
};
......@@ -266,9 +266,13 @@ export async function createGroupIfLegal(user, args){
* @return {Promise(Object)} Retour de requête knex. Toutes les requêtes destinées au groupe.
* @rights admin(recipientUID)
*/
export function getUserJoinGroupRequests(user, recipientUID){
return knex.select('id', 'useruid', 'message').from('user_join_group')
export async function getUserJoinGroupRequests(user, recipientUID){
let result = knex.select('id', 'useruid', 'message').from('user_join_group')
.where('recipient', recipientUID);
return result.map( obj => {
obj.type = "UserJoinGroup";
return obj;
});
}
/**
......@@ -282,9 +286,13 @@ export function getUserJoinGroupRequests(user, recipientUID){
* @return {Promise(Object)} Retour de requête knex. Toutes les requêtes destinées au groupe.
* @rights speaker(recipientUID)
*/
export function getGroupJoinEventRequests(user, recipientUID){
return knex.select('id', 'senderuid', 'eventuid', 'message').from('group_join_event')
export async function getGroupJoinEventRequests(user, recipientUID){
let result = await knex.select('id', 'senderuid', 'eventuid', 'message').from('group_join_event')
.where('recipient', recipientUID);
return result.map( obj => {
obj.type = "GroupJoinEvent";
return obj;
});
}
......@@ -299,10 +307,14 @@ export function getGroupJoinEventRequests(user, recipientUID){
* @return {Promise(Object)} Retour de requête knex. Toutes les requêtes destinées au groupe.
* @rights speaker(recipientUID)
*/
export const getYourGroupHostEventRequests = (user, recipientUID) => {
return knex.select('id', 'senderuid', 'eventuid', 'message').from('your_group_host_event')
export async function getYourGroupHostEventRequests(user, recipientUID){
let result = await knex.select('id', 'senderuid', 'eventuid', 'message').from('your_group_host_event')
.where('recipient', recipientUID);
};
return result.map( obj => {
obj.type = "YourGroupHostEvent";
return obj;
});
}
//Don't forget the argument user is the guy who makes the request, not the user we want
......@@ -426,6 +438,91 @@ export const getMetaGroup = (user, groupUID) => {
return knex.select().from('meta_groups').where('uid',groupUID).then(results => results [0]);
};
export async function getEvent(user, eventID){
console.log(eventID);
let event_list = await knex('events').select().where('id', eventID);
console.log(event_list);
return event_list[0];
}
/**
* @summary Refuse une requête d'un groupe voulant rejoindre un évènement
* @arg {Object} user - Représente l'utilisateur qui a effectué la requête.
* @arg {Int} requestID - L'id de la requête à refuser.
* @return {Promise(Boolean)} Vrai si l'opération a réussie;
* @rights admin(request.recipient)
*/
export async function denyGroupJoinEventRequest(user, requestID){
await knex('group_join_event').where('id', requestID).del();
return true;
}
/**
* @summary Refuse une requête d'un groupe voulant rejoindre un évènement
* @arg {Object} user - Représente l'utilisateur qui a effectué la requête.
* @arg {Int} requestID - L'id de la requête à refuser.
* @return {Promise(Boolean)} Vrai si l'opération a réussie;
* @rights admin(request.recipient)
*/
export async function acceptGroupJoinEventRequest(user, requestID){
let request = await knex('group_join_event').select().where('id', requestID);
if( !request)
return false;
await knex('group_join_event').where('id', requestID).del();
let group = request[0].senderuid;
let event = request[0].eventuid;
await knex('group_participation').insert({
group : group,
message : event,
status : "join"
});
return;
}
/**
* @summary Refuse une requête d'un groupe voulant rejoindre un évènement
* @arg {Object} user - Représente l'utilisateur qui a effectué la requête.
* @arg {Int} requestID - L'id de la requête à refuser.
* @return {Promise(Boolean)} Vrai si l'opération a réussie;
* @rights admin(request.recipient)
*/
export async function denyYourGroupHostEventRequest(user, requestID){
await knex('your_group_host_event').where('id', requestID).del();
return true;
}
/**
* @summary Refuse une requête d'un groupe voulant rejoindre un évènement
* @arg {Object} user - Représente l'utilisateur qui a effectué la requête.
* @arg {Int} requestID - L'id de la requête à refuser.
* @return {Promise(Boolean)} Vrai si l'opération a réussie;
* @rights admin(request.recipient)
*/
export async function acceptYourGroupHostEventRequest(user, requestID){
let request = await knex('your_group_host_event').select().where('id', requestID);
if( !request)
return false;
await knex('group_join_event').where('id', requestID).del();
let group = request[0].recipient;
let event = request[0].eventuid;
await knex('group_message_relationships').insert({
group : group,
message : event,
status : "host"
});
return;
}
export function takeAdminRights(user, groupUID, justification){
return knex('taken_rights').insert({
user_uid : user.uid,
group_uid : groupUID,
justification : justification
});
}
/**
* @summary Renvoie les membres d'un groupe quelquonque.
......@@ -491,7 +588,6 @@ export async function getGroupsFromCallbacks(user, cbList){
return all_simple_groups.concat(all_meta_groups);
}
/*
* réflexion sur une façon possible de gérer les utilisateurs sans en demander trop à LDAP
* Sans utilité pour le moment, ne faites pas attention
......
......@@ -110,9 +110,11 @@ export const resolvers = {
return true;
},
allRequests: (obj, args, context) => {
console.log(obj);
return obj;
allRequests: async function(obj, args, context){
let ujg_requests = await connectors.getUserJoinGroupRequests(context.user, obj.groupUID);
let gje_requests = await connectors.getGroupJoinEventRequests(context.user, obj.groupUID);
let yghe_requests = await connectors.getYourGroupHostEventRequests(context.user, obj.groupUID);
return ujg_requests.concat(gje_requests).concat(yghe_requests);
}
},
......@@ -128,19 +130,19 @@ export const resolvers = {
}
},
// @rights admin(obj.groupUID)
AllRequests: {
userJoinGroup : (obj, args, context) => {
return connectors.getUserJoinGroupRequests(context.user, obj.groupUID);
},
SpeakerQuery: {
groupJoinEvent : (obj, args, context) => {
return connectors.getGroupJoinEventRequests(context.user, obj.groupUID);
},
allRequests: async function(obj, args, context){
let gje_requests = await connectors.getGroupJoinEventRequests(context.user, obj.groupUID);
let yghe_requests = await connectors.getYourGroupHostEventRequests(context.user, obj.groupUID);
return gje_requests.concat(yghe_requests);
}
},
yourGroupHostEvent : (obj, args, context) => {
return connectors.getYourGroupHostEventRequests(context.user, obj.groupUID);
},
Request : {
__resolveType : function(obj){
return obj.type;
}
},
// @rights admin(obj.groupUID)
......@@ -196,6 +198,11 @@ export const resolvers = {
// @rights user
Mutation: {
asSuperviser : function (obj, args, context){
return {groupUID : args.groupUID, justification : "kes"};
},
asAdmin: (obj, args, context) => {
return connectors.hasAdminRights(context.user, args.groupUID).then(res => {
if(res)
......@@ -232,7 +239,21 @@ export const resolvers = {
}
},
// @rights admin(group.UID)
// @rights : superviser(obj.groupUID)
SuperviserMutation: {
runAdminOperation : function (obj, args, context){
return obj;
},
takeAdminRights : async function(obj, args, context){
console.log(obj);
await connectors.takeAdminRights(context.user, obj.groupUID, obj.justification);
return connectors.getGroup(context.user, obj.groupUID);
}
},
// @rights admin(obj.groupUID)
AdminMutation: {
isAdmin: (obj, args, context) => {
return true;
......@@ -248,7 +269,7 @@ export const resolvers = {
}
},
// @rights viewer(group.UID)
// @rights viewer(obj.groupUID)
ViewerMutation: {
requestJoin: (obj, args, context) => {
console.log(obj);
......@@ -282,6 +303,15 @@ export const resolvers = {
},
Event: {
startTime : function(obj){
return obj.start_time;
},
endTime : function(obj){
return obj.end_time;
},
asAnnouncement : function(obj, args, context){
// le champ is_announcement indique si il existe une annonce qui va avec l'évènement
// une ligne de la bdd events peut résoudre comme évènement ou comme annonce
......
......@@ -13,6 +13,7 @@ const RootTypes = `
}
type Mutation {
asSuperviser(groupUID: String): SuperviserMutation
asAdmin(groupUID: String): AdminMutation
asSpeaker(groupUID: String): SpeakerMutation
asMember(groupUID: String): MemberMutation
......@@ -23,6 +24,12 @@ const RootTypes = `
`;
const subMutations = `
type SuperviserMutation {
runAdminOperation : AdminMutation
takeAdminRights : Group
}
type AdminMutation {
isAdmin: Boolean
......@@ -115,11 +122,12 @@ const subQueries = `
# Requête à la base de donnée nécessitant d'être administrateur.
type AdminQuery{
isAdmin: Boolean
allRequests : AllRequests
allRequests : [Request]
}
type SpeakerQuery{
isSpeaker: Boolean
allRequests : [Request]
}
type MemberQuery{
......
......@@ -142,12 +142,6 @@ const Event = `
`;
const Requests = `
# Demandes effectuées au groupe.
type AllRequests {
userJoinGroup: [UserJoinGroup]
groupJoinEvent: [GroupJoinEvent]
yourGroupHostEvent: [YourGroupHostEvent]
}
interface Request {
# ID de la demande
......
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