74 lines
1.6 KiB
PHP
74 lines
1.6 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Model;
|
|
|
|
use Nette\Database\Explorer;
|
|
use Nette\Database\Row;
|
|
|
|
/**
|
|
* Jména zvěstovatelů odvozená ze záznamů.
|
|
*/
|
|
final class ZvestovatelFacade
|
|
{
|
|
public function __construct(
|
|
private Explorer $database,
|
|
) {
|
|
}
|
|
|
|
/**
|
|
* @return list<Row>
|
|
*/
|
|
public function getVsechny(): array
|
|
{
|
|
return $this->database->fetchAll(
|
|
'SELECT JMENO, COUNT(*) AS POCET
|
|
FROM ZAZNAM
|
|
WHERE DELETED = 0
|
|
GROUP BY JMENO
|
|
ORDER BY JMENO'
|
|
);
|
|
}
|
|
|
|
public function get(string $jmeno): Row|null
|
|
{
|
|
return $this->database->fetch(
|
|
'SELECT JMENO, COUNT(*) AS POCET
|
|
FROM ZAZNAM
|
|
WHERE DELETED = 0 AND JMENO = ?
|
|
GROUP BY JMENO',
|
|
$jmeno
|
|
);
|
|
}
|
|
|
|
public function existujeJmeno(string $jmeno, ?string $krome = null): bool
|
|
{
|
|
if ($krome === null) {
|
|
return $this->get($jmeno) !== null;
|
|
}
|
|
|
|
return $this->database->fetchField(
|
|
'SELECT TOP 1 ID FROM ZAZNAM WHERE DELETED = 0 AND JMENO = ? AND JMENO <> ?',
|
|
$jmeno,
|
|
$krome
|
|
) !== null;
|
|
}
|
|
|
|
/**
|
|
* Přejmenuje zvěstovatele ve všech jeho záznamech.
|
|
*/
|
|
public function uprav(string $puvodni, string $jmeno): void
|
|
{
|
|
if ($this->get($puvodni) === null || $puvodni === $jmeno) {
|
|
return;
|
|
}
|
|
|
|
$this->database->query(
|
|
'UPDATE ZAZNAM SET JMENO = ? WHERE JMENO = ?',
|
|
$jmeno,
|
|
$puvodni
|
|
);
|
|
}
|
|
}
|