<?php

namespace App\Controller;

use App\Entity\Zak;
use App\Repository\CasRepository;
use App\Repository\SkolaRepository;
use App\Repository\UciteleRepository;
use App\Repository\ZakRepository;
use DateTime;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;

/**
 * @Route("/xml", name="xml.")
 */
class XMLController extends AbstractController
{
    /**
     * @Route("/gen/{rozdat}", name="generate")
     * @param $rozdat
     * @param SkolaRepository $skolaRepository
     * @param UciteleRepository $uciteleRepository
     * @param ZakRepository $zakRepository
     * @param CasRepository $casRepository
     */
    public function Generate($rozdat, SkolaRepository $skolaRepository, UciteleRepository $uciteleRepository, ZakRepository $zakRepository, CasRepository $casRepository)
    {
        $this -> denyAccessUnlessGranted('ROLE_ADMIN', null, "Přístup odepřen");

        $zaci = $zakRepository -> findAll();
        $skola = $skolaRepository -> findOneBy(['id' => 1]);
        $zastupce = $uciteleRepository -> findOneBy(['id' => 11]);
        $filename = 'Z'.$skola -> getIZO().'_01.xml';
        $datum = new DateTime('now');


        $rdat = $rozdat;
        $izo = $skola -> getIZO();
        $cast = '01';

        $xmlstr = '<?xml version="1.0" encoding="Windows-1250"?><Vykaz verze="ZS.010"></Vykaz>';

        $xml = new \SimpleXMLElement($xmlstr);
        $xml -> addChild('Vygen', 'Školní systém');
        $xml -> addChild('autor', $zastupce -> getJmeno().$zastupce -> getPrijmeni());
        $xml -> addChild('telefon', $zastupce -> getTelefon());
        $xml -> addChild('email', $zastupce -> getEmail());
        $xml -> addChild('soubor', $filename);
        $xml -> addChild('vytvoreno', $datum -> format('d.m.Y H:i'));


        foreach ($zaci as $zak) {
            $rodc = $zak -> getRodCis();
            $pohlavi = $zak -> getPohlavi();
            $datnaroz = $this -> datNaroz($zak -> getDatNar());
            $kstpr = $zak -> getKvStObc();
            $stpr = $zak -> getObcanstvi();
            $obecb = $this -> Obec($zak)[0];
            $okresb = $this -> Obec($zak)[1];
            $odhl = $zak -> getPredSkol();
            $zahdat = $zak -> getDatZah() -> format('d.m.Y');
            $kodzah = $zak -> getZahDoc();
            $ukondat = $zak -> getDatUk();
            $kodukon = $zak -> getKodUk();
            $letpsd = $this -> letPSD($zak);
            $rocnik = $zak -> getTrida() -> getRocnik();
            $priznst = $zak -> getPrizn();
            $stskoly = $this -> stupen($zak);
            $trida = $zak -> getTrida() -> getNazev();
            $zpusob = $zak -> getZpusob();
            $jazyk0 = $zak -> getTrida() -> getJazO();
            if($this -> jazyk($zak)[0] == null)$jaz1 = '00'; else $jaz1 = $this -> jazyk($zak)[0];
            if ($jaz1 != '00') $pjaz1 = 'A'; else $pjaz1 = null;
            if($this -> jazyk($zak)[1] != null) $jaz2 = $this -> jazyk($zak)[1]; else $jaz2 = null;
            if ($jaz2 != null) $pjaz2 = 'B'; else $pjaz2 = null;
            if($this -> jazyk($zak)[2] != null) $jaz3 = $this -> jazyk($zak)[2]; else $jaz3 = null;
            if ($jaz3 != null) $pjaz3 = 'C'; else $pjaz3 = null;
            if($this -> jazyk($zak)[3] != null) $jaz4 = $this -> jazyk($zak)[3]; else $jaz4 = null;
            if ($jaz4 != null) $pjaz4 = 'D'; else $pjaz4 = null;
            $jazykpr1 = $this -> jazyk2($zak)[0];
            $jazykpr2 = $this -> jazyk2($zak)[1];
            $pocetpr1 = $this -> pocPredmetu($zak)[0];
            $pocetpr2 = $this -> pocPredmetu($zak)[1];
            $poceth1 = $this -> pocHod($casRepository, $zak)[0];
            $poceth2 = $this -> pocHod($casRepository, $zak)[1];
            $fin = $zak -> getFin();
            $obor = $zak -> getTrida() -> getObor();
            $delst = $skola -> getDelka() . '0';
            $kodzmen = $zak -> getKodZmen();
            $zmendat = $zak -> getDatZmen();
            $kodvety = $this -> kodVety($zak);
            $platzac = $zahdat = '1.9.' . $zak -> getDatZah() -> format('Y');
            $platkon = $zahdat = '31.8.' . $zak -> getDatZah() -> format('Y');;

            $veta = $xml->addChild('veta');

            $veta->addChild('RDAT', $rdat);
            $veta->addChild('IZO', $izo);
            $veta->addChild('CAST', $cast);
            $veta->addChild('RODC', $rodc);
            $veta->addChild('POHLAVI', $pohlavi);
            $veta->addChild('DAT_NAROZ', $datnaroz);
            $veta->addChild('KSTPR', $kstpr);
            $veta->addChild('STPR', $stpr);
            $veta->addChild('OBECB', $obecb);
            $veta->addChild('OKRESB', $okresb);
            $veta->addChild('ODHL', $odhl);
            $veta->addChild('ZAHDAT', $zahdat);
            $veta->addChild('KOD_ZAH', $kodzah);
            $veta->addChild('UKONDAT', $ukondat);
            $veta->addChild('KOD_UKON', $kodukon);
            $veta->addChild('LET_PSD', $letpsd);
            $veta->addChild('ROCNIK', $rocnik);
            $veta->addChild('PRIZN_ST', $priznst);
            $veta->addChild('ST_SKOLY', $stskoly);
            $veta->addChild('TRIDA', $trida);
            $veta->addChild('ZPUSOB', $zpusob);
            $veta->addChild('JAZYK_O', $jazyk0);
            $veta->addChild('JAZ1', $jaz1);
            $veta->addChild('P_JAZ1', $pjaz1);
            $veta->addChild('JAZ2', $jaz2);
            $veta->addChild('P_JAZ2', $pjaz2);
            $veta->addChild('JAZ3', $jaz3);
            $veta->addChild('P_JAZ3', $pjaz3);
            $veta->addChild('JAZ4', $jaz4);
            $veta->addChild('P_JAZ4', $pjaz4);
            $veta->addChild('JAZYK_PR1', $jazykpr1);
            $veta->addChild('POCET_PR1', $pocetpr1);
            $veta->addChild('POCET_H1', $poceth1);
            $veta->addChild('JAZYK_PR2', $jazykpr2);
            $veta->addChild('POCET_PR2', $pocetpr2);
            $veta->addChild('POCET_H2', $poceth2);
            $veta->addChild('FIN', $fin);
            $veta->addChild('OBOR', $obor);
            $veta->addChild('DELST', $delst);
            $veta->addChild('KOD_ZMEN', $kodzmen);
            $veta->addChild('ZMENDAT', $zmendat);
            $veta->addChild('KOD_VETY', $kodvety);
            $veta->addChild('PLAT_ZAC', $platzac);
            $veta->addChild('PLAT_KON', $platkon);
        }

        ob_end_clean();
        header_remove();

        header("Content-type: text/xml");
        header('Content-Disposition: attachment; filename="Z'.$skola -> getIZO().'_01.xml"');

        echo $xml->asXML();
        exit();
    }

