%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /var/www/html/o91-api/app/Http/Controllers/Api/v1/
Upload File :
Create Path :
Current File : /var/www/html/o91-api/app/Http/Controllers/Api/v1/UserApplicationsController.php

<?php

namespace App\Http\Controllers\Api\v1;

use App\Exports\UserApplicationsExport;
use App\Http\Controllers\Api\ApiController;
use App\Models\User;
use App\Models\UserApplication;
use App\Transformers\UserApplicationTransformer;
use Illuminate\Http\Request;
use Illuminate\Pagination\LengthAwarePaginator;

class UserApplicationsController extends ApiController
{
    /**
     * @param Request $request
     *
     * @return UsersController
     */
    public function index(Request $request)
    {
        /** @var LengthAwarePaginator $result */
        $result = $this->filterUsers($request)
                       ->paginate($request->get('perPage'));
        return $this->withPaginated($result, new UserApplicationTransformer());
    }

    private function filterUsers(Request $request)
    {
        $result = UserApplication::query();
        if ($name = $request->get('name')) {
            $result = $result->where('name', 'like', "$name%");
        }
        if ($surname = $request->get('surname')) {
            $result = $result->where('surname', 'like', "$surname%");
        }
        if ($email = $request->get('email')) {
            $result = $result->where('email', 'like', "$email%");
        }
        return $result;
    }

    /**
     * @param $id
     *
     * @return UsersController
     */
    public function show($id)
    {
        $user = UserApplication::query()
                               ->find($id);
        return $this->item($user, new UserApplicationTransformer());
    }

    /**
     * @param Request $request
     *
     * @return \Illuminate\Http\Response|\Symfony\Component\HttpFoundation\BinaryFileResponse
     */
    public function exportExcel(Request $request)
    {
        return (new UserApplicationsExport($this->filterUsers($request)))->download("user_applications.xlsx");
    }

}

Zerion Mini Shell 1.0