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.
423 righe
22 KiB
423 righe
22 KiB
<? |
|
$configPath = substr(__DIR__,0,strpos(__DIR__,"/public_html"))."/config.php"; |
|
include_once($configPath); |
|
if (isset($_SESSION["ente"])) { |
|
|
|
function validateRequest($params) { |
|
if (!empty($params->token) && $params->token == $_SESSION["ente"]->getInfo()["token"]) { |
|
return true; |
|
} |
|
} |
|
|
|
function getGare($params) { |
|
if (validateRequest($params)) { |
|
$json = []; |
|
$filters = []; |
|
if (!empty($params->tipologia)) { |
|
$tipologie = getTipologieAffidamento(true, null); |
|
$tipologie = array_combine(array_column($tipologie, "codice_api"), array_keys($tipologie)); |
|
if(! empty($tipologie[$params->tipologia])) { |
|
$filters["b_gare.tipologia"] = $tipologie[$params->tipologia]; |
|
} |
|
} |
|
if (!empty($params->procedura)) { |
|
$procedure = getProcedure(true, null, null, $_SESSION["ente"]->codice); |
|
$procedure = array_combine(array_column($procedure, "codice_api"), array_keys($procedure)); |
|
if(! empty($procedure[$params->procedura])) { |
|
$filters["b_gare.procedura"] = $procedure[$params->procedura]; |
|
} |
|
} |
|
if (!empty($params->stato)) { |
|
switch($params->stato) { |
|
case "3": $filters["b_gare.stato"] = "20"; break; // titolo": "Pubblicato" |
|
case "4": $filters["b_gare.stato"] = "30"; break; // titolo": "Proposta di aggiudicazione" |
|
case "5": $filters["b_gare.stato"] = "31"; break; // titolo": "Verifica anomalie" |
|
case "7": $filters["b_gare.stato"] = "35"; break; // titolo": "Aggiudicazione definitiva" |
|
case "8": $filters["b_gare.stato"] = "50"; break; // titolo": "Inviato esito" |
|
case "99": $filters["b_gare.stato"] = "90"; break; // titolo": "Annullato" |
|
case "98": $filters["b_gare.stato"] = "95"; break; // titolo": "Deserto" |
|
case "100": $filters["b_gare.stato"] = "99"; break; // titolo": "Non aggiudicato" |
|
case "101": $filters["b_gare.stato"] = "100"; break; // titolo": "Completo" |
|
} |
|
} |
|
if (!empty($params->codice)) { |
|
$filters["b_gare.codice"] = $params->codice; |
|
} |
|
if (!empty($params->codice)) { |
|
$filters["b_gare.codice_ente"] = $params->codice_ente; |
|
} |
|
if (!empty($params->cig)) { |
|
$filters["b_gare_lotti.cig"] = $params->cig; |
|
} |
|
if (!empty($params->cup)) { |
|
$filters["b_gare_lotti.cup"] = $params->cup; |
|
} |
|
if (!empty($params->data->typeDate)) { |
|
$dataInizio = $params->data->startDate ?? null; |
|
$dataFine = $params->data->endDate ?? null; |
|
if (!empty($dataInizio) || !empty($dataFine)) { |
|
$filtriData = ["data_pubblicazione","data_accesso","data_scadenza","data_apertura"]; |
|
if (in_array($params->data->typeDate,$filtriData) !== false) { |
|
$indexFiltroData = $params->data->typeDate; |
|
} |
|
} |
|
} |
|
$tmp = publicGara::getList($_SESSION["ente"]->codice,$filters,[],0,-1); |
|
$regexData = '/([0-9]{2}\/[0-9]{2}\/[0-9]{4})/m'; |
|
|
|
if (!empty($tmp)) { |
|
foreach($tmp AS $rec) { |
|
$continua = true; |
|
$obj = publicGara::init($rec["codice"]); |
|
$extraInfo = $obj->getExtraInfo(); |
|
$insert = []; |
|
$gara = []; |
|
$allegati = []; |
|
$rounds = $obj->getRounds(); |
|
$gara["data_pubblicazione"] = ""; |
|
if (!empty($rounds)) { |
|
foreach($rounds AS $round) { |
|
$tmp = filesManager::listFiles($round["codice"],"gare-public"); |
|
$allegati = array_merge($allegati,$tmp); |
|
if (empty($gara["data_pubblicazione"]) && !empty($round["pubblicazione"])) { |
|
$gara["data_pubblicazione"] = $round["pubblicazione"]; |
|
} |
|
if (!empty($round["chiarimenti"])) { |
|
$gara["data_accesso"] = $round["chiarimenti"]; |
|
} |
|
if (!empty($round["scadenza"])) { |
|
$gara["data_scadenza"] = $round["scadenza"]; |
|
} |
|
if (!empty($round["apertura"])) { |
|
$gara["data_apertura"] = $round["apertura"]; |
|
} |
|
} |
|
} |
|
if (!empty($indexFiltroData)) { |
|
$riferimento = strtotime($gara[$indexFiltroData]); |
|
if (!empty($dataInizio)) { |
|
$time = strtotime($dataInizio); |
|
if ($time > $riferimento) { |
|
$continua = false; |
|
} |
|
} |
|
if (!empty($dataFine)) { |
|
$time = strtotime($dataFine); |
|
if ($time < $riferimento) { |
|
$continua = false; |
|
} |
|
} |
|
} |
|
if ($continua) { |
|
$gara["codice"] = $rec["codice"]; |
|
$gara["codice_ente"] = $rec["codice_ente"]; |
|
$gara["codice_gestore"] = $_SESSION["ente"]->codice; |
|
$gara["id"] = $rec["id"]; |
|
switch($rec["stato"]) { |
|
case "20": $gara["stato"] = "3"; break; // titolo": "Pubblicato" |
|
case "21": $gara["stato"] = "3"; break; // titolo": "Scaduto" |
|
case "25": $gara["stato"] = "3"; break; // titolo": "In valutazione" |
|
case "30": $gara["stato"] = "4"; break; // titolo": "Proposta di aggiudicazione" |
|
case "31": $gara["stato"] = "5"; break; // titolo": "Verifica anomalie" |
|
case "35": $gara["stato"] = "7"; break; // titolo": "Aggiudicazione definitiva" |
|
case "50": $gara["stato"] = "8"; break; // titolo": "Inviato esito" |
|
case "80": $gara["stato"] = "3"; break; // titolo": "Sospesa" |
|
case "90": $gara["stato"] = "99"; break; // titolo": "Annullato" |
|
case "95": $gara["stato"] = "98"; break; // titolo": "Deserto" |
|
case "99": $gara["stato"] = "100"; break; // titolo": "Non aggiudicato" |
|
case "100": $gara["stato"] = "101"; break; // titolo": "Completo" |
|
} |
|
$gara["numero_atto_indizione"] = $extraInfo["gara"]["provvedimentoIndizione"]; |
|
$gara["data_atto_indizione"] = (!empty($extraInfo["gara"]["dataProvvedimentoIndizione"])) ? date2mysql($extraInfo["gara"]["dataProvvedimentoIndizione"]) : null; |
|
$gara["estremi_progetto"] = $extraInfo["gara"]["estremiProgetto"]; |
|
$gara["data_validazione"] = date2mysql($extraInfo["gara"]["dataApprovazioneProgetto"]); |
|
$gara["validatore"] = $extraInfo["gara"]["soggettoApprovatore"]; |
|
$gara["rup"] = ""; |
|
$incaricati = $obj->getManagerIncarichi()->getIncaricati(); |
|
if (!empty($incaricati)) { |
|
foreach($incaricati AS $incaricato) { |
|
if ($incaricato["ruolo"] == 14) { |
|
$gara["rup"] = $incaricato["extraInfo"]["cognome"]. " " . $incaricato["extraInfo"]["nome"]; |
|
break; |
|
} |
|
} |
|
} |
|
$gara["struttura_proponente"] = $extraInfo["gara"]["strutturaProponente"]; |
|
$gara["responsabile_struttura"] = $extraInfo["gara"]["responsabileStruttura"]; |
|
$gara["oggetto"] = $rec["oggetto"]; |
|
$gara["descrizione"] = ""; |
|
$gara["somme_disponibili"] = $extraInfo["gara"]["sommeAmministrazione"]; |
|
$gara["prezzoBase"] = $rec["prezzoRiferimento"]; |
|
$gara["nuts"] = $extraInfo["gara"]["nuts"]; |
|
|
|
$gara["flag_gestione_autonoma"] = ""; |
|
$gara["url"] = $_SESSION["config"]["link_sito"] . "/gare/dettaglio.php?codice={$gara["codice"]}"; |
|
switch($rec["tipologia"]) { |
|
case "L": $gara["tipologia"] = "Lavori"; break; |
|
case "S": $gara["tipologia"] = "Servizi"; break; |
|
case "F": $gara["tipologia"] = "Forniture"; break; |
|
case "ST": $gara["tipologia"] = "Servzi Tecnici"; break; |
|
case "LE": $gara["tipologia"] = "Lavori e progettazione esecutiva"; break; |
|
case "LDE": $gara["tipologia"] = "Lavori e progettazione definitiva ed esecutiva"; break; |
|
} |
|
|
|
switch($rec["procedura"]) { |
|
case "aperta": $gara["procedura"] = "Aperta"; break; // Aperta art. 60 del D.Lgs n. 50/2016 |
|
case "negoziata": $gara["procedura"] = "Negoziata"; break; // Negoziata art. 36 del D.Lgs n. 50/2016 |
|
case "ristretta": $gara["procedura"] = "Ristretta"; break; // Ristretta art. 61 del D.Lgs n. 50/2016 |
|
case "sda": $gara["procedura"] = "Sistema dinamico di acquisizione"; break; // Sistema dinamico di acquisizione Nuovo Codice degli Appalti |
|
case "dialogo": $gara["procedura"] = "Dialogo competitivo"; break; // Dialogo competitivo art. 64 del D.Lgs n. 50/2016 |
|
case "aq": $gara["procedura"] = "Accordo Quadro"; break; // Accordo Quadro Nuovo Codice degli Appalti |
|
case "affidamento": $gara["procedura"] = "Affidamento Diretto"; break; // Affidamento Diretto art. |
|
} |
|
$gara["modalita"] = ($rec["modalita"] == "telematica") ? "Telematica" : "Gare extra-piattaforma"; |
|
$managerCommissione = $obj->getManagerCommissione("seggio"); |
|
$seggio = $managerCommissione->getInfo(); |
|
$gara["numero_atto_seggio"] = $seggio["numero_atto"]; |
|
$gara["data_atto_seggio"] = $seggio["data_atto"]; |
|
$managerCommissione = $obj->getManagerCommissione("commissione"); |
|
$commissione = $managerCommissione->getInfo(); |
|
$gara["numero_atto_commissione"] = $commissione["numero_atto"]; |
|
$gara["data_atto_commissione"] = $commissione["data_atto"]; |
|
$gara["data_annullamento"] = null; |
|
preg_match_all($regexData, $extraInfo["gara"]["estremi_annullamento"] ?? "", $matchesAnnullamento, PREG_SET_ORDER, 0); |
|
if (!empty($matchesAnnullamento[0][0])) { |
|
$data = date2mysql($matchesAnnullamento[0][0]); |
|
if (!empty($data)) { |
|
$gara["data_annullamento"] = $data; |
|
} |
|
} |
|
$insert["gara"] = $gara; |
|
$lotti = $obj->getLotti(); |
|
if (!empty($lotti)) { |
|
$insert["lotti"] = []; |
|
foreach($lotti AS $tmpLotto) { |
|
$obj->setLotto($tmpLotto["codice"]); |
|
$extraInfoLotto = json_decode($tmpLotto["extraInfo"],true); |
|
$lotto = []; |
|
$lotto["codice"] = $tmpLotto["codice"]; |
|
$lotto["cig"] = $tmpLotto["cig"]; |
|
$lotto["oggetto"] = $tmpLotto["oggetto"]; |
|
$lotto["descrizione"] = $tmpLotto["descrizione"]; |
|
$lotto["cpv"] = $tmpLotto["cpv"]; |
|
$lotto["cup"] = $tmpLotto["cup"]; |
|
$lotto["importo_base"] = $tmpLotto["importoBase"]; |
|
$lotto["importo_oneri_ribasso"] = 0; |
|
$lotto["importo_oneri_no_ribasso"] = $tmpLotto["oneriNoRibasso"]; |
|
$lotto["importo_personale"] = $tmpLotto["importoManodopera"]; |
|
$lotto["importoAggiudicazione"] = $tmpLotto["importoAggiudicazione"]; |
|
$lotto["numero_atto_esito"] = (!empty($extraInfoLotto["estremi_definitiva"])) ? $extraInfoLotto["estremi_definitiva"] : null; |
|
$lotto["data_atto_esito"] = null; |
|
preg_match_all($regexData, $lotto["numero_atto_esito"], $matches, PREG_SET_ORDER, 0); |
|
if (!empty($matches[0][0])) { |
|
$data = date2mysql($matches[0][0]); |
|
if (!empty($data)) { |
|
$lotto["data_atto_esito"] = $data; |
|
} |
|
} |
|
if ($obj->pubblicaPartecipanti()) { |
|
$partecipanti = $obj->getPartecipanti(); |
|
if (!empty($partecipanti)) { |
|
$lotto["partecipanti"] = []; |
|
foreach($partecipanti AS $tmpPartecipante) { |
|
$partecipante = []; |
|
$infoOe = null; |
|
$legale = null; |
|
$operativa = null; |
|
if (!empty($tmpPartecipante["codice_operatore"])) { |
|
$infoOe = oeManager::getOE($tmpPartecipante["codice_operatore"]); |
|
$idForm = FormManager::getInfoFromID("info-oe",$tmpPartecipante["codice_operatore"]); |
|
$form = new FormManager; |
|
$form->init($idForm["codice"],"oe",$infoOe["codice"]); |
|
$values = $form->getValues(); |
|
if (!empty($values)) { |
|
foreach($values AS $group => $inputs) { |
|
foreach($inputs AS $key => $value) { |
|
if ($key == "3") { |
|
$legale = json_decode($value["value"],true); |
|
} else if ($key == "6" && empty($operativa)) { |
|
$operativa = json_decode($value["value"],true); |
|
} |
|
} |
|
} |
|
} |
|
} |
|
$partecipante["codice"] = $tmpPartecipante["codice"]; |
|
if (!empty($infoOe)) { |
|
$partecipante["codice_fiscale"] = $infoOe["codice_fiscale_impresa"]; |
|
$partecipante["partita_iva"] = $infoOe["partita_iva"]; |
|
} else { |
|
$partecipante["partita_iva"] = $tmpPartecipante["codice_fiscale"]; |
|
} |
|
$partecipante["codice_operatore"] = $tmpPartecipante["codice_operatore"]; |
|
$partecipante["ragione_sociale"] = $tmpPartecipante["ragione_sociale"]; |
|
$partecipante["pec"] = $infoOe["pec"] ?? ""; |
|
$partecipante["email"] = $infoOe["pec"] ?? ""; |
|
$partecipante["primo"] = $tmpPartecipante["aggiudicatario"]; |
|
$partecipante["anomalia"] = $tmpPartecipante["anomalia"]; |
|
$partecipante["anomalia_facoltativa"] = $tmpPartecipante["a_facoltativa"]; |
|
$partecipante["verifica"] = $tmpPartecipante["a_verificata"]; |
|
$partecipante["escluso"] = $tmpPartecipante["escluso"]; |
|
$partecipante["ammesso"] = ($tmpPartecipante["escluso"] == "N") ? "S" : "N"; |
|
$partecipante["motivazione"] = $tmpPartecipante["motivazione"]; |
|
$partecipante["motivazione_anomalia"] = $tmpPartecipante["motivazione_anomalia"]; |
|
$raggruppamento = $obj->getRaggruppamento($tmpPartecipante["codice"]); |
|
if (!empty($raggruppamento)) { |
|
$partecipante["tipo"] = "04-CAPOGRUPPO"; |
|
$partecipante["raggruppamento"] = []; |
|
foreach($raggruppamento AS $membro) { |
|
$partecipante["raggruppamento"][] = [ |
|
"codice" => $membro["codice"], |
|
"partita_iva" => ($membro["stato"] == "IT") ? $membro["codice_fiscale_impresa"] : "", |
|
"ragione_sociale" => ($membro["stato"] == "IT") ? $membro["ragione_sociale"] : "", |
|
"identificativoEstero" => ($membro["stato"] != "IT") ? $membro["codice_fiscale_impresa"] : "", |
|
"pec" => "", |
|
"tipo" => $membro["ruolo"] |
|
]; |
|
} |
|
} else { |
|
$partecipante["tipo"] = ""; |
|
} |
|
|
|
$partecipante["indirizzo_legale"] = $legale["indirizzo"] ?? ""; |
|
$partecipante["citta_legale"] = $legale["citta"] ?? ""; |
|
$partecipante["provincia_legale"] = $legale["provincia"] ?? ""; |
|
$partecipante["regione_legale"] = $legale["regione"] ?? ""; |
|
$partecipante["stato_legale"] = $legale["stato"] ?? ""; |
|
$partecipante["indirizzo_operativa"] = $operativa["indirizzo"] ?? ""; |
|
$partecipante["citta_operativa"] = $operativa["citta"] ?? ""; |
|
$partecipante["provincia_operativa"] = $operativa["provincia"] ?? ""; |
|
$partecipante["regione_operativa"] = $operativa["regione"] ?? ""; |
|
$partecipante["stato_operativa"] = $operativa["stato"] ?? ""; |
|
$lotto["partecipanti"][] = $partecipante; |
|
} |
|
} |
|
$invitati = $obj->getInvitati(); |
|
if (!empty($invitati)) { |
|
$lotto["invitati"] = []; |
|
foreach($invitati AS $invitato) { |
|
$infoInvitato = oeManager::getOE($invitato["codice_operatore"]); |
|
$lotto["invitati"][] = [ |
|
"codice_fiscale" => $infoInvitato["codice_fiscale_impresa"], |
|
"partita_iva" => $infoInvitato["partita_iva"], |
|
"ragione_sociale" => $infoInvitato["ragione_sociale"], |
|
"pec" => $infoInvitato["pec"], |
|
"codice_operatore" => $infoInvitato["codice"] |
|
]; |
|
} |
|
} |
|
$invitati = $obj->getInvitatiManuali(); |
|
if (!empty($invitati)) { |
|
if (!isset($lotto["invitati"])) { |
|
$lotto["invitati"] = []; |
|
} |
|
foreach($invitati AS $invitato) { |
|
$lotto["invitati"][] = [ |
|
"partita_iva" => $invitato["codice_fiscale_operatore"], |
|
"ragione_sociale" => $invitato["denominazione"], |
|
"pec" => $invitato["pec"], |
|
"codice_operatore" => "" |
|
]; |
|
} |
|
} |
|
} |
|
$insert["lotti"][] = $lotto; |
|
} |
|
unset($obj->lotto); |
|
} |
|
$cpv = $obj->getCategorieMerceologiche(); |
|
if (!empty($cpv)) { |
|
$insert["cpv"] = cpvManager::getInfo($cpv); |
|
} |
|
if (!empty($allegati)) { |
|
$insert["allegati"] = []; |
|
foreach($allegati AS $allegato) { |
|
$insert["allegati"][] = [ |
|
"codice" => $allegato["codice"], |
|
"sezione" => "gare-public", |
|
"nome_file" => $allegato["name"], |
|
"titolo" => $allegato["titolo"], |
|
"url" => $_SESSION["config"]["link_sito"] . filesManager::getAttachURL($allegato,$allegato["sourceID"],"gare-public",0), |
|
"timestamp" => $allegato["timestamp"] |
|
]; |
|
} |
|
} |
|
$json[] = $insert; |
|
} |
|
} |
|
} |
|
return json_encode($json,JSON_HEX_TAG | JSON_UNESCAPED_SLASHES); |
|
} |
|
return json_encode(["error"=>"Errore richiesta"]); |
|
} |
|
|
|
function getAlbi($params) { |
|
if (validateRequest($params)) { |
|
$json = []; |
|
$filters = []; |
|
if (!empty($params->codice)) { |
|
$filters["b_bandi_albo.codice"] = $params->codice; |
|
} |
|
$albi = publicAlboFornitori::getList($filters,[],0,-1); |
|
if (!empty($albi)) { |
|
foreach($albi AS $tmpAlbo) { |
|
$obj = publicAlboFornitori::init($tmpAlbo["codice"]); |
|
if($obj) { |
|
$insert = []; |
|
$bando = []; |
|
$bando["codice"] = $tmpAlbo["codice"]; |
|
$bando["codice_ente"] = $tmpAlbo["codice_ente"]; |
|
$bando["codice_gestore"] = $_SESSION["ente"]->codice; |
|
$bando["id"] = $tmpAlbo["id"]; |
|
$bando["stato"] = 3; |
|
$bando["tipologia"] = $tmpAlbo["tipologia"]; |
|
$bando["rup"] = ""; |
|
$bando["oggetto"] = $tmpAlbo["oggetto"]; |
|
$bando["data_pubblicazione"] = $tmpAlbo["pubblicazione"]; |
|
$bando["data_scadenza"] = $tmpAlbo["scadenza"]; |
|
$bando["data_chiarimenti"] = $tmpAlbo["chiarimenti"]; |
|
$incaricati = $obj->getManagerIncarichi()->getIncaricati(); |
|
if (!empty($incaricati)) { |
|
foreach($incaricati AS $incaricato) { |
|
if ($incaricato["ruolo"] == 14) { |
|
$bando["rup"] = $incaricato["extraInfo"]["cognome"]. " " . $incaricato["extraInfo"]["nome"]; |
|
break; |
|
} |
|
} |
|
} |
|
$insert["bando"] = $bando; |
|
$cpv = $obj->getCategorieMerceologiche(); |
|
if (!empty($cpv)) { |
|
$insert["cpv"] = cpvManager::getInfo($cpv); |
|
} |
|
$allegati = filesManager::listFiles($tmpAlbo["codice"],"albo_fornitori-public"); |
|
if (!empty($allegati)) { |
|
$insert["allegati"] = []; |
|
foreach($allegati AS $allegato) { |
|
$insert["allegati"][] = [ |
|
"codice" => $allegato["codice"], |
|
"sezione" => "albo_fornitori-public", |
|
"nome_file" => $allegato["name"], |
|
"titolo" => $allegato["titolo"], |
|
"url" => $_SESSION["config"]["link_sito"] . filesManager::getAttachURL($allegato,$tmpAlbo["codice"],"albo_fornitori-public",0), |
|
"timestamp" => $allegato["timestamp"] |
|
]; |
|
} |
|
} |
|
$json[] = $insert; |
|
} |
|
} |
|
} |
|
return json_encode($json,JSON_HEX_TAG | JSON_UNESCAPED_SLASHES); |
|
} |
|
return json_encode(["error"=>"Errore richiesta"]); |
|
} |
|
$base = file_get_contents("base.wsdl"); |
|
$base = str_replace("https://www.stazioneappalti.it",$_SESSION["config"]["link_sito"],$base); |
|
$base = 'data://text/plain;base64,'.base64_encode($base); |
|
$server = new SoapServer($base,array('cache_wsdl'=>WSDL_CACHE_NONE)); |
|
$server->addFunction("getGare"); |
|
$server->addFunction("getAlbi"); |
|
$server->handle(); |
|
} |
|
?>
|