"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', [
'BASE_URLS' => Request::getPathUri(),
'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']);
//$showCheckbox = V::get('showCheckbox', '', $args);
$showCheckbox = V::get('showCheckbox', 0, $_REQUEST, 'string');
// parsujemy csv to tablicy
$arrayDataCsv = $this->csvToArray($file, ';', '"', '\n\r');
$i = 0;
// tworzymy rekordy
foreach ( $arrayDataCsv as $line ) {
//$viewFormCol .= '';
//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);
$override = false; // false - nie nadpisujemy danych
$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.");
}
// ustawienie true jeśli wyrabno nadpisanie danych
if ( isset($resultArrayFormdata['override']) ) { $override = true; } // aktualizuj rekordy/nadpisz istniejace
// dodanie/aktualizacjia wpisu
foreach ( $resultArrayFormdata['item'] as $line ) {
$response = $this->saveDataToDb($table, $line, $override);
// tworzymy listę informacji o liczbie nowych/zaktualizowanych/z błedami rekordów
$arrayInfo = $this->responseCountListInfoAboutSaveData($response, $arrayInfo);
}
// utworzenie komunikatów
if ( isset($arrayInfo['insert']) ) { $textInsert = "Liczba nowych rekordów: (" . $arrayInfo['insert'] . ");"; }
if ( isset($arrayInfo['error']) ) { $textError = "Liczba nie zapisanych rekordów (" . $arrayInfo['insert'] . ");"; }
return [
'msg' => "Zapisano dane. " . $textInsert . " " . $textError ,
'type' => "success",
];
}
/**
* Count list
*/
public function responseCountListInfoAboutSaveData($response, $arrayInfo) {
if (!is_array($response)) throw new Exception('Wystapił bład podczas zapisu danych');
$countData = array();
switch(key($response)) {
case 'insert':
$countData['insert'] = $arrayInfo['insert'] + 1;
break;
case 'error':
$countData['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) {
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 = '