GraphQL add query for learnpaths categories #2644

pull/2715/head
Angel Fernando Quiroz Campos 7 years ago
parent 8c47c2f496
commit 043db15f34
  1. 1
      src/ApiBundle/GraphQL/Map/EnumMap.php
  2. 7
      src/ApiBundle/GraphQL/Map/QueryMap.php
  3. 2
      src/ApiBundle/GraphQL/Map/UnionMap.php
  4. 25
      src/ApiBundle/GraphQL/Resolver/CourseResolver.php
  5. 17
      src/ApiBundle/GraphQL/Resources/config/schema.types.graphql

@ -44,6 +44,7 @@ class EnumMap extends ResolverMap implements ContainerAwareInterface
'TOOL_FORUM' => TOOL_FORUM,
'TOOL_CALENDAR_EVENT' => TOOL_CALENDAR_EVENT,
'TOOL_DOCUMENT' => TOOL_DOCUMENT,
'TOOL_LEARNPATH' => TOOL_LEARNPATH,
],
];
}

@ -329,6 +329,13 @@ class QueryMap extends ResolverMap implements ContainerAwareInterface
},
],
//'CourseDocument' => [],
'ToolLearningPath' => [
'categories' => function (CTool $tool, Argument $args, \ArrayObject $context) {
$resolver = $this->container->get('chamilo_api.graphql.resolver.course');
return $resolver->getLearnpathCategories($context);
},
],
'Session' => [
self::RESOLVE_FIELD => function (
Session $session,

@ -38,6 +38,8 @@ class UnionMap extends ResolverMap implements ContainerAwareInterface
return 'ToolAgenda';
case TOOL_DOCUMENT:
return 'ToolDocuments';
case TOOL_LEARNPATH:
return 'ToolLearningPath';
}
},
],

@ -12,6 +12,7 @@ use Chamilo\CourseBundle\Entity\CForumCategory;
use Chamilo\CourseBundle\Entity\CForumForum;
use Chamilo\CourseBundle\Entity\CForumThread;
use Chamilo\CourseBundle\Entity\CItemProperty;
use Chamilo\CourseBundle\Entity\CLpCategory;
use Chamilo\CourseBundle\Entity\CTool;
use Chamilo\CourseBundle\Repository\CNotebookRepository;
use Doctrine\Common\Collections\ArrayCollection;
@ -467,4 +468,28 @@ class CourseResolver implements ContainerAwareInterface
return $results;
}
/**
* @param \ArrayObject $context
*
* @return array
*/
public function getLearnpathCategories(\ArrayObject $context): array
{
/** @var Course $course */
$course = $context->offsetGet('course');
$none = new CLpCategory();
$none
->setId(0)
->setCId($course->getId())
->setName($this->translator->trans('Without category.'))
->setPosition(0);
$categories = \learnpath::getCategories($course->getId());
array_unshift($categories, $none);
return $categories;
}
}

@ -247,6 +247,20 @@ type CourseDocument {
url: String
}
"A specific sequence of learning objects/experiences."
type ToolLearningPath {
name: String
category: String
image: String
customIcon: String
categories: [CourseLearnpathCategory!]
}
type CourseLearnpathCategory {
id: Int
name: String
}
"A session registered on the platform."
type Session {
"The unique ID of the session."
@ -278,7 +292,7 @@ type SessionCategory {
# Unions
union CourseTool = ToolDescription | ToolAnnouncements | ToolNotebook | ToolForums | ToolAgenda | ToolDocuments
union CourseTool = ToolDescription | ToolAnnouncements | ToolNotebook | ToolForums | ToolAgenda | ToolDocuments | ToolLearningPath
# Enums
@ -318,6 +332,7 @@ enum CourseToolType {
TOOL_FORUM
TOOL_CALENDAR_EVENT
TOOL_DOCUMENT
TOOL_LEARNPATH
}
# Scalars

Loading…
Cancel
Save