    /**
     * @Route("/genA/{rozdat}", name="generateA")
     * @param $rozdat
     * @param SkolaRepository $skolaRepository
     * @param UciteleRepository $uciteleRepository
     * @param ZakRepository $zakRepository
     * @param CasRepository $casRepository
     */
    public function GenerateA($rozdat, SkolaRepository $skolaRepository, UciteleRepository $uciteleRepository, ZakRepository $zakRepository, CasRepository $casRepository)
    {
        $this -> denyAccessUnlessGranted('ROLE_ADMIN', null, "Přístup odepřen");

        $zaci = $zakRepository -> findAll();
        $skola = $skolaRepository -> findOneBy(['id' => 1]);
        $zastupce = $uciteleRepository -> findOneBy(['id' => 11]);
        $filename = 'Z'.$skola -> getIZO().'_01.xml';
        $datum = new DateTime('now');


        $rdat = $rozdat;
        $izo = $skola -> getIZO();
        $cast = '01';

        $xmlstr = '<?xml version="1.0" encoding="Windows-1250"?><Vykaz verze="ZS.010"></Vykaz>';

        $xml = new \SimpleXMLElement($xmlstr);
        $xml -> addChild('Vygen', 'Školní systém');
        $xml -> addChild('autor', $zastupce -> getJmeno().$zastupce -> getPrijmeni());
        $xml -> addChild('telefon', $zastupce -> getTelefon());
        $xml -> addChild('email', $zastupce -> getEmail());
        $xml -> addChild('soubor', $filename);
        $xml -> addChild('vytvoreno', $datum -> format('d.m.Y H:i'));


        foreach ($zaci as $zak) {
            $uvp = $zak -> getUprVzdProgram();
            $sz = $zak -> getOdlKultProstredi();
            $zz = $zak -> getKatZnev();
            $idznev = $zak -> getZnevyhodneni();
            $pspo = $zak -> getPspo();
            $prodldv = $zak -> getProdlDelkaVzd();
            $uprvyst = $zak -> getUpravaVystVzdel();
            $indi = $zak -> getIndStudPlan();
            $nadani = $zak -> getNadani();
            $typtr = $zak -> getTrida() -> getTypTridy();
            $kodzaka = $zak -> getId();
            $pohlavi = $zak -> getPohlavi();
            $datnaroz = $this -> datNaroz($zak -> getDatNar());
            $kstpr = $zak -> getKvStObc();
            $stpr = $zak -> getObcanstvi();
            $okresb = $this -> Obec($zak)[1];
            $odhl = $zak -> getPredSkol();
            $zahdat = $zak -> getDatZah() -> format('d.m.Y');
            $kodzah = $zak -> getZahDoc();
            $ukondat = $zak -> getDatUk();
            $kodukon = $zak -> getKodUk();
            $letpsd = $this -> letPSD($zak);
            $rocnik = $zak -> getTrida() -> getRocnik();
            $priznst = $zak -> getPrizn();
            $stskoly = $this -> stupen($zak);
            $trida = $zak -> getTrida() -> getNazev();
            $zpusob = $zak -> getZpusob();
            $jazyk0 = $zak -> getTrida() -> getJazO();
            if($this -> jazyk($zak)[0] == null)$jaz1 = '00'; else $jaz1 = $this -> jazyk($zak)[0];
            if ($jaz1 != '00') $pjaz1 = 'A'; else $pjaz1 = null;
            if($this -> jazyk($zak)[1] != null) $jaz2 = $this -> jazyk($zak)[1]; else $jaz2 = null;
            if ($jaz2 != null) $pjaz2 = 'B'; else $pjaz2 = null;
            if($this -> jazyk($zak)[2] != null) $jaz3 = $this -> jazyk($zak)[2]; else $jaz3 = null;
            if ($jaz3 != null) $pjaz3 = 'C'; else $pjaz3 = null;
            if($this -> jazyk($zak)[3] != null) $jaz4 = $this -> jazyk($zak)[3]; else $jaz4 = null;
            if ($jaz4 != null) $pjaz4 = 'D'; else $pjaz4 = null;
            $jazykpr1 = $this -> jazyk2($zak)[0];
            $jazykpr2 = $this -> jazyk2($zak)[1];
            $pocetpr1 = $this -> pocPredmetu($zak)[0];
            $pocetpr2 = $this -> pocPredmetu($zak)[1];
            $poceth1 = $this -> pocHod($casRepository, $zak)[0];
            $poceth2 = $this -> pocHod($casRepository, $zak)[1];
            $fin = $zak -> getFin();
            $obor = $zak -> getTrida() -> getObor();
            $delst = $skola -> getDelka() . '0';
            $kodzmen = $zak -> getKodZmen();
            $zmendat = $zak -> getDatZmen();
            $kodvety = $this -> kodVety($zak);
            $platzac = $zahdat = '1.9.' . $zak -> getDatZah() -> format('Y');
            $platkon = $zahdat = '31.8.' . $zak -> getDatZah() -> format('Y');;

            $veta = $xml->addChild('veta');

            $veta->addChild('RDAT', $rdat);
            $veta->addChild('IZO', $izo);
            $veta->addChild('CAST', $cast);
            $veta->addChild('KOD_ZAKA', $kodzaka);
            $veta->addChild('POHLAVI', $pohlavi);
            $veta->addChild('DAT_NAROZ', $datnaroz);
            $veta->addChild('KSTPR', $kstpr);
            $veta->addChild('STPR', $stpr);
            $veta->addChild('OKRESB', $okresb);
            $veta->addChild('ODHL', $odhl);
            $veta->addChild('ZAHDAT', $zahdat);
            $veta->addChild('KOD_ZAH', $kodzah);
            $veta->addChild('UKONDAT', $ukondat);
            $veta->addChild('KOD_UKON', $kodukon);
            $veta->addChild('LET_PSD', $letpsd);
            $veta->addChild('ROCNIK', $rocnik);
            $veta->addChild('PRIZN_ST', $priznst);
            $veta->addChild('ST_SKOLY', $stskoly);
            $veta->addChild('TRIDA', $trida);
            $veta->addChild('TYP_TR', $typtr);
            $veta->addChild('ZPUSOB', $zpusob);
            $veta->addChild('JAZYK_O', $jazyk0);
            $veta->addChild('JAZ1', $jaz1);
            $veta->addChild('P_JAZ1', $pjaz1);
            $veta->addChild('JAZ2', $jaz2);
            $veta->addChild('P_JAZ2', $pjaz2);
            $veta->addChild('JAZ3', $jaz3);
            $veta->addChild('P_JAZ3', $pjaz3);
            $veta->addChild('JAZ4', $jaz4);
            $veta->addChild('P_JAZ4', $pjaz4);
            $veta->addChild('JAZYK_PR1', $jazykpr1);
            $veta->addChild('POCET_PR1', $pocetpr1);
            $veta->addChild('POCET_H1', $poceth1);
            $veta->addChild('JAZYK_PR2', $jazykpr2);
            $veta->addChild('POCET_PR2', $pocetpr2);
            $veta->addChild('POCET_H2', $poceth2);
            $veta->addChild('INDI', $indi);
            $veta->addChild('NADANI', $nadani);
            $veta->addChild('FIN', $fin);
            $veta->addChild('OBOR', $obor);
            $veta->addChild('DELST', $delst);
            $veta->addChild('UVP', $uvp);
            $veta->addChild('SZ', $sz);
            $veta->addChild('ZZ', $zz);
            $veta->addChild('ID_ZNEV', $idznev);
            $veta->addChild('PSPO', $pspo);
            $veta->addChild('PRODL_DV', $prodldv);
            $veta->addChild('UPR_VYST', $uprvyst);
            $veta->addChild('KOD_ZMEN', $kodzmen);
            $veta->addChild('ZMENDAT', $zmendat);
            $veta->addChild('KOD_VETY', $kodvety);
            $veta->addChild('PLAT_ZAC', $platzac);
            $veta->addChild('PLAT_KON', $platkon);
        }

        ob_end_clean();
        header_remove();

        header("Content-type: text/xml");
        header('Content-Disposition: attachment; filename="Z'.$skola -> getIZO().'_01A.xml"');

        echo $xml->asXML();
        exit();
    }

