%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/UsersController.php

<?php

namespace App\Http\Controllers\Api\v1;

use App\Exports\UsersExport;
use App\Http\Controllers\Api\ApiController;
use App\Http\Requests\Api\v1\Users\ChangePasswordRequest;
use App\Http\Requests\Api\v1\Users\CreateUserRequest;
use App\Http\Requests\Api\v1\Users\UploadImageRequest;
use App\Http\Requests\Api\v1\Users\UserApplicationRequest;
use App\Models\User;
use App\Transformers\UserTransformer;
use Illuminate\Http\Request;
use Illuminate\Pagination\LengthAwarePaginator;

class UsersController 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 UserTransformer());
    }

    private function filterUsers(Request $request)
    {
        $result = User::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 = User::query()
                    ->find($id);
        return $this->item($user, new UserTransformer());
    }

    public function store(CreateUserRequest $request)
    {
        $user = User::query()
                    ->create($request->only([
                                                'name',
                                                'surname',
                                                'email',
                                                'password',
                                            ]));
        return $this->item($user, new UserTransformer());
    }

    public function update(UserApplicationRequest $request, $id)
    {
        $user = User::query()
                    ->findOrFail($id);
        $user->update($request->only([
                                         'name',
                                         'surname',
                                     ]));
        return $this->item($user, new UserTransformer());
    }

    public function destroy($id)
    {
        /** @var User $user */
        $user = User::query()
                    ->findOrFail($id);
        try {
            $user->delete();
        } catch (\Exception $e) {
            return $this->wrongArguments([
                                             'message' => 'Not possible to delete this user for the moment, please contact your system admin!',
                                         ]);
        }
        return [];
    }

    /**
     * @param $id
     *
     * @return \Illuminate\Http\JsonResponse
     */
    public function confirm($id)
    {
        /** @var User $user */
        $user = User::query()
                    ->findOrFail($id);
        $user->confirm();
        return $this->item($user, new UserTransformer);
    }

    /**
     * @param $id
     *
     * @return \Illuminate\Http\JsonResponse
     */
    public function enable($id)
    {
        /** @var User $user */
        $user = User::query()
                    ->findOrFail($id);
        $user->enable();
        return $this->item($user, new UserTransformer);
    }

    /**
     * @param $id
     *
     * @return \Illuminate\Http\JsonResponse
     */
    public function disable($id)
    {
        /** @var User $user */
        $user = User::query()
                    ->findOrFail($id);
        $user->disable();
        return $this->item($user, new UserTransformer);
    }

    /**
     * @param ChangePasswordRequest $request
     * @param                       $id
     *
     * @return \Illuminate\Http\JsonResponse
     */
    public function updatePassword(ChangePasswordRequest $request, $id)
    {
        /** @var User $user */
        $user = User::query()
                    ->findOrFail($id);
        $user->updatePassword($request->get('password'));
        return $this->item($user, new UserTransformer);
    }

    /**
     * @param UploadImageRequest $request
     * @param                    $id
     *
     * @return \Illuminate\Http\JsonResponse
     */
    public function uploadImage(UploadImageRequest $request, $id)
    {
        /** @var User $user */
        $user = User::query()
                    ->findOrFail($id);
        try {
            $user->uploadImage($request->get('image'));
        } catch (\Exception $e) {
            return $this->wrongArguments($e->getMessage());
        }
        return $this->item($user->fresh(), new UserTransformer);
    }

    public function exportExcel(Request $request)
    {
        return (new UsersExport($this->filterUsers($request)))->download('protocols.xlsx');
    }

}

Zerion Mini Shell 1.0