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.
135 righe
5.1 KiB
135 righe
5.1 KiB
<?php |
|
if (isset($this) && (is_a($this,"eFormsManager")|| is_a($this,"NuovaPiattaformaAppalti")) && !empty($this->info["codice_elemento"]) && !empty($this->info["modulo"]) |
|
&& $this->info["modulo"] == "concorsi" |
|
&& isset($_SESSION["utente"]) |
|
&& $_SESSION["utente"]->permission($this->info["modulo"],$this->info["codice_elemento"])) { |
|
|
|
// Otteniamo info sulla gara |
|
$concorso = concorso::init($this->info["codice_elemento"]); |
|
if ($concorso) { |
|
$retval = ["MODULO" => $this->info["modulo"]]; |
|
|
|
|
|
// Prepariamo la struttura dati per gara |
|
$general = $concorso->info; |
|
// Togliamo la versione serializzata in JSON |
|
unset($general->info["extraInfo"]); |
|
$general["extraInfo"] = $concorso->getExtraInfo(); |
|
// Info sui round (Scadenze) |
|
$general["round"] = $concorso->round; |
|
$retval["ROUNDS"] = []; |
|
foreach($concorso->getRounds() as $round) { |
|
$tmpConcorso = concorso::init($concorso->info["codice"], $round["codice"]); |
|
$retval["ROUNDS"][$round["codice"]] = $tmpConcorso->round; |
|
$tmpConcorso = null; |
|
} |
|
if(isset($general["tipologia"])) { |
|
switch($general["tipologia"]) { |
|
case "ST": |
|
case "S": |
|
$general["tipologia"] = "services"; |
|
break; |
|
case "F": |
|
$general["tipologia"] = "supplies"; |
|
break; |
|
default: |
|
$general["tipologia"] = "works"; break; |
|
} |
|
} |
|
$general["codiceAppalto"] = $concorso->getPublicIdentifier(); |
|
|
|
$general["CPV_CODES"] = $concorso->getCategorieMerceologiche(); |
|
$retval["GENERAL"] = $general; |
|
// Caricamento dell'ente |
|
if (!empty($retval["GENERAL"]["codice_ente"])) { |
|
$tmp = Ente::getInfoFromID($retval["GENERAL"]["codice_ente"]) ?? []; |
|
if(! empty($tmp)) { |
|
$tmp = reset($tmp); |
|
if (!empty($tmp["cf"])) { |
|
$ente = $tmp; |
|
} else if (!empty($tmp["sua"]) && $tmp["ufficio"] == "S") { |
|
$tmp = Ente::getInfoFromID($tmp["sua"]) ?? []; |
|
if(! empty($tmp)) { |
|
$tmp = reset($tmp); |
|
if (!empty($tmp["cf"])) { |
|
$tmp = reset($tmp); |
|
$ente = $tmp; |
|
} |
|
} |
|
} |
|
} |
|
if (!empty($ente)) { |
|
|
|
$retval["STAZIONEAPPALTANTE"] = $ente; |
|
} |
|
|
|
} |
|
// Prendiamo l'url pubblico |
|
$retval["PUBLIC_URL"] = $concorso->getPublicExternalURL(); |
|
// Prendiamo le info sulla procedura |
|
//$retval["PROCEDURA"] = $concorso->getProcedura(); |
|
// Prepariamo le info sui partecipanti che saranno popolate in base ai lotto |
|
$retval["PARTECIPANTI"] = []; |
|
$retval["VINCITORI"] = []; |
|
|
|
// Incaricati |
|
$incaricati = $concorso->getManagerIncarichi()->getIncaricati(); |
|
if (!empty($incaricati)) { |
|
foreach($incaricati AS $incaricato) { |
|
if ($incaricato["ruolo"] == 14) { // 14: ruolo RUP |
|
$incaricato += $incaricato["extraInfo"]; |
|
unset($incaricato["extraInfo"]); |
|
$retval["CONTRACTING_BODY"]["CONTACT_POINTS"][] = $incaricato; |
|
} |
|
} |
|
} |
|
|
|
// Lotti |
|
$lotti = $concorso->getLotti(); |
|
foreach($lotti AS $lotto) { |
|
$concorso->setLotto($lotto["codice"]); |
|
$lotto = $concorso->lotto; |
|
$lotto["importoTotale"] = $lotto["importoBase"]; |
|
$lotto["PARTECIPANTI"] = $concorso->getPartecipanti(); |
|
$lotto["VINCITORI"] = $concorso->getAggiudicatari(); |
|
foreach( $concorso->getCriteri() as $criterio_i => $criterio) { |
|
$criterio["codice_gara"] = $concorso->info["codice"]; |
|
$criterio["codice_lotto"] = $lotto["codice"]; |
|
$criterio["formule"] = $concorso::getFormule(); |
|
$lotto["CRITERI"][$criterio_i] = $criterio; |
|
$lotto["OFFERTE"][$criterio_i] = $concorso->getOfferte($criterio["codice"]); |
|
} |
|
|
|
// Assicuriamoci che tutti i partecipanti siano nell'array principale dei partecipanti |
|
// senza duplicati |
|
foreach($lotto["PARTECIPANTI"] as $partecipante_lotto) { |
|
$found = false; |
|
// Verifichiamo in partecipanti se esiste già |
|
foreach($retval["PARTECIPANTI"] as $partecipante) { |
|
$reference = "codice_operatore"; |
|
if(($partecipante[$reference] ?? 0) == 0) { $reference = "codice_fiscale"; } |
|
if($partecipante[$reference] === $partecipante_lotto[$reference] ) { |
|
$found = true; |
|
break; |
|
} |
|
} |
|
// Se non c'è, lo settiamo |
|
if(!$found) { |
|
$retval["PARTECIPANTI"][] = $partecipante_lotto; |
|
} |
|
} |
|
$retval["LOT"][] = $lotto; |
|
} |
|
// Assicuriamoci che i lotti siano ordinati in base al numero |
|
usort($retval["LOT"], function ($a, $b) { |
|
return ($a["numero"] ?? 0) > ($b["numero"] ?? 0); |
|
}); |
|
|
|
// Ripuliamo i valori vuoti |
|
if(empty($retval["PARTECIPANTI"])) {unset($retval["PARTECIPANTI"]);} |
|
if(empty($retval["VINCITORI"])) {unset($retval["VINCITORI"]);} |
|
if(empty($retval["LOT"])) {unset($retval["LOT"]);} |
|
return $retval; |
|
} |
|
} |
|
?>
|