    /**
     * @Route("/genB/{rozdat}", name="generateB")
     * @param $rozdat
     * @param SkolaRepository $skolaRepository
     * @param UciteleRepository $uciteleRepository
     * @param ZakRepository $zakRepository
     * @param CasRepository $casRepository
     */
    public function GenerateB($rozdat, SkolaRepository $skolaRepository, UciteleRepository $uciteleRepository, ZakRepository $zakRepository, CasRepository $casRepository)
    {
        $this -> denyAccessUnlessGranted('ROLE_ADMIN', null, "Přístup odepřen");

        $zaci = $zakRepository -> findAll();
        $skola = $skolaRepository -> findOneBy(['id' => 1]);
        $zastupce = $uciteleRepository -> findOneBy(['id' => 11]);
        $filename = 'Z'.$skola -> getIZO().'_01.xml';
        $datum = new DateTime('now');


        $rdat = $rozdat;
        $izo = $skola -> getIZO();
        $cast = '01';

        $xmlstr = '<?xml version="1.0" encoding="Windows-1250"?><Vykaz verze="ZS.010"></Vykaz>';

        $xml = new \SimpleXMLElement($xmlstr);
        $xml -> addChild('Vygen', 'Školní systém');
        $xml -> addChild('autor', $zastupce -> getJmeno().$zastupce -> getPrijmeni());
        $xml -> addChild('telefon', $zastupce -> getTelefon());
        $xml -> addChild('email', $zastupce -> getEmail());
        $xml -> addChild('soubor', $filename);
        $xml -> addChild('vytvoreno', $datum -> format('d.m.Y H:i'));


        foreach ($zaci as $zak) {
            $idznev = $zak -> getZnevyhodneni();
            $pspo = $zak -> getPspo();
            $tt = $zak -> getTrida() -> getTT();
            $specif = '';
            $drp = ''; //nejsou pozadovany
            $tp = '';
            $izospz = $skola -> getIZOSPZ();
            $datvyd = $zak -> getDatVydDoporuc();
            $datkpd = $zak -> getDatKonceDoporuc();
            $kodnfn = $zak -> getNormFinNarocnost();
            $fpp = $zak -> getFormaPorizPomucky();
            $fn = $zak -> getFinNarocnost();
            $datzah = $zak -> getDatZahPO();
            $datukon = $zak -> getDatUkPO();
            $redizo = $skola -> getRedIzo();
            $kodzaka = $zak -> getId();
            $obor = $zak -> getTrida() -> getObor();
            $kodzmen = $zak -> getKodZmen();
            $zmendat = $zak -> getDatZmen();
            $platzac = $zahdat = '1.9.' . $zak -> getDatZah() -> format('Y');
            $platkon = $zahdat = '31.8.' . $zak -> getDatZah() -> format('Y');;

            $veta = $xml->addChild('veta');

            $veta->addChild('RDAT', $rdat);
            $veta->addChild('RED_IZO', $redizo);
            $veta->addChild('IZO', $izo);
            $veta->addChild('CAST', $cast);
            $veta->addChild('KOD_ZAKA', $kodzaka);
            $veta->addChild('OBOR', $obor);
            $veta->addChild('ID_ZNEV', $idznev);
            $veta->addChild('PSPO', $pspo);
            $veta->addChild('TT', $tt);
            $veta->addChild('SPECIF', $specif);
            $veta->addChild('DRP', $drp);
            $veta->addChild('TP', $tp);
            $veta->addChild('IZO_SPZ', $izospz);
            $veta->addChild('DAT_VYD', $datvyd);
            $veta->addChild('DAT_KPD', $datkpd);
            $veta->addChild('KOD_NFN', $kodnfn);
            $veta->addChild('FPP', $fpp);
            $veta->addChild('FN', $fn);
            $veta->addChild('DAT_ZAH', $datzah);
            $veta->addChild('DAT_UKON', $datukon);
            $veta->addChild('KOD_ZMEN', $kodzmen);
            $veta->addChild('ZMENDAT', $zmendat);
            $veta->addChild('PLAT_ZAC', $platzac);
            $veta->addChild('PLAT_KON', $platkon);
        }

        ob_end_clean();
        header_remove();

        header("Content-type: text/xml");
        header('Content-Disposition: attachment; filename="Z'.$skola -> getIZO().'_01B.xml"');

        echo $xml->asXML();
        exit();
    }

