diff --git a/.gitignore b/.gitignore index 440d81077..4048074a3 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,4 @@ .phpunit.result.cache /build +.idea \ No newline at end of file diff --git a/apps/backoffice/backend/config/routes/courses.yaml b/apps/backoffice/backend/config/routes/courses.yaml index 06ae46ee8..e3f615fb4 100644 --- a/apps/backoffice/backend/config/routes/courses.yaml +++ b/apps/backoffice/backend/config/routes/courses.yaml @@ -3,3 +3,9 @@ courses_get: controller: CodelyTv\Apps\Backoffice\Backend\Controller\Courses\CoursesGetController defaults: { auth: false } methods: [GET] + +courses_all: + path: /courses/all + controller: CodelyTv\Apps\Backoffice\Backend\Controller\Courses\AllCoursesController + defaults: { auth: false } + methods: [GET] diff --git a/apps/backoffice/backend/src/Controller/Courses/AllCoursesController.php b/apps/backoffice/backend/src/Controller/Courses/AllCoursesController.php new file mode 100644 index 000000000..14c174355 --- /dev/null +++ b/apps/backoffice/backend/src/Controller/Courses/AllCoursesController.php @@ -0,0 +1,37 @@ +<?php + +namespace CodelyTv\Apps\Backoffice\Backend\Controller\Courses; + +use CodelyTv\Backoffice\Courses\Application\BackofficeCourseResponse; +use CodelyTv\Backoffice\Courses\Application\BackofficeCoursesResponse; +use CodelyTv\Backoffice\Courses\Application\SearchAll\SearchAllBackofficeCoursesQuery; +use CodelyTv\Shared\Domain\Bus\Query\QueryBus; +use Symfony\Component\HttpFoundation\JsonResponse; +use Symfony\Component\HttpFoundation\Request; +use function Lambdish\Phunctional\map; + +class AllCoursesController +{ + public function __construct(private QueryBus $queryBus) + { + } + + public function __invoke(Request $request): JsonResponse + { + /** @var BackofficeCoursesResponse $response */ + $response = $this->queryBus->ask(new SearchAllBackofficeCoursesQuery()); + + return new JsonResponse( + map( + fn(BackofficeCourseResponse $course) => [ + 'id' => $course->id(), + 'name' => $course->name(), + 'duration' => $course->duration(), + ], + $response->courses() + ), + 200, + ['Access-Control-Allow-Origin' => '*'] + ); + } +}