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.
 
 
 
 
 

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;
}
}
?>