ACC SHELL
<?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