more group (bourgeons) configs

This commit is contained in:
2022-11-07 12:05:53 +01:00
parent 2fbdc274b7
commit f9e76d4e4c
15 changed files with 203 additions and 57 deletions

View File

@@ -55,6 +55,7 @@ type Group {
description: String
owner: User
members: [User]
concernements: [Concernement]
}
# type GroupMember {
@@ -67,6 +68,8 @@ type User {
email: String
username: String
roles: [String]
concernements: [Concernement]
groups: [Group]
}
# type Role {

View File

@@ -536,17 +536,20 @@ class OuattSchemaExtension extends SdlSchemaExtensionPluginBase {
)
);
// // GroupMembers
// $registry->addFieldResolver('GroupMember', 'id',
// $builder->produce('entity_id')
// ->map('entity', $builder->fromParent())
// );
// $registry->addFieldResolver('Group', 'concernements',
// $builder->compose(
// $builder->callback(function ($parent, $args) {
// $memberships = $parent->getMembers();
// $users = [];
// foreach ($memberships as $member) {
// $users[] = $member->getUser();
// }
// return $users;
// }),
// $registry->addFieldResolver('GroupMember', 'user',
// $builder->produce('entity_id')
// ->map('entity', $builder->fromParent())
// )
// );
}
// __ __
@@ -592,6 +595,47 @@ class OuattSchemaExtension extends SdlSchemaExtensionPluginBase {
// $builder->produce('entity_label')
// ->map('entity', $builder->fromParent())
// );
$registry->addFieldResolver('User', 'concernements',
$builder->compose(
$builder->callback(function($parent, $arg){
$entity_storage = \Drupal::entityTypeManager()->getStorage('node');
$query = $entity_storage->getQuery()
->condition('type', ['concernement'], 'IN')
->condition('uid', $parent->id())
->accessCheck(TRUE);
$results = $query->execute();
return $results;
}),
$builder->produce('entity_load_multiple')
->map('type', $builder->fromValue('node'))
->map('ids', $builder->fromParent())
)
);
$registry->addFieldResolver('User', 'groups',
$builder->compose(
$builder->callback(function($parent, $arg){
$group_relationship_storage = \Drupal::entityTypeManager()->getStorage('group_relationship');
$query = $group_relationship_storage->getQuery()
->condition('entity_id', $parent->id())
->accessCheck(TRUE);
$group_relationship_ids = $query->execute();
$group_relationships = $group_relationship_storage->loadMultiple($group_relationship_ids);
$group_ids = [];
foreach ($group_relationships as $group_relationship) {
$group_ids[] = $group_relationship->getGroupId();
}
return $group_ids;
}),
$builder->produce('entity_load_multiple')
->map('type', $builder->fromValue('group'))
->map('ids', $builder->fromParent())
)
);
}