<?php

/* 
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

namespace AdminModule;
use \Nette\Application\UI\Form;
use \Nette\Utils\Image;

 
class VystavyPresenter extends BasePresenter {
    
    private $vystavyModel;
   
    
    public $rok;
 
    public function __construct(\VystavyModel $vystavyModel) {
        $this->vystavyModel = $vystavyModel;
    }
    
   
    
    public function renderList() {
      
        if ($this->rok == null) { $this->rok=date('Y'); } // aktualni rok
     
        $this->template->vystavy = $this->vystavyModel->getVystavyByYear($this->rok); 
    }
 
  
    public function renderDetailVystavy($id) {
        $this->template->vystava = $this->vystavyModel->getVystava($id);
        $this->template->tridy = $this->vystavyModel->getTridyByVystavaId($id);
        $this->template->psi = $this->vystavyModel->getPsy();
    }
    
    public function renderDetailTridy($id) {
        $this->template->trida = $this->vystavyModel->getTrida($id);
        $trida = $this->vystavyModel->getTrida($id);
        $this->template->psi = $this->vystavyModel->getPsyByTridaId($id);
        $this->template->vystava = $this->vystavyModel->getVystava($trida->id_vystavy);
    }
    
    protected function createComponentVybratRokForm() {
        $form = new form();
        $roky = $this->vystavyModel->getRoky();
        $rokyAsoc;
        foreach ($roky as $r) {
          $rokyAsoc[$r->rok] = $r->rok;  
        }
        //$roky = array('2016' => '2016', '2015' => '2015');
        $form->addSelect("rok", "Rok:", $rokyAsoc)
        ->setPrompt('Zvolte rok');
        $form->addSubmit("send", "Zvolit rok");
        $form->onSuccess[] = $this->vybratRokFormSucceeded;
        return $form;
    }

    public function vybratRokFormSucceeded(Form $form) {
        $valu = $form->getValues();
        $this->rok = $valu->rok;
        $this->redirect("Vystavy:list");
    }
    
   

    protected function createComponentAddVystavaForm() {
        $form = new Form();
        $form->addText('rok', 'Rok konání:*')->setDefaultValue(date('Y'));
        $form->addText('nazev', 'Název výstavy:*');
        $form->addText('rozhodci','Rozhodčí:');
        $form->addText('pocet', 'Počet přihlášených WSS:');
        $form->addTextArea('poznamka', 'Poznámka:');

        $form->addSubmit("send", "Odeslat");
        $form->onSuccess[] = $this->addVystavaFormSucceeded;

        return $form;
    }

    public function addVystavaFormSucceeded(Form $form) {
        if (!$this->getUser()->isLoggedIn()) {
        $this->error('Pro vytvoření, nebo editování příspěvku se musíte přihlásit.');
    }
        $values = $form->getValues();

        $this->vystavyModel->addVystava($values);
         $this->flashMessage('Výstava byla přidána', 'info');
        $this->redirect('Vystavy:list');
    }

    protected function createComponentAddTridaForm() {

        $form = new Form();

        $form->addText('nazev', 'Název třídy:*');


        $form->addSubmit("send", "Odeslat");
        $form->onSuccess[] = $this->addTridaFormSucceeded;

        return $form;
    }

    public function addTridaFormSucceeded(Form $form) {
        if (!$this->getUser()->isLoggedIn()) {
        $this->error('Pro vytvoření, nebo editování příspěvku se musíte přihlásit.');
    }
        $values = $form->getValues();

         $values->id_vystavy = $this->getParam('id');
        $this->vystavyModel->addTrida($values);
         $this->flashMessage('Třída byla přidána', 'info');
        $this->redirect('Vystavy:detailVystavy', $values->id_vystavy);
    }

    protected function createComponentAddPesForm() {

        $form = new Form();
        $form->addText('jmeno', 'Jméno psa:*');
        $form->addText('otec', 'Otec:*');
        $form->addText('matka','Matka*:');
        $form->addText('chovatel', 'Jméno chovatele:');
        $form->addText('majitel', 'Jméno majitele:');
        $form->addText('hodnoceni', 'Hodnocení*:');

        $form->addSubmit("send", "Odeslat");
        $form->onSuccess[] = $this->addPesFormSucceeded;

        return $form;
    }

    public function addPesFormSucceeded(Form $form) {
        if (!$this->getUser()->isLoggedIn()) {
        $this->error('Pro vytvoření, nebo editování příspěvku se musíte přihlásit.');
    }
        $values = $form->getValues();
        $trida = $this->vystavyModel->getTrida($this->getParam('id'));
        $values->id_tridy = $trida->id;
       // $values->id_vystavy = $trida->id_vystavy;
        $this->vystavyModel->addPes($values);
        $this->flashMessage('Pes byl přidán', 'info');
        $this->redirect('Vystavy:detailTridy', $values->id_tridy);
    }

    private function deletePsyByTridaId($id) {
        $psi = $this->vystavyModel->getPsyByTridaId($id);
            foreach ($psi as $pes) {
                $this->vystavyModel->deletePes($pes->id);
            }
    }

    private function deleteTridyByVystavaId($id) {
        $tridy = $this->vystavyModel->getTridyByVystavaId($id);
        foreach ($tridy as $trida) {
            $this->deletePsyByTridaId($trida->id);
            $this->vystavyModel->deleteTrida($id);
        }
    }

    public function handleDeleteTrida($id, $idVystavy) {
        if (!$this->getUser()->isLoggedIn()) {
        $this->error('Pro vytvoření, nebo editování příspěvku se musíte přihlásit.');
    }
        $this->deletePsyByTridaId($id);
        $this->vystavyModel->deleteTrida($id);
        $this->flashMessage('Třída byla smazána', 'info');
        $this->redirect('Vystavy:detailVystavy', $idVystavy);
    }

    public function handleDeleteVystava($id) {
        if (!$this->getUser()->isLoggedIn()) {
        $this->error('Pro vytvoření, nebo editování příspěvku se musíte přihlásit.');
    }
        $this->deleteTridyByVystavaId($id);
        $this->vystavyModel->deleteVystava($id);
        $this->flashMessage('Výstava byla smazána', 'info');
        $this->redirect('this');
    }

    public function handleDeletePes($id, $tridaId) {
        if (!$this->getUser()->isLoggedIn()) {
        $this->error('Pro vytvoření, nebo editování příspěvku se musíte přihlásit.');
    }

        $this->vystavyModel->deletePes($id);
        $this->flashMessage('Pes byl smazán', 'info');
        $this->redirect('Vystavy:detailTridy', $tridaId);
    }

    
}
