File "UserController.php"

Full Path: /var/www/html/back/app/Http/Controllers/Api/V1/Auth/UserController.php
File size: 2.14 KB
MIME-type: text/x-php
Charset: utf-8

<?php

namespace App\Http\Controllers\Api\V1;

use App\Http\Controllers\Api\ApiController;
use App\Http\Resources\User\UserResource;
use App\Http\Resources\User\UserShowPermissionsResource;
use App\Http\Resources\User\UserShowResource;
use App\Repositories\User\Interfaces\UserInterface;
use App\Responses\ResponseDto;
use Illuminate\Http\Request;

class UserController extends ApiController
{
    private $userRepository;

    public function __construct(UserInterface $user)
    {
        $this->userRepository = $user;
    }


    public function index(Request $request)
    {
        $activeUsers = $this->userRepository->index('active',$request);
        $blockedUsers = $this->userRepository->index('blocked',$request);

        $totalActiveUsers = $activeUsers->count();
        $totalBlockedUsers = $blockedUsers->count();


        return new ResponseDto(
            data: [
                'active' => [
                    'count' => $totalActiveUsers,
                    'users' => UserResource::collection($activeUsers),
                ],
                'blocked' => [
                    'count' => $totalBlockedUsers,
                    'users' => UserResource::collection($blockedUsers),
                ],
            ],
            status: true
        );

    }


    public function update(Request $request, $userId)
    {
        return $this->userRepository->update($request->toArray(), $userId);
    }

    public function show($userId)
    {
        return new UserShowResource($this->userRepository->show((int)$userId));
    }

    public function store(Request $request)
    {
        $image = $request->file('image');
        return $this->userRepository->store($request->toArray(), $image);
    }


    public function blocked($userId, Request $request)
    {
        $type = $request->boolean('type');

        return $this->userRepository->blocked($userId, $type);
    }

    public function destroy($userId)
    {
        return $this->userRepository->destroy($userId);
    }

    public function showPermissions($userId, $modelId)
    {
        return new UserShowPermissionsResource($this->userRepository->showPermissions($userId, $modelId));
    }
}