gestione gare pubbliche
Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.
 
 
 
 
 

344 righe
9.0 KiB

<?
class PublicProdotto {
public $info;
public $codice_ente;
protected $db;
private function __construct() {
global $pdo;
$this->db = $pdo;
$this->codice_ente = $_SESSION["ente"]->codice ?? 0;
}
public static function init($codice = null, $relation = true)
{
if(!empty($_SESSION["ente"]) && isset($_SESSION['utente']) && !empty($_SESSION["utente"]->codice) && self::getBandiMercato()){
$instance = new PublicProdotto();
if(!empty($codice)){
global $pdo;
$sql = "SELECT *
FROM b_prodotti
WHERE codice = :codice
AND codice_oe = :codice_oe ";
$record = $pdo->go($sql,[
':codice' => $codice,
':codice_oe' => $_SESSION["utente"]->oe["codice"]
]
)->fetch(PDO::FETCH_ASSOC);
if(!empty($record)){
if($relation){
$each = [
'cpv' => [
'select' => 'cpv',
'table' => 'r_cpv_prodotti'
],
'spedizioni' => [
'select' => 'codice,stato, descrizione, ordineMinimo, ordineMassimo, prezzo',
'table' => 'b_prodotti_spedizioni'
],
'traduzioni' => [
'select' => 'codice, lingua, denominazione, descrizione, garanzia',
'table' => 'b_prodotti_traduzioni'
]
];
foreach ($each as $chiave => $value) {
$sql = "SELECT {$value['select']} FROM {$value['table']} WHERE codice_prodotto = :codice_prodotto";
if($chiave != 'cpv'){
$sql .= " AND soft_delete = 'N' ";
}
$record[$chiave] = $pdo->go($sql, [ ':codice_prodotto' => $record['codice'] ])->fetchAll(PDO::FETCH_ASSOC);
}
}
$instance->info = $record;
return $instance;
}else{
return false;
}
}else{
$instance->info = get_campi("b_prodotti");
return $instance;
}
}
return false;
}
public static function getBandiMercato()
{
global $pdo;
if(!empty($_SESSION["utente"]->oe["codice"])){
$bind = [];
$sql = "SELECT r_partecipanti_albo.codice,
r_partecipanti_albo.codice_elenco,
r_partecipanti_albo.conferma,
b_bandi_albo.tipologia
FROM r_partecipanti_albo
LEFT JOIN b_bandi_albo ON r_partecipanti_albo.codice_elenco = b_bandi_albo.codice
WHERE r_partecipanti_albo.codice_operatore = :oe
AND r_partecipanti_albo.conferma = 'S'
AND r_partecipanti_albo.ammesso = 'S'
AND b_bandi_albo.tipologia = 'M' ";
$bind[':oe'] = $_SESSION["utente"]->oe["codice"];
return $pdo->go($sql, $bind)->fetchAll(PDO::FETCH_ASSOC) ?? [];
}
return false;
}
public static function getProdotti($select = null , $filters = [])
{
if(!empty($_SESSION["ente"]) &&!empty($_SESSION["utente"]->oe["codice"])){
global $pdo;
if(empty($select)){
$select = 'codice';
}elseif(!empty($select) && is_array($select)){
$select = implode(",", $select);
}else{
$select = '*';
}
return $pdo->go("SELECT {$select} FROM b_prodotti WHERE soft_delete = 'N' AND codice_oe = :codice_oe", [':codice_oe' => $_SESSION["utente"]->oe["codice"]])->fetchAll(PDO::FETCH_ASSOC);
}
return [];
}
public function salva($data)
{
if(!empty($this)){
$data['codice_oe'] = $_SESSION["utente"]->oe["codice"];
$operazione = "INSERT";
if(!empty($this->info['codice'])){
$operazione = "UPDATE";
if($this->info['confermato'] == 'S'){
$operazione = "INSERT";
$data["codice_aggiornamento"] = $data["codice"];
unset($data["codice"]);
}
}
if ($data["confermato"] == "S") {
$data["attivo"] = "S";
}
$salva = new salva();
$salva->debug = false;
$salva->nome_tabella = "b_prodotti";
$salva->operazione = $operazione;
$salva->oggetto = $data;
$codice = $salva->save();
if($codice !== false){
$prodotto = self::init($codice);
return $prodotto;
}
}
return false;
}
public function salvaCPV($data)
{
if(!empty($this->info['codice']) && $data ){
global $pdo;
// elimina e risalva
$continue = true;
$pdo->go("DELETE FROM r_cpv_prodotti WHERE codice_prodotto = :codice_prodotto", [':codice_prodotto' => $this->info['codice']]);
scriviLog("r_cpv_prodotti","DELETE",$pdo->getSQL());
$data = array_unique($data);
foreach($data as $cpv) {
if ($cpv != "") {
$bind = [
':codice_prodotto' => $this->info['codice'],
':cpv' => $cpv,
':codice_utente' => $_SESSION["utente"]->codice
];
$strsql = "INSERT INTO r_cpv_prodotti (codice_prodotto,cpv,utente_modifica) VALUES (:codice_prodotto,:cpv,:codice_utente)";
$record = $pdo->go($strsql,$bind);
scriviLog("r_cpv_prodotti","INSERT",$pdo->getSQL());
if($record->rowCount() == 0){
break;
$continue = false;
}
}
}
if($continue){
return true;
}else{
?>
swal({title:js_dict.error,html:"<?= __("errore salvataggio cpv") ?>",type:"error"});
<?
die();
}
}
return false;
}
// NON UTILIZZATA
public static function salvaPrezzi($operazione, $data)
{
if(!empty($data['codice'])){
if(self::salvaRelazioni("prezzi", "b_prodotti_prezzi", $operazione, $data)){
return true;
}else{
?>
swal({title:js_dict.error,html:"<?= __("errore salvataggio prezzo") ?>",type:"error"});
<?
die();
}
}
return false;
}
public function salvaSpedizioni($operazione, $data)
{
if(!empty($this->info['codice'])){
if($this->salvaRelazioni("spedizioni", "b_prodotti_spedizioni", $operazione, $data)){
return true;
}else{
?>
swal({title:js_dict.error,html:"<?= __("errore salvataggio spedizioni") ?>",type:"error"});
<?
die();
}
}
return false;
}
public function salvaTraduzioni($operazione, $data)
{
if(!empty($this->info['codice'])){
if(self::salvaRelazioni("traduzione", "b_prodotti_traduzioni", $operazione, $data)){
return true;
}else{
?>
swal({title:js_dict.error,html:"<?= __("errore salvataggio traduzioni") ?>",type:"error"});
<?
die();
}
}
return false;
}
public function salvaRelazioni($input, $table, $operazione, $data)
{
if(!empty($data) && !empty($this->info['codice'])){
if (!empty($data[$input])) {
foreach($data[$input] AS $id => $value) {
$value["codice_prodotto"] = $this->info['codice'];
if (is_numeric($id) && $operazione == 'UPDATE') {
$value["codice"] = $id;
}
$salva = new salva();
$salva->nome_tabella = $table;
$salva->operazione = (!is_numeric($id) || $operazione == "INSERT") ? "INSERT" : "UPDATE";
$salva->oggetto = $value;
$salva = $salva->save();
if (empty($salva)) {
return false;
}
}
return true;
}
}
return false;
}
public function salvaAllegati($allegati, $type)
{
if(!empty($this->info['codice']) && !empty($allegati)){
$errori_upload = [];
foreach($allegati as $allegato) {
if (filesManager::saveFile($allegato["filename"],$this->info['codice'],"catalogo",$allegato["nome"], $type) === false) {
$errori_upload[] = $allegato["filename"];
}
}
if(!empty($errori_upload)){
?>
swal({title:js_dict.error,html:"<?= __("errore salvataggio allegati") ?>",type:"error"});
<?
die();
}
return true;
}
return false;
}
public static function getCataloguePackLevels($packLevel = null)
{
$packLevels = [
"CU" => "Unit&agrave;",
"DU" => "Pallet",
"TU" => "Confezione",
"HN" => "Handling Unit"
];
if(!empty($packLevel) && isset($packLevels[$packLevel])){
return $packLevels[$packLevel];
}
return $packLevels;
}
}