<?php

/*
  getartiklicsv.php
  
  Primer poziva API funkcije GETARTIKLI (cenovnik) za BAKI iz PHP-a
 
  Pokretanjem ovog skripta preko veb servera, on ce pristupiti API-ju, pokrenuti
  API funkciju GETARTIKLI i preuyeti iy nje podatke o artiklima. Zatim ce 
  sifarnik konvertovati u CSV format i poslati ga veb klijentu kao tekst datoteku.
  
  Opis podesavanja se nalazi u komentarima u samoj skripti.
 
  U radnoj verziji, skript se nalazi na C:\InfoAPI2018\Abyss\htdocs\phptest\baki 
  a pristupa joj se na http://localhost:31000/phptest/baki/getartiklicsv.php (Abyss 
  treba da bude pokrenut)
  
  Provera izvrsenja skripte se radi tako sto se skripta pokrene preko veb servera. 
  Ako radi ispravno, vratice podatke u CSV formatu. Ako ne radi, prikazace neku gresku.
     
 */

header('Content-Type: text/html; charset=utf-8'); 

// naziv API funkcije koja se poziva
$mAPIFunctionName = 'kom_baki001';
// $mAPIFunctionName = 'getwporartiklilist';

// U $m_image_web_url treba podesiti veb putanju do direktorijuma gde se nalaze 
// slike artikala. Prilikom generisanja CSV sadrzaja, ova puitanja ce biti prikljucena 
// nazivima datoteka slika i tako ce se dobiti puna putanja do slike.
// $m_image_web_url = "http://www.somedomain.com/images/";
$m_image_web_url = "http://www.bakidoo.com/";

// naziv privremene datoteke u koju treba snimiti preuzete podatke
$m_temp_db_file = 'artikli.db';

// ucitavanje konfiguracije za pristup API-ju 
// parametri konekcije na API server se nalaze u 
// C:\InfoAPI2018\Abyss\htdocs\phptest\apitest\infoapi\config.php
include_once '../apitest/infoapi/infoapi.php';

$miapiHandler = new iapiHandler;
$miapiHandler->APIServerURL = SERVER_URL;      // definisano u apitest/config.php
//$miapiHandler->APIServerURL = "http://baki.infosys.rs:31000/InfoAPI.aspx";

//echo SERVER_URL . "\n\r";

$miapiHandler->DebugLevel = DEBUG_LEVEL;       // definisano u apitest/config.php
$miapiHandler->DebugSections = DEBUG_SECTIONS; // definisano u apitest/config.php

$mQueryEnvelope = new iapiQueryEnvelope ($mAPIFunctionName);
$mQueryEnvelope->username = USERNAME;          // definisano u apitest/config.php
$mQueryEnvelope->password = PASSWORD;          // definisano u apitest/config.php


//==== DALJE ODAVDE NE TREBA MENJATI KOD BEZ PREKE POTREBE ====//

$mQuery = $mQueryEnvelope;

// moze se navesti lista polja koja treba vratiti u rezultatu
//$mQuery->data->fields = 'id_art, stanje, cena, def_mp_mar, pdv_st_art';
$mQuery->data->fields = 'id_art, naziv_art, barcode, katal_br, stanje_op, reg_cena, img1_path, c1, c2, c3';
        

// po potrebi se može podesiti filter nad podacima
//$m_filter = new iapiFilter ('NE', 'cena', 0);   // artikli koji imaju cenu
//$m_filter = new iapiFilter ('GT', 'stanje', 0); // artikli kojih ima na stanju
//$mQuery->data->filter = $m_filter;

$mQuery->data->order = 'id_art';
$mQuery->data->result_database_format = 'SQLITE';

$mResponse  = $miapiHandler->Execute($mQuery);

$m_error = false;

if ($mResponse->error_state !='ok') {
  $m_error = true;
?>
Greska: <?php echo $mResponse->error_state; ?> - <?php echo $mResponse->error_message; ?>
<?php
} else {

  if ($mResponse->data->error_state !='ok') {
    $m_error = true;
    header("HTTP/1.0 550 API ERROR");
?>
Greska: <?php echo $mResponse->data->error_state; ?> - <?php echo $mResponse->data->error_message; ?>
<?php
  }

}

if (!$m_error) {
   
    $mdatabasedata = base64_decode ($mResponse->data->databaseattachment);

    $m_output_file = fopen($m_temp_db_file, 'w');
    fwrite($m_output_file, $mdatabasedata);
    fclose($m_output_file);

    //echo 'data stored to artikli.db';
    
    echo '"id";"naziv";"barcode";"part_no";"kolicina";"cena";"preporucena_cena";"valuta";"kategorija";"putanja_do_slike";"c1";"c2";"c3"' . "\r\n";
    
    try {
      $db = new PDO('sqlite:artikli.db');

      $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
      
      $data = $db->query('SELECT * FROM listaartikala');
      
      foreach($data as $row) {
        echo '"' . $row['id_art'] . '";';     // id
        echo '"' . str_replace('"', '', $row['naziv_art']) . '";';   // naziv
        echo '"' . $row['barcode'] . '";';   //  barcode
        echo '"' . $row['katal_br'] . '";';   // part_no
        echo $row['stanje_op'] . ';';   // kolicina
        echo $row['reg_cena'] .';';   // cena
        echo ';';   // preporucena_cena
        echo '"RSD";';   // valuta
        echo '"";';   // kategorija
        
        if (! empty ($row['img1_path'])) {
          $m_img_path = $m_image_web_url . $row['img1_path'];
        } else {
          $m_img_path = '';
        }
        
        echo '"' . $m_img_path . '";';   // putanja_do_slike
        
        echo '"' . $row['c1'] . '";';    // c1
        
        echo '"' . $row['c2'] . '";';    // c2
        
        echo '"' . $row['c3'] . '"';     // c3
        
        echo "\r\n";
        
      }

      $data->closeCursor();
      $data = NULL;
      $db = NULL;
      
      //unlink ($m_temp_db_file);
    }
    catch(PDOException $e) {
      print 'Exception : '.$e->getMessage();
    }

}
?>
<?php //include_once 'inc_sysinfo.php'; ?>