Files
PVM/public_html/classes/PdfOrd.class.php
2021-10-20 16:32:11 +02:00

104 lines
4.1 KiB
PHP

<?php
class PdfOrd {
private $arr_whereCond = array();
public function whereDate($k, $v) {
$v = \Utility\Date::isValidUnixtime($v) ? strftime(\Format::strftimeYMD, $v) : $v;
return $this->where($k, $v);
}
public function where($k, $v = false) {
if ($v !== false) {
if (in_array($k, array("gestione", "data_ord", "num_ord"))) {
$k = "dtb_ord_pdf." . $k;
}
$this->arr_whereCond[] = array("k" => $k, "v" => $v);
}
return $this;
}
public function getList() {
$Ret = new Ret;
if (count($this->arr_whereCond) > 0) {
$sql = "SELECT t.*,
dtb_ord_pdf.filename,
dtb_ord_pdf.filesize,
dtb_ord_pdf.utente AS user_creator,
dtb_ord_pdf.data_stampa
FROM dtb_ord_pdf INNER JOIN
( SELECT dtb_ordt.num_ord,
dtb_ordt.data_ord,
dtb_ordt.gestione,
MAX(versione) AS versione
FROM dtb_ord_pdf INNER JOIN dtb_ordt ON dtb_ordt.data_ord = dtb_ord_pdf.data_ord AND
dtb_ordt.num_ord = dtb_ord_pdf.num_ord AND
dtb_ordt.gestione = dtb_ord_pdf.gestione
WHERE filecontent IS NOT NULL
GROUP BY dtb_ordt.num_ord, dtb_ordt.data_ord, dtb_ordt.gestione
) t ON dtb_ord_pdf.num_ord = t.num_ord AND
dtb_ord_pdf.data_ord = t.data_ord AND
dtb_ord_pdf.gestione = t.gestione AND
dtb_ord_pdf.versione = t.versione
WHERE 1 = 1";
$Query = new Query($sql);
foreach ($this->arr_whereCond as $whereCond) {
$Query->where($whereCond["k"], $whereCond["v"]);
}
$Ret = $Query->toRet()->date2ts()->execute();
} else {
$Ret->set_error("Condizione non pervenuta");
}
return $Ret;
}
public static function get($key) {
$Query = new \Query;
$Query->select("data_ord", "num_ord", "gestione", "versione", "filename AS name")
->from("dtb_ord_pdf")
->where("filecontent IS NOT NULL")
->whereDate("data_ord", $key["data_ord"])
->where("num_ord", $key["num_ord"])
->where("gestione", $key["gestione"])
->orderBy("versione DESC");
if (array_key_exists("versione", $key)) {
$Query->where("versione", $key["versione"]);
}
$Ret = $Query->firstRow()->toRet()->execute();
if ($Ret->is_OK()) {
$item = $Ret->get_data();
if (!is_null($item)) {
$IMSApi = new IMSApi;
$IMSApi->download("downloadDtbOrdPdf")
->queryDateParam("dataOrd", $item["data_ord"])
->queryParam("numOrd", $item["num_ord"])
->queryParam("gestione", $item["gestione"])
->queryParam("versione", $item["versione"]);
$Ret = $IMSApi->send();
if ($Ret->is_OK()) {
$Ret->set_byte(Utility\Compression\GZ::uncompress($Ret->get_data()))
->set_string($item["name"])
->set_data($item);
}
} else {
$Ret->set_error("File non trovato");
}
}
return $Ret;
}
public static function cache($key) {
$Ret = self::get($key);
if ($Ret->is_OK()) {
$Ret = Cache::writeR($Ret->get_string(), $Ret->get_byte(), true, true);
}
return $Ret;
}
}