<?php

class adminskupinaController extends baseadminController {

  function __construct() {
    $this->controller_name 	= 'Zákaznické skupiny';
    $this->controller_fname = 'adminskupina';
    $this->controller_info 	= 'Správa zákaznických skupin.';
    $this->entita_classname = 'Skupina';
    parent::__construct();
  }

  public function seznam($args) {

    $table_id = 'seznamSkupina';
		$entita = new $this->entita_classname();

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

    $query = $entita->getAllQuery();
    $filtr_query = array();
    $this->setFilter($filtr_query, $entita);
    $this->myOrder($filtr_query, $entita);
    $strankovani = $this->addLimit($query, $filtr_query ,$entita);
		$query = array_merge($query,$filtr_query);

    $result = dibi::query($query);
    $zaznamy = $result->fetchAll();
    unset($result);
    
    foreach($zaznamy as $key=>$value) {
    	$zaznamy[$key]['SLEVA'] = Tools::numberFromDb($value['SLEVA']);
    }

    array_walk($zaznamy,
      'Tools::addLink',
      array('UPRAVIT' => array(
          'link' => Tools::controllerlink($this->controller_fname, 'upravit'),
          'addindex' => 'ID',
          'text'	 => ICO_UPRAVIT
        ),
        'SMAZAT' => array(
          'link' => Tools::controllerlink($this->controller_fname, 'smazat'),
          'addindex' => 'ID',
          'text'	 => ICO_SMAZAT
        )
      )
    );

    $hlavicka = array(
      'ID' 		=> 'Id',
      'NAZEV' => 'Název',
      'SLEVA'	=> 'Sleva',
    	'HRANICE' => 'Hranice',
    	'AUTOMAT' => 'Auto',
      'S_NAZEV' => 'Stav',
      'UPRAVIT' => '',
    	'SMAZAT' => '',
    );

    $obsah_css = array(
      'ID' 			=> 'a_c',
    	'SLEVA' => 'a_c',
    	'AUTOMAT' => 'a_c',
      'S_NAZEV' => 'a_c',
      'UPRAVIT' => 'a_c',
    	'SMAZAT' => 'a_c',
    );

    $hlavicka_css = array(
      'UPRAVIT' => 'nosort',
    	'SMAZAT'  => 'nosort',
    );
    $this->thCss($hlavicka_css);

    $this->html = $this->getTable($table_id, $hlavicka, $zaznamy,
      array('class' => 'seznam tablesorter', 'summary' => $this->controller_name ),
      $obsah_css, array('ID', 'SMAZAT'), $hlavicka_css, 'multisort', $entita->filtry, false
    );
		$this->html .= '<div class="strankovani">'.$strankovani.'</div></form>';
    $this->setView();

  }

