/**
  *
  * @param LinkFactory $linkFactory
  * @param RouteHelper $routeHelper
  * @param HalApiLink $self
  * @param HalApiLink $parent
  * @param Paginator $paginator
  * @param HalApiTransformerContract $transformer
  * @param string $relation
  */
 public function __construct(LinkFactory $linkFactory, RouteHelper $routeHelper, HalApiLink $self, HalApiLink $parent, Paginator $paginator, HalApiTransformerContract $transformer, $relation)
 {
     parent::__construct($linkFactory, $routeHelper, $self, $parent);
     $route = $self->getRoute();
     $routeParameters = array_merge($self->getParameters(), ['per_page' => $paginator->perPage()]);
     $meta = self::createPaginationMeta($paginator);
     $items = $paginator->items();
     $this->embedFromArray([$relation => $transformer->collection($items)])->meta('pagination', $meta)->link('first', $linkFactory->create($route, array_merge($routeParameters, ['page' => 1])));
     $currentPage = $paginator->currentPage();
     if ($currentPage > 1) {
         $prev = $linkFactory->create($route, array_merge($routeParameters, ['page' => $currentPage - 1]));
         $this->link('prev', $prev);
     }
     if ($paginator->hasMorePages()) {
         $next = $linkFactory->create($route, array_merge($routeParameters, ['page' => $currentPage + 1]));
         $this->link('next', $next);
     }
     if ($paginator instanceof LengthAwarePaginator) {
         $this->link('last', $linkFactory->create($route, array_merge($routeParameters, ['page' => $paginator->lastPage() ?: 1])));
     }
 }
 /**
  * @inheritdoc
  */
 public function show($model)
 {
     /** @var Model $model */
     return $this->responseFactory->json($this->transformer->item($model)->build());
 }