% ===== =====
% Use case 4
% ===== =====
\subsection{Σενάριο χρήσης 4: Ανάκτηση θέματος} \label{subsection:3-6-use-case-fetch-topic}

Το σενάριο χρήσης 4, <ΣΧ-4>, περιγράφει τις διαδοχικές ενέργειες που εκτελούνται για την ανάκτηση ενός θέματος. Στους πίνακες \ref{table:3-6-use-case-fetch-topic} και \ref{table:3-6-use-case-fetch-topic-base-flow} παρατίθενται οι βασικές πληροφορίες του <ΣΧ-4> και οι ενέργειες της βασικής ροής αντίστοιχα, ενώ στο σχήμα \ref{figure:3-6-use-case-fetch-topic-base-flow-sequence-diagram} φαίνεται το διάγραμμα της βασικής ροής.

\useCaseTable
{Ανακτώ ένα θέμα}
{Στόχος του σεναρίου χρήσης είναι ο επισκέπτης ή ο χρήστης να μπορεί να ανακτήσει ένα θέμα.}
{\ref{srs:functional-srs-browse-community-topics}}
{-}
{Ο επισκέπτης ή χρήστης πατάει σε ένα από τα θέματα.}
{Ο επισκέπτης ή χρήστης πρέπει να έχει ανοίξει την σελίδα της εφαρμογής.}
{Σενάριο χρήσης 4, ανάκτηση θέματος.}
{\label{table:3-6-use-case-fetch-topic}}

% ===== Base flow =====

\useCaseBaseFlowTable
{
    1 & Ο χρήστης πατάει σε ένα από τα θέματα της λίστας. & Το σύστημα ανακτά τις πληροφορίες του θέματος από το blockchain. \\ [0.5ex]
    \midrule
    2 & -                                                 & Το σύστημα ανακτά τα μηνύματα του θέματος αντιγράφοντας τις προσωπικές βάσεις OrbitDb των συγγραφέων. \\ [0.5ex]
}
{Το σύστημα μεταβαίνει στην σελίδα του θέματος.}
{Σενάριο χρήσης 4 - Βασική ροή}
{\label{table:3-6-use-case-fetch-topic-base-flow}}

\begin{figure}[H]
    \centering
    \input{tikz/chapter-3/3-6-use-case-fetch-topic-sequence-diagram}
    \caption{Σενάριο χρήσης 4 - Διάγραμμα βασικής ροής}
    \label{figure:3-6-use-case-fetch-topic-base-flow-sequence-diagram}
\end{figure}

% ===== Alternate flow =====

Το <ΣΧ-4> περιέχει επίσης μία εναλλακτική ροή που μπορεί να προκύψει βάσει των επιλογών του χρήστη και η οποία περιγράφεται στον πίνακα \ref{table:3-6-use-case-fetch-topic-alternate-flow-1}. Η εναλλακτική ροή 1 φαίνεται επίσης στο σχήμα \ref{figure:3-6-use-case-fetch-topic-alternate-flow-1-sequence-diagram} όπου παρουσιάζεται το διάγραμμα ροής της.

\useCaseAlternateFlowTable
{1}
{Το θέμα περιέχει ψηφοφορία.}
{Εφόσον το θέμα που ανακτήθηκε στη γραμμή 1 της Βασικής Ροής περιέχει ψηφοφορία ανακτώνται οι πληροφορίες της.}
{
    1 & - & Το σύστημα ανακτά τα μηνύματα του θέματος αντιγράφοντας τις προσωπικές βάσεις OrbitDb των συγγραφέων. \\ [0.5ex]
    2 & - & Το σύστημα ανακτά την ψηφοφορία από το blockchain. \\ [0.5ex]
    3 & - & Το σύστημα ανακτά τις πληροφορίες της ψηφοφορίας αντιγράφοντας την προσωπική βάση OrbitDb του συγγραφέα. \\ [0.5ex]
    4 & - & Το σύστημα επιβεβαιώνει τις πληροφορίες της ψηφοφορίας με βάση το hash που έχει ανακτηθεί από το blockchain. \\ [0.5ex]
}
{Το σενάριο χρήσης τερματίζεται.}
{Σενάριο χρήσης 4 - Εναλλακτική ροή 1}
{\label{table:3-6-use-case-fetch-topic-alternate-flow-1}}

\begin{figure}[H]
    \centering
    \input{tikz/chapter-3/3-6-use-case-fetch-topic-alternate-flow-1-sequence-diagram}
    \caption{Σενάριο χρήσης 4 - Διάγραμμα εναλλακτικής ροής 1}
    \label{figure:3-6-use-case-fetch-topic-alternate-flow-1-sequence-diagram}
\end{figure}