    public function datNaroz(DateTime $dateTime)
    {
        if($dateTime -> format('n') <= 8 && $dateTime -> format('n') >= 1)
        {
            return $vysledek = $dateTime -> format('Y') . 'aa';
        }
        if($dateTime -> format('n') <= 12 && $dateTime -> format('n') >= 9)
        {
            return $vysledek = $dateTime->format('Y') . 'bb';
        }
        return 0;
    }

    public function Obec(Zak $zak)
    {
        $okresb= 0;
        $obecb = 0;
        if($zak -> getKvStObc() == 6)
        {
            $obecb = 999999;
            $okresb = '999' . $zak -> getObcanstvi();
        }

        switch ($zak -> getMCast())
        {
            case 'Želechovice nad Dřevnicí': $obecb = 500011; break;
            case 'Petrov nad Desnou	': $obecb = 500020; break;
            case 'Libhošť': $obecb = 500046; break;
            case 'Praha 1': $obecb = 500054; break;
            case 'Krhová': $obecb = 500062; break;
            case 'Poličná': $obecb = 500071; break;
            case 'Praha 2': $obecb = 500089; break;
            case 'Praha 3': $obecb = 500097; break;
            case 'Bražec': $obecb = 500101; break;
            case 'Praha 4': $obecb = 500119; break;
            case 'Doupovské Hradiště': $obecb = 500127; break;
            case 'Kozlov': $obecb = 500135; break;
            case 'Praha 5': $obecb = 500143; break;
            case 'Luboměř pod Strážnou': $obecb = 500151; break;
            case 'Město Libavá': $obecb = 500160; break;
            case 'Praha 6': $obecb = 500178; break;
            case 'Praha 7': $obecb = 500186; break;
            case 'Polná na Šumavě': $obecb = 500194; break;
            case 'Praha 8': $obecb = 500208; break;
            case 'Praha 9': $obecb = 500216; break;
            case 'Praha 10': $obecb = 500224; break;
            case 'Veřovice': $obecb = 500259; break;
            case 'Vřesina': $obecb = 500291; break;
            case 'Olomouc': $obecb = 500496; break;
            case 'Bělkovice-Lašťany': $obecb = 500526; break;
            case 'Bílá Lhota': $obecb = 500623; break;
            case 'Blatec': $obecb = 500801; break;
            case 'Bohuňovice': $obecb = 500852; break;
            case 'Bouzov': $obecb = 500861; break;
            case 'Bystročice': $obecb = 500879; break;
            case 'Ústí nad Labem-Severní Terasa': $obecb = 501298; break;
            case 'Dlouhá Loučka': $obecb = 501476; break;
            case 'Dolany': $obecb = 501646; break;
            case 'Drahanovice': $obecb = 501751; break;
            case 'Dub nad Moravou': $obecb = 501794; break;
            case 'Grygov': $obecb = 501841; break;
            case 'Ústí nad Labem-Neštěmice': $obecb = 502081; break;
            case 'Hlubočky': $obecb = 502146; break;
            case 'Hněvotín': $obecb = 502235; break;
            case 'Ústí nad Labem-Střekov': $obecb = 502316; break;
            case 'Hnojice': $obecb = 502405; break;
            case 'Horka nad Moravou': $obecb = 502545; break;
            case 'Cholina': $obecb = 502839; break;
            case 'Jívová': $obecb = 503142; break;
            case 'Kožušany-Tážaly': $obecb = 503304; break;
            case 'Žitovlice': $obecb = 503410; break;
            case 'Litovel': $obecb = 503444; break;
            case 'Luká': $obecb = 503622; break;
            case 'Lutín': $obecb = 503657; break;
            case 'Majetín': $obecb = 503738; break;
        }

        switch ($zak -> getOkres())
        {
            case 'Praha': $okresb = 'CZ0100'; break;
            case 'Benešov': $okresb = 'CZ0201'; break;
            case 'Beroun': $okresb = ''; break;
            case 'Kladno': $okresb = 'CZ0203'; break;
            case 'Kolín': $okresb = 'CZ0204'; break;
            case 'Kutná Hora': $okresb = 'CZ0205'; break;
            case 'Mělník': $okresb = 'CZ0206'; break;
            case 'Mladá Boleslav': $okresb = 'CZ0207'; break;
            case 'Nymburk': $okresb = 'CZ0208'; break;
            case 'Praha-východ': $okresb = 'CZ0209'; break;
            case 'Praha-západ': $okresb = 'CZ020A'; break;
            case 'Příbram': $okresb = 'CZ020B'; break;
            case 'Rakovník': $okresb = 'CZ020C'; break;
            case 'České Budějovice': $okresb = 'CZ0311'; break;
            case 'Český Krumlov': $okresb = 'CZ0312'; break;
            case 'Jindřichův Hradec': $okresb = 'CZ0313'; break;
            case 'Písek': $okresb = 'CZ0314'; break;
            case 'Prachatice': $okresb = 'CZ0315'; break;
            case 'Strakonice': $okresb = 'CZ0316'; break;
            case 'Tábor': $okresb = 'CZ0317'; break;
            case 'Domažlice': $okresb = 'CZ0321'; break;
            case 'Klatovy': $okresb = 'CZ0322'; break;
            case 'Plzeň': $okresb = 'CZ0323'; break;
            case 'Plzeň-jih': $okresb = 'CZ0324'; break;
            case 'Plzeň-sever': $okresb = 'CZ0325'; break;
            case 'Rokycany': $okresb = 'CZ0326'; break;
            case 'Tachov': $okresb = 'CZ0327'; break;
            case 'Cheb': $okresb = 'CZ0411'; break;
            case 'Karlovy Vary': $okresb = 'CZ0412'; break;
            case 'Sokolov': $okresb = 'CZ0413'; break;
            case 'Děčín': $okresb = 'CZ0421'; break;
            case 'Chomutov': $okresb = 'CZ0422'; break;
            case 'Litoměřice': $okresb = 'CZ0423'; break;
            case 'Louny': $okresb = 'CZ0424'; break;
            case 'Most': $okresb = 'CZ0425'; break;
            case 'Teplice': $okresb = 'CZ0426'; break;
            case 'Ústí nad Labem': $okresb = 'CZ0427'; break;
            case 'Česká Lípa': $okresb = 'CZ0511'; break;
            case 'Jablonec nad Nisou': $okresb = 'CZ0512'; break;
            case 'Liberec': $okresb = 'CZ0513'; break;
            case 'Semily': $okresb = 'CZ0514'; break;
            case 'Hradec Králové': $okresb = 'CZ0521'; break;
            case 'Jičín': $okresb = 'CZ0522'; break;
            case 'Náchod': $okresb = 'CZ0523'; break;
            case 'Rychnov nad Kněžnou': $okresb = 'CZ0524'; break;
            case 'Trutnov': $okresb = 'CZ0525'; break;
            case 'Chrudim': $okresb = 'CZ0531'; break;
            case 'Pardubice': $okresb = 'CZ0532'; break;
            case 'Svitavy': $okresb = 'CZ0533'; break;

            case 'Havlíčkův Brod': $okresb = 'CZ0631'; break;
            case 'Jihlava': $okresb = 'CZ0632'; break;
            case 'Pelhřimov': $okresb = 'CZ0633'; break;
            case 'Třebíč': $okresb = 'CZ0634'; break;
            case 'Žďár nad Sázavou': $okresb = 'CZ0635'; break;
            case 'Blansko': $okresb = 'CZ0641'; break;
            case 'Brno': $okresb = 'CZ0642'; break;
            case 'Brno-venkov': $okresb = 'CZ0643'; break;
            case 'Břeclav': $okresb = 'CZ0644'; break;
            case 'Hodonín': $okresb = 'CZ0645'; break;
            case 'Vyškov': $okresb = 'CZ0646'; break;
            case 'Znojmo': $okresb = 'CZ0647'; break;
            case 'Jeseník': $okresb = 'CZ0711'; break;
            case 'Olomouc': $okresb = 'CZ0712'; break;
            case 'Prostějov': $okresb = 'CZ0713'; break;
            case 'Přerov': $okresb = 'CZ0714'; break;
            case 'Šumperk': $okresb = 'CZ0715'; break;
            case 'Kroměříž': $okresb = 'CZ0721'; break;
            case 'Uherské Hradiště': $okresb = 'CZ0722'; break;
            case 'Vsetín': $okresb = 'CZ0723'; break;
            case 'Zlín': $okresb = 'CZ0724'; break;
            case 'Bruntál': $okresb = 'CZ0801'; break;
            case 'Frýdek-Místek': $okresb = 'CZ0802'; break;
            case 'Karviná': $okresb = 'CZ0803'; break;
            case 'Nový Jičín': $okresb = 'CZ0804'; break;
            case 'Opava': $okresb = 'CZ0805'; break;
            case 'Ostrava': $okresb = 'CZ0806'; break;
        }

        return [$obecb, $okresb];
    }

    public function kodVety(Zak $zak)
    {
        if($zak -> getKodUk() < 3) return 4;
        if($zak -> getKodUk() == 7) return 5;
        else return 3;
    }
    public function letPSD(Zak $zak)
    {
        $datum = new DateTime('now');
        $datum = $datum -> format('Y-m-d');
        if($zak -> getDatUk() != null)
        {
            $rozdil = abs(strtotime($zak -> getDatUk())-strtotime($zak -> getDatZah()));
            return  floor($rozdil / (365*60*60*24));
        }
        $rozdil = abs(strtotime($datum)-strtotime($zak -> getDatZah() -> format('Y-m-d')));

        return  floor($rozdil / (365*60*60*24));
    }

    public function stupen(Zak $zak)
    {
        if($zak -> getTrida() -> getRocnik() < 6) return 1;
        if($zak -> getTrida() -> getRocnik() > 6) return 2;
        return null;
    }

    public function jazyk(Zak $zak)
    {
        $vysledek = array();
        $count = 0;
        foreach ($zak -> getTrida() -> getVybranePredmety() -> getPredmet() as $predmet)
        {
                switch ($predmet -> getZkratka()) {
                    case 'NJ':
                        array_push($vysledek, '16');
                        $count++;
                        break;
                    case 'AJ':
                        array_push($vysledek, '02');
                        $count++;
                        break;
                }
        }
        array_push($vysledek, null, null, null, null);
        return $vysledek;
    }

