<?php
namespace App\Services;
//use Symfony\Bridge\Doctrine\ManagerRegistry;
//use Doctrine\Common\Persistence\ManagerRegistry;
//use Doctrine\Persistence\ManagerRegistry;
use Doctrine\ORM\EntityManagerInterface;
class CiselnikObci {
private $managerRegistry;
private $manager;
private $statChoices = [
0 => 'Žiadna hodnota.',
1 => 'Slovensko',
2 => 'Česko',
3 => 'Maďarsko',
4 => 'Poľsko',
5 => 'Rakúsko',
6 => 'Ukrajina',
];
public function __construct(
EntityManagerInterface $managerRegistry
// ManagerRegistry $doctrine
) {
$this->managerRegistry = $managerRegistry;
$this->manager = $managerRegistry;
// $this->managerRegistry = $doctrine;
}
public function getActual($key, $value) {
$rawQ = $this->getActualRawQuery($key);
// $ciselnik = $this->manager->getConnection()->prepare($rawQ);
// $ciselnik->bindParam(':value', $value, \PDO::PARAM_INT);
// $ciselnik->execute();
// $result = $ciselnik->fetchAll();
$result = $this->manager->getConnection()->fetchAllAssociative($rawQ, ["value" => $value]);
return $result;
}
private function getActualRawQuery($key) {
switch ($key) {
case 'kraj':
return 'SELECT NAZKR AS NAME, IDKR AS VALUE FROM SAZPCIS.KRAJ WHERE AKTUALNY_STAV = 1 AND 1 = :value ORDER BY NAZKR';
break;
case 'okres':
return 'SELECT NAZOKS AS NAME, IDOK AS VALUE FROM SAZPCIS.OKRES WHERE AKTUALNY_STAV=1 AND IDKR = :value ORDER BY NAZOKS';
break;
case 'zuj':
return 'SELECT NAZZUJ AS NAME, ICZUJ AS VALUE FROM SAZPCIS.ZUJ WHERE AKTUALNY_STAV=1 AND IDOK = :value ORDER BY NAZZUJ';
break;
}
}
public function getStatName($value) {
if (!$value) {
return $this->getStatChoices()[0];
} elseif (is_numeric($value) && $value <= 6) {
return $this->getStatChoices()[$value];
} else {
return $value;
}
}
public function getKrajName($value) {
$rawQ = 'SELECT NAZKR AS NAME FROM SAZPCIS.KRAJ WHERE IDKR = :value';
return $this->getAnyName($rawQ, $value);
}
public function getOkresName($value) {
$rawQ = 'SELECT NAZOKS AS NAME FROM SAZPCIS.OKRES WHERE IDOK = :value';
return $this->getAnyName($rawQ, $value);
}
public function getZujName($value) {
$rawQ = 'SELECT NAZZUJ AS NAME FROM SAZPCIS.ZUJ WHERE ICZUJ = :value';
return $this->getAnyName($rawQ, $value);
}
private function getAnyName($rawQ, $value) {
if (!$value) {
return ('Žiadna hodnota.');
} elseif (is_numeric($value)) {
$conn = $this->manager->getConnection();
$result = $conn->fetchAssociative($rawQ, ["value" => $value]);
return ($result['NAME']);
//
// $ciselnik = $this->manager->getConnection()->prepare($rawQ);
// $ciselnik->bindParam(':value', $value, \PDO::PARAM_INT);
// $ciselnik->execute();
// $result = $ciselnik->fetch();
// return ($result['NAME']);
} else {
return $value;
}
}
public function getStatChoices() {
return $this->statChoices;
}
public function getKrajChoices($value = 1) {
$rawQ = 'SELECT NAZKR AS NAME, IDKR AS VALUE FROM SAZPCIS.KRAJ WHERE 1 <= :value ORDER BY NAZKR';
return $this->getAnyChoices($rawQ, $value);
}
public function getOkresChoices($value) {
$rawQ = 'SELECT NAZOKS AS NAME, IDOK AS VALUE FROM SAZPCIS.OKRES WHERE IDKR = (SELECT IDKR FROM SAZPCIS.OKRES WHERE IDOK = :value) ORDER BY NAZOKS';
return $this->getAnyChoices($rawQ, $value);
}
public function getZujChoices($value) {
$rawQ = 'SELECT NAZZUJ AS NAME, ICZUJ AS VALUE FROM SAZPCIS.ZUJ WHERE IDOK = (SELECT IDOK FROM SAZPCIS.ZUJ WHERE ICZUJ = :value) ORDER BY NAZZUJ';
return $this->getAnyChoices($rawQ, $value);
}
private function getAnyChoices($rawQ, $value) {
if (is_numeric($value)) {
// $ciselnik = $this->manager->getConnection()->prepare($rawQ);
// $ciselnik->bindParam(':value', $value, \PDO::PARAM_INT);
// $ciselnik->execute();
// $r = $ciselnik->fetchAll();
$r = $this->manager->getConnection()->fetchAllAssociative($rawQ, ["value" => $value]);
// $result = [];
// $result[0] = 'Žiadna hodnota.';
$result = ['0' => 'Žiadna hodnota.'];
foreach ($r as $rr) {
$result[$rr['VALUE']] = $rr['NAME'];
}
return $result;
} elseif (is_string($value) && (strlen($value) >= 3 && strlen($value) <= 80)) {
return [$value => $value];
} else {
return ['0' => 'Žiadna hodnota.'];
}
}
}