Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace App\Directory\Http\Responses;
- use App\Account\Transformers\AccountTransformer;
- use Illuminate\Contracts\Support\Responsable;
- use Illuminate\Database\Eloquent\Builder;
- class FindPeopleResponse implements Responsable
- {
- /**
- * @var \Illuminate\Database\Eloquent\Builder
- */
- private $users;
- /**
- * FindPeopleResponse constructor.
- *
- * @param \Illuminate\Database\Eloquent\Builder $users
- */
- public function __construct(Builder $users)
- {
- $this->users = $users;
- }
- /**
- * @param \Illuminate\Http\Request $request
- *
- * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Response
- */
- public function toResponse($request)
- {
- if ($request->isJson() || $request->wantsJson() || $request->ajax()) {
- return response()->json($this->mergeInfo());
- }
- return response()->view('directory::find-people');
- }
- /**
- * Merge all the information for the response
- *
- * @return array
- */
- private function mergeInfo(): array
- {
- return array_merge(
- $this->getPeople(),
- $this->getMeta()
- );
- }
- /**
- * Transform the users
- *
- * @return array
- */
- private function getPeople(): array
- {
- return ['people' => $this->users->paginate(20)
- ->getCollection()
- ->map(function ($user) {
- return (new AccountTransformer)->transform($user);
- })
- ->toArray()];
- }
- /**
- * Returns the routes and meta information
- *
- * @return array
- */
- private function getMeta(): array
- {
- return ['meta' => [
- 'counts' => [
- 'results' => $this->users->count()
- ],
- 'routes' => [
- 'search' => route('find.people')
- ]
- ]];
- }
- }
Add Comment
Please, Sign In to add comment