<?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 SrazyPresenter extends BasePresenter {
    
    private $srazyModel;
   
    public function __construct(\SrazyModel $srazyModel) {
        $this->srazyModel = $srazyModel;
    }
    
  
    public function renderList() {
        $this->template->srazy = $this->srazyModel->getSrazy(); 
    }
 
  
    public function renderEdit($id) {
       $this->template->galerie = $this->srazyModel->getGalerieBySrazId($id);
       $this->template->sraz = $this->srazyModel->getSraz($id);
       
    }
    
   
    
    public function renderGalerie($id) {
      $this->template->fotky = $this->srazyModel->getFotkyByGalerieId($id);
      $galerie = $this->srazyModel->getGalerieById($id);
      $this->template->galerie = $this->srazyModel->getGalerieById($id); 
      $this->template->sraz = $this->srazyModel->getSraz($galerie->id_srazu);
    }
    
 
    
    public function renderAdd() {
        
    }
    
   
   
    
    protected function createComponentAddSrazForm() {
        $form = new form();
        $sraz = $this->srazyModel->getSraz($this->getParam('id'));
        $form->addText("rok","Rok konání*:")->setRequired("Zadejte rok konání!");
        $form->addText("nazev","Název*:")->setRequired("Zadejte název!");
        $form->addTextArea("text","Text*:");//->setRequired("Zadejte text!");
        $form->addSubmit("send", "Uložit");
        $form->onSuccess[] = $this->addSrazFormSucceeded;
        return $form;
    }

    public function addSrazFormSucceeded(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->srazyModel->addSraz($values);

        $this->flashMessage('Sraz byl přidán', 'info');
        $this->redirect("Srazy:list");
    }

    protected function createComponentEditSrazForm() {
       $form = new form();
       $sraz = $this->srazyModel->getSraz($this->getParam('id'));
       $form->addText("rok","Rok konání*:")->setDefaultValue($sraz->rok)->setRequired("Zadejte rok konání!");
       $form->addText("nazev","Název*:")->setDefaultValue($sraz->nazev)->setRequired("Zadejte název!");
       $form->addTextArea("text","Text*:")->setDefaultValue($sraz->text)->setRequired("Zadejte text!");
       $form->addHidden("id")
           ->setDefaultValue($this->getParam('id'));
       $form->addSubmit("send", "Uložit");
       $form->onSuccess[] = $this->editSrazFormSucceeded;
       return $form;
    }

    public function editSrazFormSucceeded(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->srazyModel->updateSraz($values->id, $values);

        $this->flashMessage('Sraz byl upraven', 'info');
        $this->redirect("Srazy:list");
    }

    protected function createComponentAddGalerieForm() {
        $form = new form();

        $form->addText("nazev","Název*:")->setRequired("Zadejte název!");

        $form->addSubmit("ulozit", "Uložit");
        $form->onSuccess[] = $this->addGalerieFormSucceeded;
        return $form;
  }

    public function addGalerieFormSucceeded(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_srazu = $this->getParam('id');
            $this->srazyModel->addGalerie($values);

        $this->flashMessage('Galerie byla přidána', 'info');
        $this->redirect("Srazy:edit",$values->id_srazu);
    }
    
   

    protected function createComponentAddFotkyForm() {
        $form = new form();

        $form->addMultiUpload("files","Obrázky:");

        $form->addSubmit("ulozit", "Uložit");
        $form->onSuccess[] = $this->addFotkyFormSucceeded;
        return $form;
    }

    public function addFotkyFormSucceeded(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();
        $galerie = $this->srazyModel->getGalerieById($this->getParam('id'));

        $sraz = $this->srazyModel->getSraz($galerie->id_srazu);
        if (!is_dir(WWW_DIR . "/images/Srazy/" . $sraz->rok )) {
                                            mkdir(WWW_DIR . "/images/Srazy/" . $sraz->rok);
                                    }

       if (!is_dir(WWW_DIR . "/images/Srazy/" . $sraz->rok . "/" . $galerie->nazev)) {
                                            mkdir(WWW_DIR . "/images/Srazy/" . $sraz->rok . "/" . $galerie->nazev);
                                    }

        foreach ($values->files as $file) {

        $data = array();
        $data['id_galerie'] = $galerie->id;
        $data['cesta'] = "/images/Srazy/" . $sraz->rok . "/" . $galerie->nazev . "/" . $file->getSanitizedName();
        $data['nahled'] = "/images/Srazy/" . $sraz->rok . "/" . $galerie->nazev . "/" . "nahled_" . $file->getSanitizedName();
        $file->move(WWW_DIR . $data['cesta']);

        $image1 = Image::fromFile(WWW_DIR . $data['cesta']);
        $image1->resize(200, 160);
        $image1->save(WWW_DIR . $data['nahled']);

        $this->srazyModel->addFotka($data);
        }
        $this->flashMessage('Obrázky byly přidány', 'info');
        $this->redirect("Srazy:galerie",$galerie->id);
    }
    


    public function handleDeleteSraz($id) {
        if (!$this->getUser()->isLoggedIn()) {
        $this->error('Pro vytvoření, nebo editování příspěvku se musíte přihlásit.');
    }
        $galerie = $this->srazyModel->getGalerieBySrazId($id);
        foreach ( $galerie as $gal) {
            $this->deleteGalerie($gal->id,$gal->id_srazu);
        }

        $this->srazyModel->deleteSraz($id);
        $this->flashMessage('Sraz byl smazán', 'info');
        $this->redirect('Srazy:list');
    }
    
     public function handleDeleteFotka($id,$idGal) {
         if (!$this->getUser()->isLoggedIn()) {
        $this->error('Pro vytvoření, nebo editování příspěvku se musíte přihlásit.');
    }
       $this->deleteFoto($id);
        $this->flashMessage('Fotka byla smazána', 'info');
        $this->redirect('Srazy:galerie',$idGal);
    }
    
    private function deleteFoto($id) {
        $fotka = $this->srazyModel->getFotkaById($id);
       // $galerie = $this->srazyModel->getGalerieById($fotka->id_galerie);
        @unlink(WWW_DIR . $fotka->cesta );
        @unlink(WWW_DIR . $fotka->nahled );
        $this->srazyModel->deleteFotka($id);
    }
    
   
         public function handleDeleteGalerie($id,$idSrazu)
	{
            if (!$this->getUser()->isLoggedIn()) {
        $this->error('Pro vytvoření, nebo editování příspěvku se musíte přihlásit.');
    }
            $this->deleteGalerie($id, $idSrazu);
             $this->flashMessage('Galerie byla smazána', 'info');
            $this->redirect("Srazy:edit",$idSrazu);
	}
        
        private function deleteGalerie($id,$idSrazu)
	{
            
            $fotky = $this->srazyModel->getFotkyByGalerieId($id);
            $galerie = $this->srazyModel->getGalerieById($id);
            $sraz = $this->srazyModel->getSraz($idSrazu);
           
            foreach ($fotky as $fotka){$this->deleteFoto($fotka->id);}
             rmdir(WWW_DIR . "/images/Srazy/".$sraz->rok. "/".$galerie->nazev);
             $this->srazyModel->deleteGalerie($id);
             
	}
    

    
}