  public function pridat($args) {

    $form_id = 'PridatSkupinaForm';
    $entita = new $this->entita_classname();

    if ($this->registry->form_send) {
      if (Validate::entita($entita,true) !== false) {

        $entita->setFromPost();
        $entita->insert();
        Tools::setMessage('Záznam '.$entita->nazev.' byl přidán', CSS_MESS, 1);

        if (isset($_POST['uloz_seznam'])) {
        	$redirect = Tools::ControllerLink($this->controller_fname,'seznam' );      
        }
        elseif (isset($_POST['uloz_pokracuj'])) {
          $redirect = Tools::ControllerLink($this->controller_fname,'pridat');
        }
        else {
        	$redirect = Tools::ControllerLink($this->controller_fname,'upravit', array( $entita->id) ); 
        }
        Tools::redirect($redirect);
        die;

      }
      else {
        $valid_err = Validate::error();
        Tools::setMessage('Špatně vyplněné údaje '.$valid_err, 'err_mess', CSS_ERR);
      }
    }

    $form = new Form($form_id, '', 'post', array('class' => 'myForm'));
    $form->setEntitaRef($entita);
    $form->openFieldset('Přidat skupinu');
    $form->addLabel('Název', 'nazev', array());
    $form->addInput('text', 'nazev', MY,array(), MY, true);
    $form->addLabel('Popis', 'popis' );
    $form->addTextarea('popis', MY, true, array('class' => 'stredni'));
		$form->addTag('br');
    $form->addLabel('Sleva', 'sleva',array(), 'Sleva pro uživatele zařené do skupiny. Hodnota v %' );
    $form->addInput('text', 'sleva',MY, array(), MY, true);
		$form->addLabel('Min. částka', 'hranice',array(), 'Minimální částka utracená v obchodě pro automatické zařazení do skupiny.' );
    $form->addInput('text', 'hranice',MY, array(), MY, true);
		$form->addLabel('Automaticky', 'automaticky',array(), 'Automatické zařazení zákazníků do skupiny po překročení cenové hranice.');
    $form->addInput('checkbox', 'automaticky',MY, array(), MY, true);    
		$form->addTag('br');
    $form->addLabel('Stav', 'stav' );
    $form->stateSelect($entita, true);

    $form->openTag('div', array('class' => 'bb_l'));
    $form->addTag('hr',array('class' => 'fcleaner '));
    $form->addInput('submit', 'uloz_pokracuj', 'Uložit a vložit další');
    $form->addInput('submit', 'uloz_seznam', 'Uložit a zobrazit seznam');
		$form->addInput('submit', 'uloz', 'Uložit a zobrazit');
    $form->closeTag();
    $form->closeFieldset();
    $form->closeForm();

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

  }

