Files
mdhub/app/application/app/Services/Site/UserService.php

52 lines
1.6 KiB
PHP

<?php declare(strict_types=1);
namespace App\Services\Site;
use App\Dto\Builder\Repository as RepositoryBuilder;
use App\Dto\QuerySettingsDto;
use App\Models\User;
use App\Repositories\RepositoryRepository;
use App\Repositories\UserRepository;
use App\ServiceResults\ServiceResultArray;
use App\ServiceResults\ServiceResultError;
use App\Services\Service;
final class UserService extends Service
{
public function __construct(
private readonly UserRepository $userRepository,
private readonly RepositoryRepository $repositoryRepository,
) { }
public function repositories(string $username, QuerySettingsDto $querySettingsDto, ?User $user = null): ServiceResultArray | ServiceResultError
{
$pageUser = $this->userRepository->getUserByUsername($username);
if ($pageUser === null) {
return $this->errNotFound(__('Not Found'));
}
$isPublic = true;
if ($user?->id === $pageUser->id) {
$isPublic = null;
}
$repositories = $this->repositoryRepository->getUserRepositories(
$pageUser,
new RepositoryBuilder(isPublic: $isPublic),
$querySettingsDto->getQueryWith()
)->pagination(
$querySettingsDto->getLimit(),
$querySettingsDto->getPage()
);
if ($querySettingsDto->getPage() > 1 && $repositories->count() === 0) {
return $this->errNotFound(__('Not Found'));
}
return $this->result([
'pageUser' => $pageUser,
'repositories' => $repositories,
]);
}
}