<?php

namespace App\Form;

use App\Entity\Skola;
use App\Entity\Trida;
use App\Entity\Zak;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\CollectionType;
use Symfony\Component\Form\Extension\Core\Type\DateType;
use Symfony\Component\Form\Extension\Core\Type\FileType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\TelType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;

class ZakType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            -> add('jmeno', TextType::class, ['label' => 'Jméno', 'attr' => ['placeholder' => 'Jméno']])
            -> add('rodCis', TextType::class, ['label' => 'Rodné číslo','required' => true, 'attr' => ['placeholder' => 'Rodné číslo']])
            -> add('pohlavi', ChoiceType::class, ['choices' => ['muž' => '1', 'žena' => '2'], 'required' => true, 'label' => 'Pohlaví'])
            -> add('prijmeni', TextType::class, ['label' => 'Příjmení', 'attr' => ['placeholder' => 'Příjmení']])
            -> add('datNar', DateType::class, ['years' => range(date('Y') - 9, date('Y') - 17),'required' => true, 'label' => 'Datum narození'])
            -> add('image', FileType::class, ['mapped' => false, 'required' => false, 'attr' => ['placeholder' => 'Vyberte'], 'label' => 'Profilový obrázek'])
            -> add('stat', TextType::class, ['label' => 'Země pobytu', 'required' => true, 'attr' => ['placeholder' => 'Země pobytu']])
            -> add('okres', TextType::class, ['label' => 'Okres', 'required' => true, 'attr' => ['placeholder' => 'Okres']])
            -> add('ulice', TextType::class, ['label' => 'Ulice', 'required' => true, 'attr' => ['placeholder' => 'Ulice']])
            -> add('cisPop', TextType::class, ['label' => 'Číslo popisné', 'required' => true, 'attr' => ['placeholder' => 'Číslo popisné']])
            -> add('psc', TextType::class, ['label' => 'Poštovní směrovací číslo', 'required' => true, 'attr' => ['placeholder' => 'Poštovní směrovací číslo']])
            -> add('poznamka', TextareaType::class, ['label' => 'Poznámky', 'required' => false, 'attr' => ['placeholder' => 'Zadejte dodatečné důležité informace']])
            -> add('trida', EntityType::class, ['class' => Trida::class, 'required' => true, 'attr' => ['placeholder' => 'Vyberte'], 'label' => 'Třída'])
            -> add('skola', EntityType::class, ['class' => Skola::class, 'empty_data' => '1'])
            -> add('save', SubmitType::class, ['attr' => ['class' => 'btn btn-outline-success float-left'], 'label' => 'Uložit'])
            -> add('tel', TelType::class, ['attr' => ['data-mask' => '+000000000000', 'placeholder' => 'Telefon'], 'label' => 'Telefon', 'required' => false])
            -> add('obcanstvi', TextType::class, ['label' => 'Občanství','required' => true, 'attr' => ['placeholder' => 'Občanství']])
            -> add('op', TextType::class, ['label' => 'Číslo OP','required' => false, 'attr' => ['placeholder' => 'Číslo OP']])
            -> add('pas', TextType::class, ['label' => 'Číslo Pasu','required' => false, 'attr' => ['placeholder' => 'Číslo pasu']])
            -> add('email', TextType::class, ['label' => 'E-mail','required' => false, 'attr' => ['placeholder' => 'E-mailová adresa']])
            -> add('mCast', TextType::class, ['label' => 'Městská část','required' => true, 'attr' => ['placeholder' => 'Městská část']])
            -> add('predSkol', TextType::class, ['label' => 'Předchozí škola','required' => false, 'attr' => ['placeholder' => 'Předchozí škola']])
            -> add('datZah', DateType::class, ['required' => true, 'label' => 'Datum zahájení studia', 'data' => new \DateTime("2020-9-1")])
            -> add('datUk', DateType::class, ['label' => 'Datum ukončení studia', 'placeholder' => '','required' => false])
            -> add('zdPoj', TextType::class, ['label' => 'Zdravotní pojišťovna','required' => false, 'attr' => ['placeholder' => 'Zdravotní pojišťovna']])
            -> add('kv_st_obc', ChoiceType::class, ['choices' => [
                'Osoba bez státního občanství' => '0',
                'Občan ČR' => '3',
                'Cizinec s trvalým pobytem v ČR' => '5',
                'Cizinec bez trvalého pobytu v ČR' => '6',
                'Azylant nebo žadatel o azyl, osoba s doplňkovou ochranou v ČR' => '7',
                'Občanství neznámé, neudané' => '9'
            ], 'required' => true, 'label' => 'Kvalifikátor občanství'])
            -> add('zah_doc', ChoiceType::class, ['choices' => [
                'Zahájení 1.ročníku v ZŠ v řádném termínu (včetně pětiletých)' => '1',
                'Zahájení 1.ročníku v ZŠ s jednoletým odkladem' => '2',
                'Zahájení 1.ročníku v ZŠ s dvouletým odkladem' => '3',
                'Zahájení 1.ročníku v ZŠ - jiné' => '4',
                'Přestup z jiné školy' => 'E',
                'Převedení z jiné školy (zánik, sloučení škol)' => 'H',
                'Zahájení souběžného vzdělávání (střídavá péče)' => 'P'
            ], 'required' => true, 'label' => 'Zahájení docházky'])
            -> add('kod_uk', ChoiceType::class, ['choices' => [
                'Ukončení školní docházky (ŠD) v ZŠ – základní vzdělání' => '1',
                'Ukončení ŠD v ZŠ speciální – základy vzdělání' => '2',
                'Přestup na jinou základní školu' => '3',
                'Přestup do školy/programu pro děti se speciálními vzdělávacími potřebami' => '4',
                'Přestup do SŠ před ukončením povinné ŠD' => '5',
                'Ukončení povinné ŠD v nižším ročníku nebo v posledním ročníku bez získání stupně vzdělání' => '6',
                'Dodatečný odklad' => '7',
                'Ukončení vzdělávání pro cizince bez trvalého pobytu v ČR' => 'G',
                'Ukončení souběžného vzdělávání' => 'P'
            ], 'required' => false, 'label' => 'Kód ukončení'])
            -> add('prizn', ChoiceType::class, ['choices' => [
                'Řádné vzdělávání' => '1',
                'Řádné vzdělávání po přerušení vzdělávání' => '2',
                'Opakování ročníku z prospěchových důvodů' => '3',
                'Přeřazení do vyššího ročníku (z důvodu mimořádného nadání)' => '4',
                'Zařazení do nižšího ročníku (bez opakování)' => '5',
                'Přerušení vzdělávání' => '6',
                'Vzdělávání ukončeno' => '7',
                'Opakování ročníku ze zdravotních důvodů' => '8',
            ], 'required' => true, 'label' => 'Příznaky studia'])
            -> add('zpusob', ChoiceType::class, ['choices' => [
                'Školní docházka ve škole zapsané ve školském rejstříku' => '11',
                'Souběžné vzdělávání v ZŠ v rámci střídavé péče' => '12',
                'Plnění PŠD podle § 50 odst.3 ŠZ' => '15',
            ], 'required' => true, 'label' => 'Způsob plnění PŠD'])
            -> add('fin', ChoiceType::class, ['choices' => [
                'Financováno z prostředků MŠMT' => '1',
                'Financování z prostředků MŠMT - standardní' => '11',
                'Financování z prostředků MŠMT - zvýšené' => '12',
                'Financování z prostředků MŠMT - zvýšené - více vad' => '13',
                'Financováno podpůrným opatřením' => '14',
                'Nefinancováno z prostředků MŠMT' => '3',
            ], 'required' => true, 'label' => 'Zdroj financování žáka'])
            -> add('kod_zmen', ChoiceType::class, ['choices' => [
                'Beze změny/Nový záznam' => '0',
                'Změna vzdělávání (oboru, druhu, formy, délky)' => '1',
                'Změna organizace vzdělávání (přestup, přeřazení)' => '2',
                'Konání zkoušky (závěrečné,maturitní,absolutoria)' => '5',
                'Změna osobních údajů' => '6',
                'Změna osobního identifikátoru (RČ)' => '7',
                'Změna v přiznání/poskytování podpůrných opatření	' => '8',
            ], 'required' => false, 'label' => 'Kód Změny'])
            -> add('nadani', ChoiceType::class, ['choices' => ['Nadaný' => '1', 'Bez nadání' => '0'], 'label' => 'Nadání'])
            -> add('ind_stud_plan', ChoiceType::class, ['choices' => ['Bez IVP ' => '0', 'IVP z důvodu SVP' => '1', 'IVP – mimořádné nadání' => '5'], 'required' => true, 'label' => 'Individuální Vzdělávací Plán'])
            -> add('znevyhodneni', TextType::class, ['label' => 'Identifikátor Znevýhodnění','required' => false, 'attr' => ['placeholder' => 'Identifikátor Znevýhodnění']])
            -> add('upr_vzd_program', ChoiceType::class, ['choices' => [
                'Bez upraveného vzdělávacího programu' => '0',
                'S upraveným RVP ZV podle přílohy pro LMP' => '1',
                'RVP ZV s upraveným obsahem a sníženými výstupy pro mentálně postižené' => '2',
                'RVP ZŠ speciální, díl I – pro žáky středně těžce mentálně postižené' => '3',
                'RVP ZŠ speciální, díl II – pro žáky těžce mentálně postižené' => '4'
            ], 'label' => 'Upravený vzdělávací program'])
            -> add('odl_kult_prostredi', ChoiceType::class, ['choices' => [
                'Nemá SVP vyplývající z odlišného kulturního prostředí nebo jiných životních podmínek' => '0',
                'SVP vyplývají převážně z odlišného kulturního prostředí žáka' => 'K',
                'SVP vyplývají převážně z dopadu jiných životních podmínek žáka do vzdělávání' => 'Z',
                'SVP vyplývají z více faktorů uvedených pod body K a Z' => 'V'
            ], 'label' => 'Odlišné Kulturní Prostředí'])
            -> add('kat_znev', ChoiceType::class, ['choices' => [
                '0' => '0',
                '1' => '1',
                '2' => '2',
                '3' => '3',
                '4' => '5',
                '5' => '5',
            ], 'label' => 'Kategorie Znevýhodnění'])
            -> add('pspo', TextType::class, ['label' => 'Převažující stupeň poskytovaných opatření','required' => false, 'attr' => ['placeholder' => 'Převažující stupeň poskytovaných opatření']])
            -> add('prodl_delka_vzd', TextType::class, ['label' => 'Prodloužená délka vzdělávání','required' => false, 'attr' => ['placeholder' => 'Prodloužená délka vzdělávání']])
            -> add('uprava_vyst_vzdel', ChoiceType::class, ['choices' => ['Bez úpravy výstupů' => '0', 'upravené výstupy vzdělávání' => '1'], 'label' => '– úprava očekávaných výstupů vzdělávání'])
            -> add('dat_vyd_doporuc', DateType::class, ['label' => 'Datum vydání doporučení', 'placeholder' => '','required' => false])
            -> add('dat_konce_doporuc', DateType::class, ['label' => 'Datum konce platnosti doporučení', 'placeholder' => '','required' => false])
            -> add('norm_fin_narocnost', TextType::class, ['label' => 'Kód normované finanční náročnosti','required' => false, 'attr' => ['placeholder' => 'Kód normované finanční náročnosti']])
            -> add('fin_narocnost', ChoiceType::class, ['choices' => ['Finanční prostředky nepožadovány' => '0', 'Finanční prostředky požadovány' => '1'], 'label' => 'Finanční Náročnost'])
            -> add('dat_zah_po', DateType::class, ['label' => 'Datum zahájení poskytování PO', 'placeholder' => '','required' => false])
            -> add('dat_uk_po', DateType::class, ['label' => ' Datum ukončení poskytování PO', 'placeholder' => '','required' => false])
        ;
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            'data_class' => Zak::class
        ]);
    }
}