	public function upravit($args) {

  	$id = @$args[0];
    $form_id = 'UpravitSkupinaForm';
    $entita = new $this->entita_classname();

    if ($this->registry->form_send) {
      if (Validate::entita($entita,true) !== false) {

        if (isset($_POST['uloz_seznam'])) {
        	$redirect = Tools::ControllerLink($this->controller_fname,'seznam' );      
        }
        elseif (isset($_POST['uloz_pokracuj'])) {
          $redirect = Tools::ControllerLink($this->controller_fname,'pridat');
        }
        else {
        	$redirect = Tools::ControllerLink($this->controller_fname,'upravit', array($id) ); 
        }

        $entita->setFromPost();
        $entita->upravit($id,$form_id);
        Tools::setMessage('Záznam '.$entita->nazev.' byl upraven', '', 1);
        Tools::redirect($redirect);
        die;

      }
      else {
        $valid_err = Validate::error();
        Tools::setMessage('Špatně vyplněné údaje '.$valid_err, 'err_mess', CSS_ERR);
      }
    }

    $form_value = $entita->loadByID($id, true, $this->registry->postRestore);
		$form_value['sleva'] = (1 - $form_value['koeficient'])* 100; 
    
    $form = new Form($form_id, '', 'post', array('class' => 'myForm'));
    $form->setEntitaRef($entita);
    $form->setValue($form_value);
    $form->openFieldset('Upravit skupinu uživatel');
    $form->addLabel('Název', 'nazev', array());
    $form->addInput('text', 'nazev', MY,array(), MY, true);
    $form->addLabel('Popis', 'popis' );
    $form->addTextarea('popis', MY, true, array('class' => 'stredni'));
		$form->addTag('br');
    $form->addLabel('Sleva', 'sleva',array(), 'Sleva pro uživatele zařené do skupiny. Hodnota v %' );
    $form->addInput('text', 'sleva',Tools::numberToInput($form_value['sleva']), array(), MY, true);
		$form->addLabel('Min. částka', 'hranice',array(), 'Minimální částka utracená v obchodě pro automatické zařazení do skupiny.' );
    $form->addInput('text', 'hranice',MY, array(), MY, true);
		$form->addLabel('Automaticky', 'automaticky',array(), 'Automatické zařazení zákazníků do skupiny po překročení cenové hranice.');
    $form->addInput('checkbox', 'automaticky',MY, array(), MY, true);    
		$form->addTag('br');
    $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('submit', 'uloz_seznam', 'Uložit a zobrazit seznam');
      $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 smazat($args) {

		$form_id = 'smazatSkupina';
		$id = @$args[0];
		$entita = new $this->entita_classname();

		if ($this->registry->form_send) {
			$my_id = @$this->registry->$form_id;

			if ( $my_id == $id) {
				$entita->delete($id);
				Tools::setMessage('Záznam byl smazán', '', 1);
				Tools::redirect(Tools::controllerlink($this->controller_fname, 'seznam'));
			}
			else {
      	Tools::setMessage('Neoprávněný pokus o smazání položky!');
      	return $this->seznam(array());
      	die;
			}
		}
		
		$result = dibi::query('SELECT E.*,
  		(SELECT COUNT(*) FROM [UZIVATEL] U
  			WHERE U.ID_SKUP = E.ID) AS UZIVATELE
			FROM [SKUPINA_UZIVATEL] E
			WHERE E.ID = %i', $id);
		
		if (count($result) == 0) {
      Tools::setMessage('Požadovaný záznam neexistuje!');
      return $this->seznam(array());
    }

		$r = $result->fetchAll();
		$zaznam = $r[0];

  	if ( $zaznam['UZIVATELE'] > 0 ) {
	
			$produkty = '<div class="warning"><h3>Do skupiny jsou zařazeni následující uživatelé:</h3><ul class="smazat">';
			$result = dibi::query('SELECT U.ID, CONCAT(U.JMENO," ",U.PRIJMENI) AS JMENO FROM SKUPINA_UZIVATEL SU
				INNER JOIN UZIVATEL U ON U.ID_SKUP = SU.ID
				WHERE SU.ID = %i', $id);
			foreach($result as $row) {
				$produkty .= '<li> #id: '.$row['ID'].' - '.$row['JMENO'].'</li>';
			}
			$produkty .= '</ul><p>Pokud  chcete skupinu smazat, zařaďte uživatele do jiných skupin.</p>
			</div>';
		}
		
		$form = new Form($form_id);
		$form->openFieldset('Smazat záznam');
		if ( $id == 1 OR $id == 2 OR $id == 3 ) {
  		$form->openTag('h3');
  		$form->addInnerHTML('Skupinu uživatel <b>'.$zaznam['NAZEV'].'</b> nelze smazat!');
  		$form->closeTag();
  		$form->addInnerHTML('<div class="warning"><h3>Tato skupina je používána systémem a nelze ji odstranit.</h3></div>');
      $form->openTag('div', array('class' => 'bb_l'));
      $form->addTag('hr',array('class' => 'fcleaner '));
      $form->openTag('a', array('href' => Tools::controllerlink($this->controller_fname,'seznam')));
      $form->addInput('button', 'reset', 'Zrušit');
      $form->closeTag();
      $form->closeTag();
		}
		elseif ( $zaznam['UZIVATELE'] > 0 ) {
  		$form->openTag('h3');
  		$form->addInnerHTML('Skupinu uživatel <b>'.$zaznam['NAZEV'].'</b> nelze smazat!');
  		$form->closeTag();
  		$form->addInnerHTML($produkty);
      $form->openTag('div', array('class' => 'bb_l'));
      $form->addTag('hr',array('class' => 'fcleaner '));
      $form->openTag('a', array('href' => Tools::controllerlink($this->controller_fname,'seznam')));
      $form->addInput('button', 'reset', 'Zrušit');
      $form->closeTag();
      $form->closeTag();
		}
		else {
			$this->registry->addPersistent($form_id,$id, 2);
  		$form->openTag('h3');
  		$form->addInnerHTML('Chcete opravdu odstranit skupinu uživatel <b>'.$zaznam['NAZEV'].'</b> (id: '.$zaznam['ID'].') ?');
  		$form->closeTag();
      $form->openTag('div', array('class' => 'bb_l'));
      $form->addTag('hr',array('class' => 'fcleaner '));
      $form->addInput('submit', 'uloz', 'Smazat');
      $form->openTag('a', array('href' => Tools::controllerlink($this->controller_fname,'seznam')));
      $form->addInput('button', 'reset', 'Zrušit');
      $form->closeTag();
      $form->closeTag();
		}

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