"static/sweetalert2.min.js"]); echo UI::h('link', ['rel'=>"stylesheet", 'type'=>"text/css", 'href'=>"static/sweetalert2.min.css"]); Theme::top(); //echo '
'; // todo: sprawdzi czy można usunać echo ''; echo ''; // echo ''; UI::inlineJS(__FILE__ . '.view.js', [ 'URL_FETCH_KONTRAHENCI_POWIAZANIA' => $this->getLink('fetchEnergaRumKontrahenciPowiazaniaAjax'), 'URL_FETCH_TEST_KRS' => $this->getLink('fetchTestKrsAjax'), 'URL_FETCH_TEST_CEIDG' => $this->getLink('fetchTestCeidgAjax'), 'URL_FETCH_PRACOWNICY' => $this->getLink('fetchPracownicyAjax'), 'URL_FETCH_KONTRAHENCI' => $this->getLink('fetchKontrahenciAjax'), 'URL_CREATE_PRACOWNICY_GROUP' => $this->getLink('createPracownicyGroupAjax'), 'URL_CREATE_KONTRAHENCIS_GROUP' => $this->getLink('createKontrahenciGroupAjax'), 'URL_ADD_PRACOWNICY_TO_GROUP' => $this->getLink('addPracownicyToGroupAjax'), 'URL_ADD_KONTRAHENCI_TO_GROUP' => $this->getLink('addKontrahenciToGroupAjax'), 'URL_FETCH_GROUP_PRACOWNICY' => $this->getLink('fetchGroupPracownicyAjax'), 'URL_FETCH_GROUP_KONTRAHENCI' => $this->getLink('fetchGroupKontrahenciAjax'), 'URL_GENERATE_BI_AUDIT_RAPORT_AJAX' => $this->getLink('generateBiAuditRaportAjax'), 'DBG' => V::get('DBG', 0, $_GET), 'VIEW_KONTRAHENCI' => $this->defaultViewFormBiAudit([], 'KONTRAHENCI'), 'VIEW_PRACOWNICY' => $this->defaultViewFormBiAudit([], 'PRACOWNICY'), 'URL_FORM_DATA_CSV_FILE_AJAX' => $this->getLink('formDataCsvFileAjax'), 'URL_SAVE_FORM_CSV_FILE_AJAX' => $this->getLink('saveFormCsvFileAjax'), ]); echo '
'; // #smad-wrapper UI::dol(); } /** * Funkcja ajax do odebrania danych z przesłanego pliku CSV do parsowania */ public function formDataCsvFileAjaxAction() { Response::sendTryCatchJson(array($this, 'formDataCsvFileAjax')); } /** * Funkcja parsuje dane wgrywanego plku csv i zwraca dane w inputach */ public function formDataCsvFileAjax() { if (!file_exists($_FILES['file']['tmp_name'])) throw new Exception("Wybierz plik do przesłania."); $file = file($_FILES['file']['tmp_name']); // parsujemy csv to tablicy $arrayDataCsv = $this->csvToArray($file, ';', '"', '\n\r'); $i = 0; // tworzymy rekordy foreach ( $arrayDataCsv as $line ) { //$viewFormCol .= '
'.($i + 1).'. '; $lenArrayLine = count($line); // sprawdzenie długości tablicy $viewFormCol .= ''; $j = 0; foreach ( $line as $keyData => $rowData ) { // utworzenie nagłówków tabeli if( $i == 0) { $header .= '' . $keyData . ''; } // utworzenie inputa do edycji $viewFormCol .= ''; if ($j == $lenArrayLine - 1) { $viewFormCol .= ''; } $j++; } $viewFormCol .= ''; // $viewFormCol .= '
'; $i++; } $viewFormHtml = '
'. $header .''. $viewFormCol .'
Zaktualizuj
'; //return $viewFormHtml; return [ 'type' => 'success', 'msg' => 'OK', '__req_args' => $_REQUEST, '__args' => $args, 'body' => [ 'view' => $viewFormHtml, ] ]; } /** * Funkcja ajax do odebrania danych z przesłanego formularza z parsowanego CSV */ public function saveFormCsvFileAjaxAction() { Response::sendTryCatchJson(array($this, 'saveFormCsvFileAjax'), $args = 'JSON_FROM_REQUEST_BODY'); Response::sendTryCatchJson(array($this, 'saveFormCsvFileAjax')); } /** * Funkcja ajax do zapisania danych z przesłanego formularza z parsowanego CSV */ public function saveFormCsvFileAjax($args) { //dane z formularza $formData = V::get('formData', '', $args); $enumType = V::get('enumType', '', $args); $arrayInfo = array(); $arrayInfo['insert'] = 0; $arrayInfo['update'] = 0; $arrayInfo['error'] = 0; // pobranie nazwy tabeli z db $table = $this->getNameTableByEnum( strtoupper($enumType) ); if ( $table == null ) throw new Exception('Błąd zapisu. Tabela w db nie istnieje'); // unserialize data from serialize in javascript parse_str($formData, $resultArrayFormdata); if ( count($resultArrayFormdata['item']) == 0) { throw new Exception("Wystapił problem podczas przesyłania danych - brak przesłanych danych."); } // dodanie/aktualizacjia wpisu foreach ( $resultArrayFormdata['item'] as $line ) { // aktualizuj if ( array_key_exists('update', $line) ) { $response = $this->updateDataToDb($table, $line); } else { $response = $this->saveDataToDb($table, $line); } // tworzymy listę informacji o liczbie nowych/zaktualizowanych/z błedami rekordów $arrayInfo = $this->responseCountListInfoAboutSaveData($response, $arrayInfo); } return [ 'msg' => "Zapisano dane. Liczba nowych rekordów: (" . $arrayInfo['insert'] . "); Liczba zaktualizowanych rekordów: (" . $arrayInfo['update'] . ")'; Liczba rekordów nie zapisanych: (" . $arrayInfo['error'] . ")" , 'type' => "success", ]; } /** * Count list */ public function responseCountListInfoAboutSaveData($response, $arrayInfo) { if (!is_array($response)) throw new Exception('Wystapił bład podczas zapisu danych'); switch(key($response)) { case 'insert': $arrayInfo['insert'] = $arrayInfo['insert'] + 1; break; case 'update': $arrayInfo['update'] = $arrayInfo['insert'] + 1; break; case 'error': $arrayInfo['error'] = $arrayInfo['insert'] + 1; break; } return $countData; } /** * Function parse csv to array * @param $filename - file data from FILE * @param $delimiter - delimiter * @param $enclosure - * @param $escape - */ function csvToArray($filedata , $delimiter=';', $enclosure='"', $escape = '\\') { if(!$filedata || empty($filedata)) return false; $header = null; $data = array(); foreach( $filedata as $line) { $values = str_getcsv( $line, $delimiter, $enclosure, $escape ); if(!$header) $header = $values; else $data[] = array_combine( $header, $values ); } return $data; } /** * Save data in database */ public function saveDataToDb( $table, $arrayData, $override = false ) { $response = array(); try { if ($override) { DB::getPDO()->insertOrUpdate($table, array_merge($arrayData, [ '@insert' => [ 'A_RECORD_CREATE_DATE' => 'NOW()', 'A_RECORD_CREATE_AUTHOR' => "fv-sync-from-graffiti", ], '@update' => array_merge($arrayData, [ 'A_RECORD_UPDATE_DATE' => 'NOW()', 'A_RECORD_UPDATE_AUTHOR' => "fv-sync-from-graffiti", ]), ])); } else { $responseInsert = DB::getPDO()->insert($table, array_merge($arrayData, [ 'A_RECORD_CREATE_AUTHOR' => User::getLogin(), 'A_RECORD_CREATE_DATE' => 'NOW()', ])); } $response['insert'] = 1; } catch (Exception $e) { // aktualizacja //$response = $this->updateDataToDb( $table, $arrayData ); } return $response; } /** * Update data in database */ // public function updateDataToDb( $table, $arrayData ) { // $response = array(); // // // aktualizacja // try { // $responseInsert = DB::getPDO()->update($table, 'ID', $primaryKey, $arrayData); // $response['update'] = 1; // // } catch (Exception $e) { // DBG::log($e); // $response['error'] = 1; // } // // return $response; // } /** * Get name table by enum */ public function getNameTableByEnum($type) { $nameTable = null; switch ($type) { case 'KONTRAHENCI': $nameTable = 'BI_audit_ENERGA_RUM_KONTRAHENCI'; break; case 'PRACOWNICY': $nameTable = 'BI_audit_ENERGA_PRACOWNICY'; break; } return $nameTable; } public function fetchEnergaRumKontrahenciPowiazaniaAjaxAction() { Response::sendTryCatchJson(array($this, 'fetchEnergaRumKontrahenciPowiazaniaAjax')); // , $args = 'JSON_FROM_REQUEST_BODY'); } public function fetchEnergaRumKontrahenciPowiazaniaAjax($args) { $id = V::get('ID', 26, $_REQUEST, 'int'); $items = ACL::getAclByNamespace('default_db/BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA/BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA')->buildQuery([ 'cols' => [ // TODO:? propertyName = [] 'ID', 'A_ADM_COMPANY', 'L_APPOITMENT_USER', 'A_CLASSIFIED', 'A_STATUS', 'A_STATUS_INFO', 'BI_analiza_maxDepth', 'BI_analiza_minDepth', 'BI_analiza_onlyTargets', 'BI_analiza_reloadCache', 'FILE_STATUS', 'FILE_STATUS_info', 'L_APPOITMENT_USER', 'default_db__x3A__BI_audit_ENERGA_PRACOWNICY:BI_audit_ENERGA_PRACOWNICY', 'default_db__x3A__BI_audit_ENERGA_RUM_KONTRAHENCI:BI_audit_ENERGA_RUM_KONTRAHENCI', 'default_db__x3A__BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA_row:BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA_row', 'default_db__x3A__BI_audit_KW_requested_person:BI_audit_KW_requested_person', ], 'f_ID' => "{$id}", ])->getItems([ 'limit' => 10 ]); // $items = [ // [ 'ID' => 1, 'L_APPOITMENT_INFO' => 'x', 'BI_analiza_depth' => 'a', 'FILE_STATUS' => 1, 'FILE_STATUS_info' => 'test1'], // [ 'ID' => 2, 'L_APPOITMENT_INFO' => 'y', 'BI_analiza_depth' => 'b', 'FILE_STATUS' => 0, 'FILE_STATUS_info' => 'test2'], // [ 'ID' => 3, 'L_APPOITMENT_INFO' => 'z', 'BI_analiza_depth' => 'c', 'FILE_STATUS' => 1, 'FILE_STATUS_info' => 'test3'], // ]; return [ 'type' => 'success', 'msg' => 'OK', '__req_args' => $_REQUEST, '__args' => $args, 'body' => [ 'items' => $items, 'view' => $this->showPowiazaniaEnergaRumKontrahenciPowiazania($items), ] ]; } public function showPowiazaniaEnergaRumKontrahenciPowiazania($items) { $view = '
'; foreach ($items as $key => $row) { $view .= ''; } $view .= '
ID Adnotacje Głębokość analizy Status raportu Status raportu - informacje
'.$row["ID"].' '.$row["L_APPOITMENT_INFO"].' '.$row["BI_analiza_depth"].' '.$row["FILE_STATUS"].' '.$row["FILE_STATUS_info"].'
'; return $view; } public function fetchTestKrsAjaxAction() { Response::sendTryCatchJson(array($this, 'fetchTestKrsAjax')); // , $args = 'JSON_FROM_REQUEST_BODY'); } public function fetchTestKrsAjax($args) { $id = V::get('ID', 1, $_REQUEST, 'int'); $items = ACL::getAclByNamespace('default_db/BI_audit_KRS/BI_audit_KRS')->buildQuery([ 'cols' => [ // TODO:? propertyName = [] 'A_kod', 'A_kraj', 'A_miejscowosc', 'A_nrDomu', 'A_nrLokalu', 'A_poczta', 'A_ulica', 'ID', 'S_gmina', 'S_kraj', 'S_miejscowosc', 'S_powiat', 'S_wojewodztwo', 'dataDokumentu', 'default_db__x3A__BI_audit_KRS_company:BI_audit_KRS_company/ID', 'default_db__x3A__BI_audit_KRS_company:BI_audit_KRS_company/krs', 'default_db__x3A__BI_audit_KRS_company:BI_audit_KRS_company/nazwa', 'default_db__x3A__BI_audit_KRS_company:BI_audit_KRS_company/regon', 'default_db__x3A__BI_audit_KRS_person:BI_audit_KRS_person/ID', 'default_db__x3A__BI_audit_KRS_person:BI_audit_KRS_person/imiona', 'default_db__x3A__BI_audit_KRS_person:BI_audit_KRS_person/nazwisko', 'default_db__x3A__BI_audit_KRS_person:BI_audit_KRS_person/pesel', 'krs', 'nazwa', 'nip', 'regon', ], 'f_ID' => "{$id}", ])->getItems([ 'limit' => 10 ]); return [ 'type' => 'success', 'msg' => 'KRS', '__req_args' => $_REQUEST, '__args' => $args, 'body' => [ 'items' => $items, ] ]; } public function fetchTestCeidgAjaxAction() { Response::sendTryCatchJson(array($this, 'fetchTestCeidgAjax')); // , $args = 'JSON_FROM_REQUEST_BODY'); } public function fetchTestCeidgAjax($args) { $id = V::get('ID', 0, $_REQUEST, 'int'); $items = ACL::getAclByNamespace('default_db/BI_audit_CEIDG/BI_audit_CEIDG')->buildQuery([ 'cols' => [ // TODO:? propertyName = [] 'ID', 'budynek', 'firma', 'gmina', 'identyfikatorWpisu', 'imie', 'kodPocztowy', 'kraj', 'lokal', 'miejscowosc', 'nazwisko', 'nip', 'poczta', 'powiat', 'regon', 'ulica', 'default_db__x3A__BI_audit_CEIDG_pelnomocnicy:BI_audit_CEIDG_pelnomocnicy/ID', 'default_db__x3A__BI_audit_CEIDG_pelnomocnicy:BI_audit_CEIDG_pelnomocnicy/budynek', 'default_db__x3A__BI_audit_CEIDG_pelnomocnicy:BI_audit_CEIDG_pelnomocnicy/gmina', 'default_db__x3A__BI_audit_CEIDG_pelnomocnicy:BI_audit_CEIDG_pelnomocnicy/kodPocztowy', 'default_db__x3A__BI_audit_CEIDG_pelnomocnicy:BI_audit_CEIDG_pelnomocnicy/lokal', 'default_db__x3A__BI_audit_CEIDG_pelnomocnicy:BI_audit_CEIDG_pelnomocnicy/miejscowosc', 'default_db__x3A__BI_audit_CEIDG_pelnomocnicy:BI_audit_CEIDG_pelnomocnicy/nazwa', 'default_db__x3A__BI_audit_CEIDG_pelnomocnicy:BI_audit_CEIDG_pelnomocnicy/nip', 'default_db__x3A__BI_audit_CEIDG_pelnomocnicy:BI_audit_CEIDG_pelnomocnicy/poczta', 'default_db__x3A__BI_audit_CEIDG_pelnomocnicy:BI_audit_CEIDG_pelnomocnicy/powiat', 'default_db__x3A__BI_audit_CEIDG_pelnomocnicy:BI_audit_CEIDG_pelnomocnicy/ulica', 'default_db__x3A__BI_audit_CEIDG_pelnomocnicy:BI_audit_CEIDG_pelnomocnicy/wojewodztwo', 'default_db__x3A__BI_audit_CEIDG_powiazania:BI_audit_CEIDG_powiazania/ID', 'default_db__x3A__BI_audit_CEIDG_powiazania:BI_audit_CEIDG_powiazania/nip', 'default_db__x3A__BI_audit_CEIDG_powiazania:BI_audit_CEIDG_powiazania/regon', ], // 'f_ID' => $id, ])->getItems([ 'limit' => 10 ]); return [ 'type' => 'success', 'msg' => 'CEIDG', '__req_args' => $_REQUEST, '__args' => $args, 'body' => [ 'items' => $items, ] ]; } /** * KONTRAHENCI */ public function fetchKontrahenciAjaxAction() { Response::sendTryCatchJson(array($this, 'fetchKontrahenciAjax')); } public function fetchKontrahenciAjax($args) { $idGroup = V::get('filterIdGroup', 0, $_REQUEST, 'int'); // TODO: dla filtrów "Wysokiego ryzyka" - przekazywany ID rekodu if ($idGroup < 0) $idGroup = 0; $limit = 5; $limitstart = V::get('limitstart', 0, $_REQUEST, 'int'); if ($limitstart < 0) $limitstart = 0; $page = V::get('page', 0, $_REQUEST, 'int'); $limitstart = ($page - 1) * $limit; $search = V::get('search', '', $_REQUEST); $searchParams = []; if (!empty($search)) { $ogcSearch = "*{$search}*"; // wildCard="*" -> mysql '%' $searchParams['ogc:Filter'] = ' NIP ' . $ogcSearch . ' Nazwa_grupy_kapitalowej ' . $ogcSearch . ' Pelna_nazwa_kontrahenta ' . $ogcSearch . ' '; } $backRefFilter = []; if ($idGroup > 0) { $backRefFilter['__backRef'] = [ 'namespace' => 'default_db/BI_audit_ENERGA_KONTRAHENCI_group/BI_audit_ENERGA_KONTRAHENCI_group', 'primaryKey' => $idGroup, 'fieldName' => 'default_db__x3A__BI_audit_ENERGA_RUM_KONTRAHENCI:BI_audit_ENERGA_RUM_KONTRAHENCI', ]; // - ID // - ID_USER - id usera który stworzył grupę (tylko dla niego będzie widoczna) // - NAZWA - nazwa grupy // - 'default_db/BI_audit_ENERGA_RUM_KONTRAHENCI/BI_audit_ENERGA_KONTRAHENCI' minOccurs="0" maxOccurs="unbounded" } $acl = ACL::getAclByNamespace('default_db/BI_audit_ENERGA_RUM_KONTRAHENCI/BI_audit_ENERGA_RUM_KONTRAHENCI'); $query = $acl->buildQuery(array_merge([ 'cols' => [ // TODO:? propertyName = [] 'ID', 'Nazwa_grupy_kapitalowej', 'Pelna_nazwa_kontrahenta', 'Numer_kontrahenta', 'Skrocona_Nazwa_Kontrahenta', 'Typ_kontrahenta', 'NIP', 'KRS', 'REGON', 'PESEL', 'Forma_prawna_dzialalnosci', 'Ulica', 'Numer_budynku', 'Numer_mieszkania_lokalu', 'Miejscowosc', 'Kod_pocztowy', 'Kraj', 'Telefon', 'Fax', 'Mail', 'A_ADM_COMPANY', 'A_CLASSIFIED', 'A_STATUS', 'A_STATUS_INFO', 'Dodano', 'L_APPOITMENT_USER', 'Podmiot_dominujacy', 'Tytul_dokumentu', 'ownCompany', 'uwagi', ], //'f_ID' => $id, 'limit' => $limit, 'limitstart' => $limitstart, // offset ], $searchParams, $backRefFilter)); $total = $query->getTotal(); $items = $query->getItems(); $pagination = array(); $pagination['total_items'] = $total; $pagination['size'] = ceil($total/$limit); // pages size $pagination['current'] = $page; $pagination['limit'] = $limit; return [ 'type' => 'success', 'msg' => 'showKontrajenci', '__req_args' => $_REQUEST, '__args' => $args, 'body' => [ 'items' => $items, //'view' => $this->htmlViewFormBiAudit($items, 'KONTRAHENCI'), 'pagination' => $pagination ] ]; } // public function fetchKontrahenciAjaxOld($args) { // //$id = V::get('ID', 1, $_REQUEST, 'int'); // $items = ACL::getAclByNamespace('default_db/BI_audit_ENERGA_RUM_KONTRAHENCI/BI_audit_ENERGA_RUM_KONTRAHENCI')->buildQuery([ // 'cols' => [ // TODO:? propertyName = [] // 'ID', // 'Nazwa_grupy_kapitalowej', // 'Pelna_nazwa_kontrahenta', // 'NIP', // 'KRS', // 'REGON', // 'Miejscowosc', // 'Kod_pocztowy', // 'Telefon' // ], // //'f_ID' => $id, // ])->getItems([ // 'limit' => 10 // ]); // // return [ // 'type' => 'success', // 'msg' => 'showKontrahenci', // '__req_args' => $_REQUEST, // '__args' => $args, // 'body' => [ // 'items' => $items, // 'view' => $this->htmlViewFormBiAudit($items, 'KONTRAHENCI') // ] // ]; // } public function showTableKontrahenci($items) { $view = '
ID Nazwa grupy kapitalowej Pelna nazwa kontrahenta Numer kontrahenta Skrócona nazwa kontrahenta Typ_kontrahenta NIP KRS Regon PESEL Forma prawna działalności Ulica Numer budynku Numer mieszkania lokalu Miejscowosc Kod pocztowy Kraj Telefon Fax Mail A_ADM_COMPANY A_CLASSIFIED A_STATUS A_STATUS_INFO Dodano L_APPOITMENT_USER Podmiot dominujacy Tytul dokumentu ownCompany uwagi
'; return $view; } // tworzenie grupy kontrahentów public function createKontrahenciGroupAjaxAction() { Response::sendTryCatchJson(array($this, 'createKontrahenciGroupAjax'), $args = 'JSON_FROM_REQUEST_BODY'); // użyj tej wersji jeśli chcesz wysyłać z przelgądarki JSON-a post-em } public function createKontrahenciGroupAjax($args) { $nazwa = V::get('NAZWA', '', $args); // TODO: vlaidacja nazwy - sprawdzenie czy już nie występuje $idGroup = DB::getPDO()->insert('BI_audit_ENERGA_KONTRAHENCI_group', [ 'A_RECORD_CREATE_AUTHOR' => User::getLogin(), 'A_RECORD_CREATE_DATE' => 'NOW()', 'NAZWA' => $nazwa, 'ID_USER' => User::getID() ]); return [ 'msg' => "Utworzona grupę {$idGroup}", 'type' => "success", 'body' => [ 'id' => $idGroup, 'nazwa' => $nazwa ] ]; } // Dodanie do grupy filtra kontrahentów public function addKontrahenciToGroupAjaxAction() { // Response::sendTryCatchJson(array($this, 'addKontrahenciToGroupAjax'), $args = 'JSON_FROM_REQUEST_BODY'); // użyj tej wersji jeśli chcesz wysyłać z przelgądarki JSON-a post-em Response::sendTryCatchJson(array($this, 'addKontrahenciToGroupAjax')); } public function addKontrahenciToGroupAjax($args) { $idGroup = V::get('idGroup', 0, $_REQUEST, 'int'); $kontrahenciIds = V::get('kontrahenciIds', [], $_REQUEST, 'array'); // validate if (!$idGroup) throw new Exception("Nie wybrano grupa"); if (!$kontrahenciIds || count($kontrahenciIds) == 0 ) throw new Exception("Proszę wybrać kontrahentów"); $group = ACL::getAclByNamespace('default_db/BI_audit_ENERGA_KONTRAHENCI_group/BI_audit_ENERGA_KONTRAHENCI_group')->buildQuery([ 'cols' => [ // TODO:? propertyName = [] 'ID', 'ID_USER', 'NAZWA', ], // 'f_ID_USER' => User::getID() ])->getItem($idGroup); if (!$group) throw new Exception("Grupa nie istnieje"); if (User::getID() != $group['ID_USER']) throw new Exception("Brak uprawnień do grupy"); // $refGrupyToPracownicy = ACL::getRefTable('obiekt główny', 'nazwa pola - powiązane rekordy'); $refGrupyToKontrahenci = ACL::getRefTable('default_db/BI_audit_ENERGA_KONTRAHENCI_group/BI_audit_ENERGA_KONTRAHENCI_group', 'default_db__x3A__BI_audit_ENERGA_RUM_KONTRAHENCI:BI_audit_ENERGA_RUM_KONTRAHENCI'); foreach ($kontrahenciIds as $kontrahentIds) { DB::getPDO()->insert($refGrupyToKontrahenci, ['PRIMARY_KEY' => $idGroup, 'REMOTE_PRIMARY_KEY' => $kontrahentIds]); } return [ 'msg' => "Powiązano kontrahentów z grupą {$idGroup}", 'type' => "success", ]; } public function fetchGroupKontrahenciAjaxAction() { Response::sendTryCatchJson(array($this, 'fetchGroupKontrahenciAjax')); } public function fetchGroupKontrahenciAjax() { $query = ACL::getAclByNamespace('default_db/BI_audit_ENERGA_KONTRAHENCI_group/BI_audit_ENERGA_KONTRAHENCI_group')->buildQuery([ 'cols' => [ // TODO:? propertyName = [] 'ID', 'ID_USER', 'NAZWA', ], 'f_ID_USER' => "=" . User::getID(), 'f_A_STATUS' => "!DELETED", ]); $itemsKontrahenci = $query->getItems(); if (empty($itemsKontrahenci)) throw new AlertWarningException("Grupy nie istnieją"); $arrayGroupKontrahenci = array(); foreach ($itemsKontrahenci as $item) { // if (User::getID() != $item['ID_USER']) throw new Exception("Brak uprawnień do grupy"); $arrayGroupKontrahenci[] = [ 'NAZWA' => $item['NAZWA'], 'ID' => $item['ID'], ]; } return [ 'type' => 'success', 'msg' => 'fetchGroupKontrahenciAjax', '__req_args' => $_REQUEST, '__args' => $args, 'body' => [ 'itemsGroupKontrahenci' => $arrayGroupKontrahenci ] ]; } /* * PRACOWNICY */ public function fetchPracownicyAjaxAction() { Response::sendTryCatchJson(array($this, 'fetchPracownicyAjax')); } public function fetchPracownicyAjax($args) { $idGroup = V::get('filterIdGroup', 0, $_REQUEST, 'int'); // TODO: dla filtrów "Wysokiego ryzyka" - przekazywany ID rekodu if ($idGroup < 0) $idGroup = 0; $limit = 2; $limitstart = V::get('limitstart', 0, $_REQUEST, 'int'); if ($limitstart < 0) $limitstart = 0; $page = V::get('page', 0, $_REQUEST, 'int'); $limitstart = ($page - 1) * $limit; $search = V::get('search', '', $_REQUEST); $searchParams = []; if (!empty($search)) { $ogcSearch = "*{$search}*"; // wildCard="*" -> mysql '%' $searchParams['ogc:Filter'] = ' nip ' . $ogcSearch . ' nazwisko ' . $ogcSearch . ' '; } $backRefFilter = []; if ($idGroup > 0) { $backRefFilter['__backRef'] = [ 'namespace' => 'default_db/BI_audit_ENERGA_PRACOWNICY_group/BI_audit_ENERGA_PRACOWNICY_group', // TODO: nowy rejetr na grupy / filty pracowników 'primaryKey' => $idGroup, 'fieldName' => 'default_db__x3A__BI_audit_ENERGA_PRACOWNICY:BI_audit_ENERGA_PRACOWNICY', ]; // TODO: Storage dodać obiekt xsd default_db/BI_audit_ENERGA_PRACOWNICY_group/BI_audit_ENERGA_PRACOWNICY_group: // - ID // - ID_USER - id usera który stworzył grupę (tylko dla niego będzie widoczna) // - NAZWA - nazwa grupy // - 'default_db/BI_audit_ENERGA_PRACOWNICY/BI_audit_ENERGA_PRACOWNICY' minOccurs="0" maxOccurs="unbounded" } $acl = ACL::getAclByNamespace('default_db/BI_audit_ENERGA_PRACOWNICY/BI_audit_ENERGA_PRACOWNICY'); $query = $acl->buildQuery(array_merge([ 'cols' => [ // TODO:? propertyName = [] 'ID', 'imiona', 'nazwisko', 'nip', 'pesel', 'regon', 'source', 'A_ADM_COMPANY', 'A_CLASSIFIED', 'A_STATUS', 'A_STATUS_INFO', 'L_APPOITMENT_USER', 'default_db__x3A__BI_audit_ENERGA_PRACOWNICY_adresy:BI_audit_ENERGA_PRACOWNICY_adresy/*' ], //'f_ID' => $id, 'limit' => $limit, 'limitstart' => $limitstart, // offset // 'order_by' => 'ID', // sortowanie po kolumnie // 'order_dir' => 'DESC', // kierunek sortowania // 'f_nip' = "=12345", // szukamy dokładnie tej wartości - mysql: where nip = "12345" // 'f_nip' = "12345", // szukamy dokładnie tej wartości - mysql: where nip like "%12345%" // 'f_nip' = "12345%", // szukamy dokładnie tej wartości - mysql: where nip like "12345%" // 'f_ID' = "=12345", // szukamy dokładnie tej wartości - mysql: where ID = "12345" ], $searchParams, $backRefFilter)); $total = $query->getTotal(); $items = $query->getItems(); $pagination = array(); $pagination['total_items'] = $total; $pagination['size'] = ceil($total/$limit); // pages size $pagination['current'] = $page; $pagination['limit'] = $limit; // { // tworzenie własnego zapytanie mysql // $rootTableName = $acl->getRootTableName(); // DB::getPDO()->fetchAll(" // select t.* // from {$rootTableName} t // where t.ID in ( // select x.ID // from ... x // where // ) // "); // } return [ 'type' => 'success', 'msg' => 'showPracownicy', '__req_args' => $_REQUEST, '__args' => $args, 'body' => [ 'items' => $items, //'view' => $this->htmlViewFormBiAudit($items, 'PRACOWNICY'), 'pagination' => $pagination ] ]; } public function showTablePracownicy() { $view = '
ID Imię/Imiona Nazwisko NIP Pesel Regon source A_ADM_COMPANY A_CLASSIFIED A_STATUS A_STATUS_INFO L_APPOITMENT_USER Adresy
'; return $view; } // tworzenie grupy pracowników public function createPracownicyGroupAjaxAction() { Response::sendTryCatchJson(array($this, 'createPracownicyGroupAjax'), $args = 'JSON_FROM_REQUEST_BODY'); // użyj tej wersji jeśli chcesz wysyłać z przelgądarki JSON-a post-em // Response::sendTryCatchJson(array($this, 'createPracownicyGroupAjax')); } public function createPracownicyGroupAjax($args) { $nazwa = V::get('NAZWA', '', $args); // TODO: vlaidacja nazwy - sprawdzenie czy już nie występuje // validate if (!$nazwa) throw new Exception("Nie wybrano grupa"); if (!$kontrahenciIds || count($kontrahenciIds) == 0 ) throw new Exception("Proszę wybrać kontrahentów"); $idGroup = DB::getPDO()->insert('BI_audit_ENERGA_PRACOWNICY_group', [ 'A_RECORD_CREATE_AUTHOR' => User::getLogin(), 'A_RECORD_CREATE_DATE' => 'NOW()', // 'A_STATUS' => 'WAITING', // jeśli trzeba to ustawić 'NAZWA' => $nazwa, ]); // DB::getPDO()->insert('BI_audit_ENERGA_PRACOWNICY_group_HIST', [ // 'A_RECORD_CREATE_AUTHOR' => User::getLogin(), // 'A_RECORD_CREATE_DATE' => 'NOW()', // 'ID_USERS2' => $idRaport, // // 'A_STATUS' => 'WAITING', // jeśli trzeba to ustawić // 'NAZWA' => $nazwa, // ]); return [ 'msg' => "Utworzona grupę {$idGroup}", 'type' => "success", 'body' => [ 'id' => $idGroup, ] ]; } // Dodanie do grupy filtra pracowników public function addPracownicyToGroupAjaxAction() { // Response::sendTryCatchJson(array($this, 'addPracownicyToGroupAjax'), $args = 'JSON_FROM_REQUEST_BODY'); // użyj tej wersji jeśli chcesz wysyłać z przelgądarki JSON-a post-em Response::sendTryCatchJson(array($this, 'addPracownicyToGroupAjax')); } public function addPracownicyToGroupAjax($args) { $idGroup = V::get('idGroup', 0, $_REQUEST, 'int'); $pracownicyIds = V::get('pracownicyIds', [], $_REQUEST, 'array'); // validate if (!$nazwa) throw new Exception("Nie wybrano grupa"); if (!$pracownicyIds || count($pracownicyIds) == 0 ) throw new Exception("Proszę wybrać pracowników"); // TODO: SPRWADZENIE CZY NIE DODANOU JUZ PRACOWNIKAS // default_db/BI_audit_ENERGA_PRACOWNICY_group/BI_audit_ENERGA_PRACOWNICY_group // default_db/BI_audit_ENERGA_PRACOWNICY/BI_audit_ENERGA_PRACOWNICY $group = ACL::getAclByNamespace('default_db/BI_audit_ENERGA_PRACOWNICY_group/BI_audit_ENERGA_PRACOWNICY_group')->buildQuery([ 'cols' => [ // TODO:? propertyName = [] 'ID', 'ID_USER', 'NAZWA', ], // 'f_ID_USER' => User::getID() ])->getItem($idGroup); if (!$group) throw new Exception("Grupa nie istnieje"); if (User::getID() != $group['ID_USER']) throw new Exception("Brak uprawnień do grupy"); // $refGrupyToPracownicy = ACL::getRefTable('obiekt główny', 'nazwa pola - powiązane rekordy'); $refGrupyToPracownicy = ACL::getRefTable('default_db/BI_audit_ENERGA_PRACOWNICY_group/BI_audit_ENERGA_PRACOWNICY_group', 'default_db__x3A__BI_audit_ENERGA_PRACOWNICY:BI_audit_ENERGA_PRACOWNICY'); foreach ($pracownicyIds as $idPracownik) { DB::getPDO()->insert($refGrupyToPracownicy, ['PRIMARY_KEY' => $idGroup, 'REMOTE_PRIMARY_KEY' => $idPracownik]); } return [ 'msg' => "Powiązano pracowników z grupą {$idGroup}", 'type' => "success", ]; } public function fetchGroupPracownicyAjaxAction() { Response::sendTryCatchJson(array($this, 'fetchGroupPracownicyAjax')); } public function fetchGroupPracownicyAjax() { $query = ACL::getAclByNamespace('default_db/BI_audit_ENERGA_PRACOWNICY_group/BI_audit_ENERGA_PRACOWNICY_group')->buildQuery([ 'cols' => [ // TODO:? propertyName = [] 'ID', 'ID_USER', 'NAZWA', ], 'f_ID_USER' => "=" . User::getID(), // szukamy dokładnie tej wartości - mysql: where ID_USER = "1" 'f_A_STATUS' => "!DELETED", // `A_STATUS` != 'DELETED' ]); $items = $query->getItems(); if (empty($items)) throw new AlertWarningException("Grupy nie istnieją"); $arrayGroupPracownicy = array(); foreach ($items as $item) { // if (User::getID() != $item['ID_USER']) throw new Exception("Brak uprawnień do grupy"); // or skip - continue; $arrayGroupPracownicy[] = [ 'ID' => $item['ID'], 'NAZWA' => $item['NAZWA'], ]; } return [ 'type' => 'success', 'msg' => 'fetchGroupPracownicyAjax', '__req_args' => $_REQUEST, '__args' => $args, 'body' => [ 'itmesGroupPracownicy' => $arrayGroupPracownicy ] ]; } // link do ackji w php: $saveFormUrl = $this->getLink('saveRaportAjax'); // przekazać link do JavaScript i tam: // window.fetch('{$saveFormUrl}', { ... }).then(...) - dokumentacja: https://github.com/github/fetch public function generateBiAuditRaportAjaxAction() { //Response::sendTryCatchJson(array($this, 'saveRaportAjax'), $args = 'JSON_FROM_REQUEST_BODY'); // użyj tej wersji jeśli chcesz wysyłać z przelgądarki JSON-a post-em Response::sendTryCatchJson(array($this, 'generateBiAuditRaportAjax'), $args = 'JSON_FROM_REQUEST_BODY'); //Response::sendTryCatchJson(array($this, 'generateBiAuditRaportAjax')); } public function generateBiAuditRaportAjax($args) { // głebokość powiazan $depthValue = V::get('depthValue', '', $args); if (!$depthValue) { throw new Exception("Nie podano wartości dla głębokości powiązań"); } // Tworzenie relacji Raport do Pracownicy $pracownicyIds = []; // array z nr ID na podstawie wysłanego formularza $pracownicyIds = V::get('pracownicyIds', '', $args); // walidacja id pracowników if (!$pracownicyIds) { throw new Exception("Nie wybrano pracowników"); } $kontrahenciIds = []; // array z nr ID na podstawie wysłanego formularza $kontrahenciIds = V::get('kontrahenciIds', '', $args); // walidacja id kontrahetów if (!$kontrahenciIds) { throw new Exception("Nie wybrano kontrahentów"); } // Tworzenie rekrodu w bazie - Raport - $idRaport = DB::getPDO()->insert('BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA', [ 'A_RECORD_CREATE_AUTHOR' => User::getLogin(), 'A_RECORD_CREATE_DATE' => 'NOW()', 'A_STATUS' => 'WAITING', // TODO: czy trzeba to ustawić (pytanie do Mariusza) 'FILE_STATUS' => "TO_GENERATE", 'BI_analiza_minDepth' => 1, 'BI_analiza_maxDepth' => $depthValue ]); // Tworzenie relacji Raport do Pracownicy $refPowiazaniaToPracownicy = ACL::getRefTable('default_db/BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA/BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA', 'default_db__x3A__BI_audit_ENERGA_PRACOWNICY:BI_audit_ENERGA_PRACOWNICY'); foreach ($pracownicyIds as $idPracownik) { DB::getPDO()->insert($refPowiazaniaToPracownicy, ['PRIMARY_KEY' => $idRaport, 'REMOTE_PRIMARY_KEY' => $idPracownik]); } // Tworzenie relacji Raport do Kontrahenci - analogicznie jak wyżej $refPowiazaniaToKontrahenci = ACL::getRefTable('default_db/BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA/BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA', 'default_db__x3A__BI_audit_ENERGA_RUM_KONTRAHENCI:BI_audit_ENERGA_RUM_KONTRAHENCI'); foreach ($kontrahenciIds as $idKontrahent) { DB::getPDO()->insert($refPowiazaniaToKontrahenci, ['PRIMARY_KEY' => $idRaport, 'REMOTE_PRIMARY_KEY' => $idKontrahent ]); } // ... return [ 'msg' => "Zadanie do wygnerowania raportu zostało zapisane.", 'type' => "success", 'body' => [ 'id' => $idRaport, ] ]; } /** * Widok formularza dodawania pracowników i kontrahentów */ public function defaultViewFormBiAudit($items, $type) { $activeFormSteps = ''; switch($type) { case 'KONTRAHENCI': $activeFormStepsKontrahent = 'complete'; $titleHeader = 'KONTRAHENCI'; $groupFilterList = '
'; $formAddNewData ='
  • IMPORT KONTRAHENCI
  • '; //todo: dodać obsługe doddawania kontrahentow $showButtonNextStep = ''; $pagination_form = '
    '; break; case 'PRACOWNICY': $titleHeader = 'PRACOWNICY'; $groupFilterList = '
    '; $formAddNewData ='
  • IMPORT PRACOWNIKÓW
  • '; //todo: dodać obsługe doddawania pracownikow $showButtonNextStep = 'DODAJ DO ANALIZY'; $pagination_form = '
    '; break; } $view = '
     
    Krok 1
    PRACOWNICY
     
    Krok 2
    KONTRAHENCI
     
    Krok 3
    SZUKANIE POWIĄZAŃ
    głębokość powiązań:

    Wszyscy

    ' . $this->showListDataByType($items, $type) . '
    '. $pagination_form .'
    ' . $showButtonNextStep . '
    '; return $view; } public function showListDataByType($items, $type='PRACOWNICY') { switch ($type) { case 'PRACOWNICY': return $this->showTablePracownicy(); break; case 'KONTRAHENCI': return $this->showTableKontrahenci($items); break; } } }