    public function jazyk2(Zak $zak)
    {
        $vysledek = array();
        foreach ($zak -> getTrida() -> getVybranePredmety() -> getPredmet() as $predmet)
        {
            if($predmet -> getJazyk() != "Český")
            {
                switch ($predmet -> getJazyk())
                {
                    case 'Německý': array_push($vysledek, '16'); break;
                    case 'Anglický': array_push($vysledek, '02'); break;
                }
            }
            else array_push($vysledek, '00');
        }
        array_push($vysledek, null, null, null, null);
        return $vysledek;
    }

    public function pocHod(CasRepository $casRepository, Zak $zak)
    {
        $count1 = 0;
        $count2 = 0;

        foreach ($zak -> getTrida() -> getVybranePredmety() -> getPredmet() as $predmet)
        {
            if($predmet -> getJazyk() != "Český")
            {
                switch ($predmet -> getJazyk())
                {
                    case 'Německý':
                        foreach ($casRepository -> findAll() as $cas)
                        {
                            if($cas -> getPredmet() -> getId() == $predmet -> getId()) $count1++;
                        }
                        break;
                    case 'Anglický':
                        foreach ($casRepository -> findAll() as $cas)
                        {
                        if($cas -> getPredmet() -> getId() == $predmet -> getId()) $count2++;
                         }
                        break;
                }
            }
        }
        return [$count1, $count2];
    }
    public function pocPredmetu(Zak $zak)
    {
        $count1 = 0;
        $count2 = 0;

        foreach ($zak -> getTrida() -> getVybranePredmety() -> getPredmet() as $predmet)
        {
            if($predmet -> getJazyk() != "Český")
            {
                switch ($predmet -> getJazyk())
                {
                    case 'Německý':
                        $count1++;
                        break;
                    case 'Anglický':
                        $count2++;
                        break;
                }
            }
        }

        return [$count1, $count2];
    }
}
