Code Duplication    Length = 53-55 lines in 2 locations

app/Controller/Course/CourseDeleteController.php 1 location

@@ 14-68 (lines=55) @@
11
use Psr\Http\Message\ResponseInterface as Response;
12
use Chubbyphp\ApiSkeleton\Model\Course;
13
14
final class CourseDeleteController
15
{
16
    /**
17
     * @var RepositoryInterface
18
     */
19
    private $repository;
20
21
    /**
22
     * @var RequestManagerInterface
23
     */
24
    private $requestManager;
25
26
    /**
27
     * @var ResponseManagerInterface
28
     */
29
    private $responseManager;
30
31
    /**
32
     * @param RepositoryInterface      $repository
33
     * @param RequestManagerInterface  $requestManager
34
     * @param ResponseManagerInterface $responseManager
35
     */
36
    public function __construct(
37
        RepositoryInterface $repository,
38
        RequestManagerInterface $requestManager,
39
        ResponseManagerInterface $responseManager
40
    ) {
41
        $this->repository = $repository;
42
        $this->requestManager = $requestManager;
43
        $this->responseManager = $responseManager;
44
    }
45
46
    /**
47
     * @param Request $request
48
     *
49
     * @return Response
50
     */
51
    public function __invoke(Request $request): Response
52
    {
53
        if (null === $accept = $this->requestManager->getAccept($request)) {
54
            return $this->responseManager->createAcceptNotSupportedResponse($request);
55
        }
56
57
        $id = $request->getAttribute('id');
58
59
        /** @var Course $course */
60
        if (null === $course = $this->repository->find($id)) {
61
            return $this->responseManager->createResourceNotFoundResponse($request, $accept, 'course', ['id' => $id]);
62
        }
63
64
        $this->repository->remove($course);
65
66
        return $this->responseManager->createResponse($request, 200, $accept);
67
    }
68
}
69

app/Controller/Course/CourseReadController.php 1 location

@@ 14-66 (lines=53) @@
11
use Psr\Http\Message\ResponseInterface as Response;
12
use Chubbyphp\ApiSkeleton\Model\Course;
13
14
final class CourseReadController
15
{
16
    /**
17
     * @var RepositoryInterface
18
     */
19
    private $repository;
20
21
    /**
22
     * @var RequestManagerInterface
23
     */
24
    private $requestManager;
25
26
    /**
27
     * @var ResponseManagerInterface
28
     */
29
    private $responseManager;
30
31
    /**
32
     * @param RepositoryInterface      $repository
33
     * @param RequestManagerInterface  $requestManager
34
     * @param ResponseManagerInterface $responseManager
35
     */
36
    public function __construct(
37
        RepositoryInterface $repository,
38
        RequestManagerInterface $requestManager,
39
        ResponseManagerInterface $responseManager
40
    ) {
41
        $this->repository = $repository;
42
        $this->requestManager = $requestManager;
43
        $this->responseManager = $responseManager;
44
    }
45
46
    /**
47
     * @param Request $request
48
     *
49
     * @return Response
50
     */
51
    public function __invoke(Request $request): Response
52
    {
53
        if (null === $accept = $this->requestManager->getAccept($request)) {
54
            return $this->responseManager->createAcceptNotSupportedResponse($request);
55
        }
56
57
        $id = $request->getAttribute('id');
58
59
        /** @var Course $course */
60
        if (null === $course = $this->repository->find($id)) {
61
            return $this->responseManager->createResourceNotFoundResponse($request, $accept, 'course', ['id' => $id]);
62
        }
63
64
        return $this->responseManager->createResponse($request, 200, $accept, $course);
65
    }
66
}
67