function generateAlgoreaCodes($db, $contestID)
{
    // retrieving awarded contestants through "award1" model
    $modelName = 'award1';
    $model = getViewModel($modelName);
    $request = array("modelName" => $modelName, "model" => $model, "filters" => array());
    foreach ($model["fields"] as $fieldName => $field) {
        $request["fields"][] = $fieldName;
    }
    $request["filters"] = array('awarded' => true, 'contestID' => $contestID);
    if (!$_SESSION["isAdmin"]) {
        $request["filters"]["userID"] = $_SESSION["userID"];
    }
    $result = selectRows($db, $request);
    $awarded = $result['items'];
    if (!count($awarded)) {
        return;
    }
    // we hope that there will be no collision in a serie of generated codes
    $query = "INSERT ignore INTO `contestant` (`ID`, `algoreaCode`) values ";
    $first = true;
    foreach ($awarded as $contestant) {
        if (!$first) {
            $query = $query . ', ';
        }
        $first = false;
        $query = $query . '(' . $contestant->ID . ', \'' . genAccessCode($db) . '\')';
    }
    $query = $query . ' on duplicate key update `algoreaCode` = values(`algoreaCode`)';
    $db->exec($query);
}
require_once "commonAdmin.php";
if (!isset($_SESSION['userID'])) {
    echo "Votre session a expiré, veuillez vous reconnecter.";
    exit;
}
$model = getViewModel('award1');
$request = array("modelName" => 'award1', "model" => $model, "filters" => array());
foreach ($model["fields"] as $fieldName => $field) {
    $request["fields"][] = $fieldName;
}
$request["filters"] = array('awarded' => true);
if (!$_SESSION["isAdmin"]) {
    $request["filters"]["userID"] = $_SESSION["userID"];
}
$request['orders'] = $model['orders'];
$result = selectRows($db, $request);
$awarded = $result['items'];
if (!count($awarded)) {
    echo 'Rien à imprimer !';
    exit;
}
$levelStr = array(1 => "6ème-5ème", 2 => "4ème-3ème", 3 => "Seconde", 4 => "Première-Terminale", 5 => "Seconde professionnelle", 6 => "Première-Terminale professionnelle");
?>
<!doctype html>
<html lang="fr">
  <head>
    <style type="text/css">
    body, td {
      font-family: Arial, sans-serif;
      font-size: 9px;
      width: 18cm;
function selectRecordsForJQGrid($db, $modelName, $params, $roles)
{
    $format = "xml";
    if (isset($params["format"])) {
        $format = $params["format"];
    }
    if ($modelName == 'contestant' && $format == 'csv') {
        $modelName = 'contestantCSV';
    }
    $model = getViewModel($modelName);
    $request = array("modelName" => $modelName, "model" => $model, "filters" => array());
    foreach ($model["fields"] as $fieldName => $field) {
        $request["fields"][] = $fieldName;
    }
    if (!$_SESSION["isAdmin"]) {
        if ($modelName == "school") {
            $params["accessUserID"] = $_SESSION["userID"];
        } else {
            if ($modelName === "group") {
                $params["checkAccessUserID"] = $_SESSION["userID"];
                $params["checkSchoolUserID"] = $_SESSION["userID"];
            } else {
                $params["userID"] = $_SESSION["userID"];
            }
        }
    }
    $filters = array();
    foreach ($params as $name => $value) {
        if ((isset($model["filters"][$name]) || isset($model["fields"][$name])) && $value !== "_NOF_") {
            if (isset($model["fields"][$name])) {
                if (getFieldType($model, $name) == "string") {
                    $value = "%" . $value . "%";
                }
            }
            $filters[$name] = $value;
        }
    }
    $request["filters"] = $filters;
    if ($modelName == 'award1' || $modelName == 'award2') {
        $request['filters']['awarded'] = true;
        $request['orders'] = $model['orders'];
    }
    if (isset($params["sidx"]) && $params["sidx"] != "") {
        $order = array("field" => $params["sidx"], "dir" => $params["sord"]);
        $request["orders"] = array($order);
    }
    $request["page"] = $params["page"];
    $request["rowsPerPage"] = $params["rows"];
    if ($format == 'csv' && $modelName !== 'contestantCSV') {
        explicitCSVRequest($request);
    }
    $result = selectRows($db, $request);
    $limits = $result["limits"];
    if ($format === "xml") {
        displayRowsAsXml($result["items"], $model, $limits["page"], $limits["nbPages"], $result["nbTotalItems"]);
    } else {
        displayRowsAsCsv($modelName, $result["items"], $request['model']);
    }
}