public function getStats()
 {
     App::import('model', 'DB');
     $DB = new DB();
     // App::Import('ConnectionManager');
     // $MPSearch = ConnectionManager::getDataSource('MPSearch');
     $output = array();
     // CAŁOŚCIOWO
     $output['calosc']['indywidualne'] = $DB->selectAssocs("SELECT \n\t\t`s_poslowie_kadencje`.`id`, \n\t\t`s_poslowie_kadencje`.`nazwa`, \n\t\t`s_kluby`.`id` as 'klub_id', \n\t\t`s_kluby`.`skrot`, \n\t\t`mowcy_poslowie`.`mowca_id`, \n\t\ts_poslowie_kadencje.wartosc_wyjazdow as 'sum',\n\t\ts_poslowie_kadencje.liczba_wyjazdow as 'count' \n\t\tFROM `s_poslowie_kadencje` \n\t\tJOIN `s_kluby`\n\t\tON `s_poslowie_kadencje`.`klub_id` = `s_kluby`.`id` \n\t\tJOIN `mowcy_poslowie`\n\t\tON `s_poslowie_kadencje`.`id` = `mowcy_poslowie`.`posel_id`\n\t\tORDER BY s_poslowie_kadencje.wartosc_wyjazdow DESC\n\t\tLIMIT 5\n\t\t");
     $output['calosc']['klubowe'] = $DB->selectAssocs("SELECT\n\t\t`s_kluby`.`id`, \n\t\t`s_kluby`.`nazwa`, \n\t\t`s_kluby`.`skrot`, \n\t\tSUM(`poslowie_wyjazdy`.`koszt`) as 'sum',\n\t\tAVG(`poslowie_wyjazdy`.`koszt`) as 'avg',\n\t\tCOUNT(DISTINCT e.id) as 'count'\n\t\tFROM `poslowie_wyjazdy` \n\t\tJOIN `s_kluby`\n\t\tON `poslowie_wyjazdy`.`klub_id` = `s_kluby`.`id`\n\t\tJOIN poslowie_wyjazdy_wydarzenia e\n\t\tON e.id = poslowie_wyjazdy.wydarzenie_id\n\t\tWHERE e.deleted = '0' AND poslowie_wyjazdy.deleted = '0'\n\t\tGROUP BY `poslowie_wyjazdy`.`klub_id` \n\t\tORDER BY AVG(`poslowie_wyjazdy`.`koszt`) DESC\n\t\tLIMIT 10\n\t\t");
     $output['koszta'] = $DB->selectAssoc("SELECT SUM(`koszt_transport`) as 'transport', SUM(`koszt_dieta`) as 'diety', SUM(`koszt_hotel`) as 'hotele', SUM(`koszt`) as 'calosc' FROM `poslowie_wyjazdy`");
     $output['koszta']['transport'] = (double) $output['koszta']['transport'];
     $output['koszta']['diety'] = (double) $output['koszta']['diety'];
     $output['koszta']['hotele'] = (double) $output['koszta']['hotele'];
     $output['koszta']['calosc'] = (double) $output['koszta']['calosc'];
     $output['koszta']['pozostale'] = $output['koszta']['calosc'] - $output['koszta']['transport'] - $output['koszta']['diety'] - $output['koszta']['hotele'];
     $output['najdrozsze']['calosc'] = $DB->selectAssocs("SELECT id, liczba_dni, liczba_poslow, koszt, delegacja, lokalizacja FROM poslowie_wyjazdy_wydarzenia ORDER BY koszt DESC LIMIT 4");
     $output['najdrozsze']['indywidualnie'] = $DB->selectAssocs("SELECT \n\t\t`s_poslowie_kadencje`.`id`, \n\t\t`s_poslowie_kadencje`.`nazwa`, \n\t\t`s_kluby`.`id` as 'klub_id', \n\t\t`s_kluby`.`skrot`, \n\t\t`mowcy_poslowie`.`mowca_id`, \n\t\t`poslowie_wyjazdy`.`koszt`,\n\t\t`e`.`id` as 'wydarzenie_id', \n\t\t`e`.`lokalizacja`, \n\t\t`e`.`delegacja`\n\t\tFROM `poslowie_wyjazdy` \n\t\tJOIN `s_poslowie_kadencje` \n\t\t\tON `poslowie_wyjazdy`.`posel_id` = `s_poslowie_kadencje`.`id` \n\t\tJOIN `s_kluby`\n\t\t\tON `poslowie_wyjazdy`.`klub_id` = `s_kluby`.`id` \n\t\tJOIN `mowcy_poslowie`\n\t\t\tON `s_poslowie_kadencje`.`id` = `mowcy_poslowie`.`posel_id`\n\t\tJOIN poslowie_wyjazdy_wydarzenia e\n\t\t\tON e.id = poslowie_wyjazdy.wydarzenie_id\n\t\tWHERE \n\t\t\te.deleted = '0' AND poslowie_wyjazdy.deleted = '0'\n\t\tORDER BY \n\t\t\t`poslowie_wyjazdy`.`koszt` DESC\n\t\tLIMIT 6\n\t\t");
     $data = $DB->selectAssocs("\n\t\tSELECT \n\t\t\t`poslowie_wyjazdy_wydarzenia`.`id`, \n\t\t\t`poslowie_wyjazdy_wydarzenia`.`lokalizacja`, \n\t\t\t`poslowie_wyjazdy_wydarzenia`.`delegacja`, \n\t\t\t`poslowie_wyjazdy_wydarzenia`.`liczba_dni`, \n\t\t\t`poslowie_wyjazdy_wydarzenia`.`liczba_poslow`, \n\t\t\t`poslowie_wyjazdy_wydarzenia`.`date_start`, \n\t\t\t`poslowie_wyjazdy_wydarzenia`.`date_stop`, \n\t\t\t`s_poslowie_kadencje`.`id` as `posel_id`,\n\t\t\t`s_poslowie_kadencje`.`nazwa` as `posel_nazwa`, \n\t\t\t`s_poslowie_kadencje`.`pkw_plec` as `plec`, \n\t\t\t`poslowie_wyjazdy`.`glosowania_daty`,\n\t\t\t`poslowie_wyjazdy`.`koszt_dieta`,\n\t\t\t`poslowie_wyjazdy`.`koszt_transport`,\n\t\t\t`poslowie_wyjazdy`.`koszt_hotel`,\n\t\t    `mowcy_poslowie`.`mowca_id`,\n\t\t    `s_kluby`.`id` as `klub_id`,\n\t\t    `s_kluby`.`skrot` as `klub_skrot`\n\t\tFROM `poslowie_wyjazdy` \n\t\t\tJOIN `poslowie_wyjazdy_wydarzenia` \n\t\t\t\tON `poslowie_wyjazdy`.`wydarzenie_id` = `poslowie_wyjazdy_wydarzenia`.`id` \n\t\t\tJOIN `s_poslowie_kadencje` \n\t\t\t\tON `poslowie_wyjazdy`.`posel_id` = `s_poslowie_kadencje`.`id` \n\t\t\tJOIN `s_kluby` \n\t\t\t\tON `poslowie_wyjazdy`.`klub_id` = `s_kluby`.`id` \n\t\t\tJOIN `mowcy_poslowie` \n\t\t\t\tON `s_poslowie_kadencje`.`id` = `mowcy_poslowie`.`posel_id`\n\t\tWHERE `poslowie_wyjazdy`.`glosowania_daty`!='' \n\t\tORDER BY \n\t\t\t`poslowie_wyjazdy_wydarzenia`.`date_start` ASC,\n\t\t\t`poslowie_wyjazdy`.`koszt_dieta` DESC\n\t\t");
     $wydarzenia = array();
     foreach ($data as $d) {
         $wydarzenia[$d['id']]['data'] = array('id' => $d['id'], 'lokalizacja' => $d['lokalizacja'], 'delegacja' => $d['delegacja'], 'liczba_dni' => $d['liczba_dni'], 'liczba_poslow' => $d['liczba_poslow'], 'date_start' => $d['date_start'], 'date_stop' => $d['date_stop']);
         $wydarzenia[$d['id']]['poslowie'][] = array('id' => $d['posel_id'], 'nazwa' => $d['posel_nazwa'], 'mowca_id' => $d['mowca_id'], 'klub_id' => $d['klub_id'], 'klub_skrot' => $d['klub_skrot'], 'koszt_dieta' => $d['koszt_dieta'], 'koszt_transport' => $d['koszt_transport'], 'koszt_hotel' => $d['koszt_hotel'], 'plec' => $d['plec'], 'glosowania_dni' => explode(',', $d['glosowania_daty']));
     }
     unset($data);
     $output['wydarzenia'] = array_values($wydarzenia);
     return $output;
 }
 public function pageCount($args)
 {
     App::import('model', 'DB');
     $DB = new DB();
     $page_count = $DB->selectAssoc("SELECT COUNT(DISTINCT kandydat_id) FROM krs_kandydaci WHERE typ='" . $args['type'] . "' AND correct='" . $args['stan'] . "'");
     $page_count = ceil($page_count['COUNT(DISTINCT kandydat_id)'] / 50);
     return $page_count;
 }
 public function getSummary($id = 0)
 {
     if (!$id) {
         return false;
     }
     App::import('model', 'DB');
     $DB = new DB();
     $results = array('survey' => $DB->selectAssoc("\n                SELECT\n                  surveys.*\n                FROM surveys\n                WHERE\n                  surveys.id = {$id}"), 'questions' => $DB->selectAssocs("\n                SELECT\n                  surveys_questions.*\n                FROM surveys_questions\n                WHERE\n                  surveys_questions.survey_id = {$id}"));
     foreach ($results['questions'] as $i => $question) {
         $results['questions'][$i]['answers'] = $DB->selectAssocs("\n                SELECT\n                  surveys_answers.answer, COUNT(surveys_answers.id) as `count`\n                FROM surveys_answers\n                WHERE\n                  surveys_answers.question_id = " . $question['id'] . "\n                GROUP BY surveys_answers.answer\n                ");
     }
     return $results;
 }
 /**
  * Pobiera dane dla danej konfiguracji ustawień
  */
 public function getDataForIndicatorSet()
 {
     $options = array('w1', 'w2', 'w3', 'w4', 'w5');
     App::import('model', 'DB');
     $DB = new DB();
     $types = array('wojewodztwo', 'powiat', 'gmina');
     if (isset($this->request->query['type'])) {
         if (in_array($this->request->query['type'], $types)) {
             $type = $this->request->query['type'];
         } else {
             $type = $types[0];
         }
     } else {
         $type = $types[0];
     }
     $tables = array('wojewodztwo' => array('name' => 'BDL_data_wojewodztwa', 'field' => 'wojewodztwo_id'), 'powiat' => array('name' => 'BDL_data_powiaty', 'field' => 'powiat_id'), 'gmina' => array('name' => 'BDL_data_gminy', 'field' => 'gmina_id'));
     $table = $tables[$type];
     $where = '';
     foreach ($options as $name) {
         $v = 0;
         if (isset($this->request->query[$name])) {
             $v = (int) $this->request->query[$name];
         }
         $where .= "`{$name}` = '{$v}' AND ";
     }
     $where = substr($where, 0, -4);
     $kombinacja = $DB->selectAssoc("SELECT id, jednostka, ly, lv FROM BDL_wymiary_kombinacje WHERE {$where}");
     $kombinacja_id = (int) $kombinacja['id'];
     $unit = $kombinacja['jednostka'];
     $value = $kombinacja['lv'];
     /* $y = $DB->selectAssocs("SELECT rocznik FROM ".$table['name']." WHERE kombinacja_id = $kombinacja_id AND deleted='0' GROUP BY rocznik ORDER BY rocznik DESC");
        $years = array();
        foreach($y as $yr)
            $years[] = (int) $yr['rocznik']; */
     $year = (int) $kombinacja['ly'];
     if (isset($this->request->query['year'])) {
         if (in_array($this->request->query['year'], $years)) {
             // TODO undefined years
             $year = (int) $this->request->query['year'];
         }
     }
     $data = $DB->selectAssocs("\n            SELECT v, " . $table['field'] . " FROM " . $table['name'] . " WHERE kombinacja_id = {$kombinacja_id} AND rocznik = {$year} AND deleted='0' ORDER BY " . $table['field'] . " ASC\n        ");
     $this->setSerialized('data', array('data' => $data, 'unit' => $unit, 'year' => $year, 'value' => $value));
 }
 public function save($id = null)
 {
     $this->Auth->deny();
     $map = array('id' => 'id', 'data_pisma' => 'date', 'nazwa' => 'name', 'tytul' => 'title', 'tresc' => 'content', 'tresc_html' => 'content_html', 'adresat' => 'to_str', 'nadawca' => 'from_str', 'miejscowosc' => 'from_location', 'data' => 'date', 'szablon_id' => 'template_id', 'podpis' => 'from_signature');
     $data = $this->request->data;
     if (empty($data)) {
         $data = array();
     }
     $adresat_id = isset($data['adresat_id']) ? $data['adresat_id'] : false;
     $temp = array();
     foreach ($data as $k => $v) {
         if (array_key_exists($k, $map)) {
             $temp[$map[$k]] = $v;
         }
     }
     $temp['from_user_type'] = $this->Auth->user('type');
     $temp['from_user_id'] = $this->Auth->user('id');
     $data = $temp;
     unset($temp);
     if ($adresat_id && ($parts = explode(':', $adresat_id)) && count($parts) > 1) {
         $data = array_merge($data, array('to_dataset' => $parts[0], 'to_id' => $parts[1]));
     }
     App::import('model', 'DB');
     $DB = new DB();
     // edit & create in one func, path param has precedence
     if ($id != null) {
         $data['alphaid'] = $id;
     }
     if (isset($data['alphaid']) && $data['alphaid']) {
         $data['modified_at'] = date('Y-m-d H:i:s');
         $data['saved'] = '1';
         $data['saved_at'] = date('Y-m-d H:i:s');
     } else {
         $data['created_at'] = date('Y-m-d H:i:s');
         $data['hash'] = substr(bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM)), 0, 64);
         $data['alphaid'] = $this->generateID(5);
         $data['name'] = false;
         $data['saved'] = '0';
     }
     if (isset($data['template_id']) && $data['template_id'] && ($template = $DB->selectAssoc("SELECT nazwa, tresc, tytul, nadawca_opis FROM pisma_szablony WHERE id='" . addslashes($data['template_id']) . "'"))) {
         $data['title'] = $template['tytul'] ? $template['tytul'] : $template['nazwa'];
         if (isset($template['nadawca_opis'])) {
             $data['nadawca_opis'] = $template['nadawca_opis'];
         }
         if ($data['saved'] == '0') {
             $data['content'] = $template['tresc'];
             if (!$data['name'] && $template['nazwa']) {
                 $data['name'] = $template['nazwa'];
             }
         }
     }
     if (isset($data['to_dataset']) && $data['to_dataset'] && isset($data['to_id']) && $data['to_id']) {
         if ($data['to_dataset'] == 'pisma_adresaci') {
             $pisma_adresaci = $this->DB->selectAssoc("SELECT dataset, object_id FROM pisma_adresaci WHERE id='" . addslashes($data['to_id']) . "' LIMIT 1");
             $data['to_dataset'] = $pisma_adresaci['dataset'];
             $data['to_id'] = $pisma_adresaci['object_id'];
         }
         if ($data['to_dataset'] == 'instytucje' && ($to = $DB->selectAssoc("SELECT id, nazwa, email, adres_str FROM instytucje WHERE id='" . addslashes($data['to_id']) . "'"))) {
             $data['to_str'] = '<p>' . $to['nazwa'] . '</p><p>' . $to['adres_str'] . '</p>';
             $data['to_name'] = $to['nazwa'];
             $data['to_email'] = $to['email'];
         } elseif ($data['to_dataset'] == 'radni_gmin' && ($to = $DB->selectAssoc("SELECT pl_gminy_radni.id, pl_gminy_radni.nazwa, pl_gminy_radni_krakow.email FROM pl_gminy_radni LEFT JOIN pl_gminy_radni_krakow ON pl_gminy_radni.id=pl_gminy_radni_krakow.id WHERE pl_gminy_radni.id='" . addslashes($data['to_id']) . "'"))) {
             $data['to_str'] = '<p>Radny Miasta Kraków</p><p>' . $to['nazwa'] . '</p><p>' . $to['email'] . '</p>';
             $data['to_name'] = 'Radny Miasta Kraków - ' . $to['nazwa'];
             $data['to_email'] = $to['email'];
         } elseif ($data['to_dataset'] == 'poslowie' && ($to = $DB->selectAssoc("SELECT s_poslowie_kadencje.id, s_poslowie_kadencje.nazwa, s_poslowie_kadencje.email, s_poslowie_kadencje.pkw_plec FROM s_poslowie_kadencje LEFT JOIN s_kluby ON s_poslowie_kadencje.klub_id=s_kluby.id WHERE s_poslowie_kadencje.id='" . addslashes($data['to_id']) . "'"))) {
             if ($to['pkw_plec'] == 'K') {
                 $data['to_str'] = '<p>Posłanka na Sejm RP</p><p>' . $to['nazwa'] . '</p><p>' . $to['email'] . '</p>';
                 $data['to_name'] = 'Posłanka - ' . $to['nazwa'];
                 $data['content'] = str_replace(array('{$szanowny_panie_posle}', '{$pan_posel}'), array('Szanowna Pani Posłanko', 'Pani Posłanka'), $data['content']);
             } else {
                 $data['to_str'] = '<p>Poseł na Sejm RP</p><p>' . $to['nazwa'] . '</p><p>' . $to['email'] . '</p>';
                 $data['to_name'] = 'Poseł - ' . $to['nazwa'];
                 $data['content'] = str_replace(array('{$szanowny_panie_posle}', '{$pan_posel}'), array('Szanowny Panie Pośle', 'Pan Poseł'), $data['content']);
             }
             $data['to_email'] = $to['email'];
         } elseif ($data['to_dataset'] == 'senatorowie' && ($to = $DB->selectAssoc("SELECT id, nazwa, email, plec FROM senat_senatorowie WHERE id='" . addslashes($data['to_id']) . "'"))) {
             if ($to['plec'] == 'K') {
                 $data['to_str'] = '<p>Senator ' . $to['nazwa'] . '</p><p>' . $to['email'] . '</p>';
                 $data['to_name'] = 'Senator - ' . $to['nazwa'];
                 $data['content'] = str_replace(array('{$szanowny_panie_posle}', '{$pan_posel}'), array('Szanowna Pani Posłanko', 'Pani Posłanka'), $data['content']);
             } else {
                 $data['to_str'] = '<p>Senator ' . $to['nazwa'] . '</p><p>' . $to['email'] . '</p>';
                 $data['to_name'] = 'Senator - ' . $to['nazwa'];
                 $data['content'] = str_replace(array('{$szanowny_panie_posle}', '{$pan_posel}'), array('Szanowny Panie Pośle', 'Pan Poseł'), $data['content']);
             }
             $data['to_email'] = $to['email'];
         } elseif ($data['to_dataset'] == 'gminy' && ($to = $DB->selectAssoc("SELECT pl_gminy.id, pl_gminy.nazwa, pl_gminy.email, pl_gminy.szef_stanowisko, pl_gminy.adres FROM pl_gminy WHERE pl_gminy.id='" . addslashes($data['to_id']) . "'"))) {
             $data['to_str'] = '<p>' . $to['szef_stanowisko'] . ' ';
             switch ($to['szef_stanowisko']) {
                 case 'Wójt':
                     $data['to_str'] .= 'Gminy';
                     break;
                 case 'Burmistrz':
                     $data['to_str'] .= 'Miasta';
                     break;
                 case 'Prezydent':
                     $data['to_str'] .= 'Miasta';
                     break;
             }
             $addr = preg_replace('~(\\d{2})-(\\d{3})~', '</p><p>${1}-${2}', $to['adres']);
             $data['to_str'] .= ' ' . $to['nazwa'] . '</p><p>' . $addr . '</p><p>' . $to['email'] . '</p>';
             $data['to_name'] = $to['szef_stanowisko'] . ' ' . $to['nazwa'];
             $data['to_email'] = $to['email'];
         } elseif ($data['to_dataset'] == 'rada_gminy' && ($to = $DB->selectAssoc("SELECT pl_gminy.id, pl_gminy.nazwa, pl_gminy.email, pl_gminy.rada_nazwa, pl_gminy.adres FROM pl_gminy WHERE pl_gminy.id='" . addslashes($data['to_id']) . "'"))) {
             $addr = preg_replace('~(\\d{2})-(\\d{3})~', '</p><p>${1}-${2}', $to['adres']);
             $data['to_str'] = '<p>' . $to['rada_nazwa'] . '</p><p>' . $addr . '</p><p>' . $to['email'] . '</p>';
             $data['to_name'] = $to['rada_nazwa'];
             $data['to_email'] = $to['email'];
         } elseif ($data['to_dataset'] == 'zamowienia_publiczne_zamawiajacy' && ($to = $DB->selectAssoc("SELECT uzp_zamawiajacy.id, uzp_zamawiajacy.nazwa, uzp_zamawiajacy.email, uzp_zamawiajacy.ulica, uzp_zamawiajacy.nr_domu, uzp_zamawiajacy.nr_miesz, uzp_zamawiajacy.miejscowosc, uzp_zamawiajacy.kod_poczt FROM uzp_zamawiajacy WHERE uzp_zamawiajacy.id='" . addslashes($data['to_id']) . "'"))) {
             $data['to_str'] = '<p>' . $to['nazwa'] . '</p><p>' . $to['ulica'] . ' ' . $to['nr_domu'] . ' ' . $to['nr_miesz'] . '</p><p>' . $to['kod_poczt'] . ' ' . $to['miejscowosc'] . '</p><p>' . $to['email'] . '</p>';
             $data['to_name'] = $to['nazwa'];
             $data['to_email'] = $to['email'];
         } elseif ($data['to_dataset'] == 'krs_podmioty' && ($to = $DB->selectAssoc("SELECT id, nazwa_pelna, adres_ulica, adres_numer, adres_lokal, adres_miejscowosc, adres_kod_pocztowy, adres_poczta, adres_kraj, email FROM krs_pozycje WHERE id='" . addslashes($data['to_id']) . "'"))) {
             $data['to_str'] = '<p>' . $to['nazwa_pelna'] . '</p><p>' . $to['adres_ulica'] . ' ' . $to['adres_numer'];
             if ($to['adres_lokal']) {
                 $data['to_str'] .= ' ' . $to['adres_lokal'];
             }
             $data['to_str'] .= '</p><p>' . $to['adres_kod_pocztowy'] . ' ' . $to['adres_poczta'] . '</p>';
             if ($to['email']) {
                 $data['to_str'] .= '<p>' . $to['email'] . '</p>';
             }
             $data['to_name'] = $to['nazwa_pelna'];
             $data['to_email'] = $to['email'];
         }
     }
     if (!isset($data['to_dataset'])) {
         $data['to_dataset'] = false;
     }
     if (!isset($data['to_id'])) {
         $data['to_id'] = false;
     }
     if ($data['saved'] == '0' && !$data['name']) {
         $data['name'] = 'Nowe pismo';
     }
     $data['slug'] = @substr(Inflector::slug($data['name'], '-'), 0, 127);
     // TODO powinno być zwrócone w innym formacie dTt, czemu cake sam tego nie formatuje w bazie?! Albo zwracajac?
     $data['modified_at'] = date('Y-m-d H:i:s');
     /*
     	    debug( $data );
     	    $this->Document->save(array('Document' => $data));
     	    $dbo = $this->Document->getDatasource();
     $logs = $dbo->getLog();
     $lastLog = end($logs['log']);
     echo $lastLog['query']; die();   
     */
     if ($data['saved'] == '0') {
         $this->Document->create();
     }
     $data['from_user_name'] = '';
     if ($data['from_user_type'] == 'account') {
         $this->loadModel('Paszport.User');
         $user = $this->User->find('first', array('conditions' => array('User.id' => $data['from_user_id'])));
         $data['from_user_name'] = $user['User']['username'];
     }
     if ($doc = $this->Document->save(array('Document' => $data))) {
         $this->response->statusCode(201);
         // 201 Created
         $url = '/moje-pisma/' . $doc['Document']['alphaid'];
         if ($doc['Document']['slug']) {
             $url .= ',' . $doc['Document']['slug'];
         }
         $this->setSerialized('object', array('id' => $doc['Document']['alphaid'], 'url' => $url));
     } else {
         // TODO format returned validation errors
         throw new ValidationException($this->Document->validationErrors);
     }
 }
    public function getBudgetData2($gmina_id = null)
    {
        App::import('model', 'DB');
        $DB = new DB();
        // Configure::write('debug', 2);
        // parametry zewnetrzne
        $data = '2014Q2';
        $gmina = $DB->selectAssoc("SELECT id, nazwa, teryt FROM pl_gminy WHERE id='{$gmina_id}'");
        $teryt = $gmina['teryt'];
        // Przedzia³y wielkoœci gmin
        $ranges = array();
        $ranges[] = array('min' => 0, 'max' => 20000);
        $ranges[] = array('min' => 20000, 'max' => 50000);
        $ranges[] = array('min' => 50000, 'max' => 100000);
        $ranges[] = array('min' => 100000, 'max' => 500000);
        $ranges[] = array('min' => 500000, 'max' => 999999999);
        $data = explode('q', strtolower($data));
        $rok = substr($data[0], 2, 2);
        $miesiac = $data[1];
        $minLiczba = null;
        $maxLiczba = null;
        $liczbaLudnosci = null;
        // Dane podstawowe/globalne
        $sql = sprintf('
			SELECT
				d.id as \'dzial_id\', dzial,
				min, g1.nazwa AS min_nazwa,
				max, g2.nazwa AS max_nazwa,
				sum_section, d.tresc
			FROM finance_date f
			JOIN pl_budzety_wydatki_dzialy d ON d.src = f.dzial
			LEFT JOIN pl_gminy g1 ON g1.teryt = min_teryt
			LEFT JOIN pl_gminy g2 ON g2.teryt = max_teryt
			WHERE rok = %d AND kwartal = %d
			ORDER BY sum_section DESC', $rok, $miesiac);
        $result = $DB->q($sql);
        $results = array();
        $sum = 0;
        while ($row = $result->fetch_assoc()) {
            $results[$row['dzial']] = $row;
            $results[$row['dzial']]['buckets'] = array_fill(0, 10, null);
            $sum += $row['sum_section'];
        }
        $this->_getHistogram($DB, $results, 'buckets', $rok, $miesiac);
        // Jezeli mamy okreslona gmine
        if ($teryt) {
            // dane dla gminy
            $sql = sprintf("\n\t\t\t\tSELECT\n\t\t\t\t\tdzial, sum_section, liczba_ludnosci\n\t\t\t\tFROM finance_teryt\n\t\t\t\tWHERE rok = %d AND kwartal = %d AND teryt = '%s'", $rok, $miesiac, $teryt);
            $result = $DB->q($sql);
            $terytSum = 0;
            $dzial = array();
            while ($row = $result->fetch_assoc()) {
                $dzial[] = $row['dzial'];
                $results[$row['dzial']]['teryt_buckets'] = array_fill(0, 10, null);
                $results[$row['dzial']]['teryt_sum_section'] = $row['sum_section'];
                $terytSum += $row['sum_section'];
                if ($liczbaLudnosci == null) {
                    $liczbaLudnosci = $row['liczba_ludnosci'];
                }
            }
            // Dane sumaryczne dla gminy
            foreach ($dzial as $_dzial) {
                $results[$_dzial]['teryt_sum'] = $terytSum;
                $results[$_dzial]['teryt_sum_section_percent'] = !$terytSum ? 0 : round(100 * $results[$_dzial]['teryt_sum_section'] / $terytSum, 2);
            }
            // Dane dla gmin o podobnej wielkosci
            if ($liczbaLudnosci != null) {
                foreach ($ranges as $range) {
                    if ($liczbaLudnosci >= $range['min'] && $liczbaLudnosci < $range['max']) {
                        $minLiczba = $range['min'];
                        $maxLiczba = $range['max'];
                    }
                }
                $this->_getHistogram($DB, $results, 'teryt_buckets', $rok, $miesiac, $minLiczba, $maxLiczba);
                $sql = sprintf("\n\t\t\t\t\tSELECT\n\t\t\t\t\t\tdzial,\n\t\t\t\t\t\tmin_sum_section, min_teryt, g1.nazwa AS min_teryt_name,\n\t\t\t\t\t\tmax_sum_section, max_teryt, g2.nazwa AS max_teryt_name\n\t\t\t\t\tFROM (\n\t\t\t\t\t\tSELECT\n\t\t\t\t\t\t\tdzial,\n\t\t\t\t\t\t\tmin_sum_section, LPAD(IF(min_teryt %% 100 = 0, min_teryt + 1, min_teryt), 6, '0') AS min_teryt,\n\t\t\t\t\t\t\tmax_sum_section, LPAD(IF(max_teryt %% 100 = 0, max_teryt + 1, max_teryt), 6, '0') AS max_teryt\n\t\t\t\t\t\tFROM (\n\t\t\t\t\t\t\tSELECT\n\t\t\t\t\t\t\t\tdzial,\n\t\t\t\t\t\t\t\tMIN(sum_section) AS min_sum_section,\n\t\t\t\t\t\t\t\tIF(LOCATE(',', GROUP_CONCAT(teryt ORDER BY sum_section ASC)) > 0, SUBSTRING(GROUP_CONCAT(teryt ORDER BY sum_section ASC), 1, LOCATE(',',GROUP_CONCAT(teryt ORDER BY sum_section ASC)) - 1), teryt) AS min_teryt,\n\t\t\t\t\t\t\t\tMAX(sum_section) AS max_sum_section,\n\t\t\t\t\t\t\t\tIF(LOCATE(',', GROUP_CONCAT(teryt ORDER BY sum_section DESC)) > 0, SUBSTRING(GROUP_CONCAT(teryt ORDER BY sum_section DESC), 1, LOCATE(',',GROUP_CONCAT(teryt ORDER BY sum_section DESC)) - 1), teryt) AS max_teryt\n\t\t\t\t\t\t\tFROM finance_teryt\n\t\t\t\t\t\t\tWHERE rok = %d AND kwartal = %d  AND liczba_ludnosci >= %d AND liczba_ludnosci < %d\n\t\t\t\t\t\t\tGROUP BY dzial\n\t\t\t\t\t\t) AS ww\n\t\t\t\t\t) AS xx\n\t\t\t\t\tLEFT JOIN pl_gminy g1 ON g1.teryt = min_teryt\n\t\t\t\t\tLEFT JOIN pl_gminy g2 ON g2.teryt = max_teryt", $rok, $miesiac, $minLiczba, $maxLiczba);
                $result = $DB->q($sql);
                while ($row = $result->fetch_assoc()) {
                    $results[$row['dzial']]['teryt_min_sum_section'] = $row['min_sum_section'];
                    $results[$row['dzial']]['teryt_max_sum_section'] = $row['max_sum_section'];
                    $results[$row['dzial']]['teryt_min_nazwa'] = $row['min_teryt_name'];
                    $results[$row['dzial']]['teryt_max_nazwa'] = $row['max_teryt_name'];
                }
                // Gmina na tle podobnych w kazdej kategorii
                foreach ($dzial as $_dzial) {
                    $left = $results[$_dzial]['teryt_min_sum_section'];
                    $right = $results[$_dzial]['teryt_max_sum_section'];
                    $v = $results[$_dzial]['teryt_sum_section'];
                    $results[$_dzial]['teryt_section_percent'] = round(100 * ($v - $left) / ($right - $left));
                }
            }
        }
        // Wynik finalny
        $finalResult = array('sections' => array(), 'stats' => array('sum' => $sum, 'min_liczba_ludnosci' => $minLiczba, 'max_liczba_ludnosci' => $maxLiczba, 'teryt_liczba_ludnosci' => $liczbaLudnosci, 'teryt_nazwa' => @$gmina['nazwa']));
        foreach ($results as $item) {
            $finalResult['sections'][] = array('id' => $item['dzial_id'], 'nazwa' => @$item['tresc'], 'min' => @$item['min'], 'max' => @$item['max'], 'min_nazwa' => @$item['min_nazwa'], 'max_nazwa' => @$item['max_nazwa'], 'sum_section' => @$item['sum_section'], 'buckets' => @$item['buckets'], 'teryt_sum' => @$item['teryt_sum'], 'teryt_sum_section' => @$item['teryt_sum_section'], 'teryt_sum_section_percent' => @$item['teryt_sum_section_percent'], 'teryt_min' => @$item['teryt_min_sum_section'], 'teryt_max' => @$item['teryt_max_sum_section'], 'teryt_section_percent' => @$item['teryt_section_percent'], 'teryt_min_nazwa' => @$item['teryt_min_nazwa'], 'teryt_max_nazwa' => @$item['teryt_max_nazwa'], 'teryt_buckets' => @$item['teryt_buckets']);
        }
        //debug($finalResult); die();
        $finalResult['gmina'] = $gmina;
        return $finalResult;
    }