ACC SHELL

Path : /srv/www/vhosts/unisol/app/AdminModule/presenters/
File Upload :
Current File : /srv/www/vhosts/unisol/app/AdminModule/presenters/DashboardPresenter.php

<?php

namespace AdminModule;
use Nette\Image; 
 use Nette\Application\UI;
 use  Nette\DateTime;
class DashboardPresenter extends \BasePresenter
{

  protected $nemovitostiModel = null;
  protected $poptavkyModel = null;
  protected $obrazkyModel = null;
  protected $nemovitostiObrazkyModel = null;
  
  /*Injektování tabulek*/
    
    public function inject(\Nemovitosti $nemovitostiModel, \Poptavky $poptavkyModel, \Obrazky $obrazkyModel, 
    \NemovitostiObrazky $nemovitostiObrazkyModel ){
    $this->nemovitostiModel = $nemovitostiModel;
    $this->poptavkyModel = $poptavkyModel;
    $this->obrazkyModel = $obrazkyModel;
    $this->nemovitostiObrazkyModel = $nemovitostiObrazkyModel;     
    }
 
  /* Editace poptávek*/  
    
  public function renderEditPoptavky($id){
       $this->overeni();
     $form = $this->getComponent('updateDemandForm');
     
     $data = $this->poptavkyModel->find($id); 
        
     $form->setValues($data);
  }
  
  protected function createComponentUpdateDemandForm()
	{
		$form = new UI\Form;
      	$form->addSelect('typ', 'Typ:', array(
    '0' => 'Byt',
    '1' => 'Pozemek',
    '2' => 'Dům',
    '3' => 'Jiné',
    )); 
    $form->addTextArea('popis', 'Popis:')
    ->addRule(UI\Form::MAX_LENGTH, 'Popis je příliš dlouhý', 10000);
    $form->addHidden('id');
    $form->addSubmit('send', 'Změnit');

		$form->onSuccess[] = $this->updateDemand;
		return $form;
	}
  
  public function updateDemand($form){
    $data = $form->getValues();  
      try {
               $this->poptavkyModel->update(array('popis' => $data->popis,'typ' => $data->typ),$data->id);
            $this->flashMessage('Záznam editován.');
            $this->redirect('this');
        }
        catch (\PDOException $e) {
            if ($e->getCode() == 23000)
                $this->flashMessage('Záznam needitován.');
        }                

  }
   /*Vytvořit poptávku*/

  protected function createComponentCreateNotesForm()
	{
		$form = new UI\Form;
    	$form->addSelect('typ', 'Typ:', array(
    '0' => 'Byt',
    '1' => 'Pozemek',
    '2' => 'Dům',
    '3' => 'Jiné',
    )); 
    
    $form->addTextArea('popis', 'Popis:')
    ->addRule(UI\Form::MAX_LENGTH, 'Popis je příliš dlouhý', 10000);
    $form->addSubmit('send', 'Přidat');
    
    $form->onSuccess[] = $this->createDemand;
		
    return $form;
	}
 
 	public function createDemand($form)
	{
      $this->overeni();      
      $data=$form->getValues();  
      
      try {
           $this->poptavkyModel->insert($data);
            $this->flashMessage('Záznam vložen.');
            $this->redirect('this');  
        }
        catch (\PDOException $e) {
            if ($e->getCode() == 23000)
                $this->flashMessage('Záznam nevložen.');
         
        }  
  }
  
    /*Detail nemovitosti*/
    
    public function renderDetailNemovitost($id){
       $this->overeni();
      $this->template->nemovitost=$this->nemovitostiModel->findOneBy(array('id'=>$id)); 
             $this->template->obrazky=$this->obrazkyModel->findBy(array('id_nemovitosti'=>$id));
    } 
  
   /*Vytvořit nemovitost*/
   protected function createComponentCreateEstateForm()
	{
		$form = new UI\Form;
		$form->addText('title', 'Název:')
			->setRequired('Vložte název.');  
                  
    $form->addText('cena', 'Cena:');            

	$form->addSelect('typ', 'Typ nemovitosti', array(
    '0' => 'Byt',
    '1' => 'Pozemek',
    '2' => 'Dům',
    '3' => 'Jiné',
    ));    
  
        $form->addTextArea('note', 'Poznámka:')
    ->addRule(UI\Form::MAX_LENGTH, 'Poznámka je příliš dlouhá', 5000);
        $form->addTextArea('specifikace', 'Specifikace:')
    ->addRule(UI\Form::MAX_LENGTH, 'Poznámka je příliš dlouhá', 5000);
    
    $form->addUpload('image', 'Primární obrázek:')
    ->addRule(UI\Form::IMAGE, 'Avatar musí být JPEG, PNG nebo GIF.')
        ->addRule(UI\Form::MAX_FILE_SIZE, 'Maximální velikost souboru je 1024 kB.', 1024 * 1024 /* v bytech */);
    
		$form->addSubmit('send', 'Přidat');

		$form->onSuccess[] = $this->createEstate;
		return $form;
	}


   	public function createEstate($form)
	{
      $this->overeni();
    
      $data=$form->getValues();    
      $cislo = rand();
    $result1 = $data['image']->toImage()->resize(500,null)->save('www/images/galerie/'.$cislo .$data['image']->name, 80, Image::JPEG); 
    $result2 = $data['image']->toImage()->resize(200,null)->save('www/images/galerie/maly_'.$cislo.$data['image']->name, 80, Image::JPEG); 

    if($result1 == true && $result2 == true){ 
   try {
      $this->nemovitostiModel->insert(array('nazev'=>$data['title'],'popis'=>$data['note'],'datum'=>new DateTime,
        'hlavni_obrazek'=>$cislo.$data['image']->name,'typ_nemovitosti'=>$data['typ'],'typ' => 0,'specifikace'=>$data['specifikace'],
        'cena'=>$data['cena']));
      
            $this->flashMessage('Záznam vložen.');
            $this->redirect('this');  
        }
        catch (\PDOException $e) {
            if ($e->getCode() == 23000)
                $this->flashMessage('Záznam již existuje.');
            else    
                $this->flashMessage('Chyba typu: '. $e->getCode());
         
        }
                 
   
    }else{
       $this->flashMessage('Chyba vkládání obrázku.');
    }
   }
   
   /*Editace nemovitosti*/
    protected function createComponentEditEstateForm()
	{
		$form = new UI\Form;
		$form->addText('nazev', 'Název:')
			->setRequired('Vložte název.');              
    $form->addHidden('id');           
    $form->addText('cena', 'Cena:');
	$form->addSelect('typ_nemovitosti', 'Typ nemovitosti', array(
    '0' => 'Byt',
    '1' => 'Pozemek',
    '2' => 'Dům',
    '3' => 'Jiné',
    ));    
  
        $form->addTextArea('popis', 'Poznámka:')
    ->addRule(UI\Form::MAX_LENGTH, 'Poznámka je příliš dlouhá', 10000);
            $form->addTextArea('specifikace', 'Specifikace:')
    ->addRule(UI\Form::MAX_LENGTH, 'Poznámka je příliš dlouhá', 5000);
     
		$form->addSubmit('send', 'Změnit');

		$form->onSuccess[] = $this->editEstate;
		return $form;
	}


   	public function editEstate($form)
	{
      $this->overeni();
    
      $data=$form->getValues();             

  try {
      $this->nemovitostiModel->updateEstate(array('nazev'=>$data['nazev'],'popis'=>$data['popis'],
      'typ_nemovitosti'=>$data['typ_nemovitosti'],'specifikace'=>$data['specifikace'],'cena'=>$data['cena']),$data['id']);
      
            $this->flashMessage('Záznam upraven.');
            $this->redirect('this');  
        }
        catch (\PDOException $e) {
            if ($e->getCode() == 23000)
                $this->flashMessage('Záznam neupraven.');
            else    
                $this->flashMessage('Chyba typu: '. $e->getCode());
         
        }

   }
   
    public function renderEditNemovitosti($id){
      $this->overeni();  

      $form = $this->getComponent('editEstateForm');
     $data = $this->nemovitostiModel->findOneBy(array('id'=>$id)); 
                                                              
     $form->setValues($data);

    }
   
   /*Přidat další obrázek*/
   public function renderAddImage($id){
     $this->overeni();
     $form = $this->getComponent('createNewImageForm'); 
        
     $form->setValues(array('id_nemovitosti' => $id));
   }
   
  public function renderChangeImage($id){
     $this->overeni();
     $form = $this->getComponent('createChangeImageForm'); 
        
     $form->setValues(array('id_nemovitosti' => $id));
   }
   
   protected function createComponentCreateChangeImageForm()
	{
		$form = new UI\Form;
		$form->addText('popis', 'Popis:');             
   
    $form->addUpload('image', 'Další obrázek:')
    ->addRule(UI\Form::IMAGE, 'Obrázek musí být JPEG, PNG nebo GIF.')
        ->addRule(UI\Form::MAX_FILE_SIZE, 'Maximální velikost souboru je 512 kB.', 512 * 1024 /* v bytech */);
    $form->addHidden('id_nemovitosti');
		$form->addSubmit('send', 'Změnit');

		$form->onSuccess[] = $this->createChangeImage;
		return $form;
	}
  public function createChangeImage($form){
     $this->overeni();
    $data = $form->getValues();
   $cislo = rand();
    $result1 = $data['image']->toImage()->resize(500,null)->save('www/images/galerie/'.$cislo.$data['image']->name, 80, Image::JPEG); 
     $result2 = $data['image']->toImage()->resize(200,null)->save('www/images/galerie/maly_'.$cislo.$data['image']->name, 80, Image::JPEG); 
    if($result1 == true && $result2 == true){ 
    
      try {
      $row = $this->nemovitostiModel->updateEstate(array('hlavni_obrazek' => $cislo.$data['image']->name),$data->id_nemovitosti);   


            $this->flashMessage('Záznam změněn.');
            $this->redirect('this');  
        }
        catch (\PDOException $e) {
            if ($e->getCode() == 23000)
                $this->flashMessage('Záznam Nezměněn.');
            else    
                $this->flashMessage('Chyba typu: '. $e->getCode());
         
        } 
    }else{
       $this->flashMessage('Chyba vkládání obrázku.');
    }
  }
  
  protected function createComponentCreateNewImageForm()
	{
		$form = new UI\Form;
		$form->addText('popis', 'Popis:');             
   
    $form->addUpload('image', 'Další obrázek:')
    ->addRule(UI\Form::IMAGE, 'Obrázek musí být JPEG, PNG nebo GIF.')
        ->addRule(UI\Form::MAX_FILE_SIZE, 'Maximální velikost souboru je 512 kB.', 512 * 1024 /* v bytech */);
    $form->addHidden('id_nemovitosti');
		$form->addSubmit('send', 'Přidat');

		$form->onSuccess[] = $this->createNewImage;
		return $form;
	}
  
  public function createNewImage($form){
     $this->overeni();
    $data = $form->getValues();
   $cislo = rand();
    $result1 = $data['image']->toImage()->resize(500,null)->save('www/images/galerie/'.$cislo.$data['image']->name, 80, Image::JPEG); 
    $result2 = $data['image']->toImage()->resize(80,80)->save('www/images/galerie/maly_'.$cislo.$data['image']->name, 80, Image::JPEG); 
  
    if($result1 == true && $result2 == true){ 
    
      try {
      $row = $this->obrazkyModel->insert(array('popis' => $data->popis,'cesta'=> $cislo.$data['image']->name,
      'id_nemovitosti' => $data->id_nemovitosti));   


            $this->flashMessage('Záznam vložen.');
            $this->redirect('this');  
        }
        catch (\PDOException $e) {
            if ($e->getCode() == 23000)
                $this->flashMessage('Záznam nevložen.');
            else    
                $this->flashMessage('Chyba typu: '. $e->getCode());
         
        } 
    }else{
       $this->flashMessage('Chyba vkládání obrázku.');
    }
  }
  
  
   /**/
   
      public function handleDeleteObrazek($id){
      $this->overeni();
    try {
            $this->obrazkyModel->delete($id);
            $this->flashMessage('Obrázek smazán.');
            $this->redirect('this');
        }
        catch (\PDOException $e) {
            if ($e->getCode() == 23000)
                $this->flashMessage('Obrázek nesmazán.');
        }
   }
   
  public function renderVypsatInfo(){
     $this->overeni();
     $this->template->poptavky=$this->poptavkyModel->findAll()->order('vytvoreno  DESC');
  }                                
  


  public function renderVypsatNemovitosti(){
    $this->overeni();
    $this->template->nemovitosti=$this->nemovitostiModel->findBy(array('typ'=>0))->order('id DESC');  
  }


   public function handleSmazatPoptavku($id){
      $this->overeni();
    try {
            $this->poptavkyModel->delete($id);
            $this->flashMessage('Záznam smazán.');
            $this->redirect('this');
        }
        catch (\PDOException $e) {
            if ($e->getCode() == 23000)
                $this->flashMessage('Záznam nesmazán.');
        }
   }
   
   public function handleDeleteNemovitost($id)
   {
   $this->overeni();
        try {
            $this->nemovitostiModel->delete($id);
            $this->flashMessage('Záznam smazán.');
            $this->redirect('this');
        }
        catch (\PDOException $e) {
            if ($e->getCode() == 23000)
                $this->flashMessage('Záznam nesmazán.');
        }
        
    }
    
  private function overeni(){
    if (!$this->user->isLoggedIn()) 
        $this->redirect('Sign:in');
  
  }    
  public function renderUvod(){
  $this->overeni();
    
}
 
   /* Vytvořit nový podnájem */
      	protected function createComponentCreateFlatsForm()
	{
		$form = new UI\Form;
		$form->addText('title', 'Popis:')
			->setRequired('Vlož popis.');
      
    $form->addText('cena', 'Cena:');
    
	$form->addSelect('typ', 'Typ podnájmu', array(
    '1' => 'Byt',
    '3' => 'Dům',
    '4' => 'Jiné',
    ));    
  
        $form->addTextArea('note', 'Poznámka:')
    ->addRule(UI\Form::MAX_LENGTH, 'Poznámka je příliš dlouhá', 10000);
             $form->addTextArea('specifikace', 'Specifikace:')
    ->addRule(UI\Form::MAX_LENGTH, 'Poznámka je příliš dlouhá', 5000);
    $form->addUpload('image', 'Obrázek:')
    ->addRule(UI\Form::IMAGE, 'Avatar musí být JPEG, PNG nebo GIF.')
        ->addRule(UI\Form::MAX_FILE_SIZE, 'Maximální velikost souboru je 512 kB.', 1024 * 1024 /* v bytech */);
		$form->addSubmit('send', 'Přidat');

		$form->onSuccess[] = $this->vytvoritPodnajem;
		return $form;
	}
  
  public function vytvoritPodnajem($form)
	{
      $this->overeni();
    
      $data=$form->getValues();    
      if($data['cena']==NULL)
        $data['cena'] = 'Nezadána';
    	$cislo = rand();

  $data['image']->toImage()->resize(500,null)->save('www/images/galerie/'.$cislo.$data['image']->name, 80, Image::JPEG); 
    $data['image']->toImage()->resize(200,null)->save('www/images/galerie/maly_'.$cislo.$data['image']->name, 80, Image::JPEG); 
 
  try {
      $this->nemovitostiModel->insert(array('nazev'=>$data['title'],'popis'=>$data['note'],'datum'=>new DateTime,
      'hlavni_obrazek'=>$cislo.$data['image']->name, 'typ_nemovitosti'=>$data['typ'],'typ'=>1,'cena' => $data['cena'],'specifikace' => $data['specifikace']));
        
            $this->flashMessage('Záznam vložen.');
            
        //    $this->redirect('this');  
        }
        catch (\PDOException $e) {
            if ($e->getCode() == 23000)
                $this->flashMessage('Záznam již existuje.');
         
        }                 
   }
    /* Vypsat podnájmy */
     public function renderVypsatPodnajmy(){
       $this->overeni();
       $this->template->podnajmy=$this->nemovitostiModel->findBy(array('typ'=>1))->order('id DESC');
  
  }

}

ACC SHELL 2018