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.
 
 
 
 
 

104 righe
3.6 KiB

<?
if (isset($this) && is_a($this,"gara") && isset($settings) && !empty($partecipanti) && !empty($coefficienti)) {
if (in_array($settings["coefficiente"],$coefficienti) !== false) {
$numero_partecipanti = count($partecipanti);
$firstRound = $this->getRounds()[0];
if (strtotime($firstRound["pubblicazione"]) < strtotime('2017-05-20')) {
$numSoglia = ceil($numero_partecipanti * 10 /100);
} else {
$numSoglia = ceil($numero_partecipanti * 20 /100);
}
$taglioAli = [];
$i = 0;
$contatore = 0;
$punteggioAttuale = "";
while($i < $numSoglia) {
$partecipante = $partecipanti[$contatore];
$taglioAli[] = $partecipante["codice"];
if ($punteggioAttuale != $partecipante["totale"]) {
$punteggioAttuale = $partecipante["totale"];
$i++;
}
$contatore++;
}
if (isset($partecipanti[$contatore]) && $partecipanti[$contatore]["totale"] === $punteggioAttuale) {
while($partecipanti[$contatore]["totale"] === $punteggioAttuale) {
$partecipante = $partecipanti[$contatore];
$taglioAli[] = $partecipante["codice"];
$contatore++;
}
}
$i = 0;
$contatore = $numero_partecipanti -1;
$punteggioAttuale = "";
while($i < $numSoglia) {
$partecipante = $partecipanti[$contatore];
$taglioAli[] = $partecipante["codice"];
if ($punteggioAttuale != $partecipante["totale"]) {
$punteggioAttuale = $partecipante["totale"];
$i++;
}
$contatore--;
}
if (isset($partecipanti[$contatore]) && $partecipanti[$contatore]["totale"] === $punteggioAttuale) {
while($partecipanti[$contatore]["totale"] === $punteggioAttuale) {
$partecipante = $partecipanti[$contatore];
$taglioAli[] = $partecipante["codice"];
$contatore--;
}
}
reset($partecipanti);
$somma = 0;
$contatore = 0;
foreach($partecipanti AS $partecipante) {
if (in_array($partecipante["codice"],$taglioAli) === false) {
$somma += $partecipante["totale"];
$contatore++;
}
}
$media = $somma / $contatore;
if (!$soloSoglia) {
if ($arrotondamento) {
$somma = number_format($somma,$decimali);
$media = number_format($media,$decimali);
} else {
$somma = truncate($somma,$decimali);
$media = truncate($media,$decimali);
}
}
reset($partecipanti);
$contatore = 0;
$sommaSuperiore = 0;
foreach($partecipanti AS $partecipante) {
if (in_array($partecipante["codice"],$taglioAli) === false && $partecipante["totale"] > $media) {
$sommaSuperiore += $partecipante["totale"];
$contatore++;
}
}
$scarto_medio = ($sommaSuperiore - ($media * $contatore)) / $contatore;
if (!$soloSoglia) {
if ($arrotondamento) {
$scarto_medio = number_format($scarto_medio,$decimali);
} else {
$scarto_medio = truncate($scarto_medio,$decimali);
}
}
$soglia_anomalia = ($media + ($scarto_medio * $settings["coefficiente"]));
if ($arrotondamento) {
$soglia_anomalia = number_format($soglia_anomalia,$decimali);
} else {
$soglia_anomalia = truncate($soglia_anomalia,$decimali);
}
$infoAnomalia["media"] = $media;
$infoAnomalia["scarto_medio"] = $scarto_medio;
$infoAnomalia["soglia"] = $soglia_anomalia;
$infoAnomalia["riepilogo"] = "Anomalia calcolata ai sensi dell'art. 97 c. 2 lettera e del D.lgs 50/2016 - Media: {$media} - Scarto medio: {$scarto_medio} - Coefficienti: {$settings["coefficiente"]} - Soglia individuata: {$soglia_anomalia}";
} else {
$errors = __("Coefficiente errato");
}
}
?>