<?php declare(strict_types=1);
namespace openvk\Web\Models\Repositories;
use Nette\Database\Table\ActiveRow;
use Chandler\Database\DatabaseConnection as DB;
use openvk\Web\Models\Entities\User;
use Chandler\Security\User as ChandlerUser;

class ChandlerUsers
{
    private $context;
    private $users;

    public function __construct()
    {
        $this->context = DB::i()->getContext();
        $this->users   = $this->context->table("ChandlerUsers");
    }

    private function toUser(?ActiveRow $ar): ?ChandlerUser
    {
        return is_null($ar) ? NULL : (new User($ar))->getChandlerUser();
    }

    function get(int $id): ?ChandlerUser
    {
        return (new Users)->get($id)->getChandlerUser();
    }

    function getById(string $UUID): ?ChandlerUser
    {
        $user = $this->users->where("id", $UUID)->fetch();
        return $user ? new ChandlerUser($user) : NULL;
    }

    function getList(int $page = 1): \Traversable
    {
        foreach($this->users as $user)
            yield new ChandlerUser($user);
    }
}