<?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;

 
class FormularePresenter extends BasePresenter {
    
    private $dokumentyModel;
    
   
    public function __construct(\DokumentyModel $dokumentyModel) {
    $this->dokumentyModel = $dokumentyModel;
   
    }
    
 
   
    
    public function renderList($stranka) {
        $this->template->formulare = $this->dokumentyModel->getDokumenty($stranka); 
    }
    
    public function renderPracZkousky($stranka) {
        $this->template->formulare = $this->dokumentyModel->getDokumenty($stranka);
    }
    
    public function renderEdit($id) {
        $this->template->soubor = $this->dokumentyModel->getDokumentById($id);
    }
    

    public function handleDeleteFormular($id) {
        if (!$this->getUser()->isLoggedIn()) {
        $this->error('Pro vytvoření, nebo editování příspěvku se musíte přihlásit.');
    }
        $form = $this->dokumentyModel->getDokumentById($id);
        @unlink(WWW_DIR . $form->cesta );
        $this->dokumentyModel->deleteDokument($id);
        $this->flashMessage('Formulář byl smazán', 'info');
        $this->redirect('Formulare:list',$this->getParam('stranka'));
    }

    protected function createComponentAddFormularForm() {
        $form = new Form();
        $form->addText("nazev", "Název souboru: ")
            ->setRequired('Vyplňte název souboru!');
        $form->addUpload('formular', 'Soubor:')
                            ->setRequired('Nebyl vložen žádný soubor')
                            ->addCondition(Form::FILLED)
                            ->addRule(Form::MAX_FILE_SIZE, 'Maximální velikost souboru je 5 MB.', 5000 * 1024 /* v bytech */);

        $form->addSubmit("send", "Vložit soubor");
        $form->onSuccess[] = $this->addFormularFormSucceeded;
        $form->onError[] = $this->addFormularFormSucceeded;
        return $form;
    }

    public function addFormularFormSucceeded(Form $form) {
        if (!$this->getUser()->isLoggedIn()) {
        $this->error('Pro vložení formuláře se musíte přihlásit.');
    }
        
        $values = $form->getValues();
        $file = $form['formular']->getValue();
        unset($values['formular']);
        $values->cesta = '/files/formulare/' . $file->getSanitizedName();;
        $values->stranka = $this->getParam('stranka');
        $this->dokumentyModel->addDokument($values);
        $file->move(WWW_DIR . $values->cesta);
        $this->flashMessage('Soubor byl přidán', 'info');

        if ($this->getParam('stranka') == 'formulare') {
        $this->redirect("Formulare:list",$this->getParam('stranka'));
        } else {
            $this->redirect("Formulare:pracZkousky",$this->getParam('stranka')); 
        }
    }
    
    protected function createComponentEditFormularForm() {
        $form = new Form();
        $f = $this->dokumentyModel->getDokumentById($this->getParam('id'));
        $form->addText("nazev", "Název souboru: ")->setDefaultValue($f->nazev)
            ->setRequired('Vyplňte název souboru!');
        $form->addHidden('id')->setDefaultValue($f->id);
        $form->addHidden('stranka')->setDefaultValue($f->stranka);
        $form->addHidden('cesta')->setDefaultValue($f->cesta);
        $form->addSubmit("send", "Odeslat");
        $form->onSuccess[] = $this->editFormularFormSucceeded;
        return $form;
    }

    public function editFormularFormSucceeded(Form $form) {
        if (!$this->getUser()->isLoggedIn()) {
        $this->error('Pro vytvoření, nebo editování formuláře se musíte přihlásit.');
    }
        
        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->dokumentyModel->updateDokument($values->id, $values);
        $this->flashMessage('Název souboru byl upraven', 'info');

        if ($values->stranka == 'formulare') {
        $this->redirect("Formulare:list",$values->stranka);
        } else {
            $this->redirect("Formulare:pracZkousky",$values->stranka); 
        }
    }
    
    
    


}
