<?php

class adminadresaController extends baseadminController {
  
  function __construct() {
    $this->controller_name = 'Adresy';
    $this->controller_fname = 'adminadresa';
    $this->controller_info = 'Modul umožňuje správu adres zákazníků, dodavatelů a výrobců v systému.';
    parent::__construct();
  }
  

  public function filtr($args) {

    $form_id = 'FiltrAdresyForm';

    $this->thml = 'Controller: '.__METHOD__;

    $this->setView();

  }

  public function seznam($args) {

    $table_id = 'seznamDodavatele';

    $this->registry->jscript->addFile('jquery.tablesorter.min.js');
    $this->registry->jscript->addJqFunction('"#'.$table_id.'"', 'tablesorter','','','','','','document_ready');

    $adresa = new Adresa();
    $adresy = $adresa->getAll();
    array_walk($adresy,
      'Tools::addLink',
      array('UPRAVIT' => array(
          'link' => Tools::controllerlink($this->controller_fname, 'upravit'),
          'addindex' => 'ID',
          'text'	 => ICO_UPRAVIT
        )
      )
    );

    $hlavicka = array(
      'ID' => 'Id',
      'JMENO' => 'Jméno',
      'PRIJMENI' => 'Příjmení',
      'NAZEV_FIRMY' => 'Firma',
      'ULICE' => 'Ulice',
      'CISLO_POPISNE' => 'Č.p.',
      'OBEC' => 'Obec',
      'PSC' => 'PSČ',
      'STAV' => 'Stav',
      'UPRAVIT' => ''
    );
  
    $obsah_css = array(
      'ID' => 'a_c',
      'STAV' => 'a_c',
      'UPRAVIT' => 'a_c'
    );
    
    $hlavicka_css = array(
      'UPRAVIT' => 'nosort'
    );

    unset($result); //'class' => 'seznam',
    $this->html = $this->getTable($table_id, $hlavicka, $adresy,
      array('class' => 'seznam tablesorter', 'summary' => $this->controller_name ),
      $obsah_css, array('ID', 'UPRAVIT'), $hlavicka_css, 'multisort'
    );
    
    $this->setView();
    
  }

  public function pridat($args) {

    $form_id = 'PridatAdresuForm';
/*    
    if (!empty($args[0]) AND !empty($args[1])) {
      switch(@$args[0]) {
        case 'dodavatel':
          $_POST['id_dod'] = @$args[1];
          break;
  
        case 'vyrobce':
          $_POST['id_vyr'] = @$args[1];
          break;
          
        case 'uzivatel':
          $_POST['id_uziv'] = @$args[1];
          break;
          
        default:
          throw new AppliException(1,'Nelze vytvořit adresu bez nadřazeného záznamu');
      }
    }
*/    
    $entita = new Adresa();

    if ($this->registry->form_send) {
      if (Validate::form($form_id) !== false) {

        $entita->setFromPost();
        $entita->insert();
        
        if (isset($_POST['uloz'])) {
          $redirect = Tools::ControllerLink('adminadresa','upravit', array( $entita->id) );
          
        }
        else {
          throw new AppliException('Pokus o napadení'. __METHOD__);
        }

        $this->setMessage('Adresa byla přidána', CSS_MESS, 1);
        Tools::redirect($redirect);
        die;

      }
      else {
        $valid_err = Validate::error();
        $this->setMessage('Špatně vyplněné údaje'.$valid_err, 'err_mess', CSS_ERR);
      }
    }
    
    $form = new Form($form_id);
    $form->openFieldset('Přidat adresu');
    $form->addInput('hidden', 'id_uziv', MY,array(), $entita->validate['id_uziv']);
    $form->addInput('hidden', 'id_vyr', MY,array(), $entita->validate['id_vyr']);
    $form->addInput('hidden', 'id_dod', MY,array(), $entita->validate['id_dod']);
    $form->addLabel('Titul', 'titul');
    $form->addInput('text', 'titul', MY, array(), $entita->validate['titul'], true);
    $form->addLabel('Jméno', 'jmeno');
    $form->addInput('text', 'jmeno', MY, array(), $entita->validate['jmeno'], true);
    $form->addLabel('Príjmení', 'prijmeni');
    $form->addInput('text', 'prijmeni', MY, array(), $entita->validate['prijmeni'], true);
    $form->addLabel('Firma', 'nazev_firmy', array(), 'Pouze pokud se jedná o firmu.');
    $form->addInput('text', 'nazev_firmy', MY, array(), $entita->validate['nazev_firmy'], true);
    $form->addLabel('IČO', 'ico', array(), 'Pouze pokud se jedná o firmu.');
    $form->addInput('text', 'ico', MY, array(), $entita->validate['ico'], true);
    $form->addLabel('DIČO', 'dic', array(), 'Pouze pokud se jedná o firmu.');
    $form->addInput('text', 'dic', MY, array(), $entita->validate['dic'], true);
    $form->addTag('br');
    $form->addLabel('E-mail', 'kontakt_mail');
    $form->addInput('text', 'kontakt_mail', MY, array(), $entita->validate['kontakt_mail'], true);
    $form->addLabel('Telefon', 'kontakt_telefon');
    $form->addInput('text', 'kontakt_telefon', MY, array(), $entita->validate['kontakt_telefon'], true); 
    $form->addLabel('Ulice', 'ulice', array(), 'Pokud obec nemá ulice, napište do pole název obce');
    $form->addInput('text', 'ulice', MY, array(), $entita->validate['ulice'], true);
    $form->addLabel('Č.p.', 'cislo_popisne', array(), 'Číslo popisné, případně Orientační číslo/ Číslo popisné');
    $form->addInput('text', 'cislo_popisne', MY, array(), $entita->validate['cislo_popisne'], true); 
    $form->addLabel('Obec', 'obec');
    $form->addInput('text', 'obec', MY, array(), $entita->validate['obec'], true);
    $form->addLabel('PSČ', 'psc');
    $form->addInput('text', 'psc', MY, array(), $entita->validate['psc'], true); 
    $form->addLabel('Stav', 'stav' );

    if ($form->stateSelect($entita,true,1) == true) {
      $form->addInput('hidden', HASH, MY);
      $form->openTag('div', array('class' => 'bb_l'));
      $form->addTag('hr',array('class' => 'fcleaner '));
      $form->addInput('submit', 'uloz', 'Uložit');
      $form->addInput('reset', 'reset', 'Vrátit změny');
      $form->closeTag();
    }
    else {
      $form->openTag('div', array('class' => 'bb_l'));
      $form->addInnerHTML('Nemáte oprávnění pro modifikaci záznamu v uvedeném stavu.<br /><br />');
      $form->addInput('reset', 'reset', 'Vrátit změny');
      $form->closeTag();
    }

    $form->closeFieldset();
    $form->closeForm();
    
    $this->html = $form->get();
    $this->setView('content.tpl');

  }

  public function upravit($args) {
    $id = @$args[0];
    $form_id = 'UpravitAdresuForm';
    
    $entita = new Adresa();

    if ($this->registry->form_send) {
      if (Validate::form($form_id) !== false) {

        if (isset($_POST['uloz'])) {
          $redirect = Tools::ControllerLink('adminadresa','upravit', array($id));
        }
        else {
          throw new AppliException('Pokus o napadení'. __METHOD__);
        }
        
        $entita->upravit($id, $form_id);

        $this->setMessage('Adresa byla změněna', CSS_MESS, 1);
        Tools::redirect($redirect);
        die;

      }
      else {
        $valid_err = Validate::error();
        $this->setMessage('Špatně vyplněné údaje'.$valid_err, 'err_mess', CSS_ERR);
      }
    }
    else {
      $form_value = $entita->loadByID($id, true);
      $this->registry->addPersistent($form_id.'_hash',$entita->hash, 3);
    }
    
    $form = new Form($form_id);
    if (count($form_value) > 0) {
      $form->setValue($form_value);
    }
    $form->openFieldset('Upravit adresu');
    $form->addInput('hidden', 'id_uziv', MY,array(), $entita->validate['id_uziv']);
    $form->addInput('hidden', 'id_vyr', MY,array(), $entita->validate['id_vyr']);
    $form->addInput('hidden', 'id_dod', MY,array(), $entita->validate['id_dod']);
    $form->addLabel('Titul', 'titul');
    $form->addInput('text', 'titul', MY, array(), $entita->validate['titul'], true);
    $form->addLabel('Jméno', 'jmeno');
    $form->addInput('text', 'jmeno', MY, array(), $entita->validate['jmeno'], true);
    $form->addLabel('Príjmení', 'prijmeni');
    $form->addInput('text', 'prijmeni', MY, array(), $entita->validate['prijmeni'], true);
    $form->addLabel('Firma', 'nazev_firmy', array(), 'Pouze pokud se jedná o firmu.');
    $form->addInput('text', 'nazev_firmy', MY, array(), $entita->validate['nazev_firmy'], true);
    $form->addLabel('IČO', 'ico', array(), 'Pouze pokud se jedná o firmu.');
    $form->addInput('text', 'ico', MY, array(), $entita->validate['ico'], true);
    $form->addLabel('DIČO', 'dic', array(), 'Pouze pokud se jedná o firmu.');
    $form->addInput('text', 'dic', MY, array(), $entita->validate['dic'], true);
    $form->addTag('br');
    $form->addLabel('E-mail', 'kontakt_mail');
    $form->addInput('text', 'kontakt_mail', MY, array(), $entita->validate['kontakt_mail'], true);
    $form->addLabel('Telefon', 'kontakt_telefon');
    $form->addInput('text', 'kontakt_telefon', MY, array(), $entita->validate['kontakt_telefon'], true); 
    $form->addLabel('Ulice', 'ulice', array(), 'Pokud obec nemá ulice, napište do pole název obce');
    $form->addInput('text', 'ulice', MY, array(), $entita->validate['ulice'], true);
    $form->addLabel('Č.p.', 'cislo_popisne', array(), 'Číslo popisné, případně Orientační číslo/ Číslo popisné');
    $form->addInput('text', 'cislo_popisne', MY, array(), $entita->validate['cislo_popisne'], true); 
    $form->addLabel('Obec', 'obec');
    $form->addInput('text', 'obec', MY, array(), $entita->validate['obec'], true);
    $form->addLabel('PSČ', 'psc');
    $form->addInput('text', 'psc', MY, array(), $entita->validate['psc'], true); 
    $form->addLabel('Stav', 'stav' );

    if ($form->stateSelect($entita) == true) {
      $form->addInput('hidden', HASH, MY);
      $form->openTag('div', array('class' => 'bb_l'));
      $form->addTag('hr',array('class' => 'fcleaner '));
      $form->addInput('submit', 'uloz', 'Uložit');
      $form->addInput('reset', 'reset', 'Vrátit změny');
      $form->closeTag();
    }
    else {
      $form->openTag('div', array('class' => 'bb_l'));
      $form->addInnerHTML('Nemáte oprávnění pro modifikaci záznamu v uvedeném stavu.<br /><br />');
      $form->addInput('reset', 'reset', 'Vrátit změny');
      $form->closeTag();
    }    

    $form->closeFieldset();
    $form->closeForm();
    
    $this->html = $form->get();
    $this->setView('content.tpl');
  }

}
?>