function display_uc($useCase, $raw)
{
    echo "\\item \\hyperlink{" . $useCase->public_id() . "}{" . $useCase->public_id() . " - " . $useCase->title . "} \n";
    $useCase->with('useCases');
    if (isset($useCase->useCases) && count($useCase->useCases) > 0) {
        echo "\\begin{itemize}\n";
        foreach ($useCase->useCases as $child) {
            display_uc($child, $raw);
        }
        echo "\\end{itemize}\n";
    }
}
function display_uc($useCase, $raw)
{
    $string = '';
    $id = $useCase->public_id();
    //$actors = implode(', ',$useCase->actors());
    $string .= "\\hypertarget{{$id}}{}\n\\subsection{Caso d'uso {$id}: {$useCase->title}}";
    if (isset($useCase->useCaseEvents) && count($useCase->useCaseEvents)) {
        $string .= "\n        \\begin{figure}[H]\n            \\centering\n            \\includegraphics[scale=0.95]{img/{$id}.pdf}\n            \\caption{Caso d'uso {$id}: {$useCase->title}}\\label{fig:{$id}} \n        \\end{figure}";
    }
    $string .= "\\begin{itemize}\n";
    /// @warning HARD CODED DB PK!!!!!!!!!!!
    if ($useCase->id_use_case != 52) {
        $string .= "\\item \\textbf{Attori}: Utente;\n";
    }
    $string .= "\\item \\textbf{Scopo e descrizione}: {$useCase->description}; \n      \\item \\textbf{Precondizione}: {$useCase->pre};\n";
    $prim = UseCaseEvent::model()->findAll(array('order' => '`order`', 'condition' => 'category=1 and use_case=:uc', 'params' => array(':uc' => $useCase->id_use_case)));
    if (count($prim) > 0) {
        $string .= "\n        \\item \\textbf{Flusso principale degli eventi}:\n          \\begin{enumerate}\n";
        foreach ($prim as $event) {
            $string .= "          \\item {$event->description}";
            if ($event->refers_to) {
                $child_id = $event->with('refersTo')->refersTo->public_id();
                $string .= " (\\hyperlink{{$child_id}}{{$child_id}})";
            }
            $string .= ";\n";
        }
        $string .= "\n      \\end{enumerate}\n";
    }
    $alt = UseCaseEvent::model()->findAll(array('order' => '`order`', 'condition' => 'category=3 and use_case=:uc', 'params' => array(':uc' => $useCase->id_use_case)));
    if (count($alt)) {
        $string .= "    \\item \\textbf{Estensioni}:\n      \\begin{enumerate}\n";
        foreach ($alt as $event) {
            $string .= "          \\item {$event->description}";
            if ($event->refers_to) {
                $child_id = $event->with('refersTo')->refersTo->public_id();
                $string .= " (\\hyperlink{{$child_id}}{{$child_id}})";
            }
            $string .= ";\n";
        }
        $string .= "\n      \\end{enumerate}\n";
    }
    $alt = UseCaseEvent::model()->findAll(array('order' => '`order`', 'condition' => 'category=4 and use_case=:uc', 'params' => array(':uc' => $useCase->id_use_case)));
    if (count($alt)) {
        $string .= "    \\item \\textbf{Inclusioni}:\n      \\begin{enumerate}\n";
        foreach ($alt as $event) {
            $string .= "          \\item {$event->description}";
            if ($event->refers_to) {
                $child_id = $event->with('refersTo')->refersTo->public_id();
                $string .= " (\\hyperlink{{$child_id}}{{$child_id}})";
            }
            $string .= ";\n";
        }
        $string .= "\n      \\end{enumerate}\n";
    }
    $alt = UseCaseEvent::model()->findAll(array('order' => '`order`', 'condition' => 'category=2 and use_case=:uc', 'params' => array(':uc' => $useCase->id_use_case)));
    //$useCase->with(array('useCaseEvents'=>array('condition'=>'category=2','order'=>'order')));
    if (count($alt)) {
        $string .= "    \\item \\textbf{Scenari Alternativi}:\n      \\begin{enumerate}\n";
        foreach ($alt as $event) {
            $string .= "          \\item {$event->description}";
            if ($event->refers_to) {
                $child_id = $event->with('refersTo')->refersTo->public_id();
                $string .= " (\\hyperlink{{$child_id}}{{$child_id}})";
            }
            $string .= ";\n";
        }
        $string .= "\n      \\end{enumerate}\n";
    }
    $string .= "    \\item \\textbf{Postcondizione}: {$useCase->post}.\n";
    $string .= "  \\end{itemize}\n";
    if ($raw) {
        echo "{$string}";
    } else {
        echo "<pre>{$string}</pre>";
    }
    $useCase->with('useCases');
    if (isset($useCase->useCases)) {
        foreach ($useCase->useCases as $child) {
            display_uc($child, $raw);
        }
    }
}