diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 5dc27dd..0000000 --- a/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -target/ -indent.log diff --git a/Mafia-the-Game.pdf b/Mafia-the-Game.pdf deleted file mode 100644 index 499aa2b..0000000 Binary files a/Mafia-the-Game.pdf and /dev/null differ diff --git a/Mafia-the-Game.tex b/Mafia-the-Game.tex deleted file mode 100644 index d18c537..0000000 --- a/Mafia-the-Game.tex +++ /dev/null @@ -1,136 +0,0 @@ -\documentclass[12pt]{report} -\usepackage{titlesec} -\usepackage[utf8]{inputenc} -\usepackage[latvian]{babel} -\usepackage{enumitem} -\usepackage{fancyhdr} -\usepackage{gensymb} % grādu simbols -\usepackage{geometry} -\usepackage{graphicx} -\usepackage{hyperref} -\usepackage{array} -\usepackage{indentfirst} -\usepackage{multicol} -\usepackage{multirow} -\usepackage{ragged2e} -\usepackage{secdot} -\usepackage{tabularx} -\usepackage{tcolorbox} -\usepackage{tikz} -\usepackage{listings} -\usepackage{tocloft} -\usepackage{caption} -\usepackage{fmtcount} -\usepackage{ltablex} -\usepackage{chngcntr} -\usepackage{longtable} -\usepackage{ifthen} -\usepackage{needspace} -\usepackage[framemethod=TikZ]{mdframed} -% uncomment and comment the line above if compile time is too long for preview, -% but it won't compile the continuation overlay in the boxes correctly (should -% be commented for end compilation) -% \usepackage{mdframed} -\usetikzlibrary{positioning} - -\hypersetup{ - colorlinks=true, - linkcolor=black, - urlcolor=black -} - -\urlstyle{rm} - - -\titlespacing*{\section}{0pt}{2em}{2em} -\titlespacing*{\subsection}{0pt}{2em}{2em} -\titlespacing*{\subsubsection}{0pt}{2em}{2em} -\titlespacing*{\paragraph}{0pt}{2em}{2em} -\titlespacing*{\subparagraph}{0pt}{2em}{2em} - - - -% Configure the chapter / paragraph numbering (it only works this way when I compile) -\renewcommand{\thechapter}{\arabic{chapter}.} -\renewcommand{\thesection}{\arabic{section}.} -\renewcommand{\thesubsection}{\thesection\arabic{subsection}.} -\renewcommand{\thesubsubsection}{\thesubsection\arabic{subsubsection}.} -\renewcommand{\theparagraph}{\thesubsubsection\arabic{paragraph}.} -\renewcommand{\thesubparagraph}{\theparagraph\arabic{subparagraph}.} - - -\titleformat{\section}{\large\bfseries\centering\vfill\eject\MakeUppercase}{\thesection}{1em}{} % section formatting -\titleformat{\subsection}{\bfseries}{\thesubsection}{1em}{} % subsection formatting -\titleformat{\subsubsection}{\bfseries}{\thesubsubsection}{1em}{} % subsubsection formatting -\titleformat{\paragraph}{\bfseries}{\theparagraph}{1em}{} % paragraph formatting -\titleformat{\subparagraph}{\bfseries}{\thesubparagraph}{1em}{} % subparagraph formatting - - -% Modify caption style -\DeclareCaptionFormat{format}{\textit{#1} \textbf{#3}} -\captionsetup{format=format} - -\DeclareCaptionLabelFormat{image}{#2 att.} -\captionsetup[figure]{labelformat=image, labelsep=period} - -\counterwithin{figure}{section} % Reset figure counter within each section -\renewcommand{\thefigure}{\thesection\arabic{figure}.} % Redefine figure numbering -\counterwithin{table}{section} % Reset table counter within each section -\renewcommand{\thetable}{\thesection\arabic{table}.} % Redefine table numbering - -\captionsetup[table]{justification=raggedleft,singlelinecheck=off} % Align table caption text to the left -\captionsetup[figure]{justification=raggedright,singlelinecheck=off} % Align figure caption text to the right - - - -\geometry{a4paper, left=30mm, right=20mm, top=20mm, bottom=20mm} - -\pagestyle{fancy} -\fancyhead{} -\fancyfoot{} -\fancyfoot[C]{\thepage} -\renewcommand{\headrulewidth}{0pt} -\linespread{1.5} -\setlength{\parindent}{1cm} -\setlength{\parskip}{0pt} - -\setcounter{secnumdepth}{5} % Numering for subsubsections -\setcounter{tocdepth}{3} % Add subsubsections in ToC - - -% ToC config -% TODO: section in uppercase -\renewcommand{\cftsecfont}{\MakeUppercase} -\renewcommand{\cfttoctitlefont}{\hfill\large\bfseries\MakeUppercase} -\renewcommand{\cftaftertoctitle}{\hfill} -\cftsetindents{section}{0.5cm}{0.5cm} -\cftsetindents{subsection}{1cm}{1cm} -\cftsetindents{subsubsection}{1.5cm}{1.5cm} -\renewcommand{\contentsname}{Saturs} -% \addto\captionslatvian{ -% \renewcommand{\contentsname}{Satura rādītājs} -% } - - - -\newcounter{rownum} -\renewcommand{\therownum}{\padzeroes[2]{\decimal{rownum}}} - -\keepXColumns - -\input{./src/utils/index.tex} - - -\begin{document} -\input{./src/title-page.tex} -\input{./src/abstract.tex} -\pagebreak -\tableofcontents -\input{./src/introduction/index.tex} -\input{./src/legends.tex} -\input{./src/description/index.tex} -\input{./src/requirements/index.tex} -\input{./src/design/index.tex} -% \input{./src/test.tex} - -\end{document} diff --git a/README.md b/README.md deleted file mode 100644 index b11d4a9..0000000 --- a/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# Mafia the Game Description - - - -- [PDF](#pdf) -- [Compilation](#compilation) - - - -## [PDF](./Mafia-the-Game.pdf) - -## Compilation - -It is recommended to use `xelatex`. -```sh -mkdir target -xelatex -shell-escape -interaction=nonstopmode -output-directory=target Mafia-the-Game.tex -``` diff --git a/src/abstract.tex b/abstract.typ similarity index 63% rename from src/abstract.tex rename to abstract.typ index 9312b3e..f2c578c 100644 --- a/src/abstract.tex +++ b/abstract.typ @@ -1,38 +1,63 @@ -\section*{Anotācija} -\setcounter{page}{2} -Sociālā lomu spēle ``Mafija'' ir plaši pazīstama. Tā ir pieejama vairākos -paveidos un formātos, kā arī piedāvā neierobežotu skaitu konfigurāciju un lomu. +#import "layout.typ": indent-par +#pagebreak() +#heading( + level: 1, + outlined: false, + numbering: none, + "Anotācija" +) + + +#indent-par([ +Sociālā lomu spēle "Mafija" ir plaši pazīstama. Tā ir pieejama vairākos +paveidos un formātos, kā arī piedāvā neierobežotu konfigurāciju un lomu skaitu. Spēlētāju ērtībai tiek nodrošināts tīmekļa vietnes formāts, kas ietver norādījumus, informējot lietotāju par pieejamajām iespējām, un skaidrojumus, -aprakstot spēles elementus un saskarni, ar mērķi vienkāršot tās spēlēšanu. +aprakstot spēles elementus un saskarni, ar mērķi atvieglot tās lietošanu. Tirgus izpēte apliecina, ka ir pieejami vairāki, nepilnvērtīgi risinājumi. -Programmatūras prasību specifikācija apraksta sistēmas pamatprasības ar +Programmatūras prasību specifikācija apraksta sistēmas pamatprasības un papildus funkcionalitāti, tostarp lomu klāsta papildināšanu, spēles -konfigurāciju izveidi, kā arī priviliģētu lietotāju (maksas lietotāju), +konfigurāciju izveidi, kā arī priviliģētu lietotāju (maksas lietotāju) izveidošanu, pielietojot abonementa paveida maksājumu sistēmu. +]) -\textbf{Atslēgvārdi:} +#par(first-line-indent: 0cm, [*Atslēgvārdi:*]) Mafijas spēle, sistēmas prasības, specifikācijas dokuments, programmatūras uzlabošana, lomu spēle, vienkāršota spēlēšana, organizatoriski risinājumi, programmatūras prasību specifikācija, lietotāju veidots saturs, abonements, maksas lietotājs, maksājumu apstrādātāja lietojumprogrammas saskarni (API). -\section*{Abstract} -The social role-playing game ``Mafia'' is widely known. It is available in +#text( + hyphenate: auto, + lang: "en", + [ + +#pagebreak() +#heading( + level: 1, + outlined: false, + numbering: none, + "Abstract" +) + +#indent-par([ +The social role-playing game "Mafia" is widely known. It is available in various versions and formats, offering an unlimited number of configurations and roles. For the convenience of players, the game is made as a web application that includes instructions, informing the user about available -options, and explanations describing the game's elements and interface, to make -it simpler. Market research confirms that several mediocre solutions are +ptions, and explanations describing the game's elements and interface, to improve user experience. Market research confirms that several mediocre solutions are available. The software requirements specification describes the system's basic requirements with additional functionality, including expanding the range of roles, creating game configurations, and a privileged user (premium user) using a subscription-based payment system. +]) -\textbf{Keywords:} + +#par(first-line-indent: 0cm, [*Keywords:*]) Mafia game, system requirements, specification document, software improvement, role-playing, simplified gameplay, organizational solutions, software requirements specification, user-generated content, subscription, premium user, payment processor application program interface (API). +]) \ No newline at end of file diff --git a/fonts/cmu/cmunbbx.otf b/fonts/cmu/cmunbbx.otf new file mode 100644 index 0000000..4becf1b Binary files /dev/null and b/fonts/cmu/cmunbbx.otf differ diff --git a/fonts/cmu/cmunbi.otf b/fonts/cmu/cmunbi.otf new file mode 100644 index 0000000..5cd8a12 Binary files /dev/null and b/fonts/cmu/cmunbi.otf differ diff --git a/fonts/cmu/cmunbl.otf b/fonts/cmu/cmunbl.otf new file mode 100644 index 0000000..e594b5e Binary files /dev/null and b/fonts/cmu/cmunbl.otf differ diff --git a/fonts/cmu/cmunbmo.otf b/fonts/cmu/cmunbmo.otf new file mode 100644 index 0000000..4bf308f Binary files /dev/null and b/fonts/cmu/cmunbmo.otf differ diff --git a/fonts/cmu/cmunbmr.otf b/fonts/cmu/cmunbmr.otf new file mode 100644 index 0000000..886bff1 Binary files /dev/null and b/fonts/cmu/cmunbmr.otf differ diff --git a/fonts/cmu/cmunbso.otf b/fonts/cmu/cmunbso.otf new file mode 100644 index 0000000..f1013a1 Binary files /dev/null and b/fonts/cmu/cmunbso.otf differ diff --git a/fonts/cmu/cmunbsr.otf b/fonts/cmu/cmunbsr.otf new file mode 100644 index 0000000..a9fd5c4 Binary files /dev/null and b/fonts/cmu/cmunbsr.otf differ diff --git a/fonts/cmu/cmunbtl.otf b/fonts/cmu/cmunbtl.otf new file mode 100644 index 0000000..d6d2784 Binary files /dev/null and b/fonts/cmu/cmunbtl.otf differ diff --git a/fonts/cmu/cmunbto.otf b/fonts/cmu/cmunbto.otf new file mode 100644 index 0000000..d726505 Binary files /dev/null and b/fonts/cmu/cmunbto.otf differ diff --git a/fonts/cmu/cmunbx.otf b/fonts/cmu/cmunbx.otf new file mode 100644 index 0000000..fc32d6d Binary files /dev/null and b/fonts/cmu/cmunbx.otf differ diff --git a/fonts/cmu/cmunbxo.otf b/fonts/cmu/cmunbxo.otf new file mode 100644 index 0000000..d6c902b Binary files /dev/null and b/fonts/cmu/cmunbxo.otf differ diff --git a/fonts/cmu/cmunci.otf b/fonts/cmu/cmunci.otf new file mode 100644 index 0000000..99e8e03 Binary files /dev/null and b/fonts/cmu/cmunci.otf differ diff --git a/fonts/cmu/cmunit.otf b/fonts/cmu/cmunit.otf new file mode 100644 index 0000000..daba644 Binary files /dev/null and b/fonts/cmu/cmunit.otf differ diff --git a/fonts/cmu/cmunobi.otf b/fonts/cmu/cmunobi.otf new file mode 100644 index 0000000..31fc8e3 Binary files /dev/null and b/fonts/cmu/cmunobi.otf differ diff --git a/fonts/cmu/cmunobx.otf b/fonts/cmu/cmunobx.otf new file mode 100644 index 0000000..244bac9 Binary files /dev/null and b/fonts/cmu/cmunobx.otf differ diff --git a/fonts/cmu/cmunorm.otf b/fonts/cmu/cmunorm.otf new file mode 100644 index 0000000..d7310da Binary files /dev/null and b/fonts/cmu/cmunorm.otf differ diff --git a/fonts/cmu/cmunoti.otf b/fonts/cmu/cmunoti.otf new file mode 100644 index 0000000..bc43e49 Binary files /dev/null and b/fonts/cmu/cmunoti.otf differ diff --git a/fonts/cmu/cmunrb.otf b/fonts/cmu/cmunrb.otf new file mode 100644 index 0000000..dda7ceb Binary files /dev/null and b/fonts/cmu/cmunrb.otf differ diff --git a/fonts/cmu/cmunrm.otf b/fonts/cmu/cmunrm.otf new file mode 100644 index 0000000..b449df0 Binary files /dev/null and b/fonts/cmu/cmunrm.otf differ diff --git a/fonts/cmu/cmunsi.otf b/fonts/cmu/cmunsi.otf new file mode 100644 index 0000000..3705fc6 Binary files /dev/null and b/fonts/cmu/cmunsi.otf differ diff --git a/fonts/cmu/cmunsl.otf b/fonts/cmu/cmunsl.otf new file mode 100644 index 0000000..05608b2 Binary files /dev/null and b/fonts/cmu/cmunsl.otf differ diff --git a/fonts/cmu/cmunso.otf b/fonts/cmu/cmunso.otf new file mode 100644 index 0000000..23fd4ad Binary files /dev/null and b/fonts/cmu/cmunso.otf differ diff --git a/fonts/cmu/cmunss.otf b/fonts/cmu/cmunss.otf new file mode 100644 index 0000000..49fecee Binary files /dev/null and b/fonts/cmu/cmunss.otf differ diff --git a/fonts/cmu/cmunssdc.otf b/fonts/cmu/cmunssdc.otf new file mode 100644 index 0000000..f7d33bc Binary files /dev/null and b/fonts/cmu/cmunssdc.otf differ diff --git a/fonts/cmu/cmunst.otf b/fonts/cmu/cmunst.otf new file mode 100644 index 0000000..e56babe Binary files /dev/null and b/fonts/cmu/cmunst.otf differ diff --git a/fonts/cmu/cmunsx.otf b/fonts/cmu/cmunsx.otf new file mode 100644 index 0000000..b1fc68e Binary files /dev/null and b/fonts/cmu/cmunsx.otf differ diff --git a/fonts/cmu/cmuntb.otf b/fonts/cmu/cmuntb.otf new file mode 100644 index 0000000..d6772ca Binary files /dev/null and b/fonts/cmu/cmuntb.otf differ diff --git a/fonts/cmu/cmunti.otf b/fonts/cmu/cmunti.otf new file mode 100644 index 0000000..5739e9d Binary files /dev/null and b/fonts/cmu/cmunti.otf differ diff --git a/fonts/cmu/cmuntt.otf b/fonts/cmu/cmuntt.otf new file mode 100644 index 0000000..a564385 Binary files /dev/null and b/fonts/cmu/cmuntt.otf differ diff --git a/fonts/cmu/cmuntx.otf b/fonts/cmu/cmuntx.otf new file mode 100644 index 0000000..8fadd9a Binary files /dev/null and b/fonts/cmu/cmuntx.otf differ diff --git a/fonts/cmu/cmunui.otf b/fonts/cmu/cmunui.otf new file mode 100644 index 0000000..d744777 Binary files /dev/null and b/fonts/cmu/cmunui.otf differ diff --git a/fonts/cmu/cmunvi.otf b/fonts/cmu/cmunvi.otf new file mode 100644 index 0000000..3403b51 Binary files /dev/null and b/fonts/cmu/cmunvi.otf differ diff --git a/fonts/cmu/cmunvt.otf b/fonts/cmu/cmunvt.otf new file mode 100644 index 0000000..a3cdd44 Binary files /dev/null and b/fonts/cmu/cmunvt.otf differ diff --git a/img/EkrānskatuPlūsmasDiagramma.svg b/img/EkrānskatuPlūsmasDiagramma.svg new file mode 100644 index 0000000..e7345d3 --- /dev/null +++ b/img/EkrānskatuPlūsmasDiagramma.svg @@ -0,0 +1,7854 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/dpd0/0tāLīmeņaDPD.svg b/img/dpd0/0tāLīmeņaDPD.svg new file mode 100644 index 0000000..9243a4c --- /dev/null +++ b/img/dpd0/0tāLīmeņaDPD.svg @@ -0,0 +1,7050 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/dpd1/1LīmeņaDPDN1.svg b/img/dpd1/1LīmeņaDPDN1.svg new file mode 100644 index 0000000..03f271b --- /dev/null +++ b/img/dpd1/1LīmeņaDPDN1.svg @@ -0,0 +1,7145 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/dpd1/1LīmeņaDPDN2.svg b/img/dpd1/1LīmeņaDPDN2.svg new file mode 100644 index 0000000..8d335ed --- /dev/null +++ b/img/dpd1/1LīmeņaDPDN2.svg @@ -0,0 +1,8488 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/dpd2/CenuModulis.svg b/img/dpd2/CenuModulis.svg new file mode 100644 index 0000000..7bfb01a --- /dev/null +++ b/img/dpd2/CenuModulis.svg @@ -0,0 +1,1963 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/dpd2/LietotājuKontuModulis.svg b/img/dpd2/LietotājuKontuModulis.svg new file mode 100644 index 0000000..9b5b36e --- /dev/null +++ b/img/dpd2/LietotājuKontuModulis.svg @@ -0,0 +1,3850 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/dpd2/MaksasAbonementaModulis.svg b/img/dpd2/MaksasAbonementaModulis.svg new file mode 100644 index 0000000..7f64cb7 --- /dev/null +++ b/img/dpd2/MaksasAbonementaModulis.svg @@ -0,0 +1,4928 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/dpd2/ReģistrācijasPieteikšanāsModulis.svg b/img/dpd2/ReģistrācijasPieteikšanāsModulis.svg new file mode 100644 index 0000000..fdc4ca9 --- /dev/null +++ b/img/dpd2/ReģistrācijasPieteikšanāsModulis.svg @@ -0,0 +1,7171 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/dpd2/SpēlesGaitasModulis.svg b/img/dpd2/SpēlesGaitasModulis.svg new file mode 100644 index 0000000..dca0286 --- /dev/null +++ b/img/dpd2/SpēlesGaitasModulis.svg @@ -0,0 +1,4479 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/dpd2/SpēlesIstabasModulis.svg b/img/dpd2/SpēlesIstabasModulis.svg new file mode 100644 index 0000000..ae7f82d --- /dev/null +++ b/img/dpd2/SpēlesIstabasModulis.svg @@ -0,0 +1,7553 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/dpd2/SpēlesLomuModulis.svg b/img/dpd2/SpēlesLomuModulis.svg new file mode 100644 index 0000000..713cee2 --- /dev/null +++ b/img/dpd2/SpēlesLomuModulis.svg @@ -0,0 +1,4662 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/dpd2/SpēlesUzstādījumuModulis.svg b/img/dpd2/SpēlesUzstādījumuModulis.svg new file mode 100644 index 0000000..f640888 --- /dev/null +++ b/img/dpd2/SpēlesUzstādījumuModulis.svg @@ -0,0 +1,5841 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/dpd2/TerzēšanasModulis.svg b/img/dpd2/TerzēšanasModulis.svg new file mode 100644 index 0000000..92ec473 --- /dev/null +++ b/img/dpd2/TerzēšanasModulis.svg @@ -0,0 +1,3639 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/erd/FiziskaisERDModelis.png b/img/erd/FiziskaisERDModelis.png new file mode 100644 index 0000000..8a4a295 Binary files /dev/null and b/img/erd/FiziskaisERDModelis.png differ diff --git a/img/erd/KonceptualaisERModelis.svg b/img/erd/KonceptualaisERModelis.svg new file mode 100644 index 0000000..5b9c582 --- /dev/null +++ b/img/erd/KonceptualaisERModelis.svg @@ -0,0 +1,9256 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/erd/LogiskaisERDModelis.svg b/img/erd/LogiskaisERDModelis.svg new file mode 100644 index 0000000..ece1e16 --- /dev/null +++ b/img/erd/LogiskaisERDModelis.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/placeholder.jpg b/img/placeholder.jpg new file mode 100644 index 0000000..9a74bb1 Binary files /dev/null and b/img/placeholder.jpg differ diff --git a/img/ui/desktop/available-game-room-list.png b/img/ui/desktop/available-game-room-list.png new file mode 100644 index 0000000..ae6b3e3 Binary files /dev/null and b/img/ui/desktop/available-game-room-list.png differ diff --git a/img/ui/desktop/desktop-register.png b/img/ui/desktop/desktop-register.png new file mode 100644 index 0000000..eb5ef4a Binary files /dev/null and b/img/ui/desktop/desktop-register.png differ diff --git a/img/ui/desktop/game-action.png b/img/ui/desktop/game-action.png new file mode 100644 index 0000000..809c39b Binary files /dev/null and b/img/ui/desktop/game-action.png differ diff --git a/img/ui/desktop/game-event-overview.png b/img/ui/desktop/game-event-overview.png new file mode 100644 index 0000000..0d821f6 Binary files /dev/null and b/img/ui/desktop/game-event-overview.png differ diff --git a/img/ui/desktop/game-screen.png b/img/ui/desktop/game-screen.png new file mode 100644 index 0000000..dd886e8 Binary files /dev/null and b/img/ui/desktop/game-screen.png differ diff --git a/img/ui/desktop/landingpage.png b/img/ui/desktop/landingpage.png new file mode 100644 index 0000000..9aa9fa7 Binary files /dev/null and b/img/ui/desktop/landingpage.png differ diff --git a/img/ui/desktop/landingpage.svg b/img/ui/desktop/landingpage.svg new file mode 100644 index 0000000..cf1aeb4 --- /dev/null +++ b/img/ui/desktop/landingpage.svg @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/ui/desktop/register.png b/img/ui/desktop/register.png new file mode 100644 index 0000000..71992ab Binary files /dev/null and b/img/ui/desktop/register.png differ diff --git a/img/ui/mobile/lobby.png b/img/ui/mobile/lobby.png new file mode 100644 index 0000000..16a9ed8 Binary files /dev/null and b/img/ui/mobile/lobby.png differ diff --git a/img/ui/tablet/game-phase-change.png b/img/ui/tablet/game-phase-change.png new file mode 100644 index 0000000..70eac3c Binary files /dev/null and b/img/ui/tablet/game-phase-change.png differ diff --git a/img/uml/EventCreationActivityDiagram-01.svg b/img/uml/EventCreationActivityDiagram-01.svg new file mode 100644 index 0000000..c9228c7 --- /dev/null +++ b/img/uml/EventCreationActivityDiagram-01.svg @@ -0,0 +1,8844 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/uml/EventCreationActivityDiagram-02.svg b/img/uml/EventCreationActivityDiagram-02.svg new file mode 100644 index 0000000..c5d16fc --- /dev/null +++ b/img/uml/EventCreationActivityDiagram-02.svg @@ -0,0 +1,2701 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/uml/GameActionSwimlaneChart.svg b/img/uml/GameActionSwimlaneChart.svg new file mode 100644 index 0000000..3d7501f --- /dev/null +++ b/img/uml/GameActionSwimlaneChart.svg @@ -0,0 +1,5281 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/uml/GameRoomStateDiagram.svg b/img/uml/GameRoomStateDiagram.svg new file mode 100644 index 0000000..b14b28a --- /dev/null +++ b/img/uml/GameRoomStateDiagram.svg @@ -0,0 +1,2123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/uml/ManifiestationDiagram.svg b/img/uml/ManifiestationDiagram.svg new file mode 100644 index 0000000..5d78a71 --- /dev/null +++ b/img/uml/ManifiestationDiagram.svg @@ -0,0 +1,1611 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/uml/SubscriptionFunctionSequenceDiagram.svg b/img/uml/SubscriptionFunctionSequenceDiagram.svg new file mode 100644 index 0000000..6504bff --- /dev/null +++ b/img/uml/SubscriptionFunctionSequenceDiagram.svg @@ -0,0 +1,2447 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/layout.typ b/layout.typ new file mode 100644 index 0000000..97ec9fd --- /dev/null +++ b/layout.typ @@ -0,0 +1,157 @@ +#import "@preview/i-figured:0.1.0" +#import "@preview/big-todo:0.2.0": * +#import "@preview/tablex:0.0.6": tablex + + +#let indent = 1cm +#let indent-par(body) = par(h(indent) + body) + +#let project( + university: "", + faculty: "", + title: [], + authors: (), + advisor: "", + date: "", + body +) = { + set document(author: authors) + + set page( + margin: (left: 30mm, right: 20mm, top: 20mm, bottom: 20mm), + number-align: center, + paper: "a4" + ) + set text( + //font: "New Computer Modern", + font: "CMU", + size: 12pt, + hyphenate: auto, + lang: "lv", + region: "LV" + ) + show raw: set text(font: "New Computer Modern Mono") + + show math.equation: set text(weight: 400) + + + // Formatting for regular text + set par( + justify: true, + leading: 1.5em, + first-line-indent: indent, + ) + show par: set block(spacing: 1.5em) // Set 1.5em gap between paragraphs + show heading: set block(spacing: 1.5em) + set terms(separator: [ -- ]) + + + // Headings + set heading(numbering: "1.1.") + show heading: it => { + if it.level == 1 { + // pagebreak(weak: true) + text(14pt, align(center, upper(it))) + } else { + it + } + } + + + /* Title page config start */ + align( + center, + upper( + text( + size: 16pt, + [ + #university\ + #faculty + ] + ) + )) + + v(1fr) + + align( + center, + text(20pt, weight: "bold", title) + ) + + v(1fr) + + // Author information + align(right, [ + #if authors.len() > 1 { + text(weight: "bold", "Darba autori:") + } else { + text(weight: "bold", "Darba autors:") + }\ + #authors.join("\n") + + #v(2em) + + #if advisor != "" { + text(weight: "bold", "Darba vadītājs:\n") + advisor + } + ]) + + v(0.5fr) + + align(center, + upper(text(date)) + ) + /* Title page config end */ + + + // WARNING: removove before sending + // todo_outline + + + /* --- Figure/Table conf start --- */ + show heading: i-figured.reset-counters + show figure: i-figured.show-figure.with(numbering: "1.1.") + + show figure.where(kind: "i-figured-table"): set block(breakable: true) + show figure.where(kind: "i-figured-table"): set figure.caption(position: top) + + + show figure: set par(justify: false) // disable justify for figures (tables) + + show figure.caption: it => { + if it.kind == "i-figured-table" { + align(end, emph(it.counter.display(it.numbering) + " tabula ") + text(weight: "bold", it.body)) + } else if it.kind == "i-figured-image" { + align(start, emph(it.counter.display(it.numbering) + " att. ") + text(weight: "bold", it.body)) + } else { + it + } + } + + set ref(supplement: it => {}) // disable default reference suppliments + /* --- Figure/Table conf end --- */ + + set list(marker: ([•], [--], [\*], [·])) + set enum(numbering: "1aiA)") // TODO: make the same style as LaTeX: 1. | (a) | i. | A. + + + // Abstract + include "abstract.typ" + + /* ToC config start */ + // Uppercase 1st level headings in ToC + show outline.entry.where(level: 1): it => { + upper(it) + } + + pagebreak() + outline(depth: 3, indent: 1cm, title: text(size: 14pt, "SATURS")) + /* ToC config end */ + + // Start page numering + set page(numbering: "1", number-align: center) + + // Main bdy. + body +} diff --git a/main.pdf b/main.pdf new file mode 100644 index 0000000..ad5e65f Binary files /dev/null and b/main.pdf differ diff --git a/main.typ b/main.typ new file mode 100644 index 0000000..a83fcfd --- /dev/null +++ b/main.typ @@ -0,0 +1,4084 @@ +#import "layout.typ": project, indent-par +#import "@preview/i-figured:0.1.0" +#import "@preview/tablex:0.0.6": tablex, rowspanx, colspanx, cellx +#import "utils.typ": * + + +#show: project.with( + university: "Latvijas Universitāte", + faculty:"Datorikas fakultāte", + title: [Tiešsaistes spēles sistēma "Mafija"\ Praktiskais darbs programminžinierijā], + authors: ( + "Alens Aleksandrs Čerņa, ac22065", + "Kristiāns Francis Cagulis, kc22015", + "Ernests Gustavs Dane, eg22086", + "Miķelis Kukainis, mk22092", + "Jorens Štekeļs, js21283", + ), + advisor: "prof. Dr. sc. comp. Laila Niedrīte", + date: "Rīga 2023", +) + + +#set heading(numbering: none) + +#pagebreak(weak: true) += Apzīmējumu saraksts + +#par(first-line-indent: 0cm, [ +/ API: lietojumprogrammu saskarne (angl. Application Program Interface); +/ Abonements: uz noteiktu laiku par maksu piešķirtās papildus lietotāja iespējas; +/ BCNF: Boisa-Kodda normālforma (angl. Boyce–Codd normal form) izmanto datu bāzu normalizācijā; +/ CSRF: Starpvietņu pieprasījuma viltošana (angl. Cross-Site Request Forgery) -- uzbrukuma veids, kurā ļaunprātīgi pieprasījumi tiek izsūtīti no lietotāja pārlūka, izmantojot lietotāja autentifikācijas datus; +/ DPD: datu plūsmas diagramma; +/ Dialogs: lietotāja saskarnes elements, kas parāda ziņojumu un piedāvā lietotājam vienu vai vairākas iespējas, kuras izvēlēties; +/ Docker/Konteineris: ir platforma, kas izmanto operētājsistēmas līmeņa virtualizāciju, lai piegādātu programmatūru; +/ ER modelis: entitāšu saišu modelis (angl. Entity-Relationship model); +/ GDPR: vispārīgā datu aizsardzības regula (angl. General Data Protection Regulation) -- Eiropas Savienības regula, kas nosaka kā jāapstrādā un jāaizsargā personu dati; +/ HTTP: hiperteksta pārsūtīšanas protokols (angl. Hypertext Transfer Protocol) -- protokols datu pārsūtīšanai tīmeklī, galvenokārt izmantojot tīmekļa lapas; +/ IP adrese: Interneta protokola adrese (angl. Internet Protocol address) -- unikāls numurs, kas tiek piešķirts katrai ierīcei, kas ir savienota ar datoru tīklu, kas izmanto IP komunikāciju; +/ Istaba (spēles istaba): lietotāju kopa, kas ir saistīti vienas spēles ietvaros, i.e., spēles instance; +/ Izvairīšanās simboli: izvairīšanās simboli (angl. escape symbols vai escape characters) ir īpaši simboli, kas ļauj iekļaut teksta virknēs simbolus, kuri parasti ir rezervēti citām funkcijām; +/ Karodziņš: Būla mainīgais, i.e., mainīgais, kas var būt patiess vai nepatiess; +/ Klienta identifikators: maksājumu apstrādātāja uzglabāts identifikators, kas ir saistīts ar sistēmas lietotāju; +/ Komandu injekcija: drošības uzbrukuma veids, kurā uzbrucējs var izpildīt ļaunprātīgas komandas sistēmā, izmantojot drošības nepilnības; +/ Loma (spēles loma): spēlēs loma, kam piemīt noteiktas darbības un mērķis; +/ Maksas siena: maksājums par lietotāju pieeju daļai no sistēmas piedāvātās funkcionalitātes; +/ PNG: portatīvā tīkla grafika (angl. Portable Network Graphics) ir rastra grafikas failu formāts, kas atbalsta datu saspiešanu bez zudumiem; +/ PPA: programmatūras projektējuma apraksts; +/ PPS: programmatūras prasību specifikācija; +/ PostgreSQL: ir atvērtā koda objektu-relationālās datu bāzes pārvaldības sistēma, kas atbalsta plašu strukturētas vaicājumu valodas funkcionalitāti; +/ SQL injekcija: drošības apdraudējums, kas rodas, kad uzbrucējs var ievietot vai "injicēt" SQL komandas datu bāzes vaicājumā, tādējādi mainot tā darbību vai izgūstot konfidenciālu informāciju; +/ SQL: strukturēta vaicājumu valoda (angl. val. Structured Query Language) ir standartizēta programmēšanas valoda, kas ir plaši izmantojama datu bāzu pārvaldībai; +/ Sanitizēšana: Datu vai ievades apstrāde, lai noņemtu vai neitralizētu potenciāli kaitīgus vai nevēlamus elementus; +/ Sistēmas loma: sistēmas lietotāju grupa ar noteiktām privilēģijām; +/ Skripts: Automatizēta instrukciju virkne, kas izpilda noteiktas darbības programmēšanas vai sistēmas vidē; +/ Spēlētājs: lietotāja ieraksts vienas virtuālās istabas kontekstā; +/ Sāls pievienošana: Drošības metode, kurā pirms paroles jaucējfunkcijas izmantošanas tai tiek pievienots nejaušs simbolu virknes fragments, lai padarītu paroles atšifrēšanu sarežģītāku; +/ UTC: saskaņotais pasaules laiks (angl. Coordinated Universal Time) -- starptautisks, ļoti precīzs un stabils laika noteikšanas standarts; +/ UTF8: Vienota teksta formāta kodējums 8-bitu garumā (angl. Unicode Transformation Format -- 8 bit) -- populārs teksta kodējums, kas atbalsta visu pasaules valodu rakstzīmes; +/ XSS: Starpvietņu skriptēšana (angl. Cross-Site Scripting) -- drošības uzbrukuma veids, kurā uzbrucēji ievieto ļaunprātīgus skriptus tīmekļa lapā, kas tiek izpildīti citu lietotāju pārlūkos. +]) + +#pagebreak(weak: true) += Ievads + +== Nolūks + +#indent-par([ +Šī dokumenta mērķis ir raksturot tiešsaistes sistēmas "Mafija" programmatūras prasības. Sistēma ir paredzēta individuāliem lietotājiem, kuru interesēs ir iesaistīties savstarpējā sociālā aktivitātē lomu spēles formātā. +]) + +== Darbības sfēra +#indent-par([ +Sistēma "Mafija" ir atvasināta no plaši pazīstamas sociālas lomu spēles, kas balstīta uz dedukciju. Spēlē piedalās indivīdi -- spēlētāji. Tiem piešķirtas lomas, kas pieder kādai lomu grupai. Lomu grupa "Ciems" cenšas izdibināt kuri ir lomu grupas "Mafija" locekļi. Mafijas mērķis ir radīt haosu ciema iedzīvotāju vidū un pakāpeniski izslēgt ciema iedzīvotājus no spēles, izmantojot stratēģisku manipulāciju un iedalītās lomas darbības. Spēlētāji, kuri nav ietverti ne "Ciems", ne "Mafija" lomu grupā cenšas sasniegt tiem iedalītās lomas mērķi. Tikai "Mafijas" locekļiem ir informācija par to, kuri no spēlētāju loka pieder "Mafija" lomu grupai. Katram spēlētājam jāizmanto individuāla ierīce, kas var pieslēgties tīmeklim, lai pieteiktos sistēmā, pievienotos konkrētai spēlei un tajā piedalītos. +]) + +Katra spēlētāja ierīcē spēles sesijas laikā tiek parādīta informācija par iedalīto lomu un ar to saistītajām, pieejamajām darbībām. Informāciju nav paredzēts vai atļauts rādīt citiem spēlētājiem. Sistēmas vizuālā saskarne ietver informāciju par spēles aktuālo stāvokli, precīzāk, fāzi (diena, nakts vai balsošana), spēles ilgumu, palikušo spēlētāju skaitu un citiem spēli raksturojošiem faktoriem. + +Spēlētāja darbību klāsts ir atkarīgs no iedalītās lomas un aktuālā spēles stāvokļa. Spēles organizatoram (maksas lietotājam) ir iespēja izveidot virtuālu istabu un pielāgot tās uzstādījumus, lai mainītu to uzstādījumu, kas ietver noteiktās lomas, kā arī mainīt un veidot jaunas lomas. Maksas lietotājs spēj izveidot jaunas lomas ar kādu darbību kombināciju, ko, savukārt, var izmantot spēles uzstādījumos, kas ir kombinācijas no lomām -- gan pamata izveidotām, gan citu lietotāju (publiski) izveidotām. + +Katram spēlētājam tiek nodrošināta sinhronizēta informācija par spēles stāvokli un pieejamajām darbībām, tai skaitā, paziņojumi par spēles stāvokļa izmaiņām. + +Ārpus spēles sesijas, lietotājiem ir pieejams spēļu istabu saraksts, kas var ietvert gan atvērtas, gan privātas virtuālās spēļu telpas, un lietotāja profils, kurā var rediģēt lietotāju raksturojošo informāciju. + +// Explain customization of the roles / setups + +== Saistība ar citiem dokumentiem + +#indent-par([ +PPS ir izstrādāta, ievērojot LVS 68:1996 "Programmatūras prasību specifikācijas ceļvedis" un LVS 72:1996 "Ieteicamā prakse programmatūras projektējuma aprakstīšanai" standarta prasības. +]) + +== Pārskats + +#indent-par([ +Dokumenta ievads satur tā nolūku, izstrādājamās programmatūras skaidrojumu, vispārīgu programmatūras mērķi un funkciju klāstu, saistību ar citiem dokumentiem, kuru prasības tika izmantotas dokumenta izstrādāšanas gaitā, kā arī pārskatu par dokumenta daļu saturu ar dokumenta struktūras skaidrojumu. +]) + +Pirmajā nodaļa tiek aprakstīti faktori, kas var ietekmēt produktu un tā prasības. Nodaļā tiek pamatota programmatūras izstrādes motivācija un nolūks, aprakstītas produkta vieta citu sistēmu perspektīvā, galvenās augsta līmeņa darījumprasības, sistēmas lietotāju grupu lomas un mērķi, kā arī tiek uzskaitīti faktori, kas var ierobežot vai ietekmēt programmatūras prasību specifikāciju. + +Otrajā nodaļā tiek norādītas konkrētas prasības, kas satur visu nepieciešamo programmatūras projektējuma veidošanai. Tā ietver: datu bāzes konceptuālo modeli, funkcionālās prasības, kas apraksta sistēmas funkciju sadalījumu pa moduļiem, arējās saskarnes prasības un sistēmas vispārējās prasības. + +Trešajā nodaļā tiek aprakstīta daļa no projektējuma. Nodaļa satur datu bāzes projektējumu - datubāzes loģisko modeli, fizisko modeli un tā lauku aprakstu -, dažu funkciju projektējumu diagrammas un dažu lietotāju saskarņu ekrānskatus. + +#set heading(numbering: "1.1.") + += Vispārējais apraksts + +== Esošā stāvokļa apraksts + +#indent-par([ +Tirgū pastāv vairākas sistēmas un citi programmatūras formāti, piemēram, lietotnes, kas piedāvā dažādas lomu spēļu variācijas, to skaitā, "Warewolf online", "Town of Salem", "Mafia.gg", "BeyondMafia", "Mafia: The Game" un daudzi citi. Esošiem risinājumiem ir vairākas problēmas: maksas piekļuve, pārmērīgs iespēju skaits, kas ir pieejamas tikai par maksu, spēle ir pieejama tikai uz mobilā viedtālruņa. "Mafija" īstenos svarīgākās no esošo spēļu iespējām un pievienos jaunas iespējas, kas papildinās un uzlabos lietotāju pieredzi, kā arī samazinās maksas funkciju īpatsvaru. +]) + +== Pasūtītājs + +#indent-par([ +Sistēma nav izstrādāta pēc konkrēta pasūtītāja pieprasījuma, tā ir raksturota un projektēta ar iespēju realizēt pēc studentu grupas iniciatīvas programminženierijas kursa ietvaros. +]) + +== Produkta perspektīva + +#indent-par([ +Sistēmā tiek integrēti vai izmantoti citu uzņēmumu un izstrādātāju piedāvāti pakalpojumi. Produkta realizācijā ir paredzēts izmantot maksājumu apstrātāja un e-pasta pakalpojumu sniedzēja pakalpojumus, kamēr tie atbilst sistēmas pieprasītajai funkcionalitātei un piedāvā optimālākos, kā arī drošākos un efektīvākos risinājumus tirgū. +]) + +Maksājumu apstrādātājs realizēs lietotāju maksas pakalpojumu iegādi konkrētu papildus funkciju iegūšanai uz noteiktu laiku. Informācija par abonementiem tiek glabāta galvenokārt ārpus sistēmas. Tiks izmantota pakalpojumu sniedzēja nodrošināta maksājumu apstrāde ārpus "Mafija" sistēmas, sistēmā glabājot minimālu informāciju par maksājumu, tas ir, klienta identifikatoru, ko sagatavo maksājumu pakalpojuma sniedzējs. E-pasta apstiprināšanas un paroles atjaunošanas e-pastu izsūtīšanai tiks izmantots e-pasta pakalpojumu sniedzējs. + +== Darījumprasības + +#indent-par([ +Sistēmā tiks realizētas sekojošās darījumprasības: ++ Lietotāju reģistrācija, autentifikācija; ++ Lietotāju un to kontu pārvalde; ++ Lietotāju kontu apstiprināšana, izmantojot e-pastu; ++ Lietotāju profilu personalizācija un kontu rediģēšana; ++ Lietotāju stāvokļa virtuālajās telpās uzturēšana un izmaiņa; ++ Spēles automātiska vadība; ++ Lietotāju informēšana, izmantojot paziņojumu sistēmu; ++ Sinhronizēta spēles stāvokļa atjaunināšana; ++ Spēles uzstādījumu un lomu veidošana, rediģēšana un dzēšana; ++ Atvērtās un privātās virtuālās spēles istabas; ++ Kopēja un ierobežota (spēles lomu grupu atkarīga) tērzēšana; ++ Privilēģiju izmaiņa, izmantojot bezpersonisku maksājumu sistēmu; +// Isn't it similar wo the 2nd? ++ Lietotāju administrēšana administratoru lietotāju grupai. +]) + +== Sistēmas lietotāji + +#indent-par([ +Neautentificēts lietotājs (viesis), i.e., viesis ir jebkurš lietotājs, kas nav pieteicies vai reģistrējies sistēmā. Šiem lietotājiem ir pieejamas funkcijas, lai reģistrētos vai pieteiktos sistēmā; +]) + +Kad lietotājs ir pieteicies un ir autentificēts, tam ir pieejamas reģistrēta lietotāja grupas tiesības, precīzāk, darbības, kas saistītas ar spēli, profilu un konta pārvaldi. Tā būs vislielākā grupa pēc lietotāju skaita. Maksas lietotājiem, precīzāk, reģistrētiem lietotājiem, kuriem piesaistīts aktīvs abonements, tiek piešķirtas papildus tiesības -- izveidot jaunas virtuālās istabas, izveidot jaunu lomu, izvēlēties spēles uzstādījumus sevis veidotās istabās un citas. Maksas lietotāja grupa ir atvasināta no reģistrēta lietotāja grupas. + +Administratoru uzdevumi ietver lietotāju, spēles lomu un uzstādījumu rediģēšanu un lietotāju moderēšanu, izmantojot darbības, kā konta bloķēšana, konta rediģēšana, konta dzēšana, abonementa atcelšana, spēles atcelšana, spēlētāja izslēgšana, sarakstes dzēšana. Lietotājs "Sistēma" ir izmantots notikumu apstrādes izsaukšanai, kas ir nepieciešama automātiskai spēles gaitas vadībai. + +Ar lietotājiem saistītās datu plūsmas ir attēlotas sistēmas nultā līmeņa DPD (skat. @fig:dpd-0 att.) + +#figure( + caption: "0. līmeņa DPD", + image("img/dpd0/0tāLīmeņaDPD.svg") +) + +== Vispārējie ierobežojumi + ++ Drošības un aizsardzības apsvērumi: + + Lietotāju paroles tiek šifrētas pirms glabāšanas, izmantojot sāls pievienošanu AES-256 algoritmu; ++ Regulējošās politikas apsvērumi: + + Tiek pieprasīta lietotāju atļauja realizēt analītisku datu ievākšanu, izmantojot sīkdatnes. + + Tiek pieparsīta lietotāju atļauja personas datu ievākšanai un apstrādei, kas atbilst vispārējai datu aizsardzības regulai (GDPR) ++ Izstrādes vides, tehnoloģijas un tīmekļa ierobežojumi: + + Programmēšanas valodas, to tehniskie ierobežojumi; + + Responsivitāte; + + Sistēmas saskarne ir tīmekļa vietne; + + Sistēmas ietvaros mitināta vietne ir kopīga neatkarīgi no ierīces (netiek izmantots apakšdomēns mobilo tālruņu lietotājiem). + +== Pieņēmumi un atkarības +- Ierīce atbilst un spēj pilnvērtīgi izpildīt sistēmas prasības; +- Ierīce uztur stabilu interneta savienojumu ar joslas platumu vismaz 2 megabiti sekundē un latentumu līdz 1000ms; +- Lietotāja izvēlētā pārlūkprogramma atbilst un spēj pilnvērtīgi izpildīt sistēmas prasības; +// Added a note: Payment processor should offer similar functionality as required by the specification +- Maksājumus apstrādās pasūtītāja izvēlēts pakalpojumu sniedzējs, nodrošinot tīmekļa vietnes saskarni maksājuma veikšanai un tā apstrādi ārpus "Mafija" sistēmas. Pasūtītāja izvēlētam maksājumu apstrādātājam ir jārealizē no tā sagaidāmā funkcionalitāte. + +#pagebreak(weak: true) += Programmatūras prasību specifikācija + +== Konceptuālais datu bāzes apraksts + +#indent-par([ +Konceptuālajā modelī redzamās entitātes no konceptuālā ER modeļa (@fig:conceptual-model attēls): +]) +- Lietotājs -- reģistrēts lietotājs, kas pieder noteiktai grupai; +- Attēls -- datnes metadati un tās adrese, kas ir saistīta ar lietotāju vai spēles lomu; +- Spēles uzstādījums -- vairāku spēles lomu kopa (konfigurācija), kas ir izveidojamas arī publiski (maksas lietotājiem); +- Spēles loma -- spēlē izmantojamās lomas apraksts, katrai lomai obligāti piemīt darbības. Tā var tikt izveidota publiski (līdzīgi spēles uzstādījumiem); +- Lomas darbība -- vienai vai vairākām spēles lomām piemītošās spēles darbības apraksts un spēlei specifiskie atribūti; +- Spēlētājs -- vienai spēles istabai piederošais spēlētājs. Tam piemīt viena spēles loma un var būt vairākas spēles gaitā veiktās lomai atbilstošās darbības; +- Sarakste -- virtuālās istabas tērzēšanā izveidotā sarakste, kas tiek saistīta ar vienu spēlētāju un var atbildēt uz citu saraksti izveides laikā; +- Spēles notikums -- spēlē iespējamie notikumi, tai skaitā spēles fāzes maiņa, spēlētāju izslēgšana, piemēram, izbalsošana vai slepkavība un citi. +- Istaba -- vienas gaidāmas, tekošās vai pagātnē notikušas spēles, kam piemīt spēlētāji, spēles uzstādījums, notikumi, izveidotājs (lietotājs maskas lietotāja grupā). Katrai spēlei ir sava istaba. + +#figure( + caption: "Datu bāzes konceptuālais ER modelis", + placement: auto, + image("img/erd/KonceptualaisERModelis.svg") +) + + +== Funkcionālās prasības + +=== Funkciju sadalījums moduļos + +#indent-par([ +Funkciju sadalījums moduļos ir aprakstīts tabulā (@tbl:function-modules tab.). Katrs maksas lietotājs un administrators ir uzskatāms par reģistrētu lietotāju. Administratora privilēģijas ir atvasinātas no maksas lietotāja privilēģijas. Sistēmas lietotājs nav ierobežots. +]) + +Citas lietotāju grupas, izņemot reģistrētu lietotāju, tiek norādītas pie lietotāja grupas tikai tad, ja, funkcijas rezultāts atšķiras no rezultāta, kuru atgrieztu reģistrētam lietotājam. Tiek pieņemts, ka lietotāja autentifikācija ir izpildīta, izmantojot funkcijas, kur apstrāde ir neatkarīga no lietotāju grupas. + +\2. līmeņa DPD parāda izvērstāku 1. līmeņa (jeb konteksta) DPD ar sistēmas sadalījumu pa moduļiem. Pārskatāmības dēļ DPD tika sadalīta divās daļās (skat @fig:dpd-1.1 att. un @fig:dpd-1.2 att.). Datu plūsmas diagrammās tiek izlaisti lietotāja identifikācijas dati, ja tie ir nepieciešami lietotāja darbības autorizācijai. + +#figure( + caption: "1. līmeņa DPD (1)", + image("img/dpd1/1LīmeņaDPDN1.svg") +) + + +#figure( + caption: "1. līmeņa DPD (2)", + image("img/dpd1/1LīmeņaDPDN2.svg") +) + +#pagebreak(weak: true) +#figure( + caption: "Funkciju sadalījums pa moduļiem", + kind: table, + tablex( + columns: 4, + /* --- header --- */ + [*Modulis*], [*Funkcija*], [*Identifikators*], [*Lietotāja grupa*], + /* -------------- */ + + rowspanx(7)[Reģistrācijas un pieteikšanās modulis], + [Lietotāja reģistrācija], [#link()[AMF01]], [Nereģistrēts lietotājs], + [Apstiprinājuma ziņas atkārtotās izsūtīšanas pieteikums], [#link()[AMF02]], [Reģistrēts lietotājs], + [Paroles atjaunošanas pieteikums], [#link()[AMF03]], [Reģistrēts lietotājs], + [Paroles atjaunošana], [#link()[AMF04]], [Reģistrēts lietotājs], + [Lietotāja atteikšanās], [#link()[AMF05]], [Reģistrēts lietotājs], + [Lietotāja pieteikšanās], [#link()[AMF06]], [Reģistrēts lietotājs], + [Lietotāja konta apstiprināšana], [#link()[AMF07]], [Reģistrēts lietotājs], + + rowspanx(5)[Lietotāju kontu modulis], + [Lietotāju profilu pārskats], [#link()[LKMF01]], [Reģistrēts lietotājs], + [Lietotāja konta detaļas], [#link()[LKMF02]], [Reģistrēts lietotājs, Administrators], + [Lietotāja konta bloķēšana], [#link()[LKMF03]], [Administrators], + [Lietotāja konta rediģēšana], [#link()[LKMF04]], [Reģistrēts lietotājs, Administrators], + [Lietotāja konta dzēšana], [#link()[LKMF05]], [Reģistrēts lietotājs, Administrators], + + rowspanx(4)[Maksas abonementu modulis], + [Abonementa pieteikums], [#link()[MAMF01]], [Reģistrēts lietotājs], + [Abonementu pārskats], [#link()[MAMF02]], [Reģistrēts lietotājs, Administrators], + [Abonementa atcelšana], [#link()[MAMF03]], [Maksas lietotājs], + [Abonementa plānu pārskats], [#link()[MAMF04]], [Nereģistrēts lietotājs, Reģistrēts lietotājs], + + /*rowspanx(4)[Cenu modulis], + [Cenas pievienošana], [#link()[CMF01]], [Administrators], + [Cenas rediģēšana], [#link()[CMF02]], [Administrators], + [Cenu pārskats], [#link()[CMF03]], [Administrators], + [Cenas dzēšana], [#link()[CMF04]], [Administrators],*/ + + rowspanx(9)[Spēles istabu modulis], + [Spēles istabu pārskats], [#link()[SIMF01]], [Reģistrēts lietotājs], + [Pieslēgšanās spēles istabai], [#link()[SIMF02]], [Reģistrēts lietotājs], + [Atslēgšanās no spēles istabas pieteikums], [#link()[SIMF03]], [Reģistrēts lietotājs], + [Jaunas spēles istabas izveide], [#link()[SIMF04]], [Maksas lietotājs], + [Spēles sākuma pieteikums], [#link()[SIMF05]], [Maksas lietotājs], + [Spēlētāja izslēgšana], [#link()[SIMF06]], [Administrators], + [Spēlētāju pārskats], [#link()[SIMF07]], [Reģistrēts lietotājs], + [Spēļu vēstures pārskats], [#link()[SIMF08]], [Reģistrēts lietotājs], + [Spēles atcelšana], [#link()[SIMF09]], [Maksas lietotājs, Administrators], + + rowspanx(4)[Tērzēšanas modulis], + [Jaunas sarakstes izveidošana], [#link()[TMF01]], [Reģistrēts lietotājs], + [Sarakstes dzēšana], [#link()[TMF02]], [Reģistrēts lietotājs, Administrators], + [Sarakstu pārskats], [#link()[TMF03]], [Reģistrēts lietotājs, Administrators], + [Sarakstes rediģēšana], [#link()[TMF04]], [Reģistrēts lietotājs], + + rowspanx(4)[Spēles gaitas modulis], + [Spēles darbības veikšana], [#link()[SGMF01]], [Reģistrēts lietotājs], + [Spēles notikumu izveidošana], [#link()[SGMF02]], [Sistēma], + [Spēles notikumu pārskats], [#link()[SGMF03]], [Sistēma, Administrators, Reģistrēts lietotājs], + [Spēles stāvokļa detaļas], [#link()[SGMF04]], [Sistēma, Administrators, Reģistrēts lietotājs], + + rowspanx(6)[Spēles lomu uzstādījumu modulis], + [Lomas detaļas], [#link()[SLMF01]], [Reģistrēts lietotājs], + [Lomu pārskats], [#link()[SLMF02]], [Reģistrēts lietotājs], + [Lomas darbību pārskats], [#link()[SLMF03]], [Reģistrēts lietotājs], + [Jaunas lomas izveidošana], [#link()[SLMF04]], [Maksas lietotājs, Administrators], + [Lomas rediģēšana], [#link()[SLMF05]], [Maksas lietotājs, Administrators], + [Lomas dzēšana], [#link()[SLMF06]], [Maksas lietotājs, Administrators], + + rowspanx(5)[Spēles uzstādījumu modulis], + [Spēles uzstādījumu pārskats], [#link()[SUMF01]], [Reģistrēts lietotājs], + [Spēles uzstādījuma lomu pārskats], [#link()[SUMF02]], [Reģistrēts lietotājs], + [Jauna spēles uzstādījuma izveidošana], [#link()[SUMF03]], [Maksas lietotājs, Administrators], + [Spēles uzstādījuma rediģēšana], [#link()[SUMF04]], [Maksas lietotājs, Administrators], + [Spēles uzstādījuma dzēšana], [#link()[SUMF05]], [Maksas lietotājs, Administrators], + ) +) + +=== Kopīgās funkcijas ievades / izvades datu prasības + +#indent-par([ +Apakšnodaļa ietver informāciju par funkciju parametriem, tai skaitā, nosaukumu, identifikatoru, aprakstu, parametra prasībām. Parametri ir aprakstīti atsevišķās tabulās (skat. +#link()[IIDP01], +#link()[IIDP02], +#link()[IIDP03], +#link()[IIDP04], +#link()[IIDP05], +#link()[IIDP06], +#link()[IIDP07], +#link()[IIDP08], +#link()[IIDP09], +#link()[IIDP10], +#link()[IIDP11], +#link()[IIDP12], +#link()[IIDP13], +#link()[IIDP14], +#link()[IIDP15], +#link()[IIDP16], +#link()[IIDP17], +#link()[IIDP18], +#link()[IIDP19], +#link()[IIDP20], +#link()[IIDP21], +#link()[IIDP22]). +]) + +#parameter-table( + "Datuma simbolu virkne", + "IIDP01", + "Datums, kas ir reprezentēts ar simbolu virkni noteiktā formātā un laika zonā (sistēmas ietvaros tiek izmantota viena laika zona).", + [ + + Jāatbilst standarta ISO 8601 datumu formātam; + + Gadam jābūt 4 cipariem; + + Mēnesim un gadam jāsatur 2 ciparus, ar sākuma nullēm, ja attiecināms; + + Gadu, mēnesi un dienu jāatdala ar svītru (-); + + Datumu jānosaka pēc koordinētās universālās laika zonas (UTC); + + Struktūru raksturo shēma: YYYY-MM-DD, kur Y simboli ir aizvietojami ar gadu, M ar mēnesi un D ar dienu. + ], +) + +#parameter-table( + "Laika simbolu virkne", + "IIDP02", + "Datums un laiks, kas ir reprezentēts ar simbolu virkni noteiktā formātā un laika zonā (sistēmas ietvaros tiek izmantota viena laika zona).", + [ + + Jāatbilst standarta ISO 8601 datumu un laika formātam; + + Gadam jābūt 4 cipariem; + + Mēnesim un gadam jāsatur 2 ciparus, ar sākuma nullēm, ja nepieciešams; + + Gadu, mēnesi un dienu jāatdala ar svītru (-); + + Stundai un minūtei un sekundei jābūt 2 cipariem, ar sākuma nullēm, ja attiecināms; + + Laiks un datums jānosaka pēc koordinētās universālās laika zonas (UTC); + + Struktūru raksturo shēma: YYYY-MM-DDThh:mm:ss, kur Y simboli ir aizvietojami ar gadu, M ar mēnesi un D ar dienu, kā arī h simboli ir aizvietojami ar stundām, m ar minūtēm un s ar sekundēm. + ], +) + +#parameter-table( + "Skaitlisks stāvokļa kods", + "IIDP03", + "Skaitlis, kas reprezentē noteiktu stāvokli funkcijas darbībai vai datubāzes tabulai.", + [ + + Vesels pozitīvs skaitlis. + ], +) + +#parameter-table( + "Vārds un uzvārds", + "IIDP04", + "Reģistrēta lietotāja vārds un uzvārds.", + [ + + Simbolu virkne garumā līdz 255 simboliem; + + Atļautie simbola: unikoda lielie burti (_Lu_), mazie burti (_Ll_), virsraksta burti (_Lt_) modifikatoru burti (_Lm_), citi burti (_Lo_), atstarpe, domuzīme. + ], +) + +#pagebreak(weak: true) +#parameter-table( + "E-pasts", + "IIDP05", + "Reģistrēta lietotāja e-pasts.", + [ + + Simbolu virkne garumā līdz 255 simboliem; + + Jāatbilst standarta RFC 2822 interneta ziņu formātam. + ], +) + +#parameter-table( + "Parole", + "IIDP06", + "Reģistrēta lietotāja parole.", + [ + + Simbolu virkne garumā no 8 līdz 127 simboliem; + + Var saturēt burtciparu simbolus, skaitļus, atstarpi, speciālos simbolus: izsaukuma zīmi ($!$), dubultpēdiņas ($\"$), skaitļa zīmi ($\#$),dolāra zīmi ($\$$), procenta zīmi ($%$), ampersandu ($\&$), pēdiņas ($'$), iekavas ($($)), figūriekavas ({}), zvaigznīti ($*$), plusu ($+$), komatu ($,$), mīnusu ($-$), punktu ($.$), slīpsvītru ($\/$), kolu ($:$), semikolu ($;$), salīdzinājuma zīmes ($<$ $>$), vienādības zīmi ($=$), jautājuma zīmi ($?$), "et" zīmi ($@$), pasvītru ($\_$), vertikālo joslu ($|$), tildi ($~$); + + Minimālās drošības prasības: satur vismaz vienu lielo un mazo burtu, vienu ciparu. + ], +) + +#parameter-table( + "Segvārds", + "IIDP07", + "Reģistrēta lietotāja vārds, kas tiek izmantots saskarnes personalizācijai.", + [ + + Simbolu virkne garumā no 6 līdz 255 simboliem; + + Atļautie simboli: lielie burti (_Lu_), mazie burti (_Ll_, virsraksta burti (_Lt_,) modifikatoru burti (_Lm_), citi burti (_Lo_), atstarpe, domuzīme, apakšsvītra. + ], +) + +#parameter-table( + "Attēls", + "IIDP08", + "Sistēmā lietotu attēlu datne.", + [ + + Attēla datne; + + Paplašinājums ir viens no: JPEG, JPG, GIF, PNG, WEBP; + + Izmērs nepārsniedz 1MB. + ], +) + +#parameter-table( + "Apraksts", + "IIDP09", + "Informācija par spēles priekšmetu, lietotāju u. tml.", + [ + + Simbolu virkne garumā līdz 512 simboliem; + + Atļautie simboli: Unikoda lielie burti (_Lu_), mazie burti (_Ll_), virsraksta burti (_Lt_), modifikatoru burti (_Lm_), citi burti (_Lo_), speciālie simboli. + ], +) + +#parameter-table( + "Tabulas identifikators", + "IIDP10", + "Datubāzē izmantots skaitlisks tabulas identifikators.", + [ + + Vesels pozitīvs skaitlis + ], +) + +#parameter-table( + "Kārtošanas kods", + "IIDP11", + [Skaitlisks kods, kas atbilst kādam atribūtam, kurš ir kārtojams: 0 -- nekārtot, 1 -- kārtot augoši, 2 -- kārtot dilstoši.], + [ + + Vesels pozitīvs skaitlis + ], +) + +#parameter-table( + "Datubāzes atribūta nosaukums", + "IIDP12", + "Datubāzes atribūta nosaukums", + [ + + Simbolu virkne garumā līdz 127 simboliem; + + Atļautie simboli: unikoda mazie burti (_Ll_), pasvītra. + ], +) + +#parameter-table( + "Datubāzes pieprasījums", + "IIDP13", + "Datubāzes pieprasījums.", + [ + + Pieprasījums PostgreSQL formātā iekodēts simbolu virknes struktūrā; + + Pieprasījumā jābūt iespējai rediģēt pastāvošos un pievienot papildus nosacījumus. + ], +) + +#parameter-table( + "Meklēšanas uzvedne", + "IIDP14", + "Uzvedne datubāzes ierakstu meklēšanai", + [ + + Simbolu virkne garumā līdz 255 simboliem; + + Atļautie simboli: Unikoda lielie burti (_Lu_), mazie burti (_Ll_), virsraksta burti (_Lt_), modifikatoru burti (_Lm_), citi burti (_Lo_), atstarpe, domuzīme, cipari. + ], +) + +#parameter-table( + "Cena", + "IIDP15", + "Maksas abonementa cena", + [ + + Decimāls skaitlis līdz 16 cipariem un 2 cipariem aiz komata. + ], +) + +#parameter-table( + "Sarakstes teksts", + "IIDP16", + "Lietotāja sūtītās sarakstes teksts istabas tērzētavā.", + [ + + Simbolu virkne līdz 2047 simboliem; + + Atļautie simboli: Unikoda lielie burti (_Lu_), mazie burti (_Ll_), virsraksta burti (_Lt_) modifikatoru burti (_Lm_), citi burti (_Lo_), speciālie simboli. + ], +) + +#parameter-table( + "Marķieris", + "IIDP17", + "Sistēmas izmantots marķieris lietotāju identifikācijai.", + [ + + Atbilst RFC 7519 standartam. + ], +) + + +#parameter-table( + "Filtra kods", + "IIDP18", + [Skaitlisks kods, kam atbilst filtra veids: 0 -- Būla mainīgā filtrs, 1 -- tabulas identifikatora filtrs.], + [ + + Vesels pozitīvs skaitlis. + ], +) + +#parameter-table( + "Filtru vārdnīcu saraksts", + "IIDP19", + "Saraksts ar vārdnīcām, kas satur informāciju par pārskatā pielietojamiem filtriem.", + [ + + Saraksts, kas sastāv no vārdnīcām; + + Vārdnīcu atslēgas -- datu bāzes atribūta nosaukums (atbilst #link()[IIDP12]); + + Vārdnīcu vērtības -- filtra vērtība -- vesels skaitlis -- un filtra veids -- atbilst #link()[IIDP18]). + ], +) + +#parameter-table( + "Kārtošanas vārdnīcu saraksts", + "IIDP20", + "Saraksts ar vārdnīcām, kas satur informāciju par pārskatā pielietojamo kārtošanu.", + [ + + Saraksts, kas sastāv no vārdnīcām; + + Vārdnīcu atslēgas -- datu bāzes atribūta nosaukums (atbilst #link()[IIDP12]); + + Vārdnīcu vērtības -- kārtošanas kods (atbilst #link()[IIDP11]); + ], +) + +#parameter-table( + "Spēles entitātes nosaukums", + "IIDP21", + "Spēles istabas, uzstādījuma vai lomas nosaukums.", + [ + + Simbolu virkne ar garumu no 0 līdz 50 simboliem. + + Atļautie simboli: Unikoda lielie burti (_Lu_), mazie burti (_Ll_), virsraksta burti (_Lt_), modifikatoru burti (_Lm_), citi burti (_Lo_), atstarpe, domuzīme, cipari. + ], +) + +#parameter-table( + "Maksājumu apstrādātāja identifikators", + "IIDP22", + "Maksājumu apstrādātāja izveidotais un izmantotais unikālais identifikators.", + [ + + Simbolu virkne ar garumu 50. + + Atļautie simboli: Unikoda lielie burti (_Lu_), mazie burti (_Ll_), atstarpe, cipari, pasvītra. + ], +) + + +=== Kopīgās procedūras + +#indent-par([ +Apakšnodaļa ietver funkcijās izmantojamās procedūras, kas tiek izmantotas vairākās funkcijās, kas ietver nosaukumu, aprakstu, ievadi, apstrādi un izvadi. +Procedūras ir aprakstītas atsevišķās tabulās (skat. +#link()[KPR01], +#link()[KPR02], +#link()[KPR03], +#link()[KPR04], +#link()[KPR05], +#link()[KPR06], +#link()[KPR07], +#link()[KPR08], +#link()[KPR09], +#link()[KPR10], +#link()[KPR11], +#link()[KPR12]). +]) + +#procedure-table( + "Pārskata lappuses iegūšana", + "KPR01", + "Aprēķina pārskata lappuses ierakstu nobīdi pēc kura atgriež lappuses ierakstus.", + [ + Obligātie parametri: + + Lappuses numurs -- vesels pozitīvs skaitlis, noklusētā vērtība -- 1; + + Datubāzes pieprasījums, kas atbilst #link()[IIDP13]\; + + Rezultātu skaits -- vesels nenegatīvs skaitlis. + + Neobligātie parametri: + + Ierakstu skaits lappusē -- vesels pozitīvs skaitlis. + ], + [ + + Aprēķina lappušu skaitu ar formulu: $L = ceil(Q / Q_l)$, $Q$ -- rezultātu skaits, $Q_l$ -- ierakstu skaits vienā lappusē; + + Ja lappuses numurs pārsniedz kopējo lappušu skaitu, tad turpmāk lappuses numurs ir 1; + + Aprēķina ierakstu nobīdi ar formulu: $O = (N - 1) dot Q_l$, kur $O$ -- nobīde; $N$ -- lappuses numurs, $Q_l$ -- ierakstu skaits vienā lappusē; + + Pievieno aprēķinātu nobīdi datubāzes pieprasījumam. + ], + [ + + Datubāzes pieprasījums, kas atbilst #link()[IIDP13]\; + + Lappuses numurs -- vesels pozitīvs skaitlis; + + Kopējs lappušu skaits -- vesels pozitīvs skaitlis. + ], +) + +#procedure-table( + "Konkrētā istabas, spēlētāja, lietotāja atbilstības pārbaude", + "KPR02", + "Pārbauda vai datubāzē eksistē un savstarpēji saistīti lietotāja, spēlētāja un istabas ieraksti, i.e, pārbauda vai spēlētājs atrodas istabā un lietotājs ir šis spēlētājs.", + [ + Obligātie parametri: + + Lietotāja identifikators -- atbilst #link()[IIDP10]\; + + Spēlētāja identifikators -- atbilst #link()[IIDP10]\; + + Istabas identifikators -- atbilst #link()[IIDP10]. + ], + [ + + Meklē istabas ierakstu pēc spēles istabas identifikatora; + + Ja neatrod atgriež "nepatiess". + + Meklē spēlētāju ierakstu pēc spēlētāja un spēles istabas identifikatora; + + Ja neatrod, atgriež "nepatiess". + + Meklē lietotāju ierakstu pēc spēlētāja un spēles istabas identifikatora; + + Ja neatrod, atgriež "nepatiess". + + Pārbauda, vai lietotāja un spēlētāja ieraksta attiecīgie identifikatori sakrīt; + + Ja nesakrīt, atgriež "nepatiess". + + Atgriež "patiess". + ], + [ + + Atbilstības karodziņš -- vai dotie identifikatori ir savā starpā saistīti. + ], +) + +#procedure-table( + [ + Piederības pārbaude "Mafija" lomu grupai + ], + "KPR03", + [ + Pārbauda, vai konkrētais spēlētājs pieder "Mafija" lomu grupai. + ], + [ + Obligātie parametri: + + Spēlētāja identifikators -- atbilst #link()[IIDP10]. + ], + [ + + Meklē spēlētāja lomu pēc spēlētāja identifikatora; + + Ja lomas "Mafija" karodziņš parāda to, ka spēlētāja loma nepieder "Mafija" lomu grupai, tad atgriež "nepatiess" (vērtība 0), pretēji -- atgriež "patiess". + ], + [ + + Mafijas piederības karodziņš -- vai spēlētājs pieder mafijai. + ], +) + +#procedure-table( + "Pieprasījuma filtru pievienošana", + "KPR04", + "Apstrādā datubāzes pieprasījumu, pievienojot atbilstošus filtra nosacījumus.", + [ + Obligātie parametri: + + Datubāzes pieprasījums, kas atbilst #link()[IIDP13]\; + + Filtra atribūta nosaukums -- datubāzes identifikators. + + Neobligātie parametri: + + Identifikators -- atbilst #link()[IIDP10]. + ], + [ + + Pārbauda, vai katrs atribūts no filtra atribūtu saraksta ar tādu nosaukumu eksistē; + + Ja kāds no tiem neeksistē, beidz apstrādi. + + Katram filtra atribūtam pievieno filtru datubāzes pieprasījumu; + + Ja identifikators ir iesniegts, pievieno filtrēšanu pēc šī identifikatora; + + Ja nav, filtrē pēc karodziņa "patiess". + ], + [ + + Datubāzes pieprasījums, kas atbilst #link()[IIDP13]. + ], +) + +#procedure-table( + "Meklēšanas nosacījuma pievienošana", + "KPR05", + "Apstrādā datubāzes pieprasījumu, pievienojot atbilstošus meklēšanas nosacījumus.", + [ + + Obligātie parametri: + + Datubāzes pieprasījums, kas atbilst #link()[IIDP13]\; + + Meklēšanas atribūtu nosaukumu saraksts, kas sastāv no simbolu virknēm, kas atbilst #link()[IIDP12]\; + + Meklēšanas uzvedne -- simbolu virkne, atbilst #link()[IIDP14], noklusētā vērtība -- "". + ], + [ + + Pārbauda, vai katrs atribūts no meklēšanas atribūtu saraksta ar tādu nosaukumu eksistē; + + Ja neeksistē, beidz apstrādi. + + Pievieno meklēšanas nosacījumu pieprasījumu ar meklēšanas saraksta atribūtiem. + ], + [ + + Datubāzes pieprasījums, kas atbilst #link()[IIDP13]. + ], +) + +#procedure-table( + "Kārtošanas nosacījuma pievienošana", + "KPR06", + "Apstrādā datubāzes pieprasījumu, pievienojot atbilstošus meklēšanas nosacījumus.", + [ + + Obligātie parametri: + + Datubāzes pieprasījums, kas atbilst #link()[IIDP13]\; + + Kārtošanas atribūta nosaukums, kas atbilst #link()[IIDP12]\; + + Kārtošanas kods, kas atbilst #link()[IIDP11]. + ], + [ + + Pārbauda, vai atribūts ar tādu nosaukumu eksistē; + + Ja neeksistē, beidz apstrādi. + + Pievieno kārtošanu attiecīgajam atribūtam attiecīgi kārtošanas kodam. + ], + [ + + Datubāzes pieprasījums, kas atbilst #link()[IIDP13]. + ], +) + +#procedure-table( + "Pārskata pieprasījuma sagatavošana", + "KPR07", + "Sagatavo pārskatu datubāzes pieprasījumu pievienojot neobligātu lappuses nobīdi, filtrēšanu un kārtošanu", + [ + Obligātie parametri: + + Datubāzes pieprasījums, kas atbilst #link()[IIDP13]. + + Neobligātie parametri: + + Lappuses numurs -- vesels pozitīvs skaitlis, noklusētā vērtība -- 1; + + Meklēšanas uzvedne -- simbolu virkne, atbilst #link()[IIDP14], noklusētā vērtība -- "". + + Kārtošanas vārdnīcu saraksts - atbilst #link()[IIDP20], noklusētā vērtība -- tukšs saraksts. + + Filtru vārdnīcu saraksts -- atbilst #link()[IIDP19], noklusētā vērtība -- tukšs saraksts. + ], + [ + + Ja filtru vārdnīcu saraksts nav tukšs, katram saraksta elementam pievieno kārtošanu pieprasījumam ar attiecīgiem atribūtu nosaukumiem, filtra veidiem un vērtībām, izmantojot #link()[KPR04]\; + + Ja meklēšanas uzvedne ir iesniegta un nav tukša simbolu virkne, tad pieprasījumam pievieno meklēšanas nosacījumu meklēšanai pēc pilna vārda, segvārda un biogrāfijas, izmantojot #link()[KPR05]\; + + Ja kārtošanas vārdnīcu saraksts nav tukšs, katram saraksta elementam pievieno kārtošanu pieprasījumam ar attiecīgiem atribūtu nosaukumiem, kārtošanas kodiem, izmantojot #link()[KPR06]\; + + Ja lappuses numurs netika iesniegts, uzskata, ka lappuses numurs ir 1; + + Pieprasa ierakstu saskaitīšanu, izmantojot sagatavoto pieprasījumu. + + Ja rezultātu skaits ir lielāks par 0, iegūst lappuses ierakstu nobīdi, lappuses numuru un kopējo lappušu skaitu, izmantojot #link()[KPR01] ar attiecīgo rezultātu skaitu, lappuses numuru, noklusēto ierakstu skaitu lappusē; + + Ja rezultātu skaits ir 0, kopējo lappušu skaitu un lappuses numuru uzskata par 0. + ], + [ + + Datubāzes pieprasījums, kas atbilst #link()[IIDP13]\; + + Lappuses numurs -- vesels pozitīvs skaitlis; + + Kopējs lappušu skaits -- vesels pozitīvs skaitlis. + ], +) + +#procedure-table( + "Lietotāja maksas abonementa aktīvuma pārbaude", + "KPR08", + "Pārbauda, vai lietotājam ir aktīvs maksas abonements.", + [ + Obligātie parametri: + + + Lietotāja identifikators -- atbilst #link()[IIDP10]\. + ], + [ + + Iegūst lietotāja klienta identifikatoru no datubāzes. + + Ja identifikators atbilst nulles vērtībai, izvada "nepatiess". + + Pieprasa abonementu sarakstu no maksājumu apstrādātāja. + + Ja pieprasījums neizdevās, izvada "nepatiess". + + Sameklē pēdējo abonementu pēc izveidošanas laika. + + Ja atbildē nav abonementu, izvada "nepatiess". + + Ja pēdējais abonements ir aktīvs, izvada "patiess". + ], + [ + + Aktīva abonementa karodziņš -- vai dotam lietotājam ir aktīvs abonements. + ], +) + +#procedure-table( + "Teksta sanitizācija", + "KPR09", + "Sanizizē ievadīto tekstu, i.e., noņem no teksta simbolus, kas varētu būt nozīmīgi simboli iezīmēšanas vai skriptu valodā.", + [ + Obligātie parametri: + + Teksts -- simbolu virkne. + ], + [ + + Ievades tekstā aizvieto sekojošos simbolus ar attiecīgiem izvairīšanās simboliem: + + ampersandu (&); + + mazāks par (<); + + lielāks par (>); + + dubultpēdiņu (""); + + pēdiņu (''); + + slīpsvītra (/). + ], + [ + + Sanitizēts teksts -- simbolu virkne. + ], +) + +#procedure-table( + "E-pasta apstiprinājuma pieteikšana", + "KPR10", + "Uzstāda lietotāja apstiprinājuma datus lietotāja ierakstam.", + [ + Obligātie parametri: + + Lietotāja identifikators -- atbilst #link()[IIDP10]\. + ], + [ + + Sameklē lietotāju, izmantojot lietotāja identifikatoru. + + Ja nesameklē, izvada kodu, kas atbilst neveiksmei. + + Ģenerē e-pasta apstiprinājuma marķieri, kas atbilst #link()[IIDP17]. + + Meklē lietotājus ar šo e-pasta apstiprinājuma marķieri; + + Ja lietotājs tika atrasts, atkārto e-pasta apstiprinājuma ģenerēšanu un lietotāju meklēšanu līdz marķieris ir unikāls. + + Aprēķina derīguma termiņu, pieskaitot tagadējam laikam noteiktu laiku. + + Lietotāja ierakstam pievieno apstiprinājuma stāvokļa informāciju, marķieri un derīguma termiņu. + + Ieraksta lietotāja e-pasta apstiprināšanas informāciju. + + Ja tā netiek apstiprināta, izvada kodu, kas atbilst neveiksmei. + + Izveido saiti apstiprinājumam, iekļaujot e-pasta apstiprinājuma marķieri; + + Sagatavo e-pasta ziņas saturu no šablona, ievietojot tajā apstiprinājuma saiti; + + Pieprasa e-pasta aizsūtīšanu. + + Ja tā netiek apstiprināta, izvada kodu, kas atbilst neveiksmei. + ], + [ + + E-pasta apstiprinājuma pieteikuma stāvoklis -- skaitlisks kods. + ], +) + +#procedure-table( + "Lietotāja maksas apstrādātāja identifikatora izveide", + "KPR11", + "Izveidot lietotājam maksas apstrādātāja unikālo identifikatoru.", + [ + Obligātie parametri: + + Lietotāja identifikators -- atbilst #link()[IIDP10]. + ], + [ + // https://stripe.com/docs/api/customers/create + + Sameklē lietotāju, izmantojot lietotāja identifikatoru. + + Ja nesameklē, izvada kodu, kas atbilst neveiksmei. + + Sagatavo datus pieprasījumam, kas iekļauj lietotāja vārdu, uzvārdu un e-pastu. Pārveido to maksājuma apstrādātāja pieprasītā formātā, izmantojot maksājuma apstrādātāja API. + + Ģenerē lietotāja maksājumu apstrādātāja identifikatoru, sazinoties ar maksājumu apstrādātāju. + ], + [ + + Lietotāja maksājuma apstrādātāja identifikators -- atbilst #link()[IIDP22]. + ] +) + +#procedure-table( + "Attēla validācija", + "KPR12", + "Parbauda, vai attēls (attēla datne) atbilst noteiktām prasībām.", + [ + Obligātie parametri: + + Attēls -- atbilst #link()[IIDP08]. + ], + [ + // Image + + Pārbauda, vai datne atbilst pieļaujamajiem datnes paplašinājumiem; + + Ja neatbilst, atgriež kļūdu ar par nepieļaujamo datnes paplašinājumu: "Attēlam ir nepieļaujams paplašinājums: \[pieļaujamie paplašinājumi\]". + + Pārbauda, vai datne nepārsniedz noteikto datnes lielumu; + + Ja pārsniedz, atgriež kļūdu par pārsniegto datnes lielumu: "Attēls nedrīkst pārsniegt: \[noteiktais faila izmēra maksimums\]". + + Ja iesniegtā attēla paplašinājums ir pieļaujams, bet nav PNG, tad datne tiek konvertēta šajā paplašinājumā. + + // Invokation + //+ Ja tika iesniegts attēls, validē attēlu ar #link()[KPR12]. + // + Ja validācija ir neveiksmīga, parāda X. vai Z. paziņojumu, atkarībā no validācijas rezultāta. + ], + [ + Validācijas rezultāts veiksmes vai kļūdas kods, balstoties uz kuru lietotājam tiks parādīta attiecīga kļūda. + + Validācijas rezultāts -- kļūdas paziņojums -- noteiktās kļūdas skaitlisks kods vai 1, ja validācija ir veiksmīga. + ] +) + +=== Reģistrācijas un pieteikšanās modulis + +#indent-par([ + +/* +TEMPLATE +Apakšnodaļa ietver [MODULE_NAME] moduļa funkcijas. Moduļa funkcionalitāte ir izmantota [KAM?]. Moduļa funkciju datu plūsmas ir parādītas 2. līmeņa datu plūsmas diagrammā (skat. [FIGURE_REFERENCE]). +*/ + +Apakšnodaļa ietver reģistrācijas un pieteikšanās moduļa funkcijas. Moduļa funkcionalitāte ir izmantota lietotāju reģistrācijai, pieteikšanās un citām darbībām, kas saistās ar lietotāja autentifikāciju un to kontu. Moduļa funkciju datu plūsmas ir parādītas 2. līmeņa datu plūsmas diagrammā (skat. @fig:dpd-2-auth). +Funkcijas ir aprakstītas atsevišķās tabulās (skat. +#link()[AMF01], +#link()[AMF02], +#link()[AMF03], +#link()[AMF04], +#link()[AMF05], +#link()[AMF06], +#link()[AMF07]). +]) + +#figure( + caption: "Reģistrācijas un pieteikšanās moduļa 2. līmeņa DPD", + image("img/dpd2/ReģistrācijasPieteikšanāsModulis.svg") +) + +#pagebreak(weak: true) +#function-table( + "Lietotāja reģistrācija", + "AMF01", + [ + Funkcijas mērķis ir reģistrēt lietotāja kontu sistēmā, autentifikācijas procesam un lietotāja darbību autorizācijai, un lietotāja informācijas uzglabāšanai. Apstrādes procesā ievades dati tiek pārbaudīti attiecīgi noteiktajām prasībām. Paroles šifrēšanas procesā tiek izmantota jaucējfunkcija ar papildus drošības metodiku -- "sāls pievienošanu" -- nejaušu simbolu virknes pievienošanu pirms šifrēšanas procesa uzsākšanas. + ], + [ + // Why remove 'veidlapa' + Ievades dati tiek saņemti no nereģistrētiem lietotājiem. + + Obligātie parametri: + + Vārds, uzvārds -- atbilst #link()[IIDP04]\; + + Segvārds -- atbilst #link()[IIDP07]\; + + E-pasta adrese -- atbilst #link()[IIDP05]\; + + Parole -- atbilst #link()[IIDP06]\; + + Paroles apstiprinājums -- simbolu virkne, kas atbilst #link()[IIDP06]\; + + Dzimšanas datums -- atbilst #link()[IIDP01]. + + Neobligātie parametri: + + Profila attēls -- atbilst #link()[IIDP08], noklusētā vērtība -- noklusētā attēla adrese; + + Biogrāfiskā informācija -- atbilst #link()[IIDP09], noklusētā vērtība -- "". + ], + [ + // Validation + + Pārbauda, vai visi obligātie lauki ir iesniegti; + + Ja tie nav, iegūst sarakstu ar neaizpildītajiem laukiem, parāda 1. paziņojumu. Beidz apstrādi. + + Pārbauda, vai parole un paroles apstiprinājums sakrīt; + + Ja nesakrīt, tad parāda 2. paziņojumu. Beidz apstrādi. + + Pārbauda, vai vārds un uzvārds, segvārds, e-pasta adrese, parole satur tikai pieļaujamos simbolus; + + Ja nesatur, tad iegūst izmantotos neatļautos simbolus, tad parāda 3. paziņojumu ar attiecīgi laukiem un simboliem. Beidz apstrādi. + + Pārbauda, vai vārds un uzvārds, segvārds, e-pasta adrese, biogrāfiskā informācija, parole nepārsniedz noteikto garumu; + + Ja pārsniedz, tad iegūst pārsniegto garumu parametru sarakstu un parāda 4. paziņojumu ar attiecīgajiem laukiem un garumiem. Beidz apstrādi. + + Pārbauda, vai parole atbilst noteiktiem drošības prasībām; + + Ja tā tiem neatbilst, tad parāda 5. paziņojumu ar attiecīgām neizpildītajām prasībām. Beidz apstrādi. + + Pārbauda, vai dzimšanas datums atbilst minimālam vecumam reģistrācijai; + + Ja neatbilst, parāda 6. paziņojumu. Beidz apstrādi. + + // Trasnformation + + Sanitizē biogrāfisko informāciju, izmantojot #link()[KPR09]\. + + // Image + + Ja tika iesniegts attēls, validē attēlu ar #link()[KPR12] un uzstāda pievienošanas laiku uz tagadējo laiku. + + Ja validācija ir neveiksmīga, parāda 8. paziņojumu ar attiecīgu validācijas kļūdu. + + + Meklē datubāzē lietotājus ar ievadīto e-pastu vai segvārdu; + + Ja tāds(/-i) pastāv, tad parāda 9. paziņojumu ar attiecīgo aizņemto lauku. Beidz apstrādi. + // Password + + Ģenerē "sāls" simbolu virkni ar noteiktu algoritmu, to pievieno parolei. + + Šifrē paroli ar jaucējfunkciju. + + Uzstāda konta stāvokli uz vērtību, kas atbilst stāvoklim "aktīvs". + + // Construct user (+ fill the DB statuses etc.) + + Uzstāda e-pasta apstiprinājuma karodziņa vērtību uz nepatiesu. + + Uzstāda izveidošanas laiku uz tagadējo laiku. + + Jauna lietotāja sagatavotie dati tiek ierakstīti datubāzē; + + Ja ierakstīšana nenotiek, parādīt 10. paziņojumu. Beidz apstrādi. + // USER is created + + // Add e-mail information to the DB and send an email + + Piesaka konta apstiprinājumu, izmantojot #link()[KRP10] procedūru. + + Ja procedūra nav veiksmīga, parāda 12. paziņojumu. + + ], + [ + Izvades datu mērķis ir noteikt, vai lietotājs tiks pāradresēts un uz kuru lapu lietotājs tiks pāradresēts. Lietotāja tiek parādīts 11. paziņojums. + + Reģistrācijas apstiprinājuma stāvoklis -- skaitlisks kods. + ], + [ + + Lauks: [neaizpildīto lauku saraksts] netika aizpildīts (/-i)!; + + Parole un paroles apstiprinājums nesakrīt!; + + [Parametra nosaukums] nedrīkst saturēt: [izmantoto parametra neatļauto simbolu saraksts]!; + + [Parametra nosaukums] nedrīkst pārsniegt [noteikto parametra maksimālo simbolu skaits]!; + + Parolei ir jāsatur: [neizpildīto paroles prasību saraksts]!; + + Minimālais vecums reģistrācijai: [noteikts minimālais vecums reģistrācijai]\; + + Reģistrācija ir veiksmīga! Pagaidām nav iespējams aizsūtīt apstiprinājumu, mēģiniet vēlreiz!; + + Šo attēlu nedrīkst izmantot: \[validācijas kļūda\]!; + + Lietotājs ar tādu [aizņemtā lauka nosaukums] jau eksistē!; + + Sistēmas iekšējā kļūda! Mēģiniet vēlreiz!; + + Reģistrācija ir veiksmīga! Apstipriniet lietotāja kontu ar saiti, kas tiks izsūtīta tuvākā laikā, e-pastā. + ], +) + +#function-table( + "Apstiprinājuma ziņas atkārtotās izsūtīšanas pieteikums", + "AMF02", + "Funkcijas mērķis ir izsūtīt e-pasta apstiprinājumu atkārtoti lietotājam, kas jau veica reģistrāciju vai reģistrācijas laikā, vai pēc e-pasta izmaiņas lietotāja kontā.", + [ + Ievaddati tiek iegūti no darbības -- klikšķis uz attiecīgo apstiprinājuma pieteikuma pogu reģistrācijas laikā vai lietotāja konta rediģēšanas lapā. Ievades dati tiek iegūti no konteksta. + + Obligātie parametri: + + Lietotāja identifikators -- atbilst #link()[IIDP10]. + ], + [ + + Meklē lietotāju datubāzē pēc ievades datu identifikatora parametra; + + Ja tāds lietotājs neeksistē, parāda 1. paziņojumu. Beidz apstrādi. + + Ja lietotāja e-pasts ir apstiprināts, parāda 4. paziņojumu. + + // Add e-mail information to the DB and send an email + + Piesaka konta apstiprinājumu, izmantojot #link()[KRP10] procedūru. + + Ja procedūra nav veiksmīga, parāda 1. paziņojumu. + ], + [ + Izvades datu mērķis ir lietotāja informēšana par apstiprinājuma ziņojuma izsūtīšanas stāvokli. Lietotāja saskarnē parādās 3. paziņojums ar instrukciju par e-pasta apstiprināšanu. + + E-pasta apstiprinājuma ziņas izsūtīšanas stāvoklis -- skaitlisks kods. + ], + [ + + Sistēmas iekšējā kļūda! Mēģiniet vēlreiz! + + Apstiprinājuma ziņa ir izsūtīta! Apstipriniet lietotāja kontu ar saiti, kas tiks izsūtīta tuvākā laikā, e-pastā. + + Apstiprinājuma ziņa tiks izsūtīta 1-10 minūšu laikā; + + E-pasts jau ir apstiprināts. + ], +) + +#function-table( + "Paroles atjaunošanas pieteikums", + "AMF03", + "Funkcijas mērķis ir ļaut lietotājam atjaunot aizmirstu vai nedrošu paroli, nodrošinot drošu paroles maiņas procesu, kas ietver unikāla marķiera izveidi, tā nosūtīšanu lietotāja e-pastā un tā verifikāciju.", + [ + Ievaddati tiek iegūti no veidlapas. + + Obligātie parametri: + + E-pasta adrese -- atbilst #link()[IIDP05]. + ], + [ + + Pārbauda, vai e-pasta adrese eksistē datubāzē, meklējot lietotāju ar sakrītošu e-pasta adresi. + + Ja tāds lietotājs jau eksistē, parāda 1. paziņojumu. Beidz apstrādi. + + Ģenerē unikālu marķieri paroles atjaunošanai, pārbaudot unikalitāti, meklējot lietotāju ar sakrītošu un derīgu marķieri, kas atbilst #link()[IIDP17]. + + Ja tāds lietotājs eksistē, atkārto ģenerāciju līdz iegūtais marķieris ir unikāls. + + Ieraksta jaunu marķieri lietotāja, kas atjauno paroli, ierakstam, pievienojot tam noteikto derīguma laiku. + + Izveido saiti paroles atjaunošanai, iekļaujot marķieri. + + Pieprasa paroles atjaunošanas saites izsūtīšanu ar atbilstošo e-pasta saturu. + + Ja izsūtīšana nav veiksmīga, parāda 5. paziņojumu. + ], + [ + Izvades datu mērķis ir lietotāja informēšana par paroles atjaunošanas pieteikuma ziņas izsūtīšanas stāvokli. Lietotāja saskarnē parādās 4. paziņojums. + + Paroles atjaunošanas pieteikuma stāvoklis -- skaitlisks kods. + ], + [ + + E-pasta adrese jau ir reģistrēta!; + + Saitei ir beidzies derīguma termiņš!; + + Parolei ir jāsatur: [neizpildīto paroles prasību saraksts]!; + + Apstiprinājuma ziņa ir izsūtīta! Apstipriniet lietotāja kontu ar saiti, kas tiks izsūtīta tuvākā laikā e-pastā. + + Sistēmas iekšējā kļūda! Mēģiniet vēlreiz! + ], +) + +#function-table( + "Paroles atjaunošana", + "AMF04", + "Funkcijas mērķis ir ļaut lietotājam atjaunot aizmirstu vai nedrošu paroli, nodrošinot drošu paroles maiņas procesu, kas ietver unikāla marķiera izveidi, tā nosūtīšanu lietotāja e-pastā un tā pārbaudi.", + [ + Ievaddati tiek iegūti no apstiprinājuma vietrādes parametriem ar kuru lietotājs piekļūst sistēmas funkcijai. + + Obligātie parametri: + + Lietotāja paroles atjaunošanas marķieris -- atbilst #link()[IIDP17]\; + + Lietotāja jaunā parole -- atbilst #link()[IIDP06]\; + + Lietotāja jaunās parole apstiprinājums -- skaitlisks kods. + ], + [ + + Ja lietotāja paroles identifikatora atjaunošanas marķieris nav iesniegts, parāda 1. paziņojumu. Beidz apstrādi; + + Sameklē lietotāja ierakstu datubāzē, meklējot to pēc atjaunošanas marķiera; + + Ja lietotāja ieraksts netika atrasts, parāda 2. paziņojumu. Beidz apstrādi; + + Pārbauda, vai saitē iekļautais marķieris ir derīgs un nav novecojis. Ja tas ir nederīgs vai novecojis, parāda 2. paziņojumu. Beidz apstrādi. + + Pārbauda, vai parole un paroles apstiprinājums ir iesniegts; + + Ja kāds no laukiem nav iesniegts parāda 4. paziņojumu ar attiecīgo lauku nosaukumiem. + + Pārbauda, vai jaunā parole atbilst drošības prasībām; + + Ja nē, parāda 5. paziņojumu ar neizpildīto prasību sarastu. Beidz apstrādi. + + Ģenerē "sāls" simbolu virkni ar noteiktu algoritmu, to pievieno parolei. + + Šifrē paroli ar jaucējfunkciju. + + Ieraksta marķiera derīguma termiņu pamaina uz tagadējo laiku; + + Atjaunoto lietotāja ierakstu ieraksta datubāzē. + + Ja ierakstīšana neizdevās, parāda 3. paziņojumu. + ], + [ + Izvades datu mērķis ir lietotāja informēšana par paroles atjaunošanas stāvokli. Lietotāja saskarnē parādās 6. paziņojums. + + Paroles atjaunošanas stāvoklis -- skaitlisks kods. + ], + [ + + Paroles atjaunošanas marķieris nav norādīts! + + Paroles atjaunošanas marķieris nav derīgs! + + Sistēmas iekšējā kļūda! Mēģiniet vēlreiz! + + Lauks: [neaizpildīto lauku saraksts] netika aizpildīts (/-i)! + + Parolei ir jāsatur: [neizpildīto paroles prasību saraksts]! + + Paroles atjaunošana ir veiksmīga! + ], +) + +#function-table( + "Lietotāja atteikšanās", + "AMF05", + "Funkcijas mērķis ir pārtraukt lietotāja pārlūkprogrammas sasaisti ar noteiktu lietotāju kontu.", + [ + Ievades dati tiek saņemti no lietotāja -- klikšķis uz atteikšanās pogu. + + Obligātie parametri: + + Lietotāja sesijas marķieris -- atbilst #link()[IIDP17]\. + ], + [ + + No lietotāja pārlūkprogrammas tiek iegūts sesijas marķieris; + + Izdzēš lietotāja sesijas ierakstu datubāzē. + + Ja lietotāja sesijas ieraksta izdzēšana neizdevās. Parāda 1. paziņojumu. Beidz apstrādi. + + Ja sesijas marķieris eksistē, tas tiek izdzēsts. Lietotājs tiek pāradresēts uz mājaslapas sākuma lapu. + + Ja marķiera izdzēšana nav veiksmīga. Parāda 1. paziņojumu. Beidz apstrādi. + ], + "Izvades datu funkcijai nav. Lietotājs tiek pāradresēts mājaslapas sākuma lapā.", + [ + + Atteikšanās neizdevās! Mēģiniet pārlādēt lapu vai mēģiniet vēlāk! + ], +) + +#function-table( + "Lietotāja pieteikšanās", + "AMF06", + "Autentificēt lietotāju, lai sistēma to uztver kā lietotāju ar konkrēto sistēmas lomu un atļauj turpmākās sistēmas lomas darbības sistēmā.", + [ + Ievades dati tiek saņemti no pieteikšanās veidlapas. + + Obligātie parametri: + + E-pasta adrese vai segvārds -- atbilst #link()[IIDP05]\; + + Ja tā neatbilst, tad tai jāatbilst sekojošām prasībām: atbilst #link()[IIDP10]. + + Parole -- simbolu virkne, atbilst #link()[IIDP06]. + ], + [ + + Pārbauda vai visi obligātie lauki ir aizpildīti. + + Ja kāds no laukiem nav aizpildīts, tad parāda 1. paziņojumu ar attiecīgiem laukiem. + + Pārbauda, vai e-pasta adrese vai segvārds un parole satur tikai pieļaujamos simbolus; + + Ja satur, tad iegūst izmantotos neatļautos simbolus, tad parāda 2. paziņojumu ar laukiem un simboliem. Beidz apstrādi. + + Pārbauda, vai e-pasta adrese vai un parole nepārsniedz noteikto garumu; + + Ja satur, tad iegūst pārsniegto garumu parametru sarakstu un parāda 3. paziņojumu ar laukiem un garumiem. Beidz apstrādi. + + Iegūst lietotāja autentifikācijas datus no datubāzes, meklējot lietotājus pēc segvārdu vai e-pasta adreses; + + Ja tāds lietotājs netika atrasts, parāda 4. paziņojumu. Beidz apstrādi. + + Pievieno ievades datu parolei sāls simbolu virkni; + + Pārbauda, vai lietotāja sniegtā paroles jaucējfunkcijas rezultāts sakrīt ar datubāzē glabātu vērtību; + + Ja paroles jaucējfunkcijas rezultāts nesakrīt ar datubāzē glabāto vērtību nesakrīt, parāda 5. paziņojumu. Beidz apstrādi. + + Ja sakrīt, ģenerē lietotāja sesijas marķieri, kas atbilst #link()[IIDP17] prasībām. Saglabā marķieri kā sīkdatni lietotāja pārlūkprogrammas datu krātuvē un saglabā lietotāja sesiju datubāzē ar noteiktu derīgumu termiņu. + + Ja saglabāšana neizdodas, parāda 6. paziņojumu. Beidz apstrādi. + ], + [ + Izvades datu mērķis ir noteikt, vai lietotājs tiks pāradresēts un kurā lapā lietotājs tiks pāradresēts. Lietotāja saskarnē lietotājs tiek pāradresēts uz autentificēto lietotāju sākuma lapu. + + Paroles atjaunošanas stāvoklis -- skaitlisks kods. + ], + [ + + Lauks: [neaizpildīto lauku saraksts] netika aizpildīts (/-i)!; + + [Parametra nosaukums] nedrīkst saturēt: [izmantoto parametra neatļauto simbolu saraksts]!; + + [Parametra nosaukums] nedrīkst pārsniegt [noteikto parametra maksimālo simbolu skaits]!; + + Lietotājs ar šādu segvārdu vai e-pastu netika atrasts vai parole nav pareiza! + + Lietotājvārds, e-pasts vai parole nav korekti! + + Atteikšanās neizdevās! Mēģiniet pārlādēt lapu vai mēģiniet vēlāk! + ], +) + +#function-table( + "Lietotāja konta apstiprināšana", + "AMF07", + "Funkcijas mērķis ir apstiprināt lietotāja konta e-pasta adresi, i.e., apstiprināt to, ka lietotājam pieder norādītā e-pasta adrese.", + [ + Ievaddati tiek iegūti no apstiprinājuma vietrādes parametriem, ar kuras lietotājs piekļūst funkcijai. + + Obligātie parametri: + + E-pasta apstiprinājuma marķieris -- atbilst #link()[IIDP17]. + ], + [ + + Pārbauda, vai ievades datos ir e-pasta apstiprinājuma marķieris; + + Ja tā nav, tad parāda 1. paziņojumu. Beidz apstrādi. + + Pārbauda, vai e-pasta adreses apstiprinājuma marķieris atbilst sagaidāmam garumam; + + Ja neatbilst, parāda 2. paziņojumu. Beidz apstrādi. + + Meklē datubāzē lietotājus ar iesniegto marķieri; + + Ja tāds lietotājs netiek atrasts, parāda 2. paziņojumu. Beidz apstrādi; + + Ja datubāzē atrastā lietotāja e-pasta apstiprināšanas karodziņš apzīmē apstiprinātu e-pastu, parāda 3. paziņojumu. Beidz apstrādi. + + Ierakstam pamaina e-pasta apstiprinājuma karodziņa stāvokli uz "patiess". + + Atjaunoto lietotāja ierakstu ieraksta datubāzē. + + Ja ierakstīšana neizdevās, parāda 5. paziņojumu. + ], + [ + Izvades datu mērķis ir lietotāja informēšana par konta apstiprināšanas stāvokli. Lietotājam tiek parādīts 4. paziņojums. + + E-pasta adreses apstiprinājuma stāvoklis -- skaitlisks kods. + ], + [ + + Apstiprināšanas saite nav korekta: marķieris nav norādīts! Mēģiniet vēlreiz vai pieprasiet atkārtotu apstiprinājuma ziņas izsūtīšanu!; + + Marķieris nav aktuāls vai nav korekts! Mēģiniet vēlreiz vai pieprasiet atkārtotu apstiprinājuma ziņas izsūtīšanu!; + + E-pasts jau ir apstiprināts!; + + E-pasts ir veiksmīgi apstiprināts! + + Sistēmas iekšējā kļūda! Mēģiniet vēlreiz! + + ], +) + +=== Lietotāju kontu modulis + +#indent-par([ +Apakšnodaļa ietver lietotāju konta moduļa funkcijas. Moduļa funkcionalitāte ir izmantota lietotāju kontu pārskatam un darbībām ar lietotāju kontiem. Moduļa funkciju datu plūsmas ir parādītas 2. līmeņa datu plūsmas diagrammā (skat. @fig:dpd-2-user). +Funkcijas ir aprakstītas atsevišķās tabulās (skat. +#link()[LKMF01], +#link()[LKMF02], +#link()[LKMF03], +#link()[LKMF04], +#link()[LKMF05]). +]) + +#figure( + caption: "Lietotāju kontu moduļa 2. līmeņa DPD", + image("img/dpd2/LietotājuKontuModulis.svg") +) + +#pagebreak(weak: true) +#function-table( + "Lietotāju profilu pārskats", + "LKMF01", + "Funkcijas mērķis ir lietotājiem sniegt citu lietotāju profilu publisku informāciju. Funkcijas ietvaros var tikt veikta neobligāta meklēšana pēc noteiktiem lietotāja profilu atribūtiem.", + [ + Ievades datus iegūst no lietotāja neobligāti uzstādītiem filtriem, kārtošanas izvēles un lappuses numura un meklēšanas uzvednes. Parametri atbilst attiecīgām saitēm un ievades laukam lietotāja saskarnē un izvēlnēm pārskata lapās. Parametru vērtības tiek iegūtas no vietrādes parametriem. + + Neobligātie parametri: + + Lappuses numurs -- vesels pozitīvs skaitlis, noklusētā vērtība -- 1; + + Meklēšanas uzvedne -- simbolu virkne, atbilst #link()[IIDP14], noklusētā vērtība -- "". + + Kārtošanas vārdnīcu saraksts - atbilst #link()[IIDP20], noklusētā vērtība -- tukšs saraksts. + + Filtru vārdnīcu saraksts -- atbilst #link()[IIDP19], noklusētā vērtība -- tukšs saraksts. + ], + [ + + Sāk gatavot datubāzes pieprasījumu no lietotāju tabulas; + + Sagatavo pārskata pieprasījumu un iegūst lappuses numuru un kopējo lappušu skaitu, izmantojot #link()[KPR07] ar lappuses numuru, meklēšanas uzvedni, kārtošanas vārdnīcu sarakstu, filtru vārdnīcu sarakstu, šos parametrus iesniedzot, ja tie ir iesniegti funkcijā; + + Ja lappušu skaits ir 0, tad parāda 1. paziņojumu. Beidz apstrādi. + + Veic sagatavoto pieprasījumu, iegūstot lietotāja segvārdu, lietotāja konta izveidošanas laiku (lietotāja pievienošanās laiku), lietotāja attēla datnes adresi; + + Ja pieprasījums neizdodas, parāda 2. paziņojumu. Beidz apstrādi. + + Katram ierakstam no rezultāta, iegūst sameklē attēla datnes adresi no attēlu tabulas pēc attēla identifikatora. + + Ja attēla datnes adrese neeksistē ierakstam, tad iegūst noklusētā attēla datnes adresi un pamaina ieraksta datnes adresi izvades datos uz noklusētā datnes attēla adresi. + ], + [ + Izvades datu mērķis ir parādīt rezultāta pārskatu lietotāja saskarnē. Lietotāja saskarnē tiek prezentēti dati no sagatavotā saraksta. + + Pārskata ierakstu saraksts, kas sastāv no vārdnīcām: + + Lietotāja identifikators -- atbilst #link()[IIDP10]\; + + Segvārds -- atbilst #link()[IIDP07]; + + Lietotāja konta izveidošanas laiks -- atbilst #link()[IIDP02]\; + + Lietotāja attēls -- atbilst #link()[IIDP08]\. + + Kārtošanas vārdnīcu saraksts -- atbilst #link()[IIDP20], noklusētā vērtība -- tukšs saraksts. + + Filtru vārdnīcu saraksts -- atbilst #link()[IIDP19], noklusētā vērtība -- tukšs saraksts. + + Kopējais lapu skaits -- vesels pozitīvs skaitlis; + + Tekošā lappuse -- vesels pozitīvs skaitlis, kas ir mazāks vai vienāds par lapu skaitu; + ], + [ + + Netika atrasts neviens lietotājs! + + Sistēmas iekšējā kļūda! Mēģiniet vēlreiz! + ], +) + +#function-table( + "Lietotāja konta detaļas", + "LKMF02", + "Funkcijas mērķis ir reģistrētiem lietotājiem saņemt informāciju par kontu -- gan publisko, gan privāto (atkarībā no lietotāja lomas un konta piederības). Administratoriem visa informācija ir iegūstama par jebkuru lietotāju.", + [ + Ievades datus iegūst no vietrāža parametriem, caur kuru tiek piekļūts funkcijai. Alternatīvi, dati (lietotāja identifikators) tiek iegūti no konteksta. + + Neobligātie parametri: + + Apskatāmo konta datu lietotāja identifikators -- atbilst #link()[IIDP10], noklusētā vērtība -- no konteksta lietotāja (kas piekļūst funkciju) iegūtais identifikators. + ], + [ + + Sāk gatavot datubāzes pieprasījumu no lietotāju tabulas. + + Sagatavo pieprasīto lauku sarakstu: + + Vārds un uzvārds; + + Segvārds; + + Biogrāfijas informācija; + + Dzimšanas datums; + + Konta izveidošanas laiks; + + Attēls (datnes adrese). + + Autorizē administratora darbību. Ja darbība ir autorizēta, tad pie saraksta pievieno lietotāja konta stāvokli, vai lietotājs ir administrators. + + Ja lietotājam pieder pieprasījuma konts vai administratora darbība tika autorizēta, sarakstam pievieno sekojošos atribūtus: + + E-pasta adresi; + + E-pasta apstiprinājuma stāvokli. + + Veic sagatavoto pieprasījumu, pieprasot iepriekš sagatavoto lauku sarakstu, attēla datnes adreses; + + Ja pieprasījums neizdodas, parāda 2. paziņojumu. Beidz apstrādi. + + Ja lietotājs netika atrasts, parāda 3. paziņojumu. Beidz apstrādi. + + Ja attēla datnes adrese neeksistē, tad iegūst noklusētā attēla datnes adresi. + ], + [ + Izvades datu mērķis ir lietotāja konta datu parādīšana. Lietotāja saskarnē tiek prezentēti konta dati, kas atbilst lietotājam paredzamai datu kopai. + + Pamata vārdnīcas saturs: + + Vārds un uzvārds -- atbilst #link()[IIDP04]\; + + Segvārds -- atbilst #link()[IIDP07]\; + + Biogrāfiskā informācija -- atbilst #link()[IIDP09]\; + + Dzimšanas datums -- atbilst #link()[IIDP01]\; + + Konta izveidošanas laiks -- atbilst #link()[IIDP02]\; + + Lietotāja profila attēls -- atbilst #link()[IIDP08]. + Papildus vārdnīcas dati, ja pieprasītājs lietotājs ir administrators vai konts pieder lietotājam: + + E-pasta adrese -- atbilst #link()[IIDP05]\; + + E-pasta apstiprinājuma stāvoklis -- karodziņš. + Papildus vārdnīcas dati, ja pieprasītājs lietotājs ir administrators: + + Konta stāvoklis -- atbilst #link()[IIDP10]\; + + Vai lietotājs ir administrators -- karodziņš. + ], + [ + + Darbība nav autorizēta! + + Sistēmas iekšējā kļūda! Mēģiniet vēlreiz! + + Tāds lietotājs nav atrasts! Mēģiniet vēlreiz! + ], +) + +#function-table( + "Lietotāja konta bloķēšana", + "LKMF03", + "Funkcijas mērķis ir bloķēt lietotāja kontu, ja notikuši drošības pārkāpumi vai cita veida noteikumu pārkāpumi.", + [ + Ievades datus iegūst no veicamās darbības -- klikšķis uz lietotāja bloķēšanas pogu. + + Obligātie parametri: + + Lietotāja identifikators -- atbilst #link()[IIDP10]. + ], + [ + + Sameklē lietotāja ierakstu datubāzē, meklējot to pēc identifikatora. + + Ja lietotāja ieraksts netika atrasts, parāda 2. paziņojumu. Beidz apstrādi. + + Autorizē administratora darbību. + + Ja darbība netika autorizēta, parāda 2 paziņojumu. Beidz apstrādi. + + Maina lietotāja konta stāvokli uz stāvokli, kas atbilst bloķētam lietotājam. + + Ja ierakstīšana nav veiksmīga, parāda 4. paziņojumu. + ], + [ + Izvades mērķis ir atjaunot lietotāja stāvokli lietotāja saskarnē. Ja ierakstīšana ir veiksmīga, parāda 3. paziņojumu. + + Konta bloķēšanas stāvoklis -- atbilst #link()[IIDP10]. + ], + [ + + Lietotājs ar norādītu identifikatoru neeksistē! + + Darbība nav autorizēta! + + Konts veiksmīgi bloķēts! + + Sistēmas iekšējā kļūda, konts nav bloķēts! + ], +) + +#pagebreak(weak: true) +#function-table( + "Lietotāja konta rediģēšana", + "LKMF04", + "Funkcijas mērķis ir rediģēt lietotāju konta datus, kas ir rediģējami. Administratoriem rediģēt dažus laukus, kuru rediģēšana nav pieejama lietotājiem, kas nav administratori.", + [ + Ievades dati tiek saņemti no reģistrēto un autentificēto lietotāju pieejamās veidlapas. + + Obligātie parametri: + + Pilns vārds -- atbilst #link()[IIDP04]\; + + Segvārds -- atbilst #link()[IIDP07]\; + + E-pasta adrese -- atbilst #link()[IIDP05]\; + + Biogrāfiskā informācija -- atbilst #link()[IIDP09]\; + + Dzimšanas datums -- atbilst #link()[IIDP01]\;. + + Administratoram specifiskie obligātie parametri: + + Konta izveidošanas laiks -- datums, atbilst #link()[IIDP02]\. + + E-pasta apstiprinājums -- karodziņš; + + Konta stāvokļa kods -- atbilst #link()[IIDP10]\. + // + Vai ir administrators -- karodziņš. + + Neobligātie parametri: + + Konta datu lietotāja identifikators -- atbilst #link()[IIDP10], noklusētā vērtība -- no konteksta lietotāja (kas piekļūst funkciju) iegūtais identifikators. + + Vecā parole -- atbilst #link()[IIDP06], noklusētā vērtība -- "". + + Jaunā parole -- atbilst #link()[IIDP06], noklusētā vērtība -- "". + + Jaunās paroles apstiprinājums -- atbilst #link()[IIDP06], noklusētā vērtība -- "". + ], + [ + // Autorizācija + + Ja lietotājs nav administrators un lietotāja identifikators nesakrīt ar pieprasītāja lietotāja identifikatoru, parādīt 1. paziņojumu. Beidz apstrādi. + + Veido izmainīto datu sarakstu pēc turpmāk izmainītiem laukiem. + + // Datu validācija + + Pārbauda, vai visi obligātie lauki ir iesniegti. + + Ja tie nav, iegūst sarakstu ar neaizpildītajiem laukiem, parāda 2. paziņojumu. Beidz apstrādi. + + Pārbauda, vai pilns vārds, segvārds, e-pasta adrese, biogrāfiskā informācija satur tikai pieļaujamos simbolus. + + Ja satur, tad iegūst izmantotos neatļautos simbolus, tad parāda 4. paziņojumu ar attiecīgi laukiem un simboliem. Beidz apstrādi. + + Pārbauda, vai dzimšanas datumam ir korekts formāts. + + Ja nav korekts, parāda 17. paziņojumu. Beidz apstrādi. + + Pārbauda, vai dzimšanas datums atbilst noteiktam minimālam lietotāja vecumam. + + Ja neatbilst, parāda 7. paziņojumu. + + Pārbauda, vai pilns vārds, segvārds, e-pasta adrese, biogrāfiskā informācija, parole nepārsniedz noteikto garumu. + + Ja satur, tad iegūst pārsniegto garumu parametru sarakstu un parāda 5. paziņojumu ar attiecīgi laukiem un garumiem. Beidz apstrādi. + + Pārbauda, vai parole un paroles apstiprinājums sakrīt. + + Ja nesakrīt, tad parāda 3. paziņojumu. Beidz apstrādi. + + Pievieno atjaunoto atribūtu vērtības sarakstam. + + // Sanitizācija / Transformācija + // Biogrāfiskā informācija + + Sanitizē biogrāfisko informāciju, izmantojot #link()[KPR09]\. + + // Paroles apstrāde + + Ja jaunā parole tika iesniegta, pārbauda, vai parole atbilst noteiktām drošības prasībām. + + Ja tā tiem neatbilst, tad parāda 6. paziņojumu ar attiecīgām neizpildītajām prasībām. Beidz apstrādi. + + Ģenerē "sāls" simbolu virkni ar noteiktu algoritmu, to pievieno parolei. + + Šifrē paroli ar jaucējfunkciju. + + // Image + + Ja tika iesniegts attēls, validē attēlu ar #link()[KPR12] un uzstāda pievienošanas laiku uz tagadējo laiku. + + Ja validācija ir neveiksmīga, parāda 8. paziņojumu ar attiecīgu validācijas kļūdu. + + Citādi saglabā vecā attēla datni, ja tāda ir. + + // Uniqueness check + + Ja tika iesniegts atšķirīgs segvārds, mēģina sameklēt datubāzē lietotājus ar ievadīto segvārdu. + + Ja tāds (/-i) pastāv, tad parāda 10. paziņojumu ar attiecīgo aizņemto lauku. Beidz apstrādi. Beidz apstrādi. + + Ja tika iesniegts atšķirīgs e-pasts, mēģina sameklēt datubāzē lietotājus ar ievadīto e-pastu. + + Ja tāds (/-i) pastāv, tad parāda 10. paziņojumu ar attiecīgo aizņemto lauku. Beidz apstrādi. Beidz apstrādi. + + // Admin specific + + Autorizē administratora darbību. Ja darbība ir autorizēta, veic sekojošās darbības. + + Pārbauda, vai izveidošanas laikam ir korekts formāts. + + Ja nav, parāda 12. paziņojumu. Beidz apstrādi. + + Pārbauda vai konta stāvokļa kods atbilst definētiem stāvokļa kodiem. + + Ja neatbilst, parāda 12. paziņojumu. Beidz apstrādi. + + Pārbauda, vai datums ir pagātnē vai tagad. + + Ja datums ir nākotnē, parāda 17. paziņojumu. Beidz apstrādi. + + Pārbauda vai e-pasta apstiprinājuma karodziņš ir korekts. + + Ja neatbilst, parāda 8. paziņojumu. Beidz apstrādi. + + Pievieno atjaunoto atribūtu vērtības sarakstam. + /*+ Ja administratora karodziņš ir "patiess". + + No datubāzes noskaidro, vai lietotājs ir administrators. + + Ja lietotājs nav administrators, piešķir lietotājam administratora tiesības. + + Ja administratora karodziņš ir "nepatiess". + + No datubāzes noskaidro, vai lietotājs ir administrators. + + Ja lietotājs ir administrators, noņem lietotājam administratora tiesības.*/ + + // Save + + Lietotāja konta sagatavotie dati -- lauki, kas ir rediģēto lauku sarakstā, tiek ierakstīti datubāzē. + + Ja ierakstīšana nenotiek, parādīt 11. paziņojumu. Beidz apstrādi. + + Izdzēš veco attēlu ar saglabāto vecā attēla datni. + ], + [ + Izvades datu mērķis ir noteikt rediģēšanas konta stāvokli. + + Konta rediģēšanas apstiprinājuma stāvoklis -- skaitlisks kods. + ], + [ + + Darbība nav autorizēta! + + Lauks: [neaizpildīto lauku saraksts] netika aizpildīts (/-i)! + + Parole un paroles apstiprinājums nesakrīt! + + [Parametra nosaukums] nedrīkst saturēt: [izmantoto parametra neatļauto simbolu saraksts]! + + [Parametra nosaukums] nedrīkst pārsniegt [noteikto parametra maksimālo simbolu skaits]! + + Parolei ir jāsatur: [neizpildīto paroles prasību saraksts]! + + Minimālais vecums reģistrācijai: [noteikts minimālais vecums reģistrācijai]. + + E-pasta apstiprinājuma karodziņš nav korekts! + + Šo attēlu nedrīkst izmantot: [validācijas kļūda\]! + + Lietotājs ar tādu [aizņemtā lauka nosaukums] jau eksistē! + + Sistēmas iekšējā kļūda! Mēģiniet vēlreiz! + + Nekorekts laiks! Laika formāts: [nepieciešamais laika formāts]. + + Izveidošanas laiks nedrīkst būt nākotnē! + + Lietotāja stāvokļa kods nav korekts! + + Konta rediģēšana ir veiksmīga! + + Tāds konta stāvoklis neeksistē! + + Nekorekts datums! Datuma formāts: [nepieciešamais datuma formāts]. + ], +) + +#function-table( + "Lietotāja konta dzēšana", + "LKMF05", + "Funkcijas mērķis ir dzēst lietotāju kontus, lai to konta informācija būtu neatgriezeniski izdzēsta.", + [ + Ievades dati tiek saņemti no reģistrēto lietotāju pieejamās darbības. Alternatīvi, dati tiek iegūti no konteksta (autentificēta lietotāja identifikators). + + Neobligātie parametri: + + Konta datu lietotāja identifikators -- atbilst #link()[IIDP10]. Noklusētā vērtība -- no konkrēta lietotāja (kas piekļūst funkciju) iegūtais identifikators. + ], + [ + + Autorizē administratora darbību. + + Ja darbība ir autorizēta, parādīt 1. paziņojumu. Beidz apstrādi. + + Pārbauda, vai lietotājs ar tādu identifikatoru eksistē. + + Ja neeksistē, parāda 2. paziņojumu. Beidz apstrādi. + + Saglabā veco lietotāja attēla datnes adresi, ja tāda ir. + + Lietotāja ierakstu izdzēš. + + Ja izdzēšana nav veiksmīga, parāda 3. paziņojumu. Beidz apstrādi. + + Ja izdzēšana ir veiksmīga, parāda 4. paziņojumu. Beidz apstrādi. + + Izdzēš lietotāja konta attēla datni. + + ], + [ + Izvades datu mērķis ir noteikt, vai lietotājs tiks pāradresēts. + + Lietotāja konta dzēšanas stāvoklis -- skaitlisks kods. + ], + [ + + Darbība nav autorizēta! + + Tāds lietotājs nav atrasts! + + Sistēmas iekšējā kļūda! Mēģiniet vēlreiz! + + Lietotāja deaktivizēšana ir veiksmīga! + ], +) + +=== Maksas abonementu modulis + +#indent-par([ +Apakšnodaļa ietver maksas abonementa moduļa funkcijas. Moduļa funkcionalitāte ir izmantota darbībām ar lietotāju maksas abonementiem. Moduļa funkciju datu plūsmas ir parādītas 2. līmeņa datu plūsmas diagrammā (skat. @fig:dpd-2-premium-user). +Funkcijas ir aprakstītas atsevišķās tabulās (skat. +#link()[MAMF01], +#link()[MAMF02], +#link()[MAMF03], +#link()[MAMF04]). +]) + +#figure( + caption: "Maksas abonementu moduļa 2. līmeņa DPD", + image("img/dpd2/MaksasAbonementaModulis.svg") +) + +#function-table( + "Abonementa pieteikums", + "MAMF01", + "Funkcijas mērķis ir izveidot maksājuma pieteikumu maksas abonementam, izveidojot maksas abonementa ierakstu datubāzē maksājuma apstiprināšanas gadījumā.", + [ + Ievades dati tiek iegūti no lietotāja maksājuma pieteikuma veidlapas, apmaksājot abonementu. + + Obligātie parametri: + + Lietotāja identifikators -- atbilst #link()[IIDP10]\; + + Maksājuma plāna identifikators -- atbilst #link()[IIDP22]. + // + Kartes īpašnieka vārds. Simbolu virkne, kas var saturēt lielo un mazos burtus (a-z, A-Z) no ASCII simbolu kopas, atstarpes, defīzes, apostrofus. Maksimālais simbolu skaits ir 100 simboli. + // + Kartes numurs. Simbolu virkne, kas sastāv no cipariem un ir 16 simbolus gara. + // + Kartes derīguma termiņš -- datuma simbola virkne, kas sastāv no gada un mēneša. Pieļaujamas tikai termiņi, kas nav pirms tekošā mēneša. + // + Kartes drošības kods -- simbolu virkne no 3 cipariem. + ], + [ + /*+ Pārbauda, vai datubāzē neeksistē aktīvs abonements, kas ir saistīts ar lietotāja identifikatora, kas veido maksājuma pieteikumu. + + Ja eksistē, parāda 9. paziņojumu.*/ + /*+ Pārbauda, vai visi obligātie lauki ir iesniegti. + + Ja tie nav, iegūst sarakstu ar neaizpildītajiem laukiem, parāda 1. paziņojumu. Beidz apstrādi. + + Pārbauda, vai visi obligātie lauki satur tikai pieļaujamos simbolus. + + Ja satur, tad iegūst izmantotos neatļautos simbolus, tad parāda 2. paziņojumu ar attiecīgajiem laukiem un izmantotiem aizliegtiem simboliem. Beidz apstrādi. + + Pārbauda, vai veidlapas visi obligātie lauki nepārsniedz noteikto garumu. + + Ja satur, tad iegūst pārsniegto garumu parametru sarakstu un parāda 3. paziņojumu ar attiecīgi laukiem un garumiem. Beidz apstrādi. + + Pārbauda, vai kartes numura pirmie 4 cipari atbilst vienai no bankām, ko apstrādā maksājumu apstrādātājs. + + Ja neatbilst, parāda 4. paziņojumu. Beidz apstrādi. + + Pārbauda, vai kartes derīguma termiņš ir pēc tekošā mēneša. + + Ja tas ir pirms, parāda 5. paziņojumu. Beidz apstrādi. + + No datubāzes sameklē aktuālo šodienas cenu par abonementu, izmantojot tagadējo laiku. + + Ja cena netika atrasta, iegūst noklusējuma cenu.*/ + + // https://stripe.com/docs/api/subscriptions/create + + Pārbauda, vai pieprasītais abonementa plāns eksistē, pieprasot abonementa plāna informāciju no maksas apstrādātāja. + + Ja neeksistē, parāda 5. paziņojumu. Beidz apstrādi. + + Pārbauda, vai datubāzē lietotājam eksistē ārējā maksas pakalpojuma izveidots identifikators. + + Ja eksistē, pārbauda vai identifikators ir saistīts ar aktīvu lietotāju maksas apstrādātāja sistēmā, pieprasot klienta informāciju. + + Pārbauda vai klientam nav abonēts šis plāns. Ja ir abonēts, parāda 4. paziņojumu. Beidz apstrādi. + + Ja neeksistē vai eksistē un nav saistīts ar aktīvu lietotāju maksas apstrādātāja sistēmā, tad identifikatoru izveido, izmantojot #link()[KPR11]. Saglabā izveidoto identifikatoru datubāzē. + + Ja izveidošana neizdodas, parāda 2. paziņojumu. Beidz apstrādi. + + Sagatavo datus pieprasījumam, kas iekļauj lietotāja ārējā maksas pakalpojuma identifikatoru un maksājuma plāna identifikatoru. Pārveido tos maksājuma apstrādātāja pieprasītā formātā, izmantojot maksājumu apstrādātāja API. + + Pieprasa abonementa izveidošanu, sazinoties ar maksājumu apstrādātāju. + + Ja atbildē izveidošana netiek apstiprināta, parāda 2. paziņojumu. Beidz apstrādi. + /*+ Ja abonementa izveidošana ir apstiprināta, izveido ierakstu ar abonementa datiem datubāzē: + + Sākuma laiks -- tagadējais laiks, atbilst #link()[IIDP02]\; + + Maksājumu periods -- noteikts maksājuma periods; + + Maksas abonementa stāvoklis -- stāvoklis, kas atbilst stāvoklim "atbilst". + + Maksājuma apstrādātāja atbildē saņemto klienta identifikators.*/ + ], + [ + Izvades datu mērķis ir informēt, vai lietotājs tiks pāradresēts. Lietotāja saskarnē parāda 3. paziņojumu. + + Abonementa izveidošanas apstiprinājuma stāvoklis -- skaitlisks kods. + ], + [ + /*+ Lauks: [neaizpildīto lauku saraksts] netika aizpildīts (/-i)! + + [Parametra nosaukums] nedrīkst saturēt: [izmantoto parametra neatļauto simbolu saraksts]! + + [Parametra nosaukums] nedrīkst pārsniegt [noteikto parametra maksimālo simbolu skaits]! + + Kartes numurs nav korekts! + + Kartes derīguma termiņš ir beidzies!*/ + + Sistēmas iekšējā kļūda! Mēģiniet vēlreiz! + + Abonementa apmaksa nav veiksmīga! Mēģiniet vēlreiz vai sazinieties ar tehniskās palīdzības speciālistu! + + Abonēšana ir veiksmīga! + + Jums jau ir aktīvs abonements ar Jūsu izvēlēto plānu! + + Jūsu pieteiktais abonementa plāns neeksistē! + ], +) + +#function-table( + "Abonementu pārskats", + "MAMF02", + "Funkcijas mērķis ir lietotājiem rādīt informāciju par maskas esošiem un bijušiem maksas abonementiem. Šī pārskata dati tiek kārtoti un filtrēti neobligātā kārtā.", + [ + Ievades dati tiek saņemti no vietrāža parametriem. + + Obligātie parametri: + + Lietotāja identifikators -- atbilst #link()[IIDP10]. + + Neobligātie parametri: + + Lappuses numurs -- pozitīvs skaitlis. + + Kārtošanas vārdnīcu saraksts -- atbilst #link()[IIDP20], noklusētā vērtība -- tukšs saraksts. + + Filtru vārdnīcu saraksts -- atbilst #link()[IIDP19], noklusētā vērtība -- tukšs saraksts. + ], + [ + // https://stripe.com/docs/api/subscriptions/list + // + Sāk gatavot datubāzes pieprasījumu no maksas abonementu tabulas. + + Autorizē administratora darbību. + + Ja darbība nav autorizēta un pieprasītais lietotāja identifikators nesakrīt ar lietotāja identifikatoru, parāda 4. paziņojumu. Beidz apstrādi. + + Iegūst maksas apstrādātāja klienta identifikatoru no datubāzes. + + Ja tā vērtība atbilst nulles vērtībai, parāda 4. paziņojumu. Beidz apstrādi. + + Sagatavo pārskata pieprasījumu, lappuses numuru un kopējo lappušu skaitu, izmantojot #link()[KPR07] ar lappuses numuru, kārtošanas vārdnīcu sarakstu, filtru vārdnīcu sarakstu, šos parametrus iesniedzot, ja tie ir iesniegti funkcijā. Pārveido tos maksājuma apstrādātāja pieprasītā formātā, izmantojot maksājumu apstrādātāja API. + + Ja identifikators neeksistē, tad izveido to, #link()[KPR11], un mēģina vēlreiz. + + Ja lappušu skaits ir 0, tad parāda 1. paziņojumu. Beidz apstrādi. + + Pieprasa lietotāja abonementu sarakstu, sazinoties ar maksājumu apstrādātāju. Sarakstu pārveido vārdnīcu sarakstu ar sekojošām atslēgām: + + Maksājuma plāna identifikators\; + + Abonementa stāvoklis\; + + Sākuma laiks\; + + Beigu laiks\; + + Atteikuma laiks\; + + Pēdējais norēķina laiks\; + + Nākamā norēķina laiks\; + + Cena\; + + Valūta\; + + Apraksts\. + + Ja pieprasījums neizdodas, parāda 2. paziņojumu. Beidz apstrādi. + ], + [ + Izvades datu mērķis ir parādīt pārskatu, ņemot vērā filtrus un kārtošanu, ja tas tika pieprasīts. Kā arī izvadīt datus abonementa atcelšanai. + Lietotāja saskarnē tiek prezentēti dati no sagatavotā saraksta. + + + Vārdnīcu saraksts: + + Maksājuma plāna identifikators -- atbilst #link()[IIDP22]\; + + Abonementa stāvoklis -- atbilst #link()[IIDP10]\; + + Sākuma laiks -- atbilst #link()[IIDP02]\; + + Beigu laiks -- atbilst #link()[IIDP02]\; + + Atteikuma laiks -- atbilst #link()[IIDP02]\; + + Pēdējais norēķina laiks -- atbilst #link()[IIDP02]\; + + Nākamā norēķina laiks -- atbilst #link()[IIDP02]\; + + Cena -- atbilst #link()[IIDP15]\; + + Valūta -- uzskatījums, atbilst ISO 4217 valūtas kodam; + + Apraksts -- simbolu virkne. + /* + Papildus vārdnīcu dati administratoriem: + + Maksājumu apstrādātāja klienta identifikators -- vesels pozitīvs skaitlis;*/ + + + Lappušu skaits -- pozitīvs skaitlis. + + Tekošā lappuse -- pozitīvs skaitlis, kas ir mazāks vai vienāds par lapu skaitu. + ], + [ + + Netika atrasts neviens abonements! + + Sistēmas iekšējā kļūda! Mēģiniet vēlreiz! + + Darbība nav autorizēta! + + Jums nav aktīva abonementa! + ], +) + +#function-table( + "Abonementa atcelšana", + "MAMF03", + "Funkcijas mērķis ir atcelt lietotājam, kam ir aktīvs maksas abonementi. Maksājuma apstrādātāja abonements tiks atcelts, kā rezultātā no lietotāja vairs nebūs iekasēti maksājumi. Abonementa stāvoklis sistēmā būs apzīmēts kā atcelts.", + [ + Ievades dati tiek iegūti no darbības abonementu pārskatā. + + Obligātie parametri: + + Lietotāja identifikators -- atbilst #link()[IIDP10]. + //+ Maksājuma apstrādātāja klienta identifikators -- atbilst #link()[IIDP10]. + + Maksājuma plāna identifikators -- atbilst #link()[IIDP22]. + + Neobligātie parametri: + + Atcelšanas iemesls -- simbolu virkne. + ], + [ + /*+ Sameklē datubāzē maksas abonementa ierakstu, pēc maksas apstrādātāja klienta identifikatora. + + Ja tāds neeksistē, parāda 1. paziņojumu. Beidz apstrādi. + + Ja lietotāja idendifikators neatbilst ieraksta identifikatoram, parāda 2. paziņojumu. Beidz apstrādi. + */ + + + Iegūst maksas apstrādātāja klienta identifikatoru no datubāzes. + + Ja tā vērtība atbilst nulles vērtībai, parāda 3. paziņojumu. Beidz apstrādi. + + Sagatavo datus pieprasījumam, kas iekļauj lietotāja ārējā maksas pakalpojuma identifikatoru, maksājuma plāna identifikatoru un atcelšanas iemeslu. Pārveido tos maksājuma apstrādātāja pieprasītā formātā, izmantojot maksājumu apstrādātāja API. + + Pieprasa abonementa atcelšanu, sazinoties ar maksājumu apstrādātāju. + + Ja atbildē atcelšana netiek apstiprināta, parāda 1. paziņojumu. Beidz apstrādi. + + Sameklē lietotāja ierakstu datubāzē. + + Izdzēš klienta identifikatoru no lietotāja ieraksta. + + /*+ Izmantojot maksājumu apstrādātāja klienta identifikatoru, pieprasa abonementa atcelšanu, izmantojot maksājuma apstrādātāja API. + + Ja maksājuma apstrādāja atbilde norāda, ka atcelšana neizdevusies. Parāda 1. paziņojumu. Beidz apstrādi. + + Ja maksājuma apstrādātāja atbilde norāda, ka abonementa atcelšana ir veiksmīga, attiecīgā datubāzes ieraksta stāvokli nomaina uz stāvokli, kas apzīmē atceltu abonementu. */ + ], + [ + Izvades datu mērķis ir noteikt, vai abonementa atcelšana bija veiksmīga. Lietotāja saskarnē parāda 2. paziņojumu. + + Abonementa atcelšanas stāvoklis -- skaitlisks kods. + ], + [ + + Neizdevās atcelt abonementu! Mēģiniet vēlreiz vai sazinieties ar tehniskās palīdzības speciālistu! + + Abonements ir veiksmīgi atcelts! + + Jums nav aktīva abonementa! + ], +) + +#function-table( + "Abonementu plānu pārskats", + "MAMF04", + "Funkcijas mērķis ir lietotājiem sniegt pārskatu par pieejamajiem abonementu plāniem.", + [ + Neobligātie parametri: + + Vai ir aktīva -- Bula mainīgais, noklusētā vērtība -- "patiess"; + + Izveides datums -- atbilst #link()[IIDP02], noklusētā vērtība -- 0; + + Ierobežojums -- vesels pozitīvs skaitlis, no 1 līdz 100, noklusētā vērtība -- 10; + ], + [ + // https://stripe.com/docs/api/plans/list + + Sagatavo datus pieprasījumam. Pārveido tos maksājuma apstrādātāja pieprasītā formātā, izmantojot maksājumu apstrādātāja API. + + Pieprasa abonementa plānu sarakstu, sazinoties ar maksājumu apstrādātāju. + + Ja pieprasījums neizdodas, parāda 1. paziņojumu. Beidz apstrādi. + + Iegūto plānu sarakstu pārveido vārdnīcu sarakstā ar sekojošām atslēgām: + + Maksājuma plāna identifikators\; + + Izveidošanas laiks\; + + Abonementa stāvoklis\; + + Cena\; + + Valūta\; + + Maksāšanas periods\; + + Diena; + + Nedēļa; + + Mēnesis; + + Gads. + + Plāna segvārds\; + + Apraksts\. + ], + [ + Izvades datu mērķis ir parādīt abonementu plānu pārskatu. + Lietotāja saskarnē tiek prezentēti dati no sagatavotā saraksta. + + + Vārdnīcu saraksts: + + Maksājuma plāna identifikators -- atbilst #link()[IIDP22]\; + + Izveidošanas laiks -- atbilst #link()[IIDP02]\; + + Abonementa stāvoklis -- atbilst #link()[IIDP10]\; + + Cena -- atbilst #link()[IIDP15]\; + + Valūta -- uzskatījums, atbilst ISO 4217 valūtas kodam; + + Maksāšanas periods -- uzskaitījums ar vienu no vērtībām: + + Diena; + + Nedēļa; + + Mēnesis; + + Gads. + + Plāna segvārds -- simbolu virkne; // Īss plāna apraksts, kas ir paslēpts no lietotājiem; + + Apraksts -- simbolu virkne. + ], + [ + + Sistēmas iekšējā kļūda! Mēģiniet vēlreiz! + ], +) + +=== Tērzēšanas modulis + +#indent-par([ +Apakšnodaļa ietver tērzēšanas moduļa funkcijas. Moduļa funkcionalitāte ir izmantota iekšspēles tērzēšanas nodrošināšanai. Moduļa funkciju datu plūsmas ir parādītas 2. līmeņa datu plūsmas diagrammā (skat. @fig:dpd-2-chat). +Funkcijas ir aprakstītas atsevišķās tabulās (skat. +#link()[TMF01], +#link()[TMF02], +#link()[TMF03], +#link()[TMF04]). +]) + +#figure( + caption: "Tēržēšanas moduļa 2. līmeņa DPD", + image("img/dpd2/TerzēšanasModulis.svg") +) + +#function-table( + "Jaunas sarakstes izveidošana", + "TMF01", + "Funkcijas mērķis ir dot iespēju rakstiskā veidā sazināties spēlētājam ar citiem klātesošajiem spēlētājiem vienas spēles istabas ietvaros.", + [ + Ievade tiek saņemta no teksta ievades lauciņa spēlētāju tērzētavā. + + Obligātie parametri: + + Lietotāja identifikators -- atbilst #link()[IIDP10]\; + + Spēlētāja identifikators -- atbilst #link()[IIDP10]\; + + Istabas identifikators -- atbilst #link()[IIDP10]\; + + Sarakstes teksts -- atbilst #link()[IIDP16]\; + + Vai sarakste ir mafijas tērzētavā -- karodziņš. + + Neobligātie parametri: + + Atbildes saņēmēja sarakstes identifikators - atbilst atbilst #link()[IIDP10]\; + ], + [ + + Pārbauda, vai sarakstes teksts nav tukša simbolu virkne. + + Ja ir tukša, parāda 1. paziņojumu. Beidz apstrādi. + + Pārbauda, vai sarakstes teksts nepārsniedz maksimālo simbolu skaitu. + + Ja pārsniedz, parāda 2. paziņojumu ar attiecīgo maksimālo pieļauto garumu. Beidz apstrādi. + + Izmantojot #link()[KPR02] procedūru pārbauda, vai spēlētājs, lietotājs un spēles istaba eksistē un ir savstarpēji saistīti. + + Ja nav, parāda 3. paziņojumu. Beidz apstrādi. + + Ja spēlētais ir neaktīvs, izslēgts, vai kāds no atribūtiem, kas apzīmē spēles beigas spēlētājiem ir "patiess", parāda 6. paziņojumu. Beidz apstrādi. + + Izmantojot #link()[KPR03] procedūru pārbauda, vai spēlētājs pieder mafijai un ja "vai sarakste ir mafijas tērzētavā" karodziņš ir "patiess", uzstāda attiecīgo ieraksta karodziņa vērtību. + + Ja spēlētājs nepieder mafijai, parāda 4. paziņojumi. Beidz apstrādi. + + Ja atbildes sarakstes identifikators ir iesniegts, sameklē atbildes sarakstes ar atbildes sarakstu identifikatoru. + + Ja sarakste ierakstu neatrod, parāda 5. paziņojumu. Beidz apstrādi. + + Sagatavoto sarakstes ierakstu. + + Ieraksta saraksti datubāzē. + + Ja ierakstīšana neizdevās, parāda 3. paziņojumu. Beidz apstrādi. + ], + [ + Izvades mērķis ir norādīt izveidotās ziņas stāvokli. + + Ziņas sūtīšanas stāvoklis -- skaitlisks kods. + ], + [ + + Sarakste ir tukša! + + Ziņas garums pārsniedz maksimāli atļauto garumu: [maksimāli atļautais garums]! + + Sistēmas iekšējā kļūda! Mēģiniet vēlreiz! + + Jūsu loma neatļauj piedalīties mafijas tērzēšanā! + + Atbildes sarakste netika atrasta! + + Jūs nevarat izveidot jaunu saraksti! + ], +) + +#function-table( + "Sarakstes izdzēšana", + "TMF02", + "Funkcija atbild par netīšām uzrakstītām ziņām, kuras spēlētāji vēlas izdzēst, pēc ziņu nosūtīšanas vai atbild par nekorektu vai neobjektīvi pareizu ziņu izdzēšanu.", + [ + Ievade tiek iegūta no ziņas izdzēšanas darbības tērzētavā. + + Sarakstes identifikators -- atbilst #link()[IIDP10]\; + + Lietotāja identifikators -- atbilst #link()[IIDP10]. + ], + [ + + Sameklē datubāzē sarakstes ierakstu, izmantojot sarakstes identifikatoru. + + Ja tas netika atrasts, parāda 1. paziņojumu. Beidz apstrādi. + + Pārbauda, vai lietotāja identifikators sakrīt ar sarakstes ieraksta lietotāja identifikatoru. + + Ja tas nesakrīt, autentificē administratora darbību. + + Ja darbības netika autentificēta, parāda 2. paziņojumu. Beidz apstrādi. + + No datubāzes izdzēš sarakstes ierakstu. + + Ja dzēšana ir veiksmīga, parāda 3. paziņojumu. Beidz apstrādi. + + Ja nav veiksmīga, parāda 4. paziņojumu. Beidz apstrādi. + ], + "Izdzēstā ziņa no sarakstes uzskaites ir pazudusi. Parādās par izdzēsto saraksti.", + [ + + Dzēšamā sarakste netika atrasta! + + Ir iespējams dzēst tikai savas sarakstes! + + Ziņa ir veiksmīgi izdzēsta! + + Sistēmas iekšējā kļūda! Mēģiniet vēlreiz! + ], +) + +#function-table( + "Sarakstu pārskats", + "TMF03", + "Funkcija nepieciešama, lai uzskaitītu un parādītu visas uzrakstītās sarakstes visās tērzētavās (mafijas un parastās). Tā kā pieprasīto sarakstu skaits var atšķirties saskarnēs -- tas tiek noteikts ar papildus parametru.", + [ + Ievade tiek saņemta no spēles istabas konteksta. + + Obligātie parametri: + + Lietotāja identifikators -- atbilst #link()[IIDP10]\; + + Istabas identifikators -- atbilst #link()[IIDP10]\; + + Pieprasīto ierakstu skaits -- vesels pozitīvs skaitlis; + + Lappuses numurs -- vesels pozitīvs skaitlis; + + Vai ir mafijas tērzētava -- karodziņš. + + Neobligātie parametri: + + Spēlētāja identifikators -- atbilst #link()[IIDP10], noklusētā vērtība -- 0\; + ], + [ + + Izmantojot #link()[KPR02] procedūru pārbauda, vai spēlētājs, lietotājs un spēles istaba eksistē un ir savstarpēji saistīti. + + Ja nav saistīti, veic administratora darbības autorizāciju. + + Ja darbība nav autorizēta, parāda 2. paziņojumu. Beidz apstrādi. + + Ja darbība ir autorizēta, izlaiž apstrādes 2. soli. + + Sameklē spēlētāja ierakstu un ar to saistītu spēles lomas un spēles istabas ierakstu pēc attiecīgajiem identifikatoriem. + + Ja kāds no ierakstiem netika atrasts, parāda 2. paziņojumu. + + Ja spēlētāja stāvoklis neatbilst aktīvam, no spēles neizslēgtam spēlētājam, parāda 3. paziņojumu. Beidz apstrādi. + + Ja mafijas tērzēšanas karodziņš ir "patiess" un spēlētāja loma nepieder mafijai, parāda 2. paziņojumu. + + Sāk gatavot datubāzes pieprasījumu no sarakstu tabulas. + + Pievieno pieprasījumam atlasīšanu attiecīgi mafijas tērzēšanas parametra-karodziņa vērtībai. + + Pieprasa rezultātu saskaitīšanu. + + Ja pieprasījums neizdodas, parāda 1. paziņojumu. + + Pievieno pieprasījumam nepieciešamo nobīdi lappusei, izmantojot #link()[KPR01] procedūru ar pieprasīto ierakstu skaitu. + + Veic sagatavoto pieprasījumu, iegūstot īsziņas tekstus, sarakstes adresāta identifikatorus. + + Ja pieprasījums neizdodas, parāda 1. paziņojumu. Beidz apstrādi. + + Sameklē saraksti attēlošanas nepieciešamo spēlētāju segvārdus, sameklējot attiecīgos lietotāju un spēlētāju ierakstus datubāzē, izmantojot attiecīgos spēlētāju un lietotāju identifikatorus. + + Ja, kāds no nepieciešamiem ierakstiem netika atrasts, aizvieto nesameklēto informāciju ar noklusētām vērtībām. + + Katrai sarakstei ar atbildi sameklē attiecīgo sarakstu un ar to saistītā lietotāja ierakstu, uz ko tā atbild datubāzē pēc attiecīgās sarakstes identifikatora, iegūstot sarakstes tekstus, atbildes lietotāju segvārdus un izmainīšanas karodziņus. + + Ja kāda sarakste netika atrasta, sarakstes tekstu un identifikatoru aizvieto ar noklusētām vērtībām. + ], + [ + Izvades datu mērķis ir parādīt sarakstes noteiktā intervālā. + Lietotāja saskarnē tiek prezentēti dati no sagatavotā saraksta. + Sarakstes parādās noteiktās grupas (mafijas un parastā) tērzētavā. + + + Saraksts ar vārdnīcām: + + Sūtītāja segvārds -- atbilst #link()[IIDP10]\; + + Sūtītāja identifikators -- atbilst #link()[IIDP10]\; + + Sarakstes teksts -- atbilst #link()[IIDP16]\; + + Sarakstes sūtīšanas laiks -- atbilst #link()[IIDP02]\; + + Atbildes sarakstes teksts -- atbilst #link()[IIDP16] vai ""\; + + Atbildes sarakstes autora segvārds -- atbilst #link()[IIDP07] vai ""\; + + Atbildes sarakstes autora identifikators -- atbilst #link()[IIDP10] vai 0\; + + Izmainīšanas karodziņš. + ], + [ + + Neizdevās piekļūt tērzētavai! + + Jums nav iespējams rakstīt šajā tērzētavā vai tērzētavas sadaļā! + + Jūs nevarat piekļūt tērzētavai! + ], +) + +#function-table( + "Savu sarakstu rediģēšana", + "TMF04", + [ + Funkcija nodrošina iespēju spēlētājam rediģēt jau izsūtītu ziņu tērzētavā. Spēlētājs nospiež pogu "Rediģēt" blakus vēlamajai ziņai. Parādās rakstīšanai pieejams ievades lauks ar esošās ziņas saturu. Spēlētājs rediģē tekstu un nosūta izmaiņas. + ], + [ + Ievades dati tiek iegūti no lietotāja darbības -- klikšķis uz pogas "Rediģēt" un ievadītās rediģējamās sarakstes ievades laukā ievadītā satura. + + Obligātie parametri: + + Rediģējamās ziņas identifikators -- atbilst #link()[IIDP10]\; + + Sarakstes rediģētais teksts -- atbilst #link()[IIDP16]\; + + Lietotāja identifikators -- atbilst #link()[IIDP10]\; + + Spēlētāja identifikators -- atbilst #link()[IIDP10]\; + + Istabas identifikators -- atbilst #link()[IIDP10]. + ], + [ + + Izmantojot #link()[KPR02] procedūru pārbauda, vai spēlētājs, lietotājs un spēles istaba eksistē un ir savstarpēji saistīti. + + Ja nav, parāda 2. paziņojumu. Beidz apstrādi. + + Pārbauda, vai sarakste pieder lietotājam, meklējot sarakstu datubāzē pēc lietotāja identifikatora. + + Ja sarakste nav atrasta, parāda 1. paziņojumu. Beidz apstrādi. + + Ja nepieder, parāda 3. paziņojumu. Beidz apstrādi. + + Pārbauda, vai spēlētājs piedalās spēlē. + + Ja nepiedalās, parāda 6. paziņojumu. Beidz apstrādi. + + Pārbauda, vai sarakste rediģētais teksts nav tukša simbolu virkne. + + Ja ir tukša, parāda 4. paziņojumu. Beidz apstrādi. + + Pārbauda, vai sarakstes teksts nepārsniedz maksimālo simbolu skaitu. + + Ja pārsniedz, parāda 5. paziņojumu ar attiecīgo maksimālo pieļauto garumu. Beidz apstrādi. + + Ieraksta atjaunoto sarakstes ierakstu datubāzē, samainot "izmainīts" karodziņa vērtību uz "patiess". + + Ja ierakstīšana neizdevās, parāda 2. paziņojumu. Beidz apstrādi. + ], + [ + Izvades mērķis ir atjaunot rediģētās ziņas saturu lietotāja saskarnē. + + Rediģētā ziņas saturs -- sarakstes teksts -- atbilst #link()[IIDP16]. + ], + [ + + Sarakste nav atrasta! + + Sistēmas iekšējā kļūda! Mēģiniet vēlreiz! + + Drīkst rediģēt tikai savas sarakstes! + + Ziņa ir tukša! + + Ziņas garums pārsniedz maksimāli atļauto garumu: [maksimāli atļautais garums]! + + Jūs nevarat rediģēt sarakstes nepiedaloties spēlē! + ], +) + +=== Spēles istabu modulis + +#indent-par([ +Apakšnodaļa ietver spēles istabas moduļa funkcijas. Moduļa funkcionalitāte ir izmantota darbībām saistībā ar spēles virtuālo istabu. Moduļa funkciju datu plūsmas ir parādītas 2. līmeņa datu plūsmas diagrammā (skat. @fig:dpd-2-game-room). +Funkcijas ir aprakstītas atsevišķās tabulās (skat. +#link()[SIMF01], +#link()[SIMF02], +#link()[SIMF03], +#link()[SIMF04], +#link()[SIMF05], +#link()[SIMF06], +#link()[SIMF07], +#link()[SIMF08], +#link()[SIMF09]). +]) + +#figure( + caption: "Spēles istabu moduļa 2. līmeņa DPD", + image("img/dpd2/SpēlesIstabasModulis.svg") +) + +#function-table( + "Spēles istabu pārskats", + "SIMF01", + "Funkcijas mērķis ir ļaut reģistrētiem lietotājiem apskatīt pieejamās spēles istabas.", + [ + Ievades datus iegūst no lietotāja neobligāti uzstādītiem filtriem lietotāja saskarnē, kārtošanas izvēles un lappuses numura un meklēšanas uzvednes. Parametri atbilst attiecīgām saitēm un ievades laukam lietotāja saskarnē un izvēlnēm pārskata lapās. Parametru vērtības tiek iegūtas no vietrādes parametriem. + + Neobligātie parametri: + + Lappuses numurs -- vesels pozitīvs skaitlis, noklusētā vērtība -- 1. + + Meklēšanas uzvedne -- simbolu virkne, atbilst #link()[IIDP14], noklusētā vērtība -- "". + + Kārtošanas vārdnīcu saraksts -- atbilst #link()[IIDP20], noklusētā vērtība -- tukšs saraksts. + + Filtru vārdnīcu saraksts -- atbilst #link()[IIDP19], noklusētā vērtība -- tukšs saraksts. + ], + [ + + Pārbauda, vai visi obligātie lauki ir iesniegti. + + Ja nav, parāda 3. paziņojumu. Beidz apstrādi. + + Sāk gatavot datubāzes pieprasījumu no spēles istabu tabulas. + + Sagatavo pārskata pieprasījumu un iegūst lappuses numuru un kopējo lappušu skaitu, izmantojot #link()[KPR07] ar lappuses numuru, meklēšanas uzvedni, kārtošanas vārdnīcu sarakstu, filtru vārdnīcu sarakstu, šos parametrus iesniedzot, ja tie ir iesniegti funkcijā. Izmantojot procedūru, pievieno filtru, lai pieprasījumā nebūtu spēles, kas ir atceltas vai jau beidzās. + + Ja lappušu skaits ir 0, parāda 1. paziņojumu. Beidz apstrādi. + + Veic sagatavoto pieprasījumu, iegūstot istabas nosaukumu, atbilstošo lietotāju skaits, stāvokli, izveidošanas laiku, piekļuves kodu. + + Ja pieprasījums neizdodas, parāda 2. paziņojumu. Beidz apstrādi. + + Katram ierakstam no rezultāta, sekojošas manipulācijas: + + Saskaita spēlētājus, kas gaida spēles sākšanu -- spēlētāji, kuru stāvoklis atbilst "aktīvs" vai "atslēdzies". + + Sameklē spēles uzstādījumu pēc identifikatora. + + Ja tas netika atrasts, izņem spēles istabas vārdnīcu no saraksta. + + Citādi pievieno spēles uzstādījuma nosaukumu vārdnīcai. + + Ja spēles sākšanas laiks nav tukšs vai stāvoklis neatbilst neuzsāktās spēles stāvokļa kodam, izņem ārā vārdnīcu no rezultāta saraksta; + + Aprēķina maksimālo spēlētāju skaitu, meklējot datubāzē ar spēles uzstādījumu saistītās spēles lomas un saskaitot kopā to skaitus. + + Ja kāda no lomām netiek atrasta, izņem istabas vārdnīcu no saraksta. + + Pievieno "privāts" karodziņu; + + Ja piekļuves kods nav tukšs, "privāts" vērtība ir "patiess", citādi "nepatiess". + + Izņem piekļuves kodu un spēles sākšanas laiku no vārdnīcas. + ], + [ + Izvades mērķis ir saskarnē tiek izvietots pārskatāms saraksts ar visām lietotājam pieejamajām spēles istabām un to raksturojošajiem parametriem, pielietojot filtrus un kārtošanu, ja tas tika pieprasīts. + Lietotāja saskarnē tiek prezentēti dati no sagatavotā saraksta. + + + Saraksts ar vārdnīcām: + + Nosaukums -- atbilst #link()[IIDP21]\; + + Spēles uzstādījuma nosaukums -- atbilst #link()[IIDP21]\; + + Izveidošanas laiks -- atbilst #link()[IIDP02]\; + + Atbilstošo lietotāju skaits -- vesels skaitlis; + + Maksimālais lietotāju skaits -- vesels skaitlis; + + Privātuma karodziņš. + ], + [ + + Nav pieejamu istabu! + + Sistēmas iekšējā kļūda! Mēģiniet vēlreiz! + ], +) + +#function-table( + "Pieslēgšanās spēles istabai", + "SIMF02", + "Funkcijas mērķis ir ļaut reģistrētiem lietotājiem pievienoties izvēlētajai spēles istabai.", + [ + Ievades datus iegūst no veidlapas lietotāja saskarnē. + Istabas piekļuves kods tiek iegūts no attiecīgā ieraksta sarakstā un no paroles dialoga lodziņa. + + Obligātie parametri: + + Istabas identifikators -- atbilst #link()[IIDP07]\; + + Lietotāja identifikators -- atbilst #link()[IIDP10]\. + + Neobligātie parametri: + + Istabas piekļuves kods -- atbilst #link()[IIDP06], noklusētā vērtība -- ""\. + + // ASK: Should we encrypt this password (code*). Decision: This field will not be encrypted + + ], + [ + + Pārbauda, vai visi obligātie lauki ir iesniegti. + + Ja nav, parāda 6. paziņojumu. Beidz apstrādi. + + Tiek meklēta spēles istaba spēles istabu tabulā spēles istabas identifikatora. + + Ja istaba netika atrasta, parāda 4. paziņojumu. Beidz apstrādi. + + Meklē spēlētāju, kas ir saistīts ar lietotāja identifikatoru. + + Ja to atrod, pamaina spēlētāja stāvokli nomaina uz stāvokli, kas atbilst aktīvam spēlētājam. Ieraksta izmaiņas datubāzē. Beidz apstrādi. + + Ja ierakstīšana neizdevās, parāda 3. paziņojumu. Beidz apstrādi. + + Ja istabas lietotāju skaits ir sasniedzis maksimālo lietotāju skaitu, tad tiek parādīts 1. paziņojums. Beidz apstrādi. + + Ja istaba ir atrasta un ja tās piekļuves kritēriji ietver paroli, i.e., istaba ietver paroli un istabas stāvoklis atbilst spēlei, kas vēl nav sākusies, tad tiek parādīts dialogs piekļuves kods iesniegšanai. + + Ja istabas piekļuves kodu nesaņēma (kods netika iesniegts), parāda 5. paziņojumu. Beidz apstrādi. + + Ja piekļuves kods nesakrīt ar istabas kodu, tad parāda 2. paziņojumu. Beidz apstrādi. + + Ja istabas stāvoklis neatbilst, tad parāda 8. paziņojumu. Beidz apstrādi. + + Izveido spēlētāja ierakstu, kas ir saistīts ar spēles istabu un lietotāja identifikatoru ar stāvokli, kas atbilst aktīvam spēlētājam. + // ACTIVE PLAYER attribute? -> YES. Perhaps we can remove the active player, since it will be hard to keep track of it and just handle it with programmatic checks on whether the player exists or not (same user ID) + ], + [ + Izvades mērķis ir noteikt, vai lietotājs tiks pāradresēts istabas lapā - spēles vestibilā. Lietotājam parāda 7.paziņojumu. + + Pieslēgšanās stāvoklis -- skaitlisks kods. + ], + [ + + Istabā nav brīvu vietu! + + Nepareizs piekļuves kods! + + Sistēmas iekšējā kļūda! Mēģiniet vēlreiz! + + Istaba netika atrasta! + + Istaba ir aizsargāta ar paroli! Lūdzu, ievadiet paroli! + + Nepieciešamie pieslēgšanās dati netika iesniegti. + + Pievienošanās istabai ir veiksmīga! + + Spēles istaba nav aktīva. Nav iespējas tai pievienoties! + ], +) + +#function-table( + "Atslēgšanās no spēles istabas", + "SIMF03", + "Funkcijas mērķis ir ļaut reģistrētiem lietotājiem atslēgties no pašreizējās spēles istabas.", + [ + Dati tiek iegūti no konteksta (autentificēta lietotāja identifikators) un vietrādes parametriem (spēles istabas identifikators) + + Obligātie parametri: + + Lietotāja identifikators -- atbilst #link()[IIDP10]. + + Spēles istabas identifikators -- atbilst #link()[IIDP10]. + + Spēlētāja identifikators -- atbilst #link()[IIDP10]. + ], + [ + + Pārbauda, vai visi obligātie lauki ir iesniegti. + + Ja nav, parāda 6. paziņojumu. Beidz apstrādi. + + Izmantojot #link()[KPR02] procedūru pārbauda, vai spēlētājs, lietotājs un spēles istaba eksistē un ir savstarpēji saistīti. + + Ja nav, parāda 5. paziņojumu. Beidz apstrādi. + + Sameklē spēles istabas ierakstu datubāzē, izmantojot spēles istabas identifikatoru. + + Ja nav, parāda 3. paziņojumu. Beidz apstrādi. + + Sameklē spēlētāja ierakstu, izmantojot spēlētāja identifikatoru. + + Ja to neatrod, parāda 2. paziņojumu. Beidz apstrādi. + + Spēlētāja stāvoklis tiek nomainīts uz "atslēdzies". Izmaiņas ieraksta datubāzē. + + Ja ierakstīšana neizdodas, parāda 3. paziņojumu. Beidz apstrādi. + + Ja atslēgšanās ir veiksmīga, parāda 4. paziņojumu. Beidz apstrādi. + ], + [ + Izvades mērķis ir noteikt vai lietotājs tiks pāradresēts. Atslēdzoties, lietotājs tiek pāradresēts pieejamo istabu saraksta lapā. + + Atslēgšanās stāvoklis -- skaitlisks kods. + ], + [ + + Spēles istaba nav atrasta! Mēģiniet vēlreiz. + + Spēlētājs nav atrasts! Mēģiniet vēlreiz. + + Sistēmas iekšēja kļūda. Mēģiniet vēlreiz! + + Atslēgšanās no istabas ir veiksmīga! + + Jūs neesat šajā istabā! + + Nepieciešamie pieslēgšanās dati netika iesniegti. + ], +) + +#pagebreak(weak: true) +#function-table( + "Jaunas spēles istabas izveide", + "SIMF04", + "Maksas lietotājiem ļauj izveidot jaunu spēles istabu ar noteiktiem iestatījumiem", + [ + Dati tiek iegūti no veidlapas lietotāja saskarnē. Lietotāja identifikators tiek iegūts no konteksta. + + Obligātie parametri: + + Spēles istabas nosaukums -- atbilst #link()[IIDP21]\; + + Spēles uzstādījuma identifikators -- atbilst #link()[IIDP10]\; + Neobligātie parametri: + + Istabas piekļuves kods -- atbilst #link()[IIDP06], noklusētā vērtība -- ""\. + ], + [ + + Pārbauda, vai visi obligātie lauki ir iesniegti. + + Ja nav, parāda 4. paziņojumu. Beidz apstrādi. + + Izmantojot #link()[KPR08] procedūru, pārbauda, vai lietotājam ir aktīvs abonements. + + Ja nav, tad parāda 2. paziņojumu. Beidz apstrādi. + + Sameklē spēles uzstādījumu datubāzē. + + Ja tas netika atrasts, parāda 3. paziņojumu. Beidz apstrādi. + + Sāk gatavot spēles istabas ierakstu. + + Ja piekļuves kods tika iesniegts, pārbauda, vai tas atbilst prasībām. + + Ja neatbilst, parāda 5. paziņojumu. Beidz apstrādi. + + Citādi pievieno piekļuves kodu spēles istabas ierakstam. + + Ja istabas nosaukums neatbilst prasībām. Parāda 6. paziņojumu. Beidz apstrādi. + + Stāvokli uzstāda uz stāvokli, kas atbilst nesāktai spēlei. + + Uzstāda izveidošanas laiku uz tagadējo laiku. + + Pārējos laukus uzstāda uz noklusētām vērtībām. + + Ieraksta istabas ierakstu datubāzē. + + Ja ierakstīšana neizdevās, parāda 3. paziņojumu. + + Izveido spēlētāja ierakstu, kas ir saistīta ar spēles istabu un lietotāju ar stāvokli, kas atbilst aktīva spēlētāja stāvoklim. Pārējos laukus uzstāda uz noklusētām vērtībām. + + Ieraksta spēlētāja ierakstu datubāzē. + + Ja ierakstīšana neizdevās, parāda 3. paziņojumu. + ], + [ + Izvades mērķis ir noteikt vai lietotājs tiks pāradresēts. Lietotājs tiek automātiski pievienots, tas ir pāradresēts, jaunizveidotajai istabai. Parāda 1. paziņojumu. + + Atslēgšanās stāvoklis -- skaitlisks kods. + ], + [ + + Istaba ir veiksmīgi izveidota! + + Darbība nav izdevusies! Jums nav aktīva abonementa. + + Sistēmas iekšēja kļūda. Mēģiniet vēlreiz! + + Lauks: [neaizpildīto lauku saraksts] netika aizpildīts (/-i)! + + Piekļuves kods neatbilst prasībām: [prasības]. + + Nosaukums neatbilst prasībām: [prasības]. + + ], +) + +#function-table( + "Spēles sākuma pieteikums", + "SIMF05", + "Funkcijas mērķis ir istabas izveidotājam iesākt spēles procesu istabā, kuru ir izveidojis.", + [ + Dati tiek iegūti no konteksta (autentificēta lietotāja identifikators) un darbības (istabas identifikators). + + Obligātie parametri: + + Lietotāja identifikators -- atbilst #link()[IIDP10]\; + + Istabas identifikators -- atbilst #link()[IIDP10]\; + ], + [ + + Pārbauda, vai visi obligātie lauki ir iesniegti. + + Ja nav, parāda 3. paziņojumu. Beidz apstrādi. + + Sameklē istabas ierakstu datubāzē. + + Ja neatrod, parāda 3. paziņojumu. Beidz apstrādi. + + Pārbauda, vai lietotājs ir istabas izveidotājs, sameklējot spēlētāja ierakstu datubāzē. + + Ja spēlētāju neatrod, parāda 3. paziņojumu. Beidz apstrādi. + + Ja lietotājs nav istabas izveidotājs, tad parāda 1. paziņojumu. Beidz apstrādi. + + Pārbauda, vai spēles stāvoklis atbilst nesāktās spēles stāvoklim. + + Ja neatbilst, parāda 4. paziņojumu. Beidz apstrādi. + + Pārbauda, vai istabā ir nepieciešamais spēlētāju skaits. + + Ja nav, tad parāda 2. paziņojumu. Beidz apstrādi. + + Pamaina istabas stāvokli uz stāvokli, kas atbilst spēlei procesā un uzstāda spēles sākšanas laiku uz tagadējo laiku. + + Izveido spēles istabas sākuma notikumu. + + Piešķir katram spēlētājam nejaušas lomas pieejamas spēles uzstādījumā. + + Saglabā izmaiņas datubāzē. + + Ja ierakstīšana neizdodas. Parāda 4. paziņojumu. Beidz apstrādi. + ], + [ + Izvades mērķis ir noteikt spēles sākšanas stāvokli. Veiksmīgas spēles sākšanas gadījumā, lietotājs tiek pāradresēts attiecīgās istabas spēles gaitas lapā. Spēles saskarnē parādās sākuma informācija par spēli. + + Spēles sākšanas stāvoklis -- skaitlisks kods. + + ], + [ + + Darbība nav izdevusies! Jūs neesat šīs istabas izveidotājs. + + Uzsākt spēli nav iespējams, nepietiek dalībnieku. + + Sistēmas iekšēja kļūda. Mēģiniet vēlreiz! + + Spēle jau ir sākusies vai beidzās! + + ], +) + +#function-table( + "Spēlētāja izslēgšana", + "SIMF06", + "Administrators var izslēgt spēlētāju no spēles istabas.", + [ + Dati tiek iegūti no konteksta (autentificēta lietotāja identifikators) un darbības (istabas identifikators un spēlētāja identifikators). + + Obligātie parametri: + + Lietotāja identifikators -- atbilst #link()[IIDP10]\; + + Istabas identifikators -- atbilst #link()[IIDP10]\; + + Izslēdzamā spēlētāja identifikators -- atbilst #link()[IIDP10]\; + ], + [ + + Autorizē administratora darbību. + + Ja tā nav autorizēta, parāda 4. paziņojumu. Beidz apstrādi. + + Sameklē spēlētāja ierakstu datubāzē. + + Ja netiek atrasts, parāda 3. paziņojumu. Beidz apstrādi. + + Sameklē spēles istabas ierakstu datubāzē. + + Ja netiek atrasta, parāda 2. paziņojumu. Beidz apstrādi. + + Pamaina spēlētāja stāvokli uz stāvokli, kas atbilst izslēgta spēlētāja stāvoklim. + // + Spēlētāja ierakstu izdzēš. + // + Ja izdzēšana neizdodas, parāda 2. paziņojumu. Beidz apstrādi. + ], + [ + Izvades mērķis ir noteikt izslēgšanas stāvokli, kas attiecīgi izraisa spēles saraksta atjaunošanu lietotāja saskarnē. Parāda 1. paziņojumu. + + Spēlētāja izslēgšanas stāvoklis -- skaitlisks kods. + ], + [ + + Spēlētājs ir veiksmīgi izslēgts. + + Spēlētāja izslēgšana ir neveiksmīga, mēģiniet vēlreiz. + + Spēlētājs netika atrasts. + + Darbība nav autorizēta. + ], +) + +#function-table( + "Spēlētāju pārskats", + "SIMF07", + "Funkcija ļauj lietotājiem iegūt pārskatu par visiem spēlētājiem noteiktā istabā.", + [ + Obligātie parametri: + + Spēles istabas identifikators -- atbilst #link()[IIDP10]. + ], + [ + + Sameklē spēles istabu datubāzē. + + Ja nav atrasta, parādā 1. paziņojumu. Beidz apstrādi. + + Iegūst spēlētāju sarakstu no datubāzes, kas ir saistīti ar spēles istabu. + + Ja neviens spēlētājs netika atrasts, parāda 3. paziņojumu. Beidz apstrādi. + + Katram spēlētājam iegūst attiecīgā lietotāja ierakstu. + + Ja kādam spēlētājam nevar sameklēt lietotāju, parāda 2. paziņojumu. Beidz apstrādi. + + Izveido spēlētāju vārdnīcu sarakstu: + + lietotāja segvārds; + + stāvoklis; + + lietotāja profila attēls. + ], + [ + Izvades mērķis ir parādīt informāciju lietotāju par konkrētās istabas spēlētājiem. Lietotāja saskarnē tiek parādīts saraksts ar istabas spēlētājiem. + + + Vārdnīcu saraksts: + + Lietotāja segvārds -- atbilst #link()[IIDP07]\; + + Spēlētāja stāvoklis -- simbolu virkne. + + Lietotāja profila attēls -- atbilst #link()[IIDP08]; + ], + [ + + Spēles istaba nav atrasta! + + Neizdevās iegūt spēlētāju sarakstu. Mēģiniet vēlreiz! + + Istabā nav spēlētāju! + ], +) + + +#function-table( + "Spēļu vēstures pārskats", + "SIMF08", + "Funkcija ļauj lietotājiem iegūt pārskatu par savām iepriekšējām spēlēm.", + [ + Ievades dati tiek iegūti no konteksta (lietotāja identifikators) un neobligāto vietrādes meklēšanas parametra. + + Obligātie parametri: + + Lietotāja identifikators -- atbilst #link()[IIDP10]\; + + Neobligātie parametri: + + Lappuses numurs -- vesels pozitīvs skaitlis, noklusētā vērtība -- 1; + ], + [ + + Sāk gatavot datubāzes pieprasījumu no spēlētāja tabulas. + + Sagatavo pārskata pieprasījumu un iegūst lappuses numuru un kopējo lappušu skaitu, izmantojot #link()[KPR07] ar lappuses numuru. + + Ja lappušu skaits ir 0, tad parāda 1. paziņojumu. Beidz apstrādi. + + Veic sagatavoto pieprasījumu, iegūstot spēlētāja identifikatoru, pievienojot nosacījumu, ka spēles istabu stāvoklim jāatbilst pabeigtās spēles stāvoklim. + + Ja pieprasījums neizdodas, parāda 2. paziņojumu. Beidz apstrādi. + + Katram ierakstam no rezultāta iegūst lomas nosaukumu no spēles lomas tabulas pēc spēles lomas identifikatora. + + Ja spēles loma neeksistē, parāda 3. paziņojumu. Beidz apstrādi. + + Ja spēles loma eksistē, tad katram ierakstam, iegūst attēla datnes adresi no attēlu tabulas pēc attēla identifikatora. + + Ja attēla datnes adrese neeksistē ierakstam, tad iegūst noklusētā attēla datnes adresi un pamaina ieraksta datnes adresi izvades datos uz noklusētā datnes attēla adresi. + + Katram ierakstam no rezultāta iegūst istabas nosaukumu, spēles sākšanas un beigšanas laiku, stāvokli no istabas tabulas un saistīto spēles uzstādījuma nosaukumu pēc istabas identifikatora. + + Ja istaba neeksistē, parāda 4. paziņojumu. Beidz apstrādi. + ], + [ + Izvades datu mērķis ir lietotāja spēļu saraksta datu izvadīšana. Lietotāja saskarnē parādās saraksts ar spēlēm. + + + Vārdnīcu saraksts: + + Istabas nosaukums -- atbilst #link()[IIDP21]\; + + Spēles sākšanas laiks -- atbilst #link()[IIDP02]\; + + Spēles beigšanas laiks -- atbilst #link()[IIDP02]\; + + Istabas stāvoklis -- skaitlisks kods; + + Spēles uzstādījuma nosaukums -- atbilst #link()[IIDP21]. + ], + [ + + Neviena spēle netika atrasta! + + Sistēmas iekšējā kļūda! Mēģiniet vēlreiz! + + Nezināma spēles loma! + + Nezināma spēles istaba! + ], +) + +#function-table( + "Spēles atcelšana", + "SIMF09", + "Funkcijas mērķis ir atcelt spēli. Atcelt spēli var maksas lietotājs, ja viņš ir spēles izveidotājs, vai administrators, neatkarīgi no spēles statusa.", + [ + Dati tiek iegūti no konteksta (autentificēta lietotāja identifikators) un darbības (spēles identifikators). + + Obligātie parametri: + + Lietotāja identifikators –- atbilst #link()[IIDP10]\; + + Spēles identifikators –- atbilst #link()[IIDP10]. + ], + [ + + Pārbauda, vai visi obligātie lauki ir iesniegti. + + Ja nav, parāda 4. paziņojumu. Beidz apstrādi. + + Pārbauda lietotāja lomu un tiesības atcelt spēli. + + Ja lietotājs nav administrators un nav spēles izveidotājs, tad parāda 3. paziņojumu. Beidz apstrādi. + + Sameklē spēles ierakstu datubāzē. + + Ja spēli neatrod, parāda 2. paziņojumu. Beidz apstrādi. + + Maina spēles stāvokli uz atceltu. + + Maina visu ar spēli saistīto spēlētāju "aktīvs" lauku uz "nepatiess". + + Saglabā izmaiņas datubāzē. + + Ja neizdodas saglabāt izmaiņas, parāda 1. paziņojumu. Beidz apstrādi. + ], + [ + Izvades mērķis ir informēt lietotāju par veiksmīgu spēles atcelšanu vai kļūdu procesā. + + Spēles atcelšanas stāvoklis –- karodziņš. + ], + [ + + Spēles statusa maiņa neizdevās, mēģiniet vēlreiz. + + Spēle ar šādu identifikatoru netika atrasta. + + Jums nav tiesību atcelt šo spēli. + + Nepieciešamie dati nav pilnībā iesniegti. + ], +) + + +=== Spēles gaitas modulis + +#indent-par([ +Apakšnodaļa ietver spēles gaitas moduļa funkcijas. Moduļa funkcionalitāte ir izmantota spēles procesa realizēšanai. Moduļa funkciju datu plūsmas ir parādītas 2. līmeņa datu plūsmas diagrammā (skat. @fig:dpd-2-game-progress). +Funkcijas ir aprakstītas atsevišķās tabulās (skat. +#link()[SGMF01], +#link()[SGMF02], +#link()[SGMF03], +#link()[SGMF04]). +]) + +#figure( + caption: "Spēles gaitas moduļa 2. līmeņa DPD", + image("img/dpd2/SpēlesGaitasModulis.svg") +) + +#function-table( + "Spēles darbības veikšana", + "SGMF01", + "Funkcijas mērķis ir veikt spēles darbību lietotājiem, kas atrodas spēles istabā, saglabājot darbību kā notikuma ierakstu.", + [ + Ievade tiek iegūta no darbības spēles laikā. Lietotājs uzspiež uz darbības pogu, kas ir saistīta ar konkrētu darbības ierakstu datubāzē. + + Obligātie parametri: + + Veicēja lietotāja identifikators -- atbilst #link()[IIDP10]. + + Darbības identifikators -- atbilst #link()[IIDP10]. + + Spēlētāja identifikators -- atbilst #link()[IIDP10]. + + Spēles istabas identifikators -- atbilst #link()[IIDP10]. + + Neobligātie parametri: + + Mērķa spēlētāja identifikators -- atbilst #link()[IIDP10]. + ], + [ + // Pārbauda istabas un darbības eksistenci un atbilstību aktīvam stāvoklim + + Meklē spēles istabu datubāzē, izmantojot darbības identifikatoru. + + Ja spēles istaba netiek atrasta parāda 2. paziņojumu. Beidz apstrādi. + + Ja spēles istabas stāvoklis neatbilst stāvoklim spēlei procesā, tad parāda 1. paziņojumu. Beidz apstrādi. + // Pārbauda lietotāja, spēlētāja un spēles istabas atbilstību + + Izmantojot #link()[KPR02] procedūru pārbauda, vai spēlētājs, lietotājs un spēles istaba eksistē un ir savstarpēji saistīti. + + Ja nav, parāda 2. paziņojumu. Beidz apstrādi. + // Pārbauda darbības un lomas eksistenci, darbības saistību ar spēlētāja lomu + + Iegūst lomas identifikatoru no atrastā ieraksta. Meklē lomu, izmantojot identifikatoru. + + Ja loma netiek atrasta, parāda 2. paziņojumu. Beidz apstrādi. + + Meklē lomas darbību attiecīgā tabulā, izmantojot darbības identifikatoru. + + Ja darbība netiek atrasta parāda 2. paziņojumu. Beidz apstrādi. + + Ja mērķa spēlētāju saraksts nav tukšs, meklē spēlētāju attiecīgajā tabulā, izmantot spēlētāja identifikatorus. + + Pārbauda, vai darbība ir ar spēlētāja lomu saistīta darbība, meklējot saistību ar darbību pēc lomas identifikatora. + + Ja tā nav, parāda 3. paziņojumu. Beidz apstrādi. + // Pārbauda vai darbība ir aizliegta vai atļauta (atļaujošie/aizliedzošie notikumi) + + Iegūstot spēles notikumus datubāzē, noskaidro, vai darbība ir atļauta vai aizliegta. + + Pēdējais notikums, kas atļauj vai aizliedz šo darbību, šo notikumu aizliedz vai atļauj. + + Ja tādu notikumu nav, tad darbība ir aizliegta. Ja pēdējais nav atļaujošais notikums, darbība ir aizliegta. + + Ja darbība ir aizliegta, parāda 4. paziņojumu. Beidz apstrādi. + // Izveido notikuma saistību datubāzē + + Izveido jaunu darbības ierakstu ar attiecīgu spēlētāja identifikatoru, darbības identifikatoru un lomas darbību. Ja darbībai ir kāds mērķa spēlētājs, tad izveido atsevišķu ierakstu, kur vai pilda ir stāvoklī "patiess". + + Ja ieraksta veikšana neizdevās. Parāda 2. paziņojumu. Beidz apstrādi. + ], + [ + Izvades mērķis ir parādīt ar izpildīto darbību saistīto informāciju. Stāvoklis izraisa izmaiņas spēles gaitas saskarnē. + + Darbības stāvokļa kods -- skaitlisks kods. + ], + [ + + Spēle ir beigusies, nevar veikt darbību! + + Sistēmas iekšējā kļūda! Mēģiniet vēlreiz! + + Darbība nav atļauta jūsu lomai! + + Darbība nav atļauta šajā spēles fāzē! + ], +) + +#function-table( + "Spēles notikumu izveidošana", + "SGMF02", + [ + Funkcijas mērķis ir izveidot visiem konkrētās istabas spēlētājiem aktuālu spēles notikumu. Notikumiem ir sekojoši cēloņi: fāzes maiņa, spēlētāja darbība, darbības aizliegums vai atļauja, taimera sākums, spēles sākums, spēles beigas. + Notikums var sevī ietvert noteiktu ietekmi uz spēles stāvokli, kas tiek izmainīts funkcijas ietvaros. Katram notikumam ir noteikts nosaukums, kas tiek darināts no veidnes. Piemēram "Fāze mainās uz \[fāzes nosaukums\]". + ], + [ + Ievades dati tiek iegūti no esošās spēles gaitas konteksta. + + Obligātie parametri: + + Spēlēs istabas identifikators -- atbilst #link()[IIDP10]. + ], + [ + // Pārbauda istabas eksistenci un atbilstību aktīvam stāvoklim. + + Meklē spēles istabu attiecīgā tabulā, izmantojot darbības identifikatoru. + + Ja spēles istaba netiek atrasta parāda 1. paziņojumu. Beidz apstrādi. + + Ja spēles istabas stāvoklis neatbilst aktīvam stāvoklim, parāda 2. paziņojumu. + // Vai pastāv aktīvs taimeris + + Iegūst no datubāzes notikumus ar taimera veidu. + + Ja tāds notikums ir un taimeris ir aktīvs (nav pagājis laika periods), tad parāda. Beidz apstrādi. + // // Nav validācijas, jo tā ir sistēma + // // Sāk fāzes fāzes pāreju: + + + Katram turpmāk izveidotam notikumam, izveido nosaukumu, darinot to no attiecīgās veidnes. Izveidošanas laiku norāda kā tagadējo laiku. Pārējos atribūtus norāda atkarībā no notikuma specifikas. + + // Iegūst spēles fāzi un spēlētāju stāvokļus un notikumus. + //+ No datubāzes iegūst vēlāko nakts maiņas notikumu datubāzē. + // + Ja netika atrasts neviens nakts maiņas notikums, tad pieņem, ka ir 0-tā nakts (neviena nakts vel nav notikusi). + + No datubāzes iegūst spēlētāju stāvokļus. + + // Nosaka pēdējo fāzes maiņu + + No datubāzes iegūst pēdējo spēles fāzes maiņas notikumu. + + + Ja pēdējā fāzes maiņa ir no dienas vai balsošanas uz nakts, veic sekojošas darbības: + + Izslēdz no spēles neaktīvus spēlētājus, kam bija jāizvēlas darbība. + + Aizliedz darbības. + + Apstrādā darbības, veicot izmaiņas spēles un spēlētāju stāvoklī un izveidojot dažādu veidu notikumus, iekļaujot tajā attiecīgās saistības ar darbībām, lietotājiem, ja attiecināms. + + Pārbauda spēles beigu nosacījumus un ja tie ir apmierināti, izveido spēles beigu notikumu, izmaina istabas stāvokli un beidz apstrādi. + + Izveido notikumu fāzes maiņai uz nakti, ja ir pirmā diena vai uz balsošanu, ja nav pirmā diena. + + Citādi, ja pēdējā fāzes maiņa ir no dienas uz balsošanu vai pāreja no pirmās dienas uz nakti, veic sekojošas darbības: + + Iegūst balsošanas darbības no dzīviem spēlētājiem. + + Izslēdz izbalsoto spēlētāju, pamainot spēlētāja stāvokli (atbilstošs atribūts). + + Pārbauda spēles beigu nosacījumus un ja tie ir apmierināti, izveido spēles beigu notikumu, izmaina istabas stāvokli un beidz apstrādi. + + Izveido nakts darbību atļaujošus notikumus. + + Izveido notikumu fāzes maiņai uz nakti. + + Citādi, veic sekojošas darbības: + + Izveido balsošanas atļaujošu notikumu. + + Izveido notikumu fāzes maiņai uz balsošanu. + + Izveido taimera notikumu nākamai fāzei uz noteiktu laiku periodu. + + Izmaina spēles istabas stāvokli uz stāvokli, kas atbilst pabeigtai spēlei un norāda beigšanas laiku uz tagadējo laiku. + + Ieraksta datubāze sagatavotos notikumus un izmaiņas spēlētāju stāvokļos un spēles istabas izmaiņas. + + Ja ierakstīšana neizdodas parāda 3. paziņojumu. + // ASK: Some of the actions / functions are crucial for functioning. Should robustness be specified within the functions, e.g., reschedule the action if it fails in event creation. ], + ], + [ + Izvades mērķis ir noteikt notikumu izveidošanas rezultāta stāvokli. + + Notikumu izveidošanas stāvoklis -- skaitlisks kods. + ], + [ + + Spēles istaba ar identifikatoru [istabas identifikators] netika atrasta! + + Spēle nav procesā! + + Notikumu izveidošana neizdevās! + ], +) + +#function-table( + "Spēles notikumu pārskats", + "SGMF03", + "Funkcijas mērķis ir iegūt informāciju par spēles notikumiem.", [ + Ievades dati tiek iegūti no attiecīgās lietotāja darbības vai vietrāža un konteksta. + + Obligātie parametri: + + Lietotāja identifikators -- atbilst #link()[IIDP10]; + + Spēles istabas identifikators -- atbilst #link()[IIDP10]. + + Paslēptā informācija -- karodziņš. + + Neobligātie parametri: + + Lappuses numurs -- vesels pozitīvs skaitlis, noklusētā vērtība -- 1. + ], + [ + + Veic sistēmas vai administratora darbības autorizāciju. + + Ja darbība nav autorizēta ir pieprasīta paslēptā informācija un spēles istabas stāvoklis neapzīmē pabeigtu spēli, parāda 2. paziņojumu. Beidz apstrādi. + + Meklē spēles istabu attiecīgā tabulā, izmantojot darbības identifikatoru. + + Ja spēles istaba netiek atrasta parāda 1. paziņojumu. Beidz apstrādi. + + Sāk gatavot datubāzes pieprasījumu no spēles notikumu tabulas. + + Ja ir iesniegts lappuses numurs, sagatavo pārskata pieprasījumu un iegūst lappuses numuru un kopējo lappušu skaitu, izmantojot #link()[KPR07] ar lappuses numuru. + + Ja lappušu skaits ir 0, tad parāda 3. paziņojumu. Beidz apstrādi. + + Sāk veidot sarakstu ar notikumu vārdnīcām. + + Veic sagatavoto pieprasījumu, iegūstot nosaukumu, izveidošanas laiku, nakts numuru, veidu, vai ir nakts. + + Ja pieprasījums neizdodas, parāda 4. paziņojumu. Beidz apstrādi. + + Ja paslēptās informācijas karodziņš ir "patiess", tad vārdnīcai pievieno atbilstošā spēlētāja, tā lomas identifikatoru un tā darbības identifikatoru, ja tas ir attiecināms, sameklējot to datubāzē. + + Ja pieprasījums datubāzei neizdodas, parāda 4. paziņojumu. + + Ja notikuma redzamības spēles procesā karodziņš ir "patiess" un ja paslēptās informācijas karodziņš ir "patiess", notikumu pievieno sarakstam, citādi notikumu sarakstam nepievieno. + + Ja notikuma veids atbilst taimera notikumam, sarakstam pievieno taimera laiku. + + Citādi taimera laiks ir 0. + ], + [ + Izvades mērķis ir par notikumiem nepieciešamās informācijas apkopošana vārdnīcu sarakstā atkarībā no paslēptās informācijas ievades karodziņa. + + Ja netiek parādīta paslēptā informācija, saraksts sastāvēs no vārdnīcām: + + Notikuma nosaukums -- atbilst #link()[IIDP21]\; + + Izveidošanas laiks -- atbilst #link()[IIDP21]\; + + Nakts numurs -- vesels skaitlis; + + Veids -- atbilst #link()[IIDP03]; + + Vai ir nakts -- atbilst #link()[IIDP21]\; + + Taimera laiks -- skaitlis vai 0\. + Ja netiek parādīta paslēptā informācija, tad vārdnīcām papildus ir: + + Spēlētāja identifikators -- atbilst #link()[IIDP10]\; + + Lomas identifikators -- atbilst #link()[IIDP10]\; + + Darbības identifikators -- atbilst #link()[IIDP10]\. + + ], + [ + + Spēles istaba ar identifikatoru [istabas identifikators] netika atrasta! + + Notikumu detalizēts pārskats nav pieejams spēles laikā! + + Nav neviena spēles notikuma! + + Sistēmas iekšējā kļūda! Mēģiniet vēlreiz! + ], +) + +#pagebreak(weak: true) +#function-table( + "Spēles stāvokļa detaļas", + "SGMF04", + "Funkcijas mērķis par spēles tagadējo stāvokli, kas ietver spēlētāju stāvokli, nakts numuru un atļautās darbības.", + [ + Ievades dati tiek iegūti no attiecīgās lietotāja darbības vai vietrāža un konteksta. + Paslēptā informācija nosaka, vai izvade saturēs lomu datus par spēlētājiem. + + Obligātie parametri: + + Lietotāja identifikators -- atbilst #link()[IIDP10]\; + + Spēles istabas identifikators -- atbilst #link()[IIDP10]. + + Paslēptā informācija -- karodziņš. + ], + [ + + Veic sistēmas vai administratora darbības autorizāciju. + + Ja darbība nav autorizēta ir pieprasīta paslēptā informācija un spēles istabas stāvoklis neapzīmē pabeigtu spēli, parāda 3. paziņojumu. Beidz apstrādi. + + Ja darbība nav autorizēta, izmantojot #link()[KPR02] procedūru pārbauda, vai spēlētājs, lietotājs un spēles istaba eksistē un ir savstarpēji saistīti. + + Ja nav, parāda 3. paziņojumu. Beidz apstrādi. + + Meklē spēles istabu attiecīgā tabulā, izmantojot darbības identifikatoru. + + Ja spēles istaba netiek atrasta parāda 1. paziņojumu. Beidz apstrādi. + + Iesāk stāvokļa vārdnīcas gatavošanu ar noteiktu informāciju. Vārdnīcai pievieno sekojošus datus: + + Spēles istabas stāvoklis; + + Spēles sākšanas laiks; + + Mafijas sakaru redzamība -- ja spēlētājam ir mafijai piederoša loma; + + Vispārīgo sakaru redzamība -- ja spēlētāja stāvoklis atbilst aktīvam, neizslēgtam no spēles spēlētājam; + + Nakts numurs. + + Iegūst spēlētāju identifikatoru sarakstu no datubāzes, kas ir saistītas ar spēles istabu. + + Katram identifikatoram no iegūtā saraksta veic sekojošas darbības: + + Sameklē spēlētāju datubāzē, izmantojot spēlētāja identifikatoru. + + Ja spēlētāja ieraksts netika atrasts, parāda 4. paziņojumu. Beidz apstrādi. + + Sagatavo spēlētāja lietotāja profila attēlu: + + Ja profila attēls nav tukšs, to uzskata par noteikto noklusēto attēlu. + + Pievieno vārdnīcu sarakstam vārdnīcu ar sekojošiem datiem: + + Spēlētāja identifikators; + + Lietotāja lietotājvārds; + + Dzīvības stāvoklis; + + Lietotāja profila attēls. + + Ja paslēptās informācijas karodziņš ir "patiess" vai spēles stāvoklis atbilst izbeigtās spēles stāvoklim, vārdnīcai pievieno sekojošus datus: + + Lomas identifikators. + ], + [ + Izvades mērķis nepieciešamās spēles stāvokļa informācijas parādīšana lietotāja saskarnē. + + + Spēles istabas stāvoklis -- atbilst #link()[IIDP03]\; + + Spēles sākšanas laiks -- atbilst #link()[IIDP02]\; + + Mafijas sakaru redzamība -- karodziņš; + + Vispārīgo sakaru redzamība -- karodziņš; + + Nakts numurs -- vesels pozitīvs skaitlis. + + Spēlētāju vārdnīcu saraksts. Katra spēlētāja vārdnīca, kuras atslēgas ir: + + Spēlētāja identifikators -- atbilst #link()[IIDP10]\; + + Lietotāja lietotājvārds -- atbilst #link()[IIDP10]\; + + Dzīvības stāvoklis -- karodziņš; + + Lietotāja profila attēls -- atbilst #link()[IIDP08]\; + Ja paslēptā informācija tiek izvadīta, tad spēlētāju vārdnīca saturēs arī: + + Lomas identifikators -- atbilst #link()[IIDP10]\; + ], + [ + + Spēles istaba ar identifikatoru [istabas identifikators] netika atrasta! + + Spēlētāju ar identifikatoru: [spēlētāju identifikatori] netika atrasti! + + Darbība nav autorizēta! + + Sistēmas iekšējā kļūda! Mēģiniet vēlreiz! + ], +) + + +=== Spēles lomu uzstādījumu modulis + +#indent-par([ +Apakšnodaļa ietver spēles lomu uzstādījumu moduļa funkcijas. Moduļa funkcionalitāte ir izmantota darbībām saistībā ar lomām. Moduļa funkciju datu plūsmas ir parādītas 2. līmeņa datu plūsmas diagrammā (skat. @fig:dpd-2-game-role). +Funkcijas ir aprakstītas atsevišķās tabulās (skat. +#link()[SLMF01], +#link()[SLMF02], +#link()[SLMF03], +#link()[SLMF04], +#link()[SLMF05], +#link()[SLMF06]). +]) + +#figure( + caption: "Spēles lomu uzstādījumu moduļa 2. līmeņa DPD", + image("img/dpd2/SpēlesLomuModulis.svg") +) + +#function-table( + "Lomas detaļas", + "SLMF01", + "Funkcijas mērķis ir izvadīt pieprasītās lomas detaļas, kas neietver lomas darbības (tam ir domāta atsevišķa funkcija).", + [ + Ievades dati tiek iegūti no vietrāža vai lietotāja darbības. + + Obligātie parametri: + + Spēles lomas identifikators -- atbilst #link()[IIDP10]. + ], + [ + + Sagatavo datubāzes pieprasījumu no spēles lomu tabulas. + + Pieprasījumam pievieno atlasīšanu pēc spēles lomas identifikatora. + + Sagatavo pieprasījuma lauku sarakstu. Saraksta pamatā ir identifikators, nosaukums, apraksts, vai ir pamata, vai pieder mafijas grupai. + + Veic sagatavoto pieprasījumu, pieprasot iepriekš sagatavoto lauku sarakstu. + + Ja pieprasījums neizdotas, parāda 1. paziņojumu. Beidz apstrādi. + + Ja spēles loma netika atrasta, parāda 2. paziņojumu. Beidz apstrādi. + ], + [ + Izvades datu mērķis ir spēles lomas datu izvadīšana. Lietotāja saskarnē tiek prezentētas pieprasītās lomas detaļas. + + Vārdnīca + + Lomas identifikators -- atbilst #link()[IIDP10]\; + + Nosaukums -- atbilst #link()[IIDP10]\; + + Apraksts -- simbolu virkne; + // + Maksimāli pieļaujamais skaits spēlē -- nenegatīvs skaitlis; + // + Vai var tikt mafijas noslepkavots -- karodziņš; + + Vai ir pamata -- karodziņš. + + Vai pieder mafijas grupai -- karodziņš. + ], + [ + + Sistēmas iekšējā kļūda! Mēģiniet vēlreiz! + + Tāda spēles lomas nav atrasta! Mēģiniet vēlreiz! + ], +) + +#function-table( + "Lomu pārskats", + "SLMF02", + "Funkcijas mērķis ir izvadīt sarakstu ar visām pieejamajām lomām, to nosaukumiem.", + [ + Ievades datus iegūst no veicamās darbības un neobligāto vietrādes meklēšanas parametra. + + Neobligātie parametri: + + Lappuses numurs -- vesels pozitīvs skaitlis, noklusētā vērtība -- 1. + + Meklēšanas uzvedne -- simbolu virkne, atbilst #link()[IIDP14], noklusētā vērtība -- "". + + Kārtošanas vārdnīcu saraksts -- atbilst #link()[IIDP20], noklusētā vērtība -- tukšs saraksts. + + Filtru vārdnīcu saraksts -- atbilst #link()[IIDP19], noklusētā vērtība -- tukšs saraksts. + ], + [ + + Sāk gatavot datubāzes pieprasījumu no spēles lomu tabulas. + + Sagatavo pārskata pieprasījumu un iegūst lappuses numuru un kopējo lappušu skaitu, izmantojot #link()[KPR07] ar lappuses numuru, meklēšanas uzvedni, kārtošanas vārdnīcu sarakstu, filtru vārdnīcu sarakstu, šos parametrus iesniedzot, ja tie ir iesniegti funkcijā. + + Ja lappušu skaits ir 0, tad parāda 1. paziņojumu. Beidz apstrādi. + + Veic sagatavoto pieprasījumu, iegūstot lomas nosaukumu, vai ir pamata, aprakstu, piederību mafijai. + + Ja pieprasījums neizdodas, parāda 2. paziņojumu. Beidz apstrādi. + + Katram ierakstam no rezultāta iegūst attēla datnes adresi no attēlu tabulas pēc attēla identifikatora. + + Ja attēla datnes adrese neeksistē ierakstam, tad iegūst noklusētā attēla datnes adresi un pamaina ieraksta datnes adresi izvades datos uz noklusētā datnes attēla adresi. + ], + [ + Izvades datu mērķis ir spēles lomu saraksta datu izvadīšana. Lietotāja saskarnē parādās saraksts ar lomām. + + + Vārdnīcu saraksts: + + Lomas nosaukums -- atbilst #link()[IIDP21]\; + // + Maksimāls spēlējošo skaits -- vesels pozitīvs skaitlis; + + Lomas apraksts -- atbilst #link()[IIDP09]\; + + Vai ir pamata -- karodziņš; + // + Vai var tikt mafijas noslepkavots -- karodziņš; + + Lomas attēla adrese -- atbilst #link()[IIDP08]\; + + Piederība mafijas grupai -- karodziņš. + ], + [ + + Neviena spēles loma netika atrasta! + + Sistēmas iekšējā kļūda! Mēģiniet vēlreiz! + + Tāda spēles lomas nav atrasta! Mēģiniet vēlreiz! + ], +) + +#function-table( + "Lomas darbību pārskats", + "SLMF03", + "Funkcijas mērķis ir izvadīt visas darbības, kuras var izpildīt attiecīgā loma.", + [ + Ievades dati tiek iegūti no vietrāža vai lietotāja darbības. + + Obligātie parametri: + + Spēles lomas identifikators -- atbilst #link()[IIDP10]. + ], + [ + + Sagatavo datubāzes pieprasījumu lomas darbību meklēšanai pēc lomas identifikatora. + + Veic sagatavoto pieprasījumu, iegūstot aprakstu, lomas nosaukumu, lomas darbības nosaukumu. + + Ja pieprasījums neizdodas, parāda 2. paziņojumu. Beidz apstrādi. + + Ja spēles loma netika atrasta, parāda 3. paziņojumu. Beidz apstrādi. + ], + [ + Izvades datu mērķis ir spēles lomas darbības datu izvadīšana. Lietotāja saskarnē parādās informācija par konkrētās lomas darbībām. + + + Vārdnīca: + + Darbības apraksts -- atbilst #link()[IIDP09]\; + + Lomas nosaukums -- atbilst #link()[IIDP21]\; + + Lomas darbības nosaukums -- atbilst #link()[IIDP21]\; + // + Vai lomas darbība ir tūlītēja -- karodziņš. + ], + [ + + Sistēmas iekšēja kļūda! Mēģiniet vēlreiz! + + Tāda spēles lomas nav atrasta! Mēģiniet vēlreiz! + ], +) + +#function-table( + "Jaunas lomas izveidošana", + "SLMF04", + "Funkcijas mērķis ir izveidot spēles lomu.", + [ + Ievades dati tiek saņemti no maksas lietotājiem un administratoriem pieejamās veidlapas. + + Obligātie parametri: + + Lietotāja identifikators -- atbilst #link()[IIDP10]\; + + Nosaukums -- atbilst #link()[IIDP21]\; + + Apraksts -- atbilst #link()[IIDP09]\; + + Lomas darbību identifikatoru saraksts -- saraksts no identifikatoriem, kas atbilst #link()[IIDP10]\; + + Vai pieder mafijas grupai -- karodziņš; + + Neobligātie parametri: + + Vai ir pamata -- karodziņš, noklusētā vērtība -- nepatiess. + + Attēls -- atbilst #link()[IIDP08], noklusētā vērtība -- noklusētā attēla datnes adrese. + ], + [ + + Veic maksas lietotāja darbības autorizāciju, izmantojot #link()[KPR08] procedūru, vai administratora darbības autorizāciju. + + Ja darbība nav autorizēta, parāda 10. paziņojumu. Beidz apstrādi. + + Pārbauda, vai visi obligātie lauki ir iesniegti. + + Ja nav, parāda 1. paziņojumu. Beidz apstrādi. + + Pārbauda, vai apraksts un lomas nosaukums ir ievadīts. + + Ja ievadīts, pārbauda, vai nepārsniedz noteikto garumu. + + Ja pārsniedz, tad iegūst pārsniegto garumu parametru sarakstu un parāda 2. paziņojumu ar attiecīgajiem laukiem un garumiem. Beidz apstrādi. + + Ja ievadīts, pārbauda, vai satur tikai pieļaujamos simbolus. + + Ja nesatur, tad iegūst izmantotos neatļautos simbolus, tad parāda 7. paziņojumu ar attiecīgiem laukiem un simboliem. Beidz apstrādi. + + Ja "vai ir pamata" karodziņš ir stāvoklī "patiess", autorizē administratora darbību. + + Ja tā netiek autorizēta, parāda 8. paziņojumu. Beidz apstrādi. + + Mēģina sameklēt datubāzē spēles lomu ar ievadīto nosaukumu. + + Ja tāds pastāv, tad parāda 3. paziņojumu. Beidz apstrādi. + + Ja ir ievadīts lomas darbību identifikatoru saraksts, tad katram saraksta identifikatoram izveidot saistības ierakstu starp spēles lomas un spēles darbības ierakstu, pirms tam pārbaudot darbību eksistenci datubāzē. + + Ja kāda no darbībām neeksistē, parāda 9. paziņojumu. Beidz apstrādi. + + // Image + + Ja tika iesniegts attēls, validē attēlu ar #link()[KPR12] un uzstāda pievienošanas laiku uz tagadējo laiku. + + Ja validācija ir neveiksmīga, parāda 11. paziņojumu ar attiecīgu validācijas kļūdu. + + Citādi saglabā vecā attēla datni, ja tāda ir. + + + Jaunas spēles lomas dati -- nosaukums, apraksts un karodziņi -- tiek ierakstīti datubāzē. + + Ja kāda ierakstīšana nenotiek, parāda 5. paziņojumu. Beidz apstrādi. + ], + [ + Izvades datu mērķis ir noteikt, vai spēles loma ir veiksmīgi saglabāta. Lietotāja saskarnē parāda 4. paziņojumu. Lietotājs tiek pāradresēts lomu pārskata lapā. + + Lomas izveidošanas stāvoklis -- skaitlisks kods. + ], + [ + + Lauks: [neaizpildīto lauku saraksts] netika aizpildīts (/-i)! + + [Parametra nosaukums] nedrīkst pārsniegt [noteikto parametra maksimālo simbolu skaits]! + + Loma ar tādu nosaukumu jau eksistē! Samainiet nosaukumu un mēģiniet vēlreiz! + + Loma veiksmīgi izveidota! + + Sistēmas iekšēja kļūda! Mēģiniet vēlreiz! + + Skaitlim jābūt nenegatīvam! Mēģiniet vēlreiz! + + [Parametra nosaukums] nedrīkst saturēt: [izmantoto parametra neatļauto simbolu saraksts]! + + Darbība nav autorizēta: Jūs nevarat veidot pamata lomas! + + Viena vai vairākas darbības, ko Jūs izvēlējāties, neeksistē! + + Darbība nav autorizēta: Jūs nevarat veidot lomas! + + Šo attēlu nedrīkst izmantot: [validācijas kļūda\]! + ], +) + +#function-table( + "Lomas rediģēšana", + "SLMF05", + "Funkcijas mērķis ir rediģēt spēles lomas.", + [ + Ievades dati tiek saņemti no maksas lietotājiem un administratoriem pieejamās veidlapas. + + Obligātie parametri: + + Spēles lomas identifikators -- atbilst #link()[IIDP10]; + + Lietotāja identifikators -- atbilst #link()[IIDP10]\; + + Nosaukums -- atbilst #link()[IIDP21]\; + + Apraksts -- atbilst #link()[IIDP09]\; + + Lomas darbību identifikatoru saraksts -- saraksts no identifikatoriem, kas atbilst #link()[IIDP10]\; + + Vai pieder mafijas grupai -- karodziņš. + + Neobligātie parametri: + + Vai ir pamata -- karodziņš; + + Attēls -- atbilst #link()[IIDP08], noklusētā vērtība -- noklusētā attēla datnes adrese. + ], + [ + + Veic maksas lietotāja darbības autorizāciju, izmantojot #link()[KPR08] procedūru, vai administratora darbības autorizāciju. + + Ja darbība nav autorizēta, parāda 10. paziņojumu. Beidz apstrādi. + + Sameklē spēles lomas ierakstu datubāzē. + + Ja tā netiek atrasta, parāda 9. paziņojumu. Beidz apstrādi. + + Ja ar spēles lomu saistīts lietotāja identifikators nesakrīt ar lietotāja identifikatoru, kurš izveidoja doto spēles lomu, veic administratora darbības autorizāciju. + + Ja tā netiek autorizēta parādīt 6. paziņojumu. Beidz apstrādi. + + Pārbauda, vai visi obligātie lauki ir iesniegti. + + Ja nav, parāda 1. paziņojumu. Beidz apstrādi. + + Pārbauda, vai nosaukums un apraksts nepārsniedz noteikto garumu. + + Ja pārsniedz, parāda 2. paziņojumu ar attiecīgajiem laukiem un garumiem. Beidz apstrādi. + + Pārbauda, vai nosaukums un darbības nosaukums, ja ievadīts, satur tikai pieļaujamos simbolus. + + Ja nesatur, tad iegūst izmantotos neatļautos simbolus, tad parāda 8. paziņojumu ar attiecīgajiem laukiem un simboliem. Beidz apstrādi. + + Veido izmainīto datu sarakstu pēc turpmāk izmainītajiem laukiem. + + Ja tika iesniegts atšķirīgs nosaukums, mēģina sameklēt datubāzē lomu ar ievadīto nosaukumu. Ja tāda pastāv, tad parāda 3. paziņojumu. Beidz apstrādi. + + Katram identifikatoram spēles lomas darbību identifikatoru sarakstā sameklē darbību datubāzē. + + Ja kāda no darbībām netika sameklēta, parāda 11. paziņojumu. Beidz apstrādi. + + // Image + + Ja tika iesniegts attēls, validē attēlu ar #link()[KPR12] un uzstāda pievienošanas laiku uz tagadējo laiku. + + Ja validācija ir neveiksmīga, parāda 12. paziņojumu ar attiecīgu validācijas kļūdu. + + Citādi saglabā vecā attēla datni, ja tāda ir. + + + Iepriekš izmainītos laukus pievieno izmainīto lauku sarakstam un atjauno darbību saistības ar lomu. Spēles uzstādījumu sagatavotie dati -- lauki, kas ir rediģēto lauku sarakstā, tiek ierakstīti datubāzē. + + Ja ierakstīšana nenotiek, parādīt 5. paziņojumu. Beidz apstrādi. + + Izdzēš vecā attēla datni. + ], + [ + Izvades datu mērķis ir noteikt, vai spēles loma ir veiksmīgi rediģēta. Lietotāja saskarnē parāda 4. paziņojumu. Lietotājs tiek pāradresēts lomu pārskata lapā. + + Lomas rediģēšanas stāvoklis -- skaitlisks kods. + ], + [ + + Lauks: [neaizpildīto lauku saraksts] netika aizpildīts (/-i)! + + [Parametra nosaukums] nedrīkst pārsniegt [noteikto parametra maksimālo simbolu skaits]! + + Loma ar tādu nosaukumu jau eksistē! Samainiet nosaukumu un mēģiniet vēlreiz! + + Loma veiksmīgi rediģēta! + + Lomas rediģēšana nav veiksmīga! + + Darbība nav autorizēta: jums nepieder šī loma! + + Skaitlim jābūt nenegatīvam! Mēģiniet vēlreiz! + + [Parametra nosaukums] nedrīkst saturēt: [izmantoto parametra neatļauto simbolu saraksts]! + + Loma netika atrasta! + + Darbība nav autorizēta: Jūs nevarat rediģēt lomas! + + Viena vai vairākas darbības, ko Jūs izvēlējāties, neeksistē! + + Šo attēlu nedrīkst izmantot: [validācijas kļūda\]! + ], +) + +#function-table( + "Lomas dzēšana", + "SLMF06", + "Funkcijas mērķis ir neatgriezeniski dzēst spēles lomu.", + [ + Ievades dati tiek saņemti no maksas lietotājiem un administratoriem pieejamās darbības lomu sarakstā vai lomu rediģēšanas lapā. + + Obligātie parametri: + + Lietotāja identifikators -- atbilst #link()[IIDP10]\; + + Spēles lomas identifikators -- atbilst #link()[IIDP10]. + ], + [ + + Veic maksas lietotāja darbības autorizāciju, izmantojot #link()[KPR08] procedūru, vai administratora darbības autorizāciju. + + Ja darbība nav autorizēta, parāda 1. paziņojumu. Beidz apstrādi. + + Sameklē spēles lomas ierakstu datubāzē. + + Ja tā netiek atrasta, parāda 2. paziņojumu. Beidz apstrādi. + + Ja ar spēles lomu saistīts lietotāja identifikators nesakrīt ar lietotāja identifikatoru, kurš izveidoja doto spēles lomu, veic administratora darbības autorizāciju. + + Ja tā netiek autorizēta parādīt 5. paziņojumu. Beidz apstrādi. + + Visas spēles lomas un lomas darbības daudz pret daudz starptabulas izdzēš. + + Ja izdzēšana nav veiksmīga, parāda 4. paziņojumu. Beidz apstrādi. + + Saglabā veco lomas datnes adresi, ja tāda ir. + + Spēles lomas ierakstu izdzēš. + + Ja izdzēšana nav veiksmīga, parāda 4. paziņojumu. Beidz apstrādi. + + Izdzēš veco lomas attēlu. + ], + [ + Izvades datu mērķis ir noteikt spēles lomas dzēšanas stāvokli. Lietotāja saskarnē parāda 3. paziņojumu. Lietotājs ir pāradresēts uz lomu pārskata lapu, ja nepieciešams. + + Spēles lomas dzēšanas stāvoklis -- skaitlisks kods. + ], + [ + + Darbība nav autorizēta: Jūs nevarat dzēst lomas! + + Tāda loma nav atrasta! + + Loma ir veiksmīgi izdzēsta! + + Sistēmas iekšēja kļūda! Mēģiniet vēlreiz! + + Darbība nav autorizēta: dzēšamā loma nav Jūsu loma! + ], +) + +=== Spēles uzstādījumu modulis + +#indent-par([ +Apakšnodaļa ietver spēles uzstādījumu moduļa funkcijas. Moduļa funkcionalitāte ir izmantota darbībām saistībā ar spēles uzstādījumiem. Moduļa funkciju datu plūsmas ir parādītas 2. līmeņa datu plūsmas diagrammā (skat. @fig:dpd-2-game-setup). +Funkcijas ir aprakstītas atsevišķās tabulās (skat. +#link()[SUMF01], +#link()[SUMF02], +#link()[SUMF03], +#link()[SUMF04], +#link()[SUMF05]). +]) + +#figure( + caption: "Spēles uzstādījumu moduļa 2. līmeņa DPD", + image("img/dpd2/SpēlesUzstādījumuModulis.svg") +) + +#function-table( + "Spēles uzstādījumu pārskats", + "SUMF01", + "Funkcijas mērķis ir sniegt pārskatu par spēles uzstādījumiem.", + [ + Ievades dati tiek iegūti no vietrāža. + + Neobligātie parametri: + + Lappuses numurs -- vesels pozitīvs skaitlis, noklusētā vērtība -- 1. + + Meklēšanas uzvedne -- simbolu virkne, atbilst #link()[IIDP14], noklusētā vērtība -- "". + + Kārtošanas vārdnīcu saraksts - atbilst #link()[IIDP20], noklusētā vērtība -- tukšs saraksts. + + Filtru vārdnīcu saraksts -- atbilst #link()[IIDP19], noklusētā vērtība -- tukšs saraksts. + ], + [ + + Sāk gatavot datubāzes pieprasījumu no spēles uzstādījumu tabulas. + + Sagatavo pārskata pieprasījumu un iegūst lappuses numuru un kopējo lappušu skaitu, izmantojot #link()[KPR07] ar lappuses numuru, meklēšanas uzvedni, kārtošanas vārdnīcu sarakstu, filtru vārdnīcu sarakstu, šos parametrus iesniedzot, ja tie ir iesniegti funkcijā. + + Ja lappušu skaits ir 0, tad parāda 1. paziņojumu. Beidz apstrādi. + + Veic sagatavoto pieprasījumu, iegūstot spēles uzstādījuma nosaukumu, aprakstu, vai tas ir pamata un izveidošanas laiku. + + Ja pieprasījums neizdodas, parāda 2. paziņojumu. Beidz apstrādi. + + Pie rezultāta vārdnīcai aktīvuma karodziņu -- meklē spēles istabas tekošās spēles stāvoklī un ja atrod vismaz vienu tādu istabu, tad spēles uzstādījums ir aktīvs. + + Aprēķina maksimālo spēlētāju skaitu, meklējot datubāzē ar spēles uzstādījumu saistītās spēles lomas un saskaitot kopā to skaitus katram uzstādījumam. + + Ja kāda no lomām netiek atrasta, izņem spēles uzstādījumu no saraksta. + + ], + [ + Izvades datu mērķis ir spēles virtuālās istabas uzstādījumu datu izvadīšana. Lietotāja saskarnē parādās saraksts ar informāciju par spēles uzstādījumiem. + + + Vārdnīcu saraksts: + + Nosaukums -- atbilst #link()[IIDP21]\. + + Apraksts -- atbilst #link()[IIDP09]\; + + Vai ir pamata -- karodziņš; + + Vai ir aktīvs -- karodziņš; + + Nepieciešamo spēlētāju skaits -- vesels pozitīvs skaitlis\; + + Izveidošanas laiks -- atbilst #link()[IIDP02]. + ], + [ + + Neviens spēles uzstādījums nav atrasts! + + Sistēmas iekšējā kļūda! Mēģiniet vēlreiz! + ], +) + +#function-table( + "Spēles uzstādījuma lomu pārskats", + "SUMF02", + "Funkcijas mērķis ir sniegt pārskatu ar daļēju informāciju par spēles uzstādījumu lomām.", + [ + Ievades dati tiek iegūti no vietrāža. + + Obligātie parametri: + + Spēles uzstādījumu identifikators -- atbilst #link()[IIDP10]. + ], + [ + + Sagatavo datubāzes pieprasījumu no spēles uzstādījumu tabulas. + + Pieprasījumam pievieno atlasīšanu pēc spēles uzstādījuma identifikatora. + + Sagatavo pieprasījumu lauku sarakstu: lomu identifikatori, nosaukumi, attēli, piederība mafijai. + + Veic sagatavoto pieprasījumu, pieprasot iepriekš sagatavoto lauku sarakstu. + + Ja pieprasījums neizdodas, parāda 1. paziņojumu. Beidz apstrādi. + + Ja spēles uzstādījums netika atrasts, parāda 2. paziņojumu. Beidz apstrādi. + ], + [ + Izvades datu mērķis ir spēles virtuālās istabas uzstādījumu datu izvadīšana. Lietotāja saskarnē parādās saraksts ar konkrēta spēles uzstādījuma lomu informācija. + + + Vārdnīca: + + Lomas identifikators -- atbilst #link()[IIDP10]\; + + Lomas nosaukums -- atbilst #link()[IIDP21]\; + + Vai pieder mafijai -- karodziņš; + + Lomas attēls -- atbilst #link()[IIDP08]. + ], + [ + + Sistēmas iekšējā kļūda! Mēģiniet vēlreiz! + + Tāds spēles uzstādījums nav atrasts! Mēģiniet vēlreiz + ], +) + +#function-table( + "Jauna spēles uzstādījuma izveidošana", + "SUMF03", + "Funkcijas mērķis ir izveidot spēles uzstādījumu, turpmākai izmantošanai spēlē.", + [ + Ievades dati tiek saņemti no maksas lietotājiem un administratoriem pieejamās veidlapas. + + Obligātie parametri: + + Lietotāja identifikators -- atbilst #link()[IIDP10]\; + + Nosaukums -- atbilst #link()[IIDP21]\; + + Apraksts -- atbilst #link()[IIDP09]. + + Lomu datu vārdnīcu saraksts -- saraksts ar vārdnīcām; + + Lomas identifikators -- atbilst #link()[IIDP10]\; + + Skaits - vesels pozitīvs skaitlis. + + Neobligātie parametri: + + Vai ir pamata -- karodziņš. + + ], + [ + + Veic maksas lietotāja darbības autorizāciju, izmantojot #link()[KPR08] procedūru, vai administratora darbības autorizāciju. + + Ja darbība nav autorizēta, parāda 9. paziņojumu. Beidz apstrādi. + + Pārbauda, vai visi obligātie lauki ir iesniegti. + + Ja nav, parāda 1. paziņojumu ar attiecīgajiem laukiem. Beidz apstrādi. + + Pārbauda, vai nosaukums un darbības nosaukums, ja ievadīts, satur tikai pieļaujamos simbolus. + + Ja nesatur, parāda 6. paziņojumu ar attiecīgi laukiem un simboliem. Beidz apstrādi. + + Pārbauda, vai nosaukums un apraksts nepārsniedz noteikto garumu. + + Ja pārsniedz, parāda 2. paziņojumu ar attiecīgajiem laukiem un garumiem. Beidz apstrādi. + + Mēģina sameklēt datubāzē uzstādījumus ar ievadīto nosaukumu. + + Ja tāds pastāv, tad parāda 3. paziņojumu. Beidz apstrādi. + + Katrai vārdnīcai no lomu datu vārdnīcu saraksta veic sekojošas manipulācijas. + + Sameklē lomu datubāzē. + + Ja tā neeksistē, parāda 10. paziņojumu. Beidz apstrādi. + + Ja skaits nav pozitīvs, parāda 7. paziņojumu. Beidz apstrādi. + + Lomas skaitu pieskaita pie skaita summas. + + Ieraksta izveidošanas laiku uzstāda uz tagadējo laiku. + + Pārbauda, vai lomu kopējais skaits (skaitu summa) atbilst noteiktai skaita robežai. + + Ja neatbilst, parāda 8. paziņojumu. Beidz apstrādi. + + Jaunas spēles uzstādījuma dati -- apraksts, nosaukums, karodziņš -- un attiecīgas lomu saistības tiek ierakstītas datubāzē. + + Ja ierakstīšana nenotiek parāda 5. paziņojumu. Beidz apstrādi. + ], + [ + Izvades datu mērķis ir noteikt, vai spēles uzstādījumi ir veiksmīgi saglabāti. Lietotāja saskarnē parāda 7. paziņojumu. Lietotāju pāradresē lomu pārskata lapā. + + Uzstādījumu izveidošanas stāvoklis -- skaitlisks kods. + ], + [ + + Lauks: [neaizpildīto lauku saraksts] netika aizpildīts (/-i)! + + [Parametra nosaukums] nedrīkst pārsniegt [noteikto parametra maksimālo simbolu skaits]! + + Spēles uzstādījums ar tādu nosaukumu jau eksistē! Samainiet nosaukumu un mēģiniet vēlreiz! + + Spēles uzstādījums ir veiksmīgi izveidots! + + Sistēmas iekšēja kļūda! Mēģiniet vēlreiz! + + [Parametra nosaukums] nedrīkst saturēt: [izmantoto parametra neatļauto simbolu saraksts]! + + Lomas skaitam jābūt pozitīvam skaitlim! + + Lomu skaitam jābūt [lomas skaita robežas]! + + Darbība nav autorizēta: Jūs nevarat izveidot jaunu spēles uzstādījumu! + + Viena vai vairākas no Jūsu izvēlētām lomām neeksistē! + ], +) + +#function-table( + "Spēles uzstādījuma rediģēšana", + "SUMF04", + "Funkcijas mērķis ir rediģēt spēles uzstādījumu.", + [ + Ievades dati tiek saņemti no maksas lietotājiem un administratoriem pieejamās veidlapas. + + Obligātie parametri: + + Lietotāja identifikators -- atbilst #link()[IIDP10]\; + + Spēles uzstādījuma identifikators -- atbilst #link()[IIDP10]. Noklusētā vērtība -- no konteksta spēles uzstādījumu, kas tiek rediģēts, iegūtais identifikators. + + Apraksts -- atbilst #link()[IIDP09]\; + + Nosaukums -- atbilst #link()[IIDP21]\; + + Lomu datu vārdnīcu saraksts -- saraksts ar vārdnīcām; + + Lomas identifikators -- atbilst #link()[IIDP10]\; + + Skaits - vesels pozitīvs skaitlis. + + Administratoram specifiskie ievaddati: + + Vai ir pamata -- karodziņš, noklusētā vērtība -- nepatiess. + + Izveidošanas laiks -- datums formatēts kā simbolu virkne, noklusētā vērtība -- tagadējais laiks. + + ], + [ + + Veic maksas lietotāja darbības autorizāciju, izmantojot #link()[KPR08] procedūru, vai administratora darbības autorizāciju. + + Ja darbība netiek autorizēta, parādīt 11. paziņojumu. Beidz apstrādi. + + Sameklē spēles uzstādījumu datubāzē. + + Ja tas netiek atrasts. Parāda 11. paziņojumu. Beidz apstrādi. + + Ja ar spēles uzstādījumu saistīts lietotāja identifikators nesakrīt ar lietotāja identifikatoru, veic administratora darbības autorizāciju. + + Ja darbība nav autorizēta. Parāda 6. paziņojumu. + + Veido izmainīto datu sarakstu pēc turpmāk izmainītajiem laukiem. + + Pārbauda, vai visi obligātie lauki ir iesniegti. + + Ja nav, iegūst sarakstu ar neaizpildītajiem laukiem un parāda 1. paziņojumu. Beidz apstrādi. + + Pārbauda, vai nosaukums un darbības nosaukums, ja ievadīts, satur tikai pieļaujamos simbolus. + + Ja nesatur, tad iegūst izmantotos neatļautos simbolus, tad parāda 9. paziņojumu ar attiecīgi laukiem un simboliem. Beidz apstrādi. + + Pārbauda, vai nosaukums un apraksts nepārsniedz noteikto garumu. + + Ja pārsniedz, tad iegūst pārsniegto garumu parametru sarakstu un parāda 2. paziņojumu ar attiecīgajiem laukiem un garumiem. Beidz apstrādi. + + Ja tika iesniegts atšķirīgs nosaukums, mēģina sameklēt datubāzē uzstādījumus ar ievadīto nosaukumu. + + Ja tāds pastāv, tad parāda 3. paziņojumu. Beidz apstrādi. + + Iepriekš izmainītos laukus pievieno izmainīto lauku sarakstam. + + Autorizē administratora darbību. Ja darbība ir autorizēta, veic sekojošās darbības. + + Pārbauda, vai datumam ir korekts formāts. + + Ja nav, parāda 7. paziņojumu. Beidz apstrādi. + + Pārbauda, vai datums ir pagātnē vai tagad. Beidz apstrādi. + + Ja datums ir nākotnē, parāda 8. paziņojumu. Beidz apstrādi. + + Sagatavotiem datiem pievieno administratoriem specifiskās. Beidz apstrādi. + + Katrai vārdnīcai no lomu datu vārdnīcu saraksta veic sekojošas manipulācijas. + + Sameklē lomu datubāzē. + + Ja tā neeksistē, parāda 13. paziņojumu. Beidz apstrādi. + + Ja skaits nav pozitīvs, parāda 4. paziņojumu. Beidz apstrādi. + + Lomas skaitu pieskaita pie skaita summas. + + Pārbauda, vai lomu kopējais skaits (skaitu summa) atbilst noteiktam skaita robežai. + + Ja neatbilst, parāda 8. paziņojumu. Beidz apstrādi. + + Spēles uzstādījumu sagatavotie dati -- lauki, kas ir rediģēto lauku sarakstā -- tiek ierakstīti un lomu jaunās saistības datubāzē. + + Ja ierakstīšana nenotiek, parādīt 5. paziņojumu. Beidz apstrādi. + ], + [ + Izvades datu mērķis ir noteikt spēles uzstādījumu rediģēšanas stāvokli. Lietotāja saskarnē parāda 10. paziņojumu. Lietotājs tiek pāradresēts uz spēles uzstādījumu pārskata lapu. + + Spēles uzstādījumu rediģēšanas apstiprinājuma stāvoklis -- skaitlisks kods. + ], + [ + + Lauks: [neaizpildīto lauku saraksts] netika aizpildīts (/-i)! + + [Parametra nosaukums] nedrīkst pārsniegt [noteikto parametra maksimālo simbolu skaits]! + + Spēles uzstādījums ar tādu nosaukumu jau eksistē! Samainiet nosaukumu un mēģiniet vēlreiz! + + Lomas skaitam jābūt pozitīvam skaitlim! + + Spēles uzstādījuma rediģēšana nav veiksmīga! + + Darbība nav autorizēta: Jums nepieder šis spēles uzstādījums! + + Nekorekts datums! Datuma formāts: [nepieciešamais datuma formāts]. + + Izveidošanas datums nedrīkst būt nākotnē! + + [Parametra nosaukums] nedrīkst saturēt: [izmantoto parametra neatļauto simbolu saraksts]! + + Spēles uzstādījums ir veiksmīgi rediģēts! + + Tāds spēles uzstādījums netika atrasts! + + Darbība nav autorizēta: Jūs nevarat rediģēt spēles uzstādījumus! + + Viena vai vairākas no Jūsu izvēlētām lomām neeksistē! + ], +) + +#function-table( + "Spēles uzstādījuma dzēšana", + "SUMF05", + "Funkcijas mērķis ir neatgriezeniski dzēst spēles virtuālās istabas uzstādījumus.", + [ + Ievades dati tiek saņemti no maksas lietotājiem un administratoriem pieejamās darbības spēles uzstādījumu sarakstā vai spēles uzstādījumu lapā. + + Obligātie parametri: + + Lietotāja identifikators -- atbilst #link()[IIDP10]\; + + Spēles uzstādījuma identifikators -- atbilst #link()[IIDP10]. + ], + [ + + Veic maksas lietotāja darbības autorizāciju, izmantojot #link()[KPR08] procedūru, vai administratora darbības autorizāciju. + + Ja darbība netiek autorizēta, parādīt 1. paziņojumu. Beidz apstrādi. + + Sameklē spēles uzstādījumu datubāzē. + + Ja tas netiek atrasts. Parāda 6. paziņojumu. Beidz apstrādi. + + Ja ar spēles uzstādījumu saistīts lietotāja identifikators nesakrīt ar lietotāja identifikatoru, veic administratora darbības autorizāciju. + + Ja darbība nav autorizēta. Parāda 7. paziņojumu. + + Pārbauda, vai uzstādījums pašlaik ir aktīvs, meklējot datubāzē aktīvas spēles istabas, kas izmanto spēles uzstādījumu. + + Ja tādas ir, parāda 3. paziņojumu. Beidz apstrādi. + + Uzstādījumu ierakstu izdzēš. + + Ja izdzēšana nav veiksmīga, parāda 5. paziņojumu. Beidz apstrādi. + ], + [ + Izvades datu mērķis ir noteikt spēles uzstādījumu dzēšanas stāvokli. Lietotāja saskarnē parāda 4. paziņojumu. Lietotājs tiek pāradresēts spēles uzstādījumu pārskata lapā, ja nepieciešams. + + + Spēles uzstādījumu dzēšanas stāvoklis -- skaitlisks kods. + ], + [ + + Darbība nav autorizēta: Jūs nevarat dzēst spēles uzstādījumus! + + Tāds spēles uzstādījums nav atrasts! Mēģiniet vēlreiz! + + Spēles uzstādījumi pašlaik tiek izmantoti. Mēģiniet vēlreiz vēlāk. + + Spēles uzstādījums ir veiksmīgi izdzēsts! + + Sistēmas iekšēja kļūda! Mēģiniet vēlreiz! + + Spēles uzstādījums netika atrasts! + + Darbība nav autorizēta: Jūs nevarat dzēst šo spēles uzstādījumu! + ], +) + + +== Nefunkcionālās prasības +=== Veiktspējas prasības +==== Statiskā veiktspēja + +#indent-par([ +Uz statisko veiktspēju ir sekojošas prasības: +]) + +- Normāla sistēmas darbība vismaz 500 lietotājiem paralēli. +- Normāla sistēmas darbība ar vismaz 40 paralēlām spēles instancēm. + +==== Dinamiskā veiktspēja + +#indent-par([ +Uz dinamisko veiktspēju ir sekojošas prasības: +]) + +// CHANGE ! +- Sistēmai ir jānodrošina, ka 95% no dienā veiktajiem pieprasījumiem tiek izpildīti uz servera ne ilgāk kā 3 sekundēs un 95% no dienā veiktam darbībām spēles procesā jāizpildās ne ilgāk kā 4 sekundēs. +- Darbspējas laiks ir vismaz 99% no visa laika. + +=== Atribūti +==== Izmantojamība + +#indent-par([ +Uz sistēmas izmantojamību ir sekojošas prasības: +]) + +- 90% jaunu lietotāju jāspēj lietot visas tiem pieejamās funkcijas bez palīdzības. +- Sistēmai jāatbalsta reaģējošs noformējums -- jāpielāgojas dažādiem ekrānu izmēriem. +- Saskarnēm jābūt adaptētām gan priekš ainavas, gan portreta orientācijas. +- Teksta fonta izmēram datoru ekrāniem jābūt vismaz 14 pikseļiem, labas salasāmības nodrošināšanai. +- Visām funkcijām palīdzības ziņojumi pieejami angļu un latviešu valodā. +- Sistēmai ir jānodrošina, ka lietotājam pirms datu dzēšanas tiek pieprasīts darbību apstiprināt. +- Izveidota piekļuves programmsaskarnes (API) integrācija ar ārējiem pakalpojumiem: maksājumu apstrādātāja un mākoņa balstīts e-pasta pakalpojumu sniedzējs. +- Lapas kodējumā jāizmanto funkcijas un tehnoloģijas, kas tiek atbalstītas visās izplatītajās tīmekļa pārlūkprogrammās, nodrošinot piekļuvi sistēmai no dažādām operētājsistēmām. + +==== Mērogojamība + +#indent-par([ +Sistēmai jābūt paredzētai gan vertikālai, gan horizontālai mērogošanai. Inkrementālai slodzes izmaiņai ir pielietojama vertikāla mērogošana. Savukārt, kardinālai slodzes izmaiņai ir pielietojama horizontālā mērogošana. Horizontālās mērogošanas vienkāršošanai funkcionalitāte tiks sadalījuma pakalpojumu komponentēs. +]) + +==== Drošība + +#indent-par([ +Sistēmas drošības atribūti ir kategorizēti sarakstā: +]) + +- Autentifikācija: + - Paroles tiek glabātas šifrētā formātā, pirms šifrēšanas, tām pievieno sāli. + - Sāls tiek saglabāts teksta formātā pie lietotāja ieraksta. + - Paroles atiestatīšanai tiek izmantots marķieris ar derīguma termiņu, ģenerēts ar jaucējfunkciju. +- Autorizācija: + - Sistēmā ir jārealizē uz lomu bāzēta piekļuve, kas nosaka noteiktās darbības noteiktām sistēmas lietotāju grupām. + - Autorizācijas pārbaude gan priekšgala saskarnē, gan aizmugursistēmā. +- Datu aizsardzība: + - Paroles, maksājuma informācijas un citu ierobežotas piekļuves datu šifrēšana, tos glabājot un sūtot. + - Sistēmai nav jāglabā dati, kas nav nepieciešami sistēmas darbībai. +- Sesiju pārvalde: + - Izmanto tikai HTTP sīkdatnes. + - Sesijas noildzes izmantošana. + - Sesijas atpazīšana tiek realizēta, izmantojot sīkdatnes. +- Ievades pārbaude un dezinficēšana: + - Aizsardzība pret SQL injekcijām, komandu injekcijām un citiem injekciju veidiem. + - Visu ārējo pieprasījumu dati ir validēti un sanitizēti, ja nepieciešams. + - Ieviesiet pareizu validāciju visiem lietotāja ievadītajiem datiem un visiem datiem, kas saņemti no ārējām sistēmām. +- Aizsardzība pret tīmekļa apdraudējumiem: + - Aizsardzība pret CSRF) uzbrukumiem ar CSRF marķiera izmantošanu. + - Aizsardzība pret starpvietņu-skriptošanas (XSS) uzbrukumiem. +- Kļūdu apstrāde: + - Kļūdu paziņojumi neatklāj ierobežotas piekļuves informāciju. + - Kļūdu paziņojumi ir pielāgoti lietotāju grupai - sistēmas lietotāji, kas nepieder administratoru grupai, neredz ar sistēmas iekšējiem komponentiem saistīto informāciju, piemēram, datubāzes kļūmes. +- API: + - API marķieru izmantošana, izņemot publiski pieejamos API galapunktos. + - API pieprasījumu ierobežojums laikā (vienam lietotājam un vienai IP adresei). + - Visu API pieprasījumu ievades validācija un sanitizēšana, ja nepieciešams. +- Datņu augšuplādēšana: + - Datnes, kas tiek augšuplādētas, tiek analizētas pret ļaunatūru pirms uzglabāšanas. + - Datņu lielums un datu tips tiek validēts. +- Rezerves kopēšana: + - Rezerves kopijas izveidošanai jānotiek noteiktā laika periodā automātiski lokālā glabātuvē. + - Automatizēta procedūra sistēmas datu atjaunošanai, datu zaudēšanas vai bojājumu gadījumā. +- Darbību žurnāls: + - Darbību žurnāla uzturēšana. + - Darbību žurnāls nesatur ierobežotas piekļuves informāciju. + - Darbību žurnāla rezerves kopēšana atsevišķi no pamata rezerves kopijām. + + +==== Uzturamība + +#indent-par([ +Pret sistēmas izstrādājamo programmatūras uzturamību tiek izvirzītas sekojošās prasības: +]) + +// - Ciklomātiskā sarežģītība nepārsniedz 10. +- API dokumentācijas pārklājumam jābūt vismaz 80%. +- Koda testēšanas pārklājumam jābūt vismaz 70%. +// - Moduļu fan-out metriks (ārējo moduļu izsaukuma izskaušanas skaits šī moduļa ietvaros) nepārniedz 7. +// - Moduļu fan-out metriks (ārējo moduļu izsaukuma skaits ārpus šī moduļa ietvariem) jābūt nepārniedz 11. +- Programmatūrā ir realizēta automātiska vairs nevajadzīgo datu izdzēšana diska vietas atbrīvošanai, piemēram, darbības spēlēs, kas notikušas pirms 840 stundām (5 nedēļām). + +==== Pārnesamība + +#indent-par([ +Sistēmas programmatūrā ir jārealizē migrācijas skripti, kas nodrošina +strukturētu datu glabāšanu pārnešanas laikā, datu dublēšanu un ģenerē +kontrolsummas datu integritātei. Pēc sistēmas migrācijas ir jābūt realizētiem +datu pārbaudes skriptiem, datu integritātes pārbaudei. +]) + +=== Projekta ierobežojumi + +==== Intelektuālā īpašuma tiesības + +#indent-par([ +Projektā jāievēro autortiesību un preču zīmju likumi. Lai izvairītos no +juridiskām problēmām, ir jāsaņem atbilstošas atļaujas un licences par spēļu +aktīviem (assets). +]) + +/* +==== Atbilstība standartiem + +#indent-par([ +Šajā sadaļā ir izklāstīti galvenie standarti, kā prasībām sistēmai ir +jāatbilst, lai nodrošinātu robustumu, uzticamību un lietotāju tiesību un +cerību ievērošanu. +]) + +===== Datu privātuma atbilstība + +#indent-par([ +Sistēmai ir jāatbilst datu aizsardzības noteikumiem, tostarp +vispārīgajai datu aizsardzības regulai (GDPR - General Data Protection +Regulation). Ir būtiski noteikt visaptverošu datu apstrādes praksi, lai +nodrošinātu lietotāju datu konfidencialitāti un drošību. +]) + +===== Pieejamības standarti + +#indent-par([ +Lai nodrošinātu vienlīdzīgu piekļuvi visiem lietotājiem, sistēmai +jāatbilst tīmekļa satura pieejamības vadlīnijām (WCAG - Web Content +Accessibility Guidelines) attiecībā uz tīmekļa pieejamību. Jāapsver +lokalizācijas un iekļaušanas iespējas, lai pielāgotos dažādām +auditorijām. +]) + +===== Drošības standarti + +#indent-par([ +Jāievieš stingri drošības pasākumi, ievērojot nozares paraugpraksi, +piemēram, atvērto lietojumprogrammu drošības projektu visā pasaulē +(OWASP - Open Worldwide Application Security Project), lai pasargātu no +bieži sastopamām tīmekļa ievainojamībām. Datu aizsardzībai jāizmanto +šifrēšanas protokoli. +]) +*/ + +==== Aparatūras ierobežojumi + +===== Atbalstītās ierīces + +#indent-par([ +Sistēmai jābūt saderīgai ar dažādām ierīcēm, tostarp galddatoriem, +klēpjdatoriem, viedtālruņiem un planšetdatoriem. Lai nodrošinātu +netraucētu spēlēšanu, jānosaka minimālās aparatūras prasības. +]) + +===== Serveris un mitināšana + +#indent-par([ +Uz servera, kurā tiek mitināta sistēma, jābūt pieejamam Docker +programmatūras atbalstam, lai standartizētu programmatūras izvietošanu +ražošanas vidē un ražošanas vides simulēšanai un atvieglotai +tehnoloģiju versiju sinhronizācijai ar izstrādes vidi. +]) + +=== Ārējās saskarnes prasības + +==== Lietotāja saskarne + +#indent-par([ +Sistēmas "Mafija" vietne piedāvā atbalstu plašam spektram ekrāna formātu un izmēriem, nodrošinot elastīgu un reaktīvu dizainu, kas pielāgojas lietotāja ierīces un ekrāna izmēram. Tas ietver, bet nav ierobežots ar sekojošiem prasītajiem ekrāna formātiem un attiecībām: +]) + +- Atbalstāmās ekrāna attiecības (platums:augstums): 16:9; 4:3; 1:1; 3:2; 21:9; +- Atbalstāmie ekrānu izmēri (Mobilās ierīces): + - Mazie mobilie ekrāni (maksimāli 360 pikseļu plati): Piemēram, iPhone 5 un līdzīgi. + - Parastie mobilie ekrāni (maksimāli 414 pikseļu plati): Piemēram, iPhone 6/7/8 un daudzi Android telefoni. + - Plašie mobilie ekrāni (maksimāli 768 pikseļu plati): Piemēram, daži planšetdatori un lieli mobilo ierīču ekrāni. +- Atbalstāmie ekrānu izmēri (Planšetdatori): + - Mazie planšetdatoru ekrāni (maksimāli 768 pikseļu plats): Piemēram, 7 collu planšetdatori. + - Parastie planšetdatoru ekrāni (maksimāli 1024 pikseļu plats): Piemēram, 10 collu planšetdatori. +- Atbalstāmie ekrānu izmēri (Datori): + - Mazie datoru ekrāni (maksimāli 1280 pikseļu plats): Piemēram, daži nelieli datoru ekrāni. + - Parastie datoru ekrāni (maksimāli 1440 pikseļu plats): Parastie datoru ekrāni ar vidēju izšķirtspēju. + - Lielie datoru ekrāni (maksimāli 1920 pikseļu plats): Plaši lietoti augstas izšķirtspējas datoru ekrāni. + - Ļoti lielie datoru ekrāni (lielāki par 1920 pikseļiem): Piemēram, 4K ekrāni un daudzi datoru monitori. + +#indent-par([ +Grafiskā izkārtojuma pielāgošanai paredzēts izmantot sekojošos ekrāna izmēra precizējumu punktus: +]) + +- 360px -- maziem mobilajiem ekrāniem. +- 768px -- plašiem mobilajiem ekrāniem un maziem planšetdatoru ekrāniem. +- 1024px -- parastiem planšetdatoriem un maziem datoru ekrāniem. +- 1440px -- lieliem datoru ekrāniem. +- 1920px -- ļoti lieliem un augstas izšķirtspējas datoru ekrāniem. + +#indent-par([ +Lietotāja saskarne piedāvā pielāgotu izkārtojumu un saturu, kas pilnībā atbilst konkrētam ekrāna formātam un izmēram. +Teksta izvietojums ir optimizēts atbilstoši ekrāna izmēram, izmantojot precīzi pielāgojamu fonta izmēru un stilu, lai nodrošinātu ērtu lasīšanu. +Lietotne var iekļaut teksta formatējuma klāstā, bet nav ierobežota ar aprakstītiem teksta elementu noformējumiem (skat. @tbl:font-size tab.). +]) + +#pagebreak(weak: true) +#figure( + caption: "Teksta elementu noformējuma specifikācija", + kind: table, + tablex( + columns: 5, + + [*Teksta elementa klase*], [*Izmērs*], [*Svars*], [*Stils*], [*Cits*], + + [H1:\ Galvenais virsraksts], "vismaz 64pt", "Regulārs (parasts)", "Regulārs", "Var izmantot atšķirīgu krāsu, lai izceltu no citiem virsrakstiem.", + [H2:\ Apakšvirsraksti], "vismaz 24pt", "Regulārs (parasts)", "Regulārs", "Var izmantot atšķirīgu krāsu, lai izceltu no pamata teksta.", + [H3:\ Sekundārie virsraksti], "36pt", "Regulārs (parasts)", "Regulārs", "Var izmantot atšķirīgu krāsu.", + [H4:\ Apakšvirsraksti], "18pt", "Medium (vidējs treknraksts)", "Regulārs", "Izcelt ar atšķirīgu krāsu.", + "H5", "16pt", "Regulārs (parasts)", "Regulārs", "", + "H6", "14pt", "Regulārs (parasts)", "Regulārs", "", + "Pamatteksts", "12pt", "Regulārs (parasts)", "Regulārs", "", + "Saturteksts", "14pt", "Regulārs (parasts)", "Regulārs", "Var izmantot slīprakstu, lai akcentētu citātus vai īpaši teksta fragmentus.", + "Citāti un īpaši akcentēti teksti", "16pt", "Regulārs (parasts)", "Italics (slīpraksts)", "Lai iezīmētu citātus vai īpaši akcentētu tekstus var izmantot slīprakstu.", + "Sarunas un komentāri", "18pt", "Regulārs (parasts)", "Regulārs", "Var izmantot atšķirīgu krāsu, lai nošķirtu saturiskās daļas", + "Standarta saites", "12pt", "Regulārs (parasts)", "Regulārs", "Izmantot krāsas un pasvītrojumu, lai izceltu saites.", + "Apmeklētās un neapmeklētās saites", "12pt", "Regulārs (parasts)", "Regulārs", "Izmantot krāsas un pasvītrojumu, lai atšķirtu apmeklētās un neapmeklētās saites.", + "Numurētās un nenumurētās saraksta vienības", "16pt", "Regulārs (parasts)", "Regulārs", "Izmantot atzīmes (bullets) vai numurēšanas stilu.", + "Atzīmes (bullets)", "12pt", "Regulārs (parasts)", "Regulārs", "", + "Tabulu teksts un tabulu virsraksti", "14pt", "Regulārs (parasts)", "Regulārs", "", + "Ievades lauki", "16pt", "Regulārs (parasts)", "Regulārs", "", + "Izvēles rūtiņas un radio pogas", "12pt", "Regulārs (parasts)", "Regulārs", "Var izmantot atšķirīgu krāsu.", + "Ievades lauku kļūdu ziņojumi", "10pt", "Regulārs (parasts)", "Regulārs", "", + "Galvenās navigācijas saites", "18pt", "Bold (treknraksts)", "Regulārs", "", + "Sānu paneļa navigācijas saites", "10pt", "Regulārs (parasts)", "Regulārs", "", + ) +) + +// ==== Apratūras saskarne +// ==== Programmatūras saskarne + +==== Sakaru saskarne + +#indent-par([ +Visas iekšējās komponentes (pakalpojumi) komunicē, izmantojot HTTPS (drošu HTTP). +Komunikācija ar ārējo pakalpojumu sniedzēju API notiek, izmantojot HTTPS. +]) + + +#pagebreak(weak: true) += Programmatūras projektējuma apraksts + +== Datu bāzes projektējums + +/* Loģiskais un fiziskais DB modelis + apraksta pāreju no konceptuālā uz loģisko un pēc tam uz fizisko (ja sistēma vienkārša, loģisko var izlaist) */ + +=== Datu bāzes loģiskais ER modelis + +#indent-par([ +Loģiskajā modelī datubāze tika normalizēta uz BCNF, tāpēc bija nepieciešams izveidot atsevišķas tabulas katram daudzvērtību atribūtam, kā parādīts @fig:logical-erd attēlā. +]) + +#figure( + caption: "Datu bāzes loģiskais ER modelis", + image("img/erd/LogiskaisERDModelis.svg") +) + +=== Datu bāzes fiziskais ER modelis + +#indent-par([ +Fiziskajā modelī, salīdzinot ar loģisko modeli, nav redzamas pamanāmas izmaiņas, kā parādīts @fig:logical-erd un @fig:physical-erd attēlā. +]) + +#figure( + caption: "Datu bāzes fiziskais ER modelis", + image("img/erd/FiziskaisERDModelis.png") +) + +=== Datu bāzes tabulu apraksts + + +#indent-par([ +Datubāzes tabulu lauku, datu tipi, lauka atribūti -- obligātums, noklusētās vērtības, primārā atslēga, unikalitāte -- ir aprakstītas atsevišķās tabulās (skat. +@tbl:entity-role-action tab., +@tbl:entity-image tab., +@tbl:entity-session tab., +@tbl:entity-password-recovery tab., +@tbl:entity-email-confirmation tab., +@tbl:entity-game-role tab., +@tbl:entity-account-status tab., +@tbl:entity-room-status tab., +@tbl:entity-player-status tab., +@tbl:entity-user tab., +@tbl:entity-game-setup tab., +@tbl:entity-room tab., +@tbl:entity-game-event tab., +@tbl:entity-player tab., +@tbl:entity-message tab. +@tbl:entity-player-action tab. +@tbl:entity-player-causes-event tab. +@tbl:entity-player-influences-event tab. +@tbl:entity-game-setup-roles tab. +@tbl:entity-event-actions tab. +@tbl:entity-game-role-events tab. +@tbl:entity-answer tab.) +Visām tabulām `VARCHAR` un `TEXT` laukiem tiek lietot UTF8 kodējums. +]) + +Saliktā atslēga tiek izmantota kā primārā atslēga daudziem pret daudziem entitātem (skat. +@tbl:entity-player-action tab. +@tbl:entity-player-causes-event tab. +@tbl:entity-player-influences-event tab. +@tbl:entity-game-setup-roles tab. +@tbl:entity-event-actions tab. +@tbl:entity-game-role-events tab.) + +#entity-table( + caption: "LomasDarbiba", + "nosaukums", "varchar(255)", "unique, not null", "Lomas darbības nosaukums", + "apraksts", "text", "default '', not null", "Lomas darbības apraksts", +) + +#entity-table( + caption: "Attels", + "datnes_adrese", "varchar(255)", "unique, not null", "Saglabātā attēla adrese operētājsistēmā", + "pievienosanas_laiks", "timestamp", "default current_timestamp, not null", "Laiks, kad tika izveidots/saglabāts dotais attēls datubāzē" +) + +#entity-table( + caption: "Sesija", + "markieris","varchar(255)","unique, not null","Ģenerēts marķieris lietotāja sesijas", + "deriguma_termins", "timestamp", "not null", "Laiks, līdz kuram sesija ir aktīva" +) + +#entity-table( + caption: "ParolesAtjaunosana", + "markieris","varchar(255)","unique, not null","Ģenerēts marķieris paroles atjaunošanai", + "deriguma_termins","timestamp","not null","Laiks, līdz kuram paroles atjaunošana ir iespējama" +) + +#entity-table( + caption: "EpastaApstiprinajums", + "markieris", "varchar(255)", "unique, not null", "Ģenerēts marķieris e-pasta lietotāja apstiprināšanai", + "deriguma_termins", "timestamp", "not null", "Laiks, līdz kuram e-pasta apstiprināšana ir iespējama" +) + +#entity-table( + caption: "SpelesLoma", + "nosaukums", "varchar(255)", "unique, not null", "Lomas nosaukums", + "apraksts", "text", "default '', not null", "Lomas apraksts", + "ir_pamata", "bool", "default false, not null", "Vai loma ir spēles pamatā vai lietotāju izveidots?", + "ir_mafija", "bool", "default false, not null", "Vai loma ir mafija?", + "attels", "int8", "", [Lomas attēls, `FOREING KEY`, uz #link()[Attels] tabulas id kolonnu], + "autors", "int8", "", [Lomas izveides autors, `FOREING KEY`, uz #link()[Lietotajs] tabulas id kolonnu], +) + +#entity-table( + caption: "KontaStavoklis", + "birka", "varchar(255)", "unique, not null", "Konta stāvokļa apraksts" +) + +#entity-table( + caption: "IstabasStavoklis", + "birka", "varchar(255)", "unique, not null", "Istabas stāvokļa apraksts" +) + +#entity-table( + caption: "SpeletajaStavoklis", + "birka", "varchar(255)", "unique, not null", "Speletaja stāvokļa apraksts" +) + +#entity-table( + caption: "Lietotajs", + "segvards", "varchar(255)", "unique, not null", "Lietotājvārds", + "epasts", "varchar(255)", "unique, not null", "Lietotāja e-pasts", + "parole", "varchar(255)", "not null", "Šifrēšanas algoritms, sāls un šifrēta lietotāja parole", + "vards", "varchar(255)", "default '', not null", "Lietotāja vārds", + "uzvards", "varchar(255)", "default '', not null", "Lietotāja uzvārds", + "dzimsanas_datums", "date", "", "Lietotāja dzimšanas datums", + "bio_info", "text", "default ''", "Lietotāja apraksts par sevi", + "izveidosanas_laiks", "timestamp", "default current_timestamp, not null", "Laiks, kad tika izveidots/saglabāts dotais lietotājs datubāzē", + "ir_apstiprinats_ epasts", "bool", "default false, not null", "Vai lietoājs ir apsiprinājis savu e-pastu?", + "stripe_id", "varchar(50)", "unique", [Unikālais lietotāja identifikators, kas tiek iegūts no maksājuma apstrādātāja klienta -- #link("https://stripe.com")[Stripe]], + "ir_administrators", "bool", "default false, not null", [Vai lietotājam ir administratora privilēģijas?], + "attels", "int8", "", [Lietotāja profila attēls, `FOREING KEY` uz #link()[Attels] tabulas id kolonnu], + "konta_stavoklis", "int8", "not null", [Lietotāja konta stāvoklis, `FOREING KEY` uz #link()[KontaStavoklis] tabulas id kolonnu], + "sesija", "int8", "unique", [Lietotāja sesija, `FOREING KEY` uz #link()[Sesija] tabulas id kolonnu], + "epasta_ apstiprinajums", "int8", "unique", [Lietotāja e-pasta apstiprinājums, `FOREING KEY` uz #link()[EpastaApstiprinajums] tabulas id kolonnu], + "paroles_ atjaunosana", "int8", "unique", [Lietotāja paroles atjaunošana, `FOREING KEY` uz #link()[ParolesAtjaunojana] tabulas id kolonnu] +) + +#entity-table( + caption: "SpelesUzstadijums", + "nosaukums", "varchar(255)", "unique, not null", "Uzstādījuma nosaukums", + "apraksts", "text", "default '', not null", "Uzstādījuma apraksts", + "ir_pamata", "bool", "default false, not null", "Vai spēles uzstādījums ir spēles pamatā vai lietotāju izveidots", + "izveidosanas_laiks", "timestamp", "default current_timestamp, not null", "Laiks, kad dotais uzstādījums tika izveidots/saglabāts datubāzē", + "autors", "int8", "not null", [Uzstādījuma autors, `FOREING KEY` uz #link()[Lietotajs] tabulas id kolonnu] +) + +#entity-table( + caption: "Istaba", + "nosaukums", "varchar(255)", "unique, not null", "Istabas Nosaukums", + "speles_saksanas_ laiks", "timestamp", "", "Laiks, kad spēle sākas", + "speles_beigsanas_ laiks", "timestamp", "", "Laiks, kad spēle beidzas", + "stavoklis", "int8", "not null", [Pašreizējais spēles stāvoklis, `FOREING KEY` uz #link()[IstabasStavoklis] tabulas id kolonnu], + "piekluves_kods", "char(6)", "unique, not null", "Unikāls istabas piekļuves kods, 6 lielie burtcipari", + "izveidosanas_laiks", "timestamp", "default current_timestamp, not null", "Laiks, kad dotā spēles istaba tika izveidota/saglabāta datubāzē", + "speles_uzstadijums", "int8", "not null", [Spēles uzstādījumi, kurus izmanto dotā istaba, `FOREING KEY` uz #link()[SpelesUzstādījums] tabulas id kolonnu] +) + +#entity-table( + caption: "SpelesNotikums", + "nosaukums", "varchar(255)", "unique, not null", "Notikuma nosaukums", + "nakts_pk", "int2", "default 0, not null, check (nakts_pk >= 0)", "Spēles nakts pēc kārtas", + "ir_redzams", "bool", "default false, not null", "Vai notikums ir redzams spēlētājiem procesa laikā?", + "izveidosanas_laiks", "timestamp", "default current_timestamp, not null", "Laiks, kad dotais spēles notikums tika izveidots/saglabāts datubāzē", + "taimeris", "interval", "", "Laika intervāls taimera notikumiem spēles gaitā", + "lomas_darbiba", "int8", "not null", [Lomas darbība, `FOREING KEY` uz #link()[LomasDarbiba] tabulas id kolonnu], +) + +#entity-table( + caption: "Speletajs", + "nosaukums", "varchar(255)", "unique, not null", "Notikuma nosaukums", + "ir_noslepkavots", "bool", "default false, not null", "Vai dotais spēlētājs ir noslepkavots?", + "ir_izbalsots", "bool", "default false, not null", "Vai dotais spēlētājs ir izbalsots?", + "stavoklis", "int8", "not null", [Spēlētāja stāvoklis, `FOREING KEY` uz #link()[SpeletajaStavoklis] tabulas id kolonnu], + "istaba", "int8", "", [Istaba, kurā spēlē dotais spēlētājs, `FOREING KEY` uz #link()[Istaba] tabulas id kolonnu], + "speles_loma", "int8", "not null", [Loma, kuru spēlē dotais spēlētājs, `FOREING KEY` uz #link()[SpelesLoma] tabulas id kolonnu] +) + + +#entity-table( + caption: "Sarakste", + "teksts", "text", "not null", "Sarakstes teksts", + "if_mafijas_sarakste", "bool", "default false, not null", "Vai sarakstes sūtītājs ir mafija?", + "ir_izmainita", "bool", "default false, not null", "Vai sarakstes saturs ir izmainīts?", + "autors", "int8", "not null", [Sarakstes sūtītājs, `FOREING KEY` uz #link()[Speletajs] tabulas id kolonnu] +) + +#entity-table( + caption: "SpeletajaDarbibas", + id: ("speletajs", "int8", "primary key, not null", [Spēlētājs, `FOREING KEY` uz #link()[Speletajs] tabulas id kolonnu]), + "lomas_darbiba", "int8", "primary key, not null", [Lomas darbība, `FOREING KEY` uz #link()[LomasDarbiba] tabulas id kolonnu], + "vai_pilda", "bool", "default true, not null", [Vai spēlētājs ir darbības izraisītājs?] +) + +#entity-table( + caption: "SpeletajsIzraisaNotikumu", + id: ("speletajs", "int8", "primary key, not null", [Spēlētājs, `FOREING KEY` uz #link()[Speletajs] tabulas id kolonnu]), + "speles_notikums", "int8", "primary key, not null", [Spēles notikums, `FOREING KEY` uz #link()[SpelesNotikums] tabulas id kolonnu], +) + + +#pagebreak(weak: true) +#entity-table( + caption: "SpeletajsIetekmeNotikumu", + id: ("speletajs", "int8", "primary key, not null", [Spēlētājs, `FOREING KEY` uz #link()[Speletajs] tabulas id kolonnu]), + "speles_notikums", "int8", "primary key, not null", [Spēles notikums, `FOREING KEY` uz #link()[SpelesNotikums] tabulas id kolonnu], +) + + +#entity-table( + caption: "SpelesUzstatijumuLomas", + id: ("speles_uzstadijums", "int8", "primary key, not null", [Spēles uzstādījums, `FOREING KEY` uz #link()[SpelesUzstadijums] tabulas id kolonnu]), + "speles_loma", "int8", "primary key, not null", [Spēles loma, `FOREING KEY` uz #link()[SpelesLoma] tabulas id kolonnu], + "skaits", "int2", "default 1, not null, check (skaits >= 1)", "Spēlē izmantojamo lomu skaits" + +) + +#entity-table( + caption: "NotikumsAizliedzAtlaujDarbibu", + id: ("lomas_darbiba", "int8", "primary key, not null", [Lomas darbība, `FOREING KEY` uz #link()[LomasDarbiba] tabulas id kolonnu]), + "speles_notikums", "int8", "primary key, not null", [Spēles notikums, `FOREING KEY` uz #link()[SpelesNotikums] tabulas id kolonnu], + "ir_atlauts", "bool", "default true, not null", [Apzīmē, vai notikums atļauj vai aizliedz darbību], +) + + +#pagebreak(weak: true) +#entity-table( + caption: "SpelesLomasDarbiba", + id: ("speles_loma", "int8", "primary key, not null", [Spēles loma, `FOREING KEY` uz #link()[SpelesLoma] tabulas id kolonnu]), + "lomas_darbiba", "int8", "primary key, not null", [Lomas darbība, `FOREING KEY` uz #link()[LomasDarbiba] tabulas id kolonnu], +) + +#entity-table( + caption: "Atbilde", + "raksta", "int8", "not null", [Lietotājs, kas atbild uz saraksti, `FORERING KEY` uz #link()[Sarakste] tabulas id kolonnu], + "atbild", "int8", "not null", [Lietotājs, uz kura saraksti atbild, `FORERING KEY` uz #link()[Sarakste] tabulas id kolonnu], +) + + +== Daļējs funkciju projektējums + +#indent-par([ +Spēles notikumu izveidošanas algoritma aktivitātes diagramma (@fig:PD02-1 att.) apraksta spēles notikumu izveidošanu, ko veic sistēma. Ja fāzes taimeris nav aktīvs, tiek izveidoti nepieciešamie spēles notikumi nākamai fāzei, tiek mainīti spēlētāju stāvokļi. Dažu fāžu ietvaros tiek pārbaudīti spēles beigu nosacījumi, kuriem izpildoties, spēles istabas stāvoklis ir mainīts uz pabeigtu spēli. +]) + +Diagrammā ir iekļauta apakšaktivitāte spēlētāju stāvokļa izmaiņai atkarībā no darbībām, kas ir aprakstīta atsevišķi (skat. @fig:PD02-2 att.) Tajā tiek apstrādātas darbības un aprēķināta darbību ietekme uz spēles stāvokli, izveidojot jaunus notikumus. + +#figure( + caption: "Spēles notikumu izveidošanas algoritms", + image("img/uml/EventCreationActivityDiagram-01.svg", height: 80%) +) + +#figure( + caption: "Izmaiņas spēlētāju stāvoklī (apakšaktivitāte)", + image("img/uml/EventCreationActivityDiagram-02.svg") +) + +#pagebreak(weak: true) +#indent-par([ +Lietotāja spēles darbības veikšanas funkcijas projektējuma peldceliņu diagramma (@fig:PD01 att.) apraksta spēlētāja darbības izveidošanas procesu. Funkcija ietver darbības korektuma pārbaudi, spēles istabas un spēlētāja saistību, darbības autorizēšanu spēles ietvaros un darbības ieraksta izveidošanu. +]) + +#figure( + caption: "Spēles darbības peldceliņu diagramma", + image("img/uml/GameActionSwimlaneChart.svg", height: 80%) +) + + +#indent-par([ +Iespējamie spēles istabas stāvokļi un to pārejas ir aprakstīti stāvokļu pārejas diagrammā (skat. @fig:PD03 att.). +]) + +#figure( + caption: "Spēles istabas stāvokļu diagramma", + image("img/uml/GameRoomStateDiagram.svg") +) + +#pagebreak(weak: true) +#indent-par([ +Abonementa pieteikuma process ir aprakstīts secību diagrammā (skat. @fig:PD04 att.). Process iekļauj aktīva abonementa pārbaudi, klienta konta izveidošanu, ja tāds neeksistē, apmaksas sesijas izveidi un apstiprinājumu. +]) + +#figure( + caption: "Abonementa pieteikuma secību diagramma", + image("img/uml/SubscriptionFunctionSequenceDiagram.svg") +) + +#pagebreak(weak: true) +#indent-par([ +Sistēmas izvietojuma diagramma (skat. @fig:PD05 att.) apraksta sistēmas izvietojuma -- programmatūras izvietojumu ierīcēs, uz kuras tiks darbināta sistēmas programmatūra. +]) + +#figure( + caption: "Sistēmas izvietojuma diagramma", + image("img/uml/ManifiestationDiagram.svg") +) + +/* Apraksta svarīgākās, sarežģītākās funkcijas vai sistēmas darbības aspektus; obligāti jālieto vismaz 4 dažādi diagrammu veidi, izņemot DPD un lietošanas piemēru (use case) diagrammas */ +== Daļējs lietotāju saskarņu projektējums +/* 5-7 lietotāja saskarnes un to apraksts */ + +=== Navigācija + +#indent-par([ +Navigācijas shēma visām lietotāju grupām ir attēlota ekrānskatu plūsmas diagrammā (skat. @fig:view-flow-diagram att.) Diagrammā ir apvienoti visi skati, kas ieskaita gan parasta lietotāja pusi, gan administratora pusi. Diagrammā redzami visi pieejamie skati katram lietotāja veidam. Katru sadalīto skatu zonu manto lietotājs ar lielākām tiesībām par otru. Administratoram ir pieejami visi skati, maksas lietotājiem ir pieejama apakškopa no ekrānskatiem, reģistrētam lietotājam un nereģistrētam lietotājiem analoģiski ir pieejamas apakškopas. Šī hierarhija ir redzama diagrammas kreisā apakšējā stūrī. Pastāv ekrānskati, kas pieejami tikai neautentificētam lietotājam un nav pieejami nevienam citam. Tāpēc ir izdalīta atsevišķa grupa, kas netiek iekļauta citās grupās. +]) + + +#figure( + caption: "Ekrānskatu plūsmas diagramma", + image("img/EkrānskatuPlūsmasDiagramma.svg") +) +#indent-par([ +Saskarnes projektējuma ekrānskatos izmantotās funkcijas ir apkopotas @tbl:interface-views tabulā. +]) +// For self check (sorta) and traceability +#figure( + caption: "Funkciju atbilstība ekrānskatiem", + kind: table, + tablex( + columns: 3, + + /* --- header --- */ + [*Ekrānskata nosaukums*], [*Ekrānskata identifikators*], [*Atbilstošās funkcijas*], + /* -------------- */ + + [Galvenā lapa], [#link()[SS01]], [Statiska lapa#footnote[Statiskas lapas saturs mainās reti, tās saturs tiek atjaunots manuāli.]], + [Pieteikšanās], [SS02], [#link()[AMF06]], + [Atkārtotā apstiprinājuma pieteikšana], [SS03], [#link()[AMF02]], + [Paroles atjaunošanas pieteikums], [SS04], [#link()[AMF03]], + [Paroles atjaunošana], [SS05], [#link()[AMF04]], + [E-pasta apstiprināšana], [SS06], [#link()[AMF07]], + [Reģistrācija], [#link()[SS07]], [#link()[AMF01]], + [Spēles notikumu pārskats], [SS08], [#link()[SGMF03]], + [Spēļu vēstures pārskats], [SS09], [#link()[SIMF08]], + [Spēles istabu pārskats], [SS10], [#link()[SIMF01], #link()[SIMF03], #link()[AMF06], #link()[AMF04]], + [Atteikšanās], [SS11], [#link()[AMF05]], + [Lietotāju pārskats], [SS12], [#link()[LKMF01]], + [Konta detaļas], [SS13], [#link()[LKMF02]], + [Konta rediģēšana], [SS14], [#link()[LKMF04]], + [Konta dzēšana], [SS15], [#link()[LKMF05]], + [Abonementa pieteikšana], [SS16], [#link()[MAMF01]], + [Abonementu pārskats], [SS17], [#link()[MAMF02]], + [Abonementa atcelšana], [SS18], [#link()[MAMF03]], + [Abonementu plānu pārskats], [SS19], [#link()[MAMF04]], + + [Lomas detaļas], [SS20], [#link()[SLMF01]], + [Lomu pārskats], [SS21], [#link()[SLMF02]], + [Lomas darbību pārskats], [SS22], [#link()[SLMF03]], + [Lomas izveidošana], [SS23], [#link()[SLMF04]], + [Lomas rediģēšana], [SS24], [#link()[SLMF05]], + [Lomas dzēšana], [SS25], [#link()[SLMF06]], + [Spēles uzstādījumu pārskats], [#link()[SS26]], [#link()[SUMF01]], + [Spēles uzstādījuma lomu pārskats], [SS27], [#link()[SUMF02]], + [Spēles uzstādījuma izveidošana], [SS28], [#link()[SUMF03]], + [Spēles uzstādījuma rediģēšana], [SS29], [#link()[SUMF04]], + [Spēles uzstādījuma dzēšana], [SS30], [#link()[SUMF05]], + [Spēles istabas izveidošana], [SS31], [#link()[SIMF04]], + [Pievienošanās spēlei], [SS32], [#link()[SIMF02]], + [Pirmsspēles vestibils], [#link()[SS33]], [#link()[SIMF07], #link()[SIMF05], #link()[SUMF02], #link()[SIMF09], #link()[TMF01], #link()[TMF02], #link()[TMF03], #link()[TMF04]], + [Spēles sākums], [SS34], [#link()[SGMF04], #link()[TMF01], #link()[TMF02], #link()[TMF03], #link()[TMF04]], + [Spēles skats], [#link()[SS35]], [#link()[SGMF04], #link()[SMLF03], #link()[SLMF01], #link()[TMF01], #link()[TMF02], #link()[TMF03], #link()[TMF04]], + [Spēles darbība], [#link()[SS36]], [#link()[SGMF01], #link()[SLMF03], #link()[TMF01], #link()[TMF02], #link()[TMF03], #link()[TMF04]], + [Spēles fāzes maiņa], [#link()[SS37]], [#link()[SGMF04], #link()[SGMF03], #link()[TMF01], #link()[TMF02], #link()[TMF03], #link()[TMF04]], + // [Atslēgšanās no spēles istabas], [SS38], [#link()[SIMF03]], + [Spēles beigas], [SS38], [#link()[SGMF04], #link()[SGMF03], #link()[TMF01], #link()[TMF02], #link()[TMF03], #link()[TMF04]], + // [Spēles uzstādījuma detaļas], [SS40], [#link()[SUMF02]], + [Spēles notikumu pārskats], [#link()[SS39]], [#link()[SGMF04], #link()[TMF01], #link()[TMF02], #link()[TMF03], #link()[TMF04]], + [Spēles novērošana], [SS40], [#link()[SGMF04], #link()[SIMF07], #link()[TMF01], #link()[TMF02], #link()[TMF03], #link()[TMF04]], + [Spēles iestatījumi], [SS41], [Lietotāju saskarnes iestatījumi], + [Lietotāja konta bloķēšana], [SS42], [#link()[LKMF03]], + [Spēlētāja izslēgšana], [SS43], [#link()[SIMF07], #link()[SIMF06]], + ) +) + +#pagebreak(weak: true) +=== Ekrānskati + +// UPDATED: 2024-01-18 17:37 + +#indent-par([ +Galvenās lapas ekrānskats (SS01; @fig:SS01 att.) parāda informāciju nereģistrētiem lietotājiem, kas ietver statistiku par mājaslapu un saiti uz reģistrāciju vai pieteikšanos un citu aktuālu informāciju. Informācija, kas tiek parādīta, ir statiska. +]) + +#figure( + caption: "Galvenās lapas ekrānskats", + image("img/ui/desktop/landingpage.png") +) + +#pagebreak(weak: true) +#indent-par([ +Reģistrācijas ekrānskats (SS07; @fig:SS07 att.) satur reģistrācijas veidlapu. Jāievada reģistrācijai nepieciešamie dati. Paziņojumi par ievades datu validācijas neveiksmēm parādās pie attiecīgajiem ievades laukiem. Nospiežot reģistrācijas pogu lietotājs apstiprina mājaslapas noteikumiem un saistītām politikām. +]) + +#figure( + caption: "Reģistrācijas ekrānskats", + image("img/ui/desktop/register.png") +) + +#pagebreak(weak: true) +#indent-par([ +Spēles istabu pārskata ekrānskats (SS26; @fig:SS26 att.) ir pirmais ekrānskats, kurā lietotājs iekļūst, veiksmīgi piesakoties sistēmā. Tas satur pieejamās spēles istabas ar informāciju par konkrētām istabām ar meklēšanas, filtru un kārtošanas iespēju. Pieejamām spēles istabām ir pieslēgšanās poga. Skatā ir iespēja arī nokļūt uz sava reģistrētā konta pārskatu. Ekrānskats satur papildus aktuālu informāciju. Papildus informācija ir statiska, informācija par abonementa iegādi un blogs. Maksas lietotājam ir redzama istabu izveidošanas poga. +]) + +#figure( + caption: "Spēles istabu pārskata ekrānskats", + image("img/ui/desktop/available-game-room-list.png") +) + +#pagebreak(weak: true) +#indent-par([ +Pirmsspēles vestibila ekrānskats (SS33; @fig:SS33 att.) parāda informāciju par spēles istabu, kas ir aktuāla pirms spēle sākas. Tas iekļauj spēlētājus istabā un informāciju par spēles uzstādījumu un tajā iekļautām spēles lomām. +]) + +#figure( + caption: "Spēles vestibila ekrānskats", + image("img/ui/mobile/lobby.png", height: 80%) +) + +#pagebreak(weak: true) +#indent-par([ +Ekrānskats "Spēles skats" (SS35; @fig:SS35 att.) parāda būtiskāko informāciju spēles procesā. Ir iespēja apskatīt visus spēlētājus, kas ir pieslēgušies spēlei. Pie katra spēlētāja ar noteiktu krāsu tiek parādīts vai spēlētājs ir dzīvs vai nē. Oranža krāsa nozīmē, ka ir dzīvs, melns -- nē. Kā arī savu lomu un lomas aprakstu, kas tika piešķirta spēlētājam, spēles sākumā, šajā skatā mediķis. Skatā ir iespēja izmantot tērzētavu, sarunājoties ar citiem spēles dalībniekiem. Pieejams arī spēles pārskats, kurā ir redzama spēles fāze, dzīvo spēlētāju skaitu un diena. No šī skata ir iespējams nokļūt uz notikumu pārskata skatu. +]) + +#figure( + caption: "Spēles skata ekrānskats", + image("img/ui/desktop/game-screen.png") +) + + +#pagebreak(weak: true) +#indent-par([ +Spēles notikumu pārskata ekrānskats (SS39; @fig:SS39 att.) attēlo spēles notikumu pārskatu. Tas ir līdzīgs spēles skatam (SS35; @fig:SS35 att.) ar savām dažām atšķirībām. Informācija sniedz pārskatu par svarīgiem spēles notikumiem atsevišķās spēles fāzēs – naktī un dienā. Spēles laikā ir notikuši konkrēti notikumi, piemēram, kāds spēlētājs ir nogalināts vai izglābts. Notikumi ir izmantoti, lai saprastu nesenos notikumus spēlē un plānotu nākamās darbības, balstoties uz spēles gaitu un citu spēlētāju lēmumiem. +]) + +#figure( + caption: "Spēles notikumu pārskata ekrānskats", + image("img/ui/desktop/game-event-overview.png") +) + +#pagebreak(weak: true) +#indent-par([ +Ekrānskats "Spēles darbība" (SS36; @fig:SS36 att.) parāda darbības izvēli, noteiktajai spēlētāja lomai, šajā gadījumā mediķim, kas ietekmē nākamos spēles soļus. Šis skats parādās katrā darbību momentā naktī. Katrai noteiktajai spēlētāja lomai šis skats ir nedaudz atšķirīgs. Mafijas gadījumā parādās saraksts ar vēl dzīvajiem spēlētājiem, kur jāizvēlas viens. Iedzīvotāja gadījumā nav nevienas darbības, kas jādara, tie vienkārši sagaida nākamo dienu. +]) + +#figure( + caption: "Spēles darbības ekrānskats", + image("img/ui/desktop/game-action.png") +) + + +#pagebreak(weak: true) +#indent-par([ +Ekrānskats "Fāzes maiņa" (SS37; @fig:SS37 att.) demonstrē fāzes maiņas momentu, atspoguļojot pāreju no dienas uz nakti vai otrādi. Ekrānā dominē grafiskais uzraksts "Trešā diena", kas simbolizē spēles iekšējo ciklu maiņu un pavada spēlētājus uz nākamo darbību sēriju. Fāzes maiņa informē spēlētājus par svarīgu spēles posmu notikumiem, šajā gadījumā par Jaunzemnieka slepkavību. +]) + +#figure( + caption: "Fāzes maiņas ekrānskats", + image("img/ui/tablet/game-phase-change.png", height: 60%) +) + + +#pagebreak(weak: true) +#heading(numbering: none, "Izmantotā literatūra un avoti") + ++ #hyperlink-source( + "Eiropas Parlaments.", + "Vispārēja datu aizsardzības regula (angl. GDPR). 2016, aprīlis.", + "https://eur-lex.europa.eu/legal-content/LV/TXT/PDF/?uri=CELEX:32016R0679", + datetime( + year: 2023, + month: 11, + day: 20, + ), +) + ++ #hyperlink-source( + "International standard organisation (Starptautiska standartu organizācija).", + [ISO/DIS 8601-1. Data elements and interchange formats -- Information interchange -- Representation of dates and times -- Part 1: Basic rules.], + "https://web.archive.org/web/20171019211402/https://www.loc.gov/standards/datetime/ISO_DIS%208601-1.pdf", + datetime( + year: 2023, + month: 11, + day: 20, + ), +) + ++ #hyperlink-source( + "International standard organisation.", + "ISO 4217. Currency codes. 2015.", + "https://www.iso.org/iso-4217-currency-codes.html", + datetime( + year: 2023, + month: 12, + day: 16, + ), +) + ++ #hyperlink-source( + "Internet Engineering Task Force (IETF).", + "RFC 7519. JSON Web Token (JWT). 2015, maijs.", + "https://web.archive.org/web/20171019211402/https://www.loc.gov/standards/datetime/ISO_DIS%208601-1.pdf", + datetime( + year: 2023, + month: 11, + day: 20, + ), +) + + ++ #hyperlink-source( + [Institūcija "Latvijas standarts".], + [LVS 68:1996 "Programmatūras prasību specifikācijas ceļvedis". 1996, marts.], + "", + datetime( + year: 2023, + month: 11, + day: 20, + ), +) + ++ #hyperlink-source( + [Institūcija "Latvijas standarts".], + [LVS 72:1996 PPS "Ieteicamā prakse programmatūras projektējuma aprakstīšanai". 1996, marts.], + "", + datetime( + year: 2023, + month: 11, + day: 20, + ), +) + ++ #hyperlink-source( + "QUALCOMM Incorporated.", + "RFC2822. Internet Message Format (Interneta ziņojumu formāts). 2001, aprīlis.", + "https://datatracker.ietf.org/doc/html/rfc2822", + datetime( + year: 2023, + month: 11, + day: 20, + ), +) + + ++ #hyperlink-source( + "Maksas apstrādātāja lietošanas dokumentācija.", + "Stripe API Reference.", + "https://stripe.com/docs/api", + datetime( + year: 2023, + month: 12, + day: 17, + ), +) + +/*+ #hyperlink-source( + "W3C.", + "Web Content Accessibility Guidelines (WCAG, Tīmekļa satura pieejamības vadlīnijas) 2.1. 2023, septembris.", + "https://www.w3.org/TR/WCAG21/", + datetime( + year: 2023, + month: 11, + day: 20, + ), +)*/ + +// Hyperlink example +/* +#hyperlink-source( + "Kļaviņš, K. Baltijas vāciešu un latviešu kopīgā pagātne.", + "Diena, 2003, 19. marts, 15. lpp.", + "http://www.historia.lv/publikacijas/piblicist/kljavins01.htm", + datetime( + year: 2023, + month: 1, + day: 2, + ), +) +*/ + +#pagebreak(weak: true) +#let vspace = 1fr +#heading(numbering: none, outlined: false, "Dokumentārā lapa") +#v(vspace) + +#indent-par([Praktiskais darbs programminžinierijā "Tiešsaistes spēles sistēma "Mafija"" izstrādāts LU Datorikas fakultātē.]) + +#v(vspace) +Šī darba autori apliecina, ka darbs ir veikts patstāvīgi, un ir izmantoti tikai tajā norādītie informācijas avoti. + +#v(vspace) +#figure( + tablex( + stroke: none, + columns: (1fr, 1fr), + "Darba autori:", + [ + + Alens Aleksandrs Čerņa, ac22065, + + Kristiāns Francis Cagulis, kc22015, + + Ernests Gustavs Dane, eg22086, + + Miķelis Kukainis, mk22092, + + Jorens Štekeļs, js21283, + ], + ) +) + +#v(vspace) +#figure( + tablex( + stroke: none, + columns: (1fr, 1fr), + "Darba vadītāja:", + "prof. Dr. sc. comp. Laila Niedrīte", + ) +) + +#v(vspace) +#figure( + tablex( + stroke: none, + columns: (1fr, 1fr), + "Darba galīgā versija izgatavota:", + "18.01.2024.", + ) +) + +#v(vspace) +#figure( + tablex( + stroke: none, + columns: (1fr, 1fr), + "Darba iesniegšanas datums:", + "18.01.2024.", + ) +) + +#v(vspace) +#figure( + tablex( + stroke: none, + columns: (1fr, 1fr), + "Darba aizstāvēšanas datums:", + "22.01.2024.", + ) +) + +#v(vspace) +#figure( + tablex( + stroke: none, + columns: (1fr, 1fr), + "Komisijas vērtējums:", + line(length: 100%, start: (0pt, 10pt)), + ) +) + +#v(vspace) +#figure( + tablex( + stroke: none, + columns: (1fr, 1fr), + "Komisijas sastāvs:", + [ + #line(length: 100%, start: (0pt, 10pt)) + #line(length: 100%, start: (0pt, 30pt)) + #line(length: 100%, start: (0pt, 50pt)) + ], + ) +) + + + + + +/*Dokumentārā lapa +Dokumentārajā lapā (sk. 5. pielikumu) ietver: +•darba nosaukumu, fakultātes nosaukumu; +•autora apliecinājumu, ka darbs veikts patstāvīgi, ka darbā izmantoti tikai tajā norādītie +informācijas avoti un ka darba elektroniskā kopija atbilst izdrukai; +•vadītāja atzinumu, vai darbs ir rekomendējams aizstāvēšanai; +•atbildīgās personas atzīmi par darba saņemšanu; +•recenzenta-/u datus (vārds, uzvārds, amats, zinātniskais grāds); +•noslēguma pārbaudījuma komisijas sēdes datumu un protokola numuru.*/ \ No newline at end of file diff --git a/sql/Mafia.sql b/sql/Mafia.sql new file mode 100644 index 0000000..d5c4cdb --- /dev/null +++ b/sql/Mafia.sql @@ -0,0 +1,199 @@ +CREATE TABLE "LomasDarbiba" ( + "id" SERIAL8 PRIMARY KEY NOT NULL, + "nosaukums" VARCHAR(255) UNIQUE NOT NULL, + "apraksts" TEXT DEFAULT '' NOT NULL +); + +CREATE TABLE "Attels" ( + "id" SERIAL8 PRIMARY KEY NOT NULL, + "datnes_adrese" VARCHAR(255) UNIQUE NOT NULL, + "pievienosanas_laiks" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL +); + +CREATE TABLE "Sesija" ( + "id" SERIAL8 PRIMARY KEY NOT NULL, + "markieris" VARCHAR(255) UNIQUE NOT NULL, + "deriguma_termins" TIMESTAMP NOT NULL +); + +CREATE TABLE "ParolesAtjaunosana" ( + "id" SERIAL8 PRIMARY KEY NOT NULL, + "markieris" VARCHAR(255) UNIQUE NOT NULL, + "deriguma_termins" TIMESTAMP NOT NULL +); + +CREATE TABLE "EpastaApstiprinajums" ( + "id" SERIAL8 PRIMARY KEY NOT NULL, + "markieris" VARCHAR(255) UNIQUE NOT NULL, + "deriguma_termins" TIMESTAMP NOT NULL +); + +CREATE TABLE "KontaStavoklis" ( + "id" SERIAL8 PRIMARY KEY NOT NULL, + "birka" VARCHAR(255) UNIQUE NOT NULL +); + +CREATE TABLE "IstabasStavoklis" ( + "id" SERIAL8 PRIMARY KEY NOT NULL, + "birka" VARCHAR(255) UNIQUE NOT NULL +); + +CREATE TABLE "SpeletajaStavoklis" ( + "id" SERIAL8 PRIMARY KEY NOT NULL, + "birka" VARCHAR(255) UNIQUE NOT NULL +); + +CREATE TABLE "Lietotajs" ( + "id" SERIAL8 PRIMARY KEY NOT NULL, + "segvards" VARCHAR(255) UNIQUE NOT NULL, + "epasts" VARCHAR(255) UNIQUE NOT NULL, + "parole" VARCHAR(255) NOT NULL, + "vards" VARCHAR(255) DEFAULT '' NOT NULL, + "uzvards" VARCHAR(255) DEFAULT '' NOT NULL, + "dzimsanas_datums" DATE, + "bio_info" TEXT DEFAULT '' NOT NULL, + "izveidosanas_laiks" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL, + "ir_apstiprinats_epasts" BOOL DEFAULT FALSE NOT NULL, + "stripe_id" VARCHAR(50) UNIQUE, + "ir_adminstrators" BOOL DEFAULT FALSE NOT NULL, + "konta_stavoklis" INT8 NOT NULL, + "attels" INT8, + "sesija" INT8 UNIQUE, + "epasta_apstiprinajums" INT8 UNIQUE, + "paroles_atjaunosana" INT8 UNIQUE, + FOREIGN KEY ("konta_stavoklis") REFERENCES "KontaStavoklis" ("id"), + FOREIGN KEY ("attels") REFERENCES "Attels" ("id"), + FOREIGN KEY ("sesija") REFERENCES "Sesija" ("id"), + FOREIGN KEY ("epasta_apstiprinajums") REFERENCES "EpastaApstiprinajums" ("id"), + FOREIGN KEY ("paroles_atjaunosana") REFERENCES "ParolesAtjaunosana" ("id") +); + +CREATE TABLE "SpelesLoma" ( + "id" SERIAL8 PRIMARY KEY NOT NULL, + "nosaukums" VARCHAR(255) UNIQUE NOT NULL, + "apraksts" TEXT DEFAULT '' NOT NULL, + "ir_pamata" BOOL DEFAULT FALSE NOT NULL, + "ir_mafija" BOOL DEFAULT FALSE NOT NULL, + "attels" INT8, + "autors" INT8, + FOREIGN KEY ("attels") REFERENCES "Attels" ("id"), + FOREIGN KEY ("autors") REFERENCES "Lietotajs" ("id") +); + +CREATE TABLE "SpelesUzstadijums" ( + "id" SERIAL8 PRIMARY KEY NOT NULL, + "nosaukums" VARCHAR(255) UNIQUE NOT NULL, + "apraksts" TEXT DEFAULT '' NOT NULL, + "ir_pamata" BOOL DEFAULT FALSE NOT NULL, + "izveidosanas_laiks" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL, + "autors" INT8 NOT NULL, + FOREIGN KEY ("autors") REFERENCES "Lietotajs" ("id") +); + +CREATE TABLE "Istaba" ( + "id" SERIAL8 PRIMARY KEY NOT NULL, + "nosaukums" VARCHAR(255) UNIQUE NOT NULL, + "speles_saksanas_laiks" TIMESTAMP, + "speles_beigsanas_laiks" TIMESTAMP, + "piekluves_kods" CHAR(6) UNIQUE NOT NULL, + "izveidosanas_laiks" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL, + "stavoklis" INT8 NOT NULL, + "speles_uzstadijums" INT8 NOT NULL, + FOREIGN KEY ("stavoklis") REFERENCES "IstabasStavoklis" ("id"), + FOREIGN KEY ("speles_uzstadijums") REFERENCES "SpelesUzstadijums" ("id") +); + +CREATE TABLE "SpelesNotikums" ( + "id" SERIAL8 PRIMARY KEY NOT NULL, + "nosaukums" VARCHAR(255) UNIQUE NOT NULL, + "nakts_pk" INT2 DEFAULT 0 NOT NULL CHECK ("nakts_pk" >= 0), + "veids" VARCHAR(255), + "ir_redzams" BOOL DEFAULT FALSE NOT NULL, + "izveidosanas_laiks" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL, + "taimeris" INTERVAL, + "lomas_darbiba" INT8 NOT NULL, + FOREIGN KEY ("lomas_darbiba") REFERENCES "LomasDarbiba" ("id") +); + +CREATE TABLE "Speletajs" ( + "id" SERIAL8 PRIMARY KEY NOT NULL, + "ir_noslepkavots" BOOL DEFAULT FALSE NOT NULL, + "ir_izbalsots" BOOL DEFAULT FALSE NOT NULL, + "ir_istabas_izveidotajs" BOOL DEFAULT FALSE NOT NULL, + "stavoklis" INT8 NOT NULL, + "istaba" INT8, + "speles_loma" INT8, + "lietotajs" INT8 NOT NULL, + FOREIGN KEY ("stavoklis") REFERENCES "SpeletajaStavoklis" ("id"), + FOREIGN KEY ("istaba") REFERENCES "Istaba" ("id"), + FOREIGN KEY ("speles_loma") REFERENCES "SpelesLoma" ("id"), + FOREIGN KEY ("lietotajs") REFERENCES "Lietotajs" ("id") +); + +CREATE TABLE "Sarakste" ( + "id" SERIAL8 PRIMARY KEY NOT NULL, + "teksts" TEXT NOT NULL, + "ir_mafijas_sarakste" BOOL DEFAULT FALSE NOT NULL, + "ir_izmainita" BOOL DEFAULT FALSE NOT NULL, + "autors" INT8 NOT NULL, + FOREIGN KEY ("autors") REFERENCES "Speletajs" ("id") +); + +CREATE TABLE "NotikumsAizliedzAtlaujDarbibu" ( + "speletajs" INT8 NOT NULL, + "lomas_darbiba" INT8 NOT NULL, + "vai_pilda" BOOL DEFAULT TRUE NOT NULL, + PRIMARY KEY ("speletajs", "lomas_darbiba"), + FOREIGN KEY ("speletajs") REFERENCES "Speletajs" ("id"), + FOREIGN KEY ("lomas_darbiba") REFERENCES "LomasDarbiba" ("id") +); + +CREATE TABLE "SpeletajsIzraisaNotikumu" ( + "speletajs" INT8 NOT NULL, + "speles_notikums" INT8 NOT NULL, + PRIMARY KEY ("speletajs", "speles_notikums"), + FOREIGN KEY ("speletajs") REFERENCES "Speletajs" ("id"), + FOREIGN KEY ("speles_notikums") REFERENCES "SpelesNotikums" ("id") +); + +CREATE TABLE "SpeletajsIetekmeNotikumu" ( + "speletajs" INT8 NOT NULL, + "speles_notikums" INT8 NOT NULL, + PRIMARY KEY ("speletajs", "speles_notikums"), + FOREIGN KEY ("speletajs") REFERENCES "Speletajs" ("id"), + FOREIGN KEY ("speles_notikums") REFERENCES "SpelesNotikums" ("id") +); + +CREATE TABLE "SpelesUzstatijumuLomas" ( + "speles_uzstadijums" INT8 NOT NULL, + "speles_loma" INT8 NOT NULL, + "skaits" INT2 DEFAULT 1 NOT NULL CHECK ("skaits" >= 1), + PRIMARY KEY ("speles_uzstadijums", "speles_loma"), + FOREIGN KEY ("speles_uzstadijums") REFERENCES "SpelesUzstadijums" ("id"), + FOREIGN KEY ("speles_loma") REFERENCES "SpelesLoma" ("id") +); + +CREATE TABLE "SpelesLomasDarbibas" ( + "speles_loma" INT8 NOT NULL, + "lomas_darbiba" INT8 NOT NULL, + PRIMARY KEY ("speles_loma", "lomas_darbiba"), + FOREIGN KEY ("speles_loma") REFERENCES "SpelesLoma" ("id"), + FOREIGN KEY ("lomas_darbiba") REFERENCES "LomasDarbiba" ("id") +); + +CREATE TABLE "NotikumsIetekmeSpeletaju" ( + "speletajs" INT8 NOT NULL, + "speles_notikums" INT8 NOT NULL, + "ir_atlauts" BOOL DEFAULT TRUE, + PRIMARY KEY ("speletajs", "speles_notikums"), + FOREIGN KEY ("speletajs") REFERENCES "Speletajs" ("id"), + FOREIGN KEY ("speles_notikums") REFERENCES "SpelesNotikums" ("id") +); + +CREATE TABLE "Atbilde" ( + "id" SERIAL8 PRIMARY KEY NOT NULL, + "raksta" INT8 NOT NULL, + "atbild" INT8 NOT NULL, + FOREIGN KEY ("raksta") REFERENCES "Sarakste" ("id"), + FOREIGN KEY ("atbild") REFERENCES "Sarakste" ("id") +); diff --git a/src/sql/docker-compose.yml b/sql/docker-compose.yml similarity index 100% rename from src/sql/docker-compose.yml rename to sql/docker-compose.yml diff --git a/src/description/current-situation.tex b/src/description/current-situation.tex deleted file mode 100644 index 036c564..0000000 --- a/src/description/current-situation.tex +++ /dev/null @@ -1,9 +0,0 @@ -\subsection{Esošā stāvokļa apraksts} -Tirgū pastāv vairākas sistēmas un citi programmatūras formāti, piemēram, -lietotnes, kas piedāvā dažādas lomu spēļu variācijas, to skaitā, ``Warewolf -online'', ``Town of Salem'', ``Mafia.gg'', ``BeyondMafia'', ``Mafia: The Game'' -un daudzi citi. Esošiem risinājumiem ir vairākas problēmas: maksas piekļuve, -pārmērīgs iespēju skaits, kas ir pieejamas tikai par maksu, spēle ir pieejama -tikai uz mobilā viedtālruņa. ``Mafija'' īstenos svarīgākās no esošo spēļu -iespējām un pievienos jaunas iespējas, kas papildinās un uzlabos lietotāju -pieredzi, kā arī samazinās maksas funkciju īpatsvaru. diff --git a/src/description/customer.tex b/src/description/customer.tex deleted file mode 100644 index 20697ed..0000000 --- a/src/description/customer.tex +++ /dev/null @@ -1,4 +0,0 @@ -\subsection{Pasūtītājs} -Sistēma nav izstrādāta pēc konkrēta pasūtītāja pieprasījuma, tā ir raksturota -un projektēta ar iespēju realizēt pēc studentu grupas iniciatīvas -programminženierijas kursa ietvaros. diff --git a/src/description/dependencies.tex b/src/description/dependencies.tex deleted file mode 100644 index 8c6b578..0000000 --- a/src/description/dependencies.tex +++ /dev/null @@ -1,17 +0,0 @@ -\subsection{Pieņēmumi un atkarības} -\begin{itemize} - \item Ierīce atbilst un spēj pilnvērtīgi izpildīt sistēmas prasības; - - \item Ierīce uztur stabilu un atbilstoša ātruma interneta savienojumu; - - \item Sistēmā tiks integrēta maksājumu apstrādātāja lietojumprogrammas - saskarne, kas rediģēs noteiktas lietotāja privilēģijas, sniedzot - iespēju iegādāties papildus funkcijas; - - \item Lietotāja izvēlētā pārlūkprogramma atbilst un spēj pilnvērtīgi - izpildīt sistēmas prasības; - - \item Maksājumus apstrādās pasūtītāja izvēlēts pakalpojumu sniedzējs, - nodrošinot tīmekļa vietnes saskarni maksājuma veikšanai un tā apstrādi - ārpus ``MAFIJA'' sistēmas. -\end{itemize} diff --git a/src/description/index.tex b/src/description/index.tex deleted file mode 100644 index 96a6537..0000000 --- a/src/description/index.tex +++ /dev/null @@ -1,8 +0,0 @@ -\section{Vispārējais apraksts} -\input{./src/description/current-situation.tex} -\input{./src/description/customer.tex} -\input{./src/description/perspective.tex} -\input{./src/description/requirements.tex} -\input{./src/description/users.tex} -\input{./src/description/restrictions.tex} -\input{./src/description/dependencies.tex} diff --git a/src/description/perspective.tex b/src/description/perspective.tex deleted file mode 100644 index 78f6664..0000000 --- a/src/description/perspective.tex +++ /dev/null @@ -1,11 +0,0 @@ -\subsection{Produkta perspektīva} -Sistēmā tiek integrēti vai izmantoti citu uzņēmumu un izstrādātāju piedāvāti -pakalpojumi. Produkta realizācijā ir paredzēts izmantot maksājumu apstrādāšanas -pakalpojumus, kamēr tie atbilst sistēmas pieprasītajai funkcionalitātei un -piedāvā optimālākos, kā arī drošākos un efektīvākos risinājumus tirgū. - -Maksājumu apstrādātājs realizēs lietotāju maksas pakalpojumu iegādi konkrētu -papildus funkciju iegūšanai uz noteiktu laiku. Abonementa detaļas tiek glabātas -sistēmā. Tiks izmantota pakalpojumu sniedzēja nodrošināta maksājumu apstrāde -ārpus ``MAFIJA'' sistēmas, glabājot minimālu informāciju, tas ir, klienta -identifikatoru. diff --git a/src/description/requirements.tex b/src/description/requirements.tex deleted file mode 100644 index 19acd5f..0000000 --- a/src/description/requirements.tex +++ /dev/null @@ -1,18 +0,0 @@ -\subsection{Darījumprasības} - -Sistēmā tiks realizētas sekojošās darījumprasības: -\begin{enumerate} - \item Lietotāju reģistrācija, autentifikācija; - \item Lietotāju un to privilēģiju pārvalde; - \item Lietotāju konta apstiprināšana, izmantojot e-pastu; - \item Lietotāju profilu personalizācija un kontu rediģēšana; - \item Lietotāju stāvokļa virtuālajās telpās uzturēšana un izmaiņa; - \item Lietotāju informēšana, izmantojot paziņojumu sistēmu; - \item Sinhronizēta spēles stāvokļa atjaunināšana; - \item Spēles uzstādījumu un lomu klāsta veidošana, rediģēšana un dzēšana; - \item Atvērto un privāto virtuālo spēles istabu pārvalde; - \item Spēles automātiska vadība; - \item Kopēja un ierobežota (lomu grupu atkarīga) tērzēšana; - \item Privilēģiju izmaiņa, izmantojot bezpersonisku maksājumu sistēmu; - \item Lietotāju moderēšana. -\end{enumerate} diff --git a/src/description/restrictions.tex b/src/description/restrictions.tex deleted file mode 100644 index 736d88a..0000000 --- a/src/description/restrictions.tex +++ /dev/null @@ -1,20 +0,0 @@ -\subsection{Vispārējie ierobežojumi} - -\begin{enumerate} - \item Drošības un aizsardzības apsvērumi: - \begin{enumerate} - \item Lietotāju paroles tiek šifrētas pirms glabāšanas, izmantojot SHA-2 algoritmu; - \item Tiek izmantota trešās puses autentifikācijas integrācija. - \end{enumerate} - \item Regulējošās politikas apsvērumi: - \begin{enumerate} - \item Tiek pieprasīta lietotāju atļauja realizēt analītisku datu ievākšanu, izmantojot sīkdatnes. - \end{enumerate} - \item Izstrādes vides, tehnoloģijas un tīmekļa ierobežojumi: - \begin{enumerate} - \item Programmēšanas valodas, to tehniskie ierobežojumi; - \item Responsivitāte; - \item Sistēmas saskarne ir tīmekļa vietne; - \item Sistēmas ietvaros mitināta vietne ir kopīga neatkarīgi no ierīces (netiek izmantots apakšdomēns mobilo tālruņu lietotājiem). - \end{enumerate} -\end{enumerate} diff --git a/src/description/users.tex b/src/description/users.tex deleted file mode 100644 index b2d0246..0000000 --- a/src/description/users.tex +++ /dev/null @@ -1,29 +0,0 @@ -\subsection{Sistēmas lietotāji} - -Neautentificēts lietotājs (viesis), i.e., viesis ir jebkurš lietotājs, kas nav -pieteicies vai reģistrējies sistēmā. Šiem lietotājiem ir pieejamas funkcijas, -lai reģistrētos vai pieteiktos sistēmā; - -Kad lietotājs ir pieteicies un ir autentificēts, tam ir pieejamas reģistrēta -lietotāja grupas privilēģijas, precīzāk, darbības saistītas ar spēli, profilu -un konta pārvaldi. Tā būs vislielākā grupa pēc lietotāju skaita. Maksas -lietotājiem, precīzāk, reģistrētiem lietotājiem, kuriem piesaistīts aktīvs -abonements, tiek piešķirtas papildus funkcijas - izveidot jaunas virtuālās -istabas, izvēlēties spēles konfigurāciju savās istabās un citas. Maksas -lietotāja grupa ir atvasināta no reģistrēta lietotāja grupas. - -Administratoru uzdevumi ietver istabu uzturēšanu un lietotāju moderēšanu ar -darbībām, kā bloķēšana, spēles istabas un lietotāju stāvokļa izmainīšana, konta -informācijas izmaiņa, lomu uzstādījumu un spēles konfigurācijas rediģēšana. -Lietotājs ``Sistēma'' izpilda noteiktas, ar spēles gaitu saistītas darbības, kas -notiek automātiski un kas nav tiešā veidā citu lietotāju grupu kompetencēs. - -Ar lietotājiem saistītās datu plūsmas ir attēlotas sistēmas nultā līmeņa DPD (skat. \ref{fig:dpd-0} att.). - - -\begin{figure}[htbp] - \centering - \includegraphics[width=\linewidth]{./src/img/0tāLīmeņaDPD.png} - \caption{0. līmeņa DPD} - \label{fig:dpd-0} -\end{figure} diff --git a/src/design/entities/account-status.tex b/src/design/entities/account-status.tex deleted file mode 100644 index b0c8bdb..0000000 --- a/src/design/entities/account-status.tex +++ /dev/null @@ -1,3 +0,0 @@ -\begin{entityTable}{KontaStavoklis}{entity-account-status} - \entityTableRow{teksts}{varchar(255)}{unique, not null}{Konta stāvokļa apraksts} -\end{entityTable} diff --git a/src/design/entities/email-confirmation.tex b/src/design/entities/email-confirmation.tex deleted file mode 100644 index 88e91f3..0000000 --- a/src/design/entities/email-confirmation.tex +++ /dev/null @@ -1,4 +0,0 @@ -\begin{entityTable}{EpastaApstiprinajums}{entity-email-confirmation} - \entityTableRow{markieris}{varchar(255)}{unique, not null}{Ģenerēts marķieris e-pasta lietotāja apstiprināšanai} - \entityTableRow{deriguma\_termins}{timestamp}{not null}{Laiks, līdz kuram e-pasta apstiprināšana ir iespējama} -\end{entityTable} diff --git a/src/design/entities/game-event.tex b/src/design/entities/game-event.tex deleted file mode 100644 index 2cd5d7b..0000000 --- a/src/design/entities/game-event.tex +++ /dev/null @@ -1,6 +0,0 @@ -\begin{entityTable}{SpelesNotikums}{entity-game-event} - \entityTableRow{nosaukums}{varchar(255)}{unique, not null}{Notikuma nosaukums} - \entityTableRow{nakts\_pk}{int2}{default 0, not null, check (\lowercase{nakts\_pk} >= 0)}{Spēles nakts pēc kārtas} - \entityTableRow{ir\_redzams}{bool}{default false, not null}{Vai notikums ir redzams spēlētājiem procesa laikā?} - \entityTableRow{izveidosanas\_laiks}{timestamp}{not null, default current\_timestamp}{Laiks, kad dotais spēles notikums tika izveidots/saglabāts datubāzē} -\end{entityTable} diff --git a/src/design/entities/game-role.tex b/src/design/entities/game-role.tex deleted file mode 100644 index 68aef19..0000000 --- a/src/design/entities/game-role.tex +++ /dev/null @@ -1,8 +0,0 @@ -\begin{entityTable}{SpelesLoma}{entity-game-role} - \entityTableRow{nosaukums}{varchar(255)}{unique, not null}{Lomas nosaukums} - \entityTableRow{apraksts}{text}{default '', not null}{Lomas apraksts} - \entityTableRow{max\_speletaju\_ skaits}{int4}{default 1, not null, check (\lowercase{max\_speletaju\_ skaits} > 0)}{Maksimālais spēlētāju skaits spēlē ar doto lomu} - \entityTableRow{ir\_pamata}{bool}{default false, not null}{Vai loma ir spēles pamatā vai lietotāju izveidots?} - \entityTableRow{ir\_mafija}{bool}{default false, not null}{Vai loma ir mafija?} - \entityTableRow{attels}{int8}{}{Lomas attēls, \texttt{FOREING KEY} uz \hyperref[tab:entity-image]{Attels} tabulas id kolonnu} -\end{entityTable} diff --git a/src/design/entities/game-setup.tex b/src/design/entities/game-setup.tex deleted file mode 100644 index 559db70..0000000 --- a/src/design/entities/game-setup.tex +++ /dev/null @@ -1,7 +0,0 @@ -\begin{entityTable}{SpelesKonfiguracija}{entity-game-setup} - \entityTableRow{nosaukums}{varchar(255)}{unique, not null}{Konfigurācijas nosaukums} - \entityTableRow{apraksts}{text}{default '', not null}{Konfigurācijas apraksts} - \entityTableRow{ir\_pamata}{bool}{default false, not null}{Vai spēles konfigurācijas ir spēles pamatā vai lietotāju izveidots} - \entityTableRow{izveidosanas\_laiks}{timestamp}{not null, default current\_timestamp}{Laiks, kad dotais uzstādījums tika izveidots/saglabāts datubāzē} - \entityTableRow{autors}{int8}{not null}{Konfigurācijas autors, \texttt{FOREING KEY} uz \hyperref[tab:entity-user]{Lietotajs} tabulas id kolonnu} -\end{entityTable} diff --git a/src/design/entities/image.tex b/src/design/entities/image.tex deleted file mode 100644 index 4003ea4..0000000 --- a/src/design/entities/image.tex +++ /dev/null @@ -1,4 +0,0 @@ -\begin{entityTable}{Attels}{entity-image} - \entityTableRow{datnes\_adrese}{varchar(255)}{unique, not null}{Saglabātā attēla adrese operētājsistēmā} - \entityTableRow{pievienosanas\_laiks}{timestamp}{default current\_timestamp, not null}{Laiks, kad tika izveidots/saglabāts dotais attēls datubāzē} -\end{entityTable} diff --git a/src/design/entities/index.tex b/src/design/entities/index.tex deleted file mode 100644 index beb224c..0000000 --- a/src/design/entities/index.tex +++ /dev/null @@ -1,37 +0,0 @@ -\subsubsection{Datu bāzes tabulu apraksts} -Datubāzes tabulu lauku, datu tipi, lauka atribūti - obligātums, noklusētās vērtības, primārā atslēga, -unikalitāte - ir aprakstītas atsevišķās tabulās (skat. -\ref{tab:entity-role-action} tab., -\ref{tab:entity-role-disadvantage} tab., -\ref{tab:entity-image} tab., -\ref{tab:entity-subscription-price} tab., -\ref{tab:entity-password-recovery} tab., -\ref{tab:entity-email-confirmation} tab., -\ref{tab:entity-game-role} tab., -\ref{tab:entity-account-status} tab., -\ref{tab:entity-room-status} tab., -\ref{tab:entity-user} tab., -\ref{tab:entity-game-setup} tab., -\ref{tab:entity-player} tab., -\ref{tab:entity-paid-subscription} tab., -\ref{tab:entity-message} tab.) - -Visām tabulām, \texttt{VARCHAR} un \texttt{TEXT} laukiem tiek lietots UTF8 kodējums. - -\input{./src/design/entities/role-action.tex} -\input{./src/design/entities/role-disadvantage.tex} -\input{./src/design/entities/image.tex} -\input{./src/design/entities/subscription-price.tex} -\input{./src/design/entities/password-recovery.tex} -\input{./src/design/entities/email-confirmation.tex} -\input{./src/design/entities/game-role.tex} -\input{./src/design/entities/account-status.tex} -\input{./src/design/entities/subscription-status.tex} -\input{./src/design/entities/room-status.tex} -\input{./src/design/entities/user.tex} -\input{./src/design/entities/game-setup.tex} -\input{./src/design/entities/room.tex} -\input{./src/design/entities/game-event.tex} -\input{./src/design/entities/player.tex} -\input{./src/design/entities/paid-subscription.tex} -\input{./src/design/entities/message.tex} diff --git a/src/design/entities/message.tex b/src/design/entities/message.tex deleted file mode 100644 index 0594b2e..0000000 --- a/src/design/entities/message.tex +++ /dev/null @@ -1,6 +0,0 @@ -\begin{entityTable}{Iszina}{entity-message} - \entityTableRow{teksts}{text}{not null}{Īsziņas teksts} - \entityTableRow{if\_mafijas\_iszina}{bool}{default false, not null}{Vai īsziņas sūtītājs ir mafija?} - \entityTableRow{ir\_izmainita}{bool}{default false, not null}{Vai īsziņas saturs ir izmainīts?} - \entityTableRow{autors}{int8}{not null}{Īsziņas sūtītājs, \texttt{FOREING KEY} uz \hyperref[tab:entity-user]{Lietotajs} tabulas id kolonnu} -\end{entityTable} diff --git a/src/design/entities/paid-subscription.tex b/src/design/entities/paid-subscription.tex deleted file mode 100644 index 355226d..0000000 --- a/src/design/entities/paid-subscription.tex +++ /dev/null @@ -1,9 +0,0 @@ -\begin{entityTable}{MaksasAbonements}{entity-paid-subscription} - \entityTableRow{stripe\_id}{varchar(255)}{unique, not null}{Unikālais identifikators, kurš tiek iegūts no maksājuma procesora klienta - \href{https://stripe.com}{Stripe}} - \entityTableRow{stavoklis}{int8}{not null}{Abonementa stāvoklis, \texttt{FOREING KEY} uz \hyperref[tab:entity-subscription-status]{AbonementaStavoklis} tabulas id kolonnu} - \entityTableRow{sakuma\_laiks}{timestamp}{not null, default current\_timestamp}{Laiks, kad abonements ir aktivizēts} - \entityTableRow{periods}{interval}{not null}{Laika periods dienās, cik ilgi abonements ir aktīvs} - \entityTableRow{atteikums\_laiks}{timestamp}{}{Laiks, kad lietotājs atteicās no abonementa} - \entityTableRow{lietotajs}{int8}{not null}{Abonementa lietotājs, \texttt{FOREING KEY} uz \hyperref[tab:entity-user]{Lietotajs} tabulas id kolonnu} - \entityTableRow{abonementa\_cena}{int8}{not null}{Abonementa cena, \texttt{FOREING KEY} uz \hyperref[tab:entity-subscription-price]{AbonementaCena} tabulas id kolonnu} -\end{entityTable} diff --git a/src/design/entities/password-recovery.tex b/src/design/entities/password-recovery.tex deleted file mode 100644 index ea7bf0e..0000000 --- a/src/design/entities/password-recovery.tex +++ /dev/null @@ -1,4 +0,0 @@ -\begin{entityTable}{ParolesAtjaunosana}{entity-password-recovery} - \entityTableRow{markieris}{varchar(255)}{unique, not null}{Ģenerēts marķieris e-pasta lietotāja paroles atjaunošanai} - \entityTableRow{deriguma\_termins}{timestamp}{not null}{Laiks, līdz kurams paroles atjaunošana ir iespējama} -\end{entityTable} diff --git a/src/design/entities/player.tex b/src/design/entities/player.tex deleted file mode 100644 index 26ec59b..0000000 --- a/src/design/entities/player.tex +++ /dev/null @@ -1,10 +0,0 @@ -\begin{entityTable}{Speletajs}{entity-player} - \entityTableRow{nosaukums}{varchar(255)}{unique, not null}{Notikuma nosaukums} - \entityTableRow{ir\_noslepkavots}{bool}{default false, not null}{Vai dotais spēlētājs ir noslepkavots?} - \entityTableRow{ir\_izbalsots}{bool}{default false, not null}{Vai dotais spēlētājs ir izbalsots?} - \entityTableRow{ir\_izslegts}{bool}{default false, not null}{Vai dotais spēlētājs ir izslēgts?} - \entityTableRow{ir\_aktivs}{bool}{default true, not null}{Vai dotais spēlētājs ir aktīvs?} - \entityTableRow{redz\_mafijas\_sakarus}{bool}{default false, not null}{Vai dotais spēlētājs ir redz mafijas sakarus?} - \entityTableRow{istaba}{int8}{}{Istaba, kurā spēlē dotais spēlētājs, \texttt{FOREING KEY} uz \hyperref[tab:entity-room]{Istaba} tabulas id kolonnu} - \entityTableRow{speles\_loma}{int8}{not null}{Loma, kuru spēlē dotais spēlētājs, \texttt{FOREING KEY} uz \hyperref[tab:entity-game-role]{SpelesLoma} tabulas id kolonnu} -\end{entityTable} diff --git a/src/design/entities/role-action.tex b/src/design/entities/role-action.tex deleted file mode 100644 index af291fb..0000000 --- a/src/design/entities/role-action.tex +++ /dev/null @@ -1,4 +0,0 @@ -\begin{entityTable}{LomasDarbiba}{entity-role-action} - \entityTableRow{nosaukums}{varchar(255)}{unique, not null}{Lomas darbības nosaukums} - \entityTableRow{is\_nekavejoties}{bool}{default false, not null}{Vai lomas darbība ir tūlītēja} -\end{entityTable} diff --git a/src/design/entities/role-disadvantage.tex b/src/design/entities/role-disadvantage.tex deleted file mode 100644 index f4bbf46..0000000 --- a/src/design/entities/role-disadvantage.tex +++ /dev/null @@ -1,4 +0,0 @@ -\begin{entityTable}{LomasTrukums}{entity-role-disadvantage} - \entityTableRow{nosaukums}{varchar(255)}{unique, not null}{Lomas trūkuma nosaukums} - \entityTableRow{apraksts}{text}{default '', not null}{Lomas trūkuma apraksts} -\end{entityTable} diff --git a/src/design/entities/room-status.tex b/src/design/entities/room-status.tex deleted file mode 100644 index d82f3f5..0000000 --- a/src/design/entities/room-status.tex +++ /dev/null @@ -1,3 +0,0 @@ -\begin{entityTable}{IstabasStavoklis}{entity-room-status} - \entityTableRow{teksts}{varchar(255)}{unique, not null}{Istabas stāvokļa apraksts} -\end{entityTable} diff --git a/src/design/entities/room.tex b/src/design/entities/room.tex deleted file mode 100644 index 71d79b0..0000000 --- a/src/design/entities/room.tex +++ /dev/null @@ -1,10 +0,0 @@ -\begin{entityTable}{Istaba}{entity-room} - \entityTableRow{nosaukums}{varchar(255)}{unique, not null}{Istabas Nosaukums} - \entityTableRow{speles\_saksanas\_ laiks}{timestamp}{}{Laiks, kad spēle sākas} - \entityTableRow{speles\_beigsanas\_ laiks}{timestamp}{}{Laiks, kad spēle beidzas} - \entityTableRow{stavoklis}{int8}{not null}{Pašreizējais spēles stāvoklis, \texttt{FOREING KEY} uz \hyperref[tab:entity-room-status]{IstabasStavoklis} tabulas id kolonnu} - \entityTableRow{piekluves\_kods}{char(6)}{unique}{Unikāls istabas piekļuves kods, 6 lielie burtcipari} - \entityTableRow{vai\_rada\_miruso\_ lomu}{bool}{default false, not null}{Vai pēc spēlētāja nāves var atklāt viņa lomu?} - \entityTableRow{izveidosanas\_laiks}{timestamp}{default current\_timestamp, not null}{Laiks, kad dotā spēles istaba tika izveidota/saglabāta datubāzē} - \entityTableRow{speles\_konfiguracija}{int8}{not null}{Spēles uzstādījumi, kurus izmanto dotā istaba, \texttt{FOREING KEY} uz \hyperref[tab:entity-game-setup]{SpelesKonfiguracija} tabulas id kolonnu} -\end{entityTable} diff --git a/src/design/entities/subscription-price.tex b/src/design/entities/subscription-price.tex deleted file mode 100644 index c9de634..0000000 --- a/src/design/entities/subscription-price.tex +++ /dev/null @@ -1,5 +0,0 @@ -\begin{entityTable}{AbonementaCena}{entity-subscription-price} - \entityTableRow{cena}{decimal(16,2)}{default 0, not null, check (\lowercase{cena} >= 0)}{Abonementa cena, kuras garums var būt līdz 16 simboliem un tiek noapaļots līdz 2 cipariem aiz komata} - \entityTableRow{pievienosanas\_laiks}{timestamp}{default current\_timestamp, not null}{Laiks, kad tika izveidots/saglabāts dotā cena datubāzē} - \entityTableRow{aktivizesanas\_laiks}{timestamp}{not null, check (\lowercase{aktivizesanas\_ laiks} >= \lowercase{pievienosanas\_ laiks})}{Laiks, no kura ši cena ir aktīva} -\end{entityTable} diff --git a/src/design/entities/subscription-status.tex b/src/design/entities/subscription-status.tex deleted file mode 100644 index ed527b5..0000000 --- a/src/design/entities/subscription-status.tex +++ /dev/null @@ -1,3 +0,0 @@ -\begin{entityTable}{AbonementaStavoklis}{entity-subscription-status} - \entityTableRow{teksts}{varchar(255)}{unique, not null}{Abonementa stāvokļa apraksts} -\end{entityTable} diff --git a/src/design/entities/user.tex b/src/design/entities/user.tex deleted file mode 100644 index 7ef862a..0000000 --- a/src/design/entities/user.tex +++ /dev/null @@ -1,14 +0,0 @@ -\begin{entityTable}{Lietotajs}{entity-user} - \entityTableRow{segvards}{varchar(255)}{unique, not null}{Lietotājvārds} - \entityTableRow{epasts}{varchar(255)}{unique, not null}{Lietotāja e-pasts} - \entityTableRow{parole}{varchar(255)}{not null}{Šifrēta lietotāja parole} - \entityTableRow{vards}{varchar(255)}{default '', not null}{Lietotāja vārds} - \entityTableRow{uzvards}{varchar(255)}{default '', not null}{Lietotāja uzvārds} - \entityTableRow{dzimsanas\_datums}{date}{}{Lietotāja dzimšanas datums} - \entityTableRow{bio\_info}{text}{default ''}{Lietotāja apraksts par sevi} - \entityTableRow{izveidosanas\_laiks}{timestamp}{not null, default current\_timestamp}{Laiks, kad tika izveidots/saglabāts dotais lietotājs datubāzē} - \entityTableRow{attels}{int8}{}{Lietotāja profila attēls, \texttt{FOREING KEY} uz \hyperref[tab:entity-image]{Attels} tabulas id kolonnu} - \entityTableRow{konta\_stavoklis}{int8}{}{Lietotāja konta stāvoklis, \texttt{FOREING KEY} uz \hyperref[tab:entity-account-status]{KontaStavoklis} tabulas id kolonnu} - \entityTableRow{epasta\_apstiprinajums}{int8}{}{Lietotāja e-pasta apstiprinājums, \texttt{FOREING KEY} uz \hyperref[tab:entity-email-confirmation]{EpastaApstiprinajums} tabulas id kolonnu} - \entityTableRow{paroles\_atjaunosana}{int8}{}{Lietotāja paroles atjaunošana, \texttt{FOREING KEY} uz \hyperref[tab:entity-password-recovery]{ParolesAtjaunojana} tabulas id kolonnu} -\end{entityTable} diff --git a/src/design/index.tex b/src/design/index.tex deleted file mode 100644 index afcec3b..0000000 --- a/src/design/index.tex +++ /dev/null @@ -1,4 +0,0 @@ -\section{Programmatūras projektējuma apraksts} -\subsection{Datu bāzes projektējums} -\input{./src/design/logical-description.tex} -\input{./src/design/entities/index.tex} diff --git a/src/design/logical-description.tex b/src/design/logical-description.tex deleted file mode 100644 index 77f8ae4..0000000 --- a/src/design/logical-description.tex +++ /dev/null @@ -1,7 +0,0 @@ -\subsubsection{Datu bāzes loģiskais ER modelis} -\begin{figure}[htbp] - \centering - \includegraphics[width=\linewidth]{./src/img/LogiskaisERDModelis.png} - \caption{Datu bāzes loģiskais ER modelis} - \label{fig:logical-model} -\end{figure} diff --git a/src/img/0tāLīmeņaDPD.png b/src/img/0tāLīmeņaDPD.png deleted file mode 100644 index e708054..0000000 Binary files a/src/img/0tāLīmeņaDPD.png and /dev/null differ diff --git a/src/img/1LīmeņaDPDLietotājuDatubāze.png b/src/img/1LīmeņaDPDLietotājuDatubāze.png deleted file mode 100644 index 3629c59..0000000 Binary files a/src/img/1LīmeņaDPDLietotājuDatubāze.png and /dev/null differ diff --git a/src/img/1LīmeņaDPDSpēlesDatubāze.png b/src/img/1LīmeņaDPDSpēlesDatubāze.png deleted file mode 100644 index 22d5c55..0000000 Binary files a/src/img/1LīmeņaDPDSpēlesDatubāze.png and /dev/null differ diff --git a/src/img/CenuModulis.png b/src/img/CenuModulis.png deleted file mode 100644 index 3549171..0000000 Binary files a/src/img/CenuModulis.png and /dev/null differ diff --git a/src/img/FiziskaisERDModelis.png b/src/img/FiziskaisERDModelis.png deleted file mode 100644 index 5321ea1..0000000 Binary files a/src/img/FiziskaisERDModelis.png and /dev/null differ diff --git a/src/img/KonceptualaisERModelis.png b/src/img/KonceptualaisERModelis.png deleted file mode 100644 index 63b25a3..0000000 Binary files a/src/img/KonceptualaisERModelis.png and /dev/null differ diff --git a/src/img/LietotājuKontuModulis.png b/src/img/LietotājuKontuModulis.png deleted file mode 100644 index 6229c33..0000000 Binary files a/src/img/LietotājuKontuModulis.png and /dev/null differ diff --git a/src/img/LogiskaisERDModelis.png b/src/img/LogiskaisERDModelis.png deleted file mode 100644 index 45671d7..0000000 Binary files a/src/img/LogiskaisERDModelis.png and /dev/null differ diff --git a/src/img/MaksasAbonementaModuls.png b/src/img/MaksasAbonementaModuls.png deleted file mode 100644 index b840dc7..0000000 Binary files a/src/img/MaksasAbonementaModuls.png and /dev/null differ diff --git a/src/img/ReģistrācijasPieteikšanāsModulis.png b/src/img/ReģistrācijasPieteikšanāsModulis.png deleted file mode 100644 index 4034566..0000000 Binary files a/src/img/ReģistrācijasPieteikšanāsModulis.png and /dev/null differ diff --git a/src/img/SpēlesGaitasModulis.png b/src/img/SpēlesGaitasModulis.png deleted file mode 100644 index bf6c277..0000000 Binary files a/src/img/SpēlesGaitasModulis.png and /dev/null differ diff --git a/src/img/SpēlesIstabasModulis.png b/src/img/SpēlesIstabasModulis.png deleted file mode 100644 index f26e4ca..0000000 Binary files a/src/img/SpēlesIstabasModulis.png and /dev/null differ diff --git a/src/img/SpēlesLomuModulis.png b/src/img/SpēlesLomuModulis.png deleted file mode 100644 index b579da4..0000000 Binary files a/src/img/SpēlesLomuModulis.png and /dev/null differ diff --git a/src/img/SpēlesUzstādījumuModulis.png b/src/img/SpēlesUzstādījumuModulis.png deleted file mode 100644 index a984a8a..0000000 Binary files a/src/img/SpēlesUzstādījumuModulis.png and /dev/null differ diff --git a/src/img/TerzēšanasModulis.png b/src/img/TerzēšanasModulis.png deleted file mode 100644 index cdb0c60..0000000 Binary files a/src/img/TerzēšanasModulis.png and /dev/null differ diff --git a/src/introduction/documents.tex b/src/introduction/documents.tex deleted file mode 100644 index 14ec1c2..0000000 --- a/src/introduction/documents.tex +++ /dev/null @@ -1,4 +0,0 @@ -\subsection*{Saistība ar citiem dokumentiem} -PPS ir izstrādāta, ievērojot LVS 68:1996 ``Programmatūras prasību -specifikācijas ceļvedis`` un LVS 72:1996 ''Ieteicamā prakse programmatūras -projektējuma aprakstīšanai” standarta prasības. diff --git a/src/introduction/index.tex b/src/introduction/index.tex deleted file mode 100644 index 45164aa..0000000 --- a/src/introduction/index.tex +++ /dev/null @@ -1,6 +0,0 @@ -\section*{Ievads} -\addcontentsline{toc}{section}{Ievads} -\input{./src/introduction/purpose.tex} -\input{./src/introduction/scope.tex} -\input{./src/introduction/documents.tex} -\input{./src/introduction/overview.tex} diff --git a/src/introduction/overview.tex b/src/introduction/overview.tex deleted file mode 100644 index 4f818b0..0000000 --- a/src/introduction/overview.tex +++ /dev/null @@ -1,22 +0,0 @@ -\subsection*{Pārskats} - -Dokumenta ievads satur tā nolūku, izstrādājamās programmatūras skaidrojumu, -vispārīgu programmatūras mērķi un funkciju klāstu, saistību ar citiem -dokumentiem, kuru prasības tika izmantotas dokumenta izstrādāšanas gaitā, kā -arī pārskatu par dokumenta daļu saturu ar dokumenta struktūras skaidrojumu. - -Pirmajā nodaļa tiek aprakstīti faktori, kas var ietekmēt produktu un tā -prasības. Nodaļā tiek pamatota programmatūras izstrādes motivācija un nolūks, -aprakstītas produkta vieta citu sistēmu perspektīvā, galvenās augsta līmeņa -darījumprasības, sistēmas lietotāju grupu lomas un mērķi, kā arī tiek -uzskaitīti faktori, kas var ierobežot vai ietekmēt programmatūras prasību -specifikāciju. - -Otrajā nodaļā tiek norādītas konkrētas prasības, kas satur visu nepieciešamo -programmatūras projektējuma veidošanai. Tā ietver: datu bāzes konceptuālo -modeli, funkcionālās prasības, kas apraksta sistēmas funkciju sadalījumu pa -moduļiem, arējās saskarnes prasības un sistēmas vispārējās prasības. - -Trešajā nodaļā tiek aprakstīts projektējums, kas ietver sistēmas sastāvdaļu -aprakstu. Nodaļa satur datu bāzes projektējumu, tās fizisko modeli un daļēju -funkciju un lietotāju saskarņu projektējumu. diff --git a/src/introduction/purpose.tex b/src/introduction/purpose.tex deleted file mode 100644 index 06b849a..0000000 --- a/src/introduction/purpose.tex +++ /dev/null @@ -1,4 +0,0 @@ -\subsection*{Nolūks} -Šī dokumenta mērķis ir raksturot tiešsaistes sistēmas ``Mafija'' programmatūras -prasības. Sistēma ir paredzēta individuāliem lietotājiem, kuru interesēs ir -iesaistīties savstarpējā sociālā aktivitātē lomu spēles formātā. diff --git a/src/introduction/scope.tex b/src/introduction/scope.tex deleted file mode 100644 index 0bc85d7..0000000 --- a/src/introduction/scope.tex +++ /dev/null @@ -1,34 +0,0 @@ -\subsection*{Darbības sfēra} - -Sistēma ``Mafija'' ir atvasināta no plaši pazīstamas sociālas lomu spēles, kas -balstās dedukcijā. Spēlē piedalās indivīdi - Spēlētāji, kas sadalīti vairākās -grupās un tajās ietvertās lomās. Lomu grupa ``Ciems'' lomas ``Iedzīvotājs'' -ietvaros cenšas izdibināt kuri ir lomu grupas ``Mafija'' locekļi. Mafijas mērķis -ir radīt haosu ciema iedzīvotāju vidū un pakāpeniski izslēgt ciema iedzīvotājus -no spēles, izmantojot stratēģisku manipulāciju vai iedalītās lomas darbības. -Spēlētāji, kuri nav ietverti ne ``Ciems'', ne ``Mafija'' lomu grupā cenšas sasniegt -tiem iedalītās lomas mērķi. Tikai ``Mafijas'' locekļiem ir informācija par to, -kuri no spēlētāju loka pieder ``Mafija'' lomu grupai. Katram spēlētājam jāizmanto -individuāla ierīce, kas var pieslēgties tīmeklim, lai pieteiktos sistēmā, -pievienotos konkrētajai spēlei un piedalītos tajā. - -Katra spēlētāja ierīcē spēles sesijas laikā tiek parādīta informācija par -iedalīto lomu un ar to saistītajām, pieejamajām darbībām, kuru nav paredzēts -vai atļauts rādīt citiem spēlētājiem. Sistēmas vizuālā saskarne ietver -informāciju par spēles aktuālo stāvokli, precīzāk, fāzi (diena / nakts), spēles -ilgumu, palikušo spēlētāju skaitu un citiem spēli raksturojošiem faktoriem. - -Spēlētāja darbību klāsts ir atkarīgas no iedalītās lomas un aktuālā spēles -stāvokļa. Spēles organizatoram (maksas lietotājam) ir iespēja izveidot virtuālu -telpu un pielāgot tās iestatījumus, lai organizētu spēli vai mainītu to -konfigurāciju, kas ietver noteiktās lomas, kā arī mainīt un veidot jaunas -lomas. - -Katram spēlētājam tiek nodrošināta sinhronizēta informācija par spēles tekošo -stāvokli un pieejamajām darbībām, tai skaitā, paziņojumi par spēles stāvokļa -izmaiņām. - -Ārpus spēles sesijas, lietotājiem ir pieejams spēļu istabu saraksts, kas var -ietvert gan atvērtas, gan privātas virtuālās spēļu telpas, statistikas -pārskats, kurā pieejama statistika par jau izspēlētajām spēlēm, un lietotāja -profils, kurā var rediģēt lietotāju raksturojošo informāciju. diff --git a/src/legends.tex b/src/legends.tex deleted file mode 100644 index f5aeb57..0000000 --- a/src/legends.tex +++ /dev/null @@ -1,58 +0,0 @@ -\section*{Apzīmējumu saraksts} -\addcontentsline{toc}{section}{Apzīmējumu saraksts} -\setlength{\parindent}{0pt} -\textbf{API} - lietojumprogrammu saskarne (angl. Application Program Interface); - -\textbf{Abonements} - uz noteiktu laiku par maksu piešķirtās papildus lietotāja iespējas; - -\textbf{CSRF} - Starpvietņu pieprasījuma viltošana (angl. Cross-Site Request Forgery) - uzbrukuma veids, kurā ļaunprātīgi pieprasījumi tiek izsūtīti no lietotāja pārlūka, izmantojot lietotāja autentifikācijas datus; - -\textbf{DPD} - datu plūsmas diagramma; - -\textbf{ER modelis} - entitāšu saišu modelis (angl. Entity-Relationship model); - -\textbf{GDPR} - vispārīgā datu aizsardzības regula (angl. General Data Protection Regulation) - Eiropas Savienības regula, kas nosaka kā jāapstrādā un jāaizsargā personu dati; - -\textbf{HTTP} - hiperteksta pārsūtīšanas protokols (angl. Hypertext Transfer Protocol) - protokols datu pārsūtīšanai tīmeklī, galvenokārt izmantojot tīmekļa lapas; - -\textbf{IP adrese} - Interneta protokola adrese (angl. Internet Protocol address) - unikāls numurs, kas tiek piešķirts katrai ierīcei, kas ir savienota ar datoru tīklu, kas izmanto IP komunikāciju; - -\textbf{Istaba} - lietotāju kopa, kas ir saistīti vienas spēles ietvaros, i.e., spēles instance; - -\textbf{Izvairīšanās simboli} - izvairīšanās simboli (angl. escape symbols vai escape characters) ir īpaši simboli, kas ļauj iekļaut teksta virknēs simbolus, kuri parasti ir rezervēti citām funkcijām; - -\textbf{Karodziņš} - Būla mainīgais, i.e., mainīgais, kas var būt patiess vai nepatiess; - -\textbf{Komandu injekcija} - drošības uzbrukuma veids, kurā uzbrucējs var izpildīt ļaunprātīgas komandas sistēmā, izmantojot drošības nepilnības; - -\textbf{Loma} - spēlēs loma, kam piemīt noteiktas darbības un mērķis; - -\textbf{Maksas siena} - maksājums par lietotāju pieeju daļai no sistēmas piedāvātās funkcionalitātes; - -\textbf{OWASP} - atvērtā tīmekļa lietojumprogrammu drošības projekts (angl. Open Web Application Security Project) - starptautiska bezpeļņas organizācija, kas izstrādā un popularizē drošības labās prakses tīmekļa lietojumprogrammās; - -\textbf{PPA} - programmatūras projektējuma apraksts; - -\textbf{PPS} - programmatūras prasību specifikācija; - -\textbf{SQL injekcija} - drošības apdraudējums, kas rodas, kad uzbrucējs var ievietot vai ``injicēt'' SQL komandas datu bāzes vaicājumā, tādējādi mainot tā darbību vai izgūstot konfidenciālu informāciju; - -\textbf{Sanitizēšana} - Datu vai ievades apstrāde, lai noņemtu vai neitralizētu potenciāli kaitīgus vai nevēlamus elementus; - -\textbf{Sistēmas loma} - sistēmas lietotāju grupa ar noteiktām privilēģijām; - -\textbf{Skripts} - Automatizēta instrukciju virkne, kas izpilda noteiktas darbības programmēšanas vai sistēmas vidē; - -\textbf{Spēlētājs} - lietotāja ieraksts vienas virtuālās istabas kontekstā; - -\textbf{Sāls pievienošana} - Drošības metode, kurā pirms paroles jaucējfunkcijas izmantošanas tai tiek pievienots nejaušs simbolu virknes fragments, lai padarītu paroles atšifrēšanu sarežģītāku; - -\textbf{UTF8} - Vienota teksta formāta kodējums 8-bitu garumā (angl. Unicode Transformation Format - 8 bit) - populārs teksta kodējums, kas atbalsta visu pasaules valodu rakstzīmes; - -\textbf{WCAG - Tīmekļa satura pieejamības vadlīnijas (angl. Web Content Accessibility Guidelines)} - starptautiski standarti, kas nosaka, kā padarīt tīmekļa saturu pieejamāku cilvēkiem ar dažādām invaliditātēm; - -\textbf{XSS} - Starpvietņu skriptēšana (angl. Cross-Site Scripting) - drošības uzbrukuma veids, kurā uzbrucēji ievieto ļaunprātīgus skriptus tīmekļa lapā, kas tiek izpildīti citu lietotāju pārlūkos. - - - -\setlength{\parindent}{1cm} % Leave as last line diff --git a/src/requirements/conceptual-description.tex b/src/requirements/conceptual-description.tex deleted file mode 100644 index 11ac63b..0000000 --- a/src/requirements/conceptual-description.tex +++ /dev/null @@ -1,26 +0,0 @@ -\subsection{Konceptuālais datu bāzes apraksts} -Konceptuālajā modelī redzamās entītātes no konceptuālā ER modeļa (\ref{fig:conceptual-model} attēls): -\begin{itemize} - \item Lietotājs - reģistrēts lietotājs, kas pieder noteiktai grupai; - \item Attēls - datnes metadati un tās adrese, kas ir saistīta ar lietotāju vai spēles lomu; - \item Maksas abonements - lietotāju maksas abonementa dati. - \item Abonementa cena - cena par abonementu, kas darbojas noteiktā laika periodā. - \item Spēles uzstādījums - vairāku spēles lomu kopa, kas ir izveidojamas arī publiski (maksas spēlētājiem) - \item Spēles loma - spēlē izmantojamās lomas apraksts, katrai lomai obligāti piemīt trūkumi un darbības. - Tā var tikt izveidota publiski (analoģiski spēles uzstādījumiem); - \item Lomas darbība - vienai vai vairākām spēles lomas piemītošās spēles darbības apraksts un spēlei specifiskie atribūti(/-s); - \item Lomas trūkums - vienai vai vairākām spēles lomas piemītošā trūkuma apraksts; - \item Spēlētājs - vienai virtuālai spēles istabai piederošais spēlētājs. - Tam piemīt viena spēles loma un var būt vairākas spēles gaitā veiktās - lomai atbilstošās darbības; - \item Īsziņa - virtuālās istabas tērzēšanā izveidotā īsziņa, kas tiek saistīta ar vienu spēlētāju un var atbildēt uz citu īsziņu izveides laikā; - \item Spēles notikums - spēles fāzes maiņa, spēlētāju izslēgšana, piemēram, izbalsošana vai slepkavība, un citi. - \item Spēles virtuāla istaba - vienas gaidāmas, tekošās vai pagātnē notikušas spēles, kam piemīt spēlētāji, spēles uzstādījumi, spēles notikumi, izveidotājs (lietotājs maskas lietotāja grupā); -\end{itemize} - -\begin{figure}[htbp] - \centering - \includegraphics[width=\linewidth]{./src/img/KonceptualaisERModelis.png} - \caption{Datu bāzes konceptuālais ER modelis} - \label{fig:conceptual-model} -\end{figure} diff --git a/src/requirements/functional-requirements/IO-functions/IIDP09.tex b/src/requirements/functional-requirements/IO-functions/IIDP09.tex deleted file mode 100644 index e0aab8a..0000000 --- a/src/requirements/functional-requirements/IO-functions/IIDP09.tex +++ /dev/null @@ -1,16 +0,0 @@ -\parameterTable -{Biogrāfiskā informācija} -{IIDP09} -{ - Reģistrēta lietotāja pievienotā profila informācija teksta formātā. -} -{ - \begin{enumerate} - \item Simbolu virkne garumā līdz 512 simboliem; - \item Atļautie simboli: Unikoda lielie burti (Lu), mazie burti (Ll), virsraksta burti (Lt,) modifikatoru burti (Lm), citi burti (Lo), speciālie simboli. - \end{enumerate} -} -{ - Dzimis ēteriskā meža sirdī, vienmēr biju noskaņots uz vējiem. - Jau no mazotnes parādīju iedzimtu spēju sazināties ar vēsmām un brāzmām, kas plūda cauri senajiem kokiem. -} diff --git a/src/requirements/functional-requirements/IO-functions/index.tex b/src/requirements/functional-requirements/IO-functions/index.tex deleted file mode 100644 index 6b778a6..0000000 --- a/src/requirements/functional-requirements/IO-functions/index.tex +++ /dev/null @@ -1,7 +0,0 @@ -\subsubsection{Kopīgās funkcijas ievades / izvades datu prasības} -Apakšnodaļa ietver informāciju par funkciju parametriem, tai skaitā, nosaukumu, identifikatoru, aprakstu, prasībām un parametru vērtību piemēru, ja tas ir nepieciešams. - -\setlength{\parindent}{0pt} -\input{./src/requirements/functional-requirements/IO-functions/parameter/index.tex} -\input{./src/requirements/functional-requirements/IO-functions/procedure/index.tex} -\setlength{\parindent}{1cm} diff --git a/src/requirements/functional-requirements/IO-functions/parameter/IIDP01.tex b/src/requirements/functional-requirements/IO-functions/parameter/IIDP01.tex deleted file mode 100644 index 973694a..0000000 --- a/src/requirements/functional-requirements/IO-functions/parameter/IIDP01.tex +++ /dev/null @@ -1,19 +0,0 @@ -\parameterTable -{Datuma simbolu virkne} -{IIDP01} -{ - Datums, kas ir reprezentēts ar simbolu virkni noteiktā formātā un laika zonā (sistēmas ietvaros tiek izmantota viena laika zona). -} -{ - \begin{enumerate} - \item Jāatbilst standarta ISO 8601 datumu formātam; - \item Gadam jābūt 4 cipariem; - \item Mēnesim un gadam jāsatur 2 ciparus, ar sākuma nullēm, ja attiecināms; - \item Gadu, mēnesi un dienu jāatdala ar svītru (-); - \item Datumu jānosaka pēc koordinētās universālās laika zonas (UTC); - \item Struktūru raksturo shēma: YYYY-MM-DD, kur Y simboli ir aizvietojami ar gadu, M ar mēnesi un D ar dienu. - \end{enumerate} -} -{ - 2023-10-22 -} diff --git a/src/requirements/functional-requirements/IO-functions/parameter/IIDP02.tex b/src/requirements/functional-requirements/IO-functions/parameter/IIDP02.tex deleted file mode 100644 index 5136108..0000000 --- a/src/requirements/functional-requirements/IO-functions/parameter/IIDP02.tex +++ /dev/null @@ -1,20 +0,0 @@ -\parameterTable -{Laika simbolu virkne} -{IIDP02} -{ - Datums un laiks, kas ir reprezentēts ar simbolu virkni noteiktā formātā un laika zonā (sistēmas ietvaros tiek izmantota viena laika zona). -} -{ - \begin{enumerate} - \item Jāatbilst standarta ISO 8601 datumu un laika formātam; - \item Gadam jābūt 4 cipariem; - \item Mēnesim un gadam jāsatur 2 ciparus, ar sākuma nullēm, ja attiecināms; - \item Gadu, mēnesi un dienu jāatdala ar svītru; - \item Stundai un minūtei un sekundei jābūt 2 cipariem, ar sākuma nullēm, ja nepieciešam; - \item Laiks un datums jānosaka pēc koordinētās universālās laika zonas (UTC); - \item Struktūru raksturo shēma: YYYY-MM-DDThh:mm:ss, kur Y simboli ir aizvietojami ar gadu, M ar mēnesi un D ar dienu, kā arī h simboli ir aizvietojami ar stundām, m ar minūtēm un s ar sekundēm. - \end{enumerate} -} -{ - 2023-10-22T12:30:12 -} diff --git a/src/requirements/functional-requirements/IO-functions/parameter/IIDP03.tex b/src/requirements/functional-requirements/IO-functions/parameter/IIDP03.tex deleted file mode 100644 index 906e421..0000000 --- a/src/requirements/functional-requirements/IO-functions/parameter/IIDP03.tex +++ /dev/null @@ -1,14 +0,0 @@ -\parameterTable -{Skaitlisks stāvokļa kods} -{IIDP03} -{ - Skaitlis, kas reprezentē noteiktu stāvokli funkcijas darbībai vai datubāzes entitātei. -} -{ - \begin{enumerate} - \item Vesels pozitīvs skaitlis. - \end{enumerate} -} -{ - 253 -} diff --git a/src/requirements/functional-requirements/IO-functions/parameter/IIDP04.tex b/src/requirements/functional-requirements/IO-functions/parameter/IIDP04.tex deleted file mode 100644 index 2e4821c..0000000 --- a/src/requirements/functional-requirements/IO-functions/parameter/IIDP04.tex +++ /dev/null @@ -1,15 +0,0 @@ -\parameterTable -{Vārds un uzvārds} -{IIDP04} -{ - Reģistrēta lietotāja vārds un uzvārds. -} -{ - \begin{enumerate} - \item Simbolu virkne garumā līdz 255 simboliem; - \item Atļautie simbola: unikoda lielie burti (Lu), mazie burti (Ll), virsraksta burti (Lt,) modifikatoru burti (Lm), citi burti (Lo), atstarpe, domuzīme. - \end{enumerate} -} -{ - % FIX: add example -} diff --git a/src/requirements/functional-requirements/IO-functions/parameter/IIDP05.tex b/src/requirements/functional-requirements/IO-functions/parameter/IIDP05.tex deleted file mode 100644 index 9c91e56..0000000 --- a/src/requirements/functional-requirements/IO-functions/parameter/IIDP05.tex +++ /dev/null @@ -1,15 +0,0 @@ -\parameterTable -{E-pasts} -{IIDP05} -{ - Reģistrēta lietotāja e-pasts. -} -{ - \begin{enumerate} - \item Simbolu virkne garumā līdz 255 simboliem; - \item Jāatbilst standarta RFC 2822 interneta ziņu formātam. - \end{enumerate} -} -{ - lietotajvārds@domens.lv -} diff --git a/src/requirements/functional-requirements/IO-functions/parameter/IIDP06.tex b/src/requirements/functional-requirements/IO-functions/parameter/IIDP06.tex deleted file mode 100644 index 73edce5..0000000 --- a/src/requirements/functional-requirements/IO-functions/parameter/IIDP06.tex +++ /dev/null @@ -1,21 +0,0 @@ -\parameterTable -{Parole} -{IIDP06} -{ - Reģistrēta lietotāja e-pasts -} -{ - \begin{enumerate} - \item Simbolu virkne garumā no 8 līdz 127 simboliem; - \item Var saturēt burtciparu simbolus, skaitļus, atstarpi, speciālos simbolus: - izsaukuma zīmi (!), dubultpēdiņas (``), skaitļa zīmi (\#), dolāra zīmi (\$), - procenta zīmi (\%), ampersandu (\&), pēdiņas (`), iekavas (()), figūriekavas (\{\}), zvaigznīti (*), - plusu (+), komatu (,), mīnusu (-), punktu (.), slīpsvītru (/), kolu (:), semikolu (;), - salīdzinājuma zīmes (< >), vienādības zīmi (=), jautājuma zīmi (?), ``et'' zīmi (@), - slīpsvītru (/), pasvītru (\_), vertikālo joslu (|), tildi ($\sim$); % TODO: replace all characters with math chars - \item Minimālās drošības prasības: satur vismaz vienu lielo un mazo burtu, vienu ciparu. - \end{enumerate} -} -{ - % FIX: add example -} diff --git a/src/requirements/functional-requirements/IO-functions/parameter/IIDP07.tex b/src/requirements/functional-requirements/IO-functions/parameter/IIDP07.tex deleted file mode 100644 index 11ed4ba..0000000 --- a/src/requirements/functional-requirements/IO-functions/parameter/IIDP07.tex +++ /dev/null @@ -1,15 +0,0 @@ -\parameterTable -{Segvārds} -{IIDP07} -{ - Reģistrēta lietotāja vārds, kas tiek izmantots saskarnes personalizācijai. -} -{ - \begin{enumerate} - \item Simbolu virkne garumā no 6 līdz 255 simboliem; - \item Atļautie simboli: lielie burti (Lu), mazie burti (Ll, virsraksta burti (Lt,) modifikatoru burti (Lm), citi burti (Lo), atstarpe, domuzīme, apakšsvītra. - \end{enumerate} -} -{ - % FIX: add example -} diff --git a/src/requirements/functional-requirements/IO-functions/parameter/IIDP08.tex b/src/requirements/functional-requirements/IO-functions/parameter/IIDP08.tex deleted file mode 100644 index 333b5ba..0000000 --- a/src/requirements/functional-requirements/IO-functions/parameter/IIDP08.tex +++ /dev/null @@ -1,16 +0,0 @@ -\parameterTable -{Profila attēls} -{IIDP08} -{ - Reģistrēta lietotāja attēla datne. -} -{ - \begin{enumerate} - \item Attēla datne; - \item Paplašinājums ir viens no: JPEG, JPG, GIF, PNG, WEBP; - \item Izmērs nepārsniedz 1MB. - \end{enumerate} -} -{ - % FIX: add example -} diff --git a/src/requirements/functional-requirements/IO-functions/parameter/IIDP09.tex b/src/requirements/functional-requirements/IO-functions/parameter/IIDP09.tex deleted file mode 100644 index e0aab8a..0000000 --- a/src/requirements/functional-requirements/IO-functions/parameter/IIDP09.tex +++ /dev/null @@ -1,16 +0,0 @@ -\parameterTable -{Biogrāfiskā informācija} -{IIDP09} -{ - Reģistrēta lietotāja pievienotā profila informācija teksta formātā. -} -{ - \begin{enumerate} - \item Simbolu virkne garumā līdz 512 simboliem; - \item Atļautie simboli: Unikoda lielie burti (Lu), mazie burti (Ll), virsraksta burti (Lt,) modifikatoru burti (Lm), citi burti (Lo), speciālie simboli. - \end{enumerate} -} -{ - Dzimis ēteriskā meža sirdī, vienmēr biju noskaņots uz vējiem. - Jau no mazotnes parādīju iedzimtu spēju sazināties ar vēsmām un brāzmām, kas plūda cauri senajiem kokiem. -} diff --git a/src/requirements/functional-requirements/IO-functions/parameter/IIDP10.tex b/src/requirements/functional-requirements/IO-functions/parameter/IIDP10.tex deleted file mode 100644 index 5ca7c6d..0000000 --- a/src/requirements/functional-requirements/IO-functions/parameter/IIDP10.tex +++ /dev/null @@ -1,14 +0,0 @@ -\parameterTable -{Entitātes identifikators} -{IIDP10} -{ - Datubāzē izmantots skaitlisks entitātes identifikators. -} -{ - \begin{enumerate} - \item Vesels pozitīvs skaitlis - \end{enumerate} -} -{ - 253 -} diff --git a/src/requirements/functional-requirements/IO-functions/parameter/IIDP11.tex b/src/requirements/functional-requirements/IO-functions/parameter/IIDP11.tex deleted file mode 100644 index f4b6d1b..0000000 --- a/src/requirements/functional-requirements/IO-functions/parameter/IIDP11.tex +++ /dev/null @@ -1,14 +0,0 @@ -\parameterTable -{Kārtošanas kods} -{IIDP11} -{ - Skaitlisks kods, kas atbilst kādam atribūtam, kurš ir kārtojams: 0 - nekārtot, 1 - kārtot augoši, 2 - kārtot dilstoši. -} -{ - \begin{enumerate} - \item Vesels pozitīvs skaitlis - \end{enumerate} -} -{ - 253 -} diff --git a/src/requirements/functional-requirements/IO-functions/parameter/IIDP12.tex b/src/requirements/functional-requirements/IO-functions/parameter/IIDP12.tex deleted file mode 100644 index 05f0fe7..0000000 --- a/src/requirements/functional-requirements/IO-functions/parameter/IIDP12.tex +++ /dev/null @@ -1,15 +0,0 @@ -\parameterTable -{Datubāzes atribūta nosaukums} -{IIDP12} -{ - Datubāzes atribūta nosaukums. -} -{ - \begin{enumerate} - \item Simbolu virkne garumā līdz 127 simboliem; - \item Atļautie simboli: Unikoda mazie burti (Ll), pasvītra. - \end{enumerate} -} -{ - % FIX: add example -} diff --git a/src/requirements/functional-requirements/IO-functions/parameter/IIDP13.tex b/src/requirements/functional-requirements/IO-functions/parameter/IIDP13.tex deleted file mode 100644 index 204e543..0000000 --- a/src/requirements/functional-requirements/IO-functions/parameter/IIDP13.tex +++ /dev/null @@ -1,15 +0,0 @@ -\parameterTable -{Datubāzes pieprasījums} -{IIDP13} -{ - Datubāzes pieprasījums. -} -{ - \begin{enumerate} - \item Pieprasījums PostgreSQL formātā iekodēts simbolu virknes struktūrā; - \item Pieprasījumā jābūt iespējai rediģēt pastāvošos un pievienot papildus nosacījumus. - \end{enumerate} -} -{ - % FIX: add example -} diff --git a/src/requirements/functional-requirements/IO-functions/parameter/IIDP14.tex b/src/requirements/functional-requirements/IO-functions/parameter/IIDP14.tex deleted file mode 100644 index 93c468c..0000000 --- a/src/requirements/functional-requirements/IO-functions/parameter/IIDP14.tex +++ /dev/null @@ -1,15 +0,0 @@ -\parameterTable -{Meklēšanas uzvedne} -{IIDP14} -{ - Uzvedne datubāzes ierakstu meklēšanai. -} -{ - \begin{enumerate} - \item Simbolu virkne garumā līdz 255 simboliem; - \item Atļautie simboli: Unikoda lielie burti (Lu), mazie burti (Ll), virsraksta burti (Lt,) modifikatoru burti (Lm), citi burti (Lo), atsarpe, domuzīme, cipari. - \end{enumerate} -} -{ - % FIX: add example -} diff --git a/src/requirements/functional-requirements/IO-functions/parameter/IIDP15.tex b/src/requirements/functional-requirements/IO-functions/parameter/IIDP15.tex deleted file mode 100644 index 74bef70..0000000 --- a/src/requirements/functional-requirements/IO-functions/parameter/IIDP15.tex +++ /dev/null @@ -1,14 +0,0 @@ -\parameterTable -{Cena} -{IIDP15} -{ - Maksas abonementa cena. -} -{ - \begin{enumerate} - \item Decimāls skaitlis līdz 16 cipariem un 2 cipariem aiz komata. - \end{enumerate} -} -{ - 1234,56 -} diff --git a/src/requirements/functional-requirements/IO-functions/parameter/IIDP16.tex b/src/requirements/functional-requirements/IO-functions/parameter/IIDP16.tex deleted file mode 100644 index 2cee772..0000000 --- a/src/requirements/functional-requirements/IO-functions/parameter/IIDP16.tex +++ /dev/null @@ -1,15 +0,0 @@ -\parameterTable -{Īsziņas teksts} -{IIDP16} -{ - Lietotāja sūtītās īsziņas teksts istabas tērzētavā. -} -{ - \begin{enumerate} - \item Simbolu virkne līdz 2047 simboliem; - \item Atļautie simboli: Unikoda lielie burti (Lu), mazie burti (Ll), virsraksta burti (Lt,) modifikatoru burti (Lm), citi burti (Lo), speciālie simboli. - \end{enumerate} -} -{ - % FIX: add example -} diff --git a/src/requirements/functional-requirements/IO-functions/parameter/index.tex b/src/requirements/functional-requirements/IO-functions/parameter/index.tex deleted file mode 100644 index 53dd8bb..0000000 --- a/src/requirements/functional-requirements/IO-functions/parameter/index.tex +++ /dev/null @@ -1,16 +0,0 @@ -\input{./src/requirements/functional-requirements/IO-functions/parameter/IIDP01.tex} -\input{./src/requirements/functional-requirements/IO-functions/parameter/IIDP02.tex} -\input{./src/requirements/functional-requirements/IO-functions/parameter/IIDP03.tex} -\input{./src/requirements/functional-requirements/IO-functions/parameter/IIDP04.tex} -\input{./src/requirements/functional-requirements/IO-functions/parameter/IIDP05.tex} -\input{./src/requirements/functional-requirements/IO-functions/parameter/IIDP06.tex} -\input{./src/requirements/functional-requirements/IO-functions/parameter/IIDP07.tex} -\input{./src/requirements/functional-requirements/IO-functions/parameter/IIDP08.tex} -\input{./src/requirements/functional-requirements/IO-functions/parameter/IIDP09.tex} -\input{./src/requirements/functional-requirements/IO-functions/parameter/IIDP10.tex} -\input{./src/requirements/functional-requirements/IO-functions/parameter/IIDP11.tex} -\input{./src/requirements/functional-requirements/IO-functions/parameter/IIDP12.tex} -\input{./src/requirements/functional-requirements/IO-functions/parameter/IIDP13.tex} -\input{./src/requirements/functional-requirements/IO-functions/parameter/IIDP14.tex} -\input{./src/requirements/functional-requirements/IO-functions/parameter/IIDP15.tex} -\input{./src/requirements/functional-requirements/IO-functions/parameter/IIDP16.tex} diff --git a/src/requirements/functional-requirements/IO-functions/procedure/KPR01.tex b/src/requirements/functional-requirements/IO-functions/procedure/KPR01.tex deleted file mode 100644 index 3805405..0000000 --- a/src/requirements/functional-requirements/IO-functions/procedure/KPR01.tex +++ /dev/null @@ -1,34 +0,0 @@ -\procedureTable -{Pārskata lappuses iegūšana} -{KPR01} -{ - Aprēķina pārskata lappuses ierakstu nobīdi pēc kura atgriež lappuses ierakstus. -} -{ - Obligātie parametri: - \begin{enumerate} - \item Lappuses numurs - vesels pozitīvs skaitlis; - \item Datubāzes pieprasījums, kas atbilst IIDP13; - \item Rezultātu skaits - vesels nenegatīvs skaitlis. - \end{enumerate} - - Neobligātie parametri: - \begin{enumerate} - \item Ierakstu skaits lappusē - vesels pozitīvs skaitlis. - \end{enumerate} -} -{ - \begin{enumerate} - \item Aprēķina lappušu skaitu ar formulu: $L = ceil(Q / Q_l)$, $Q$ - rezultātu skaits, $Q_l$ - ierakstu skaits vienā lappusē; - \item Ja lappuses numurs pārsniedz kopējo lappušu skaitu, tad turpmāk lappuses numurs ir 1; - \item Aprēķina ierakstu nobīdi ar formulu: $O = (N - 1) * Q_l$, kur $O$ - nobīde; $N$ - lappuses numurs, $Q_l$ - ierakstu skaits vienā lappusē; - \item Pievieno aprēķinātu nobīdi datubāzes pieprasījumam. - \end{enumerate} -} -{ - \begin{enumerate} - \item Datubāzes pieprasījums, kas atbilst \hyperref[tab:IIDP13]{IIDP13}; - \item Lappuses numurs - vesels pozitīvs skaitlis; - \item Kopējs lappušu skaits - vesels pozitīvs skaitlis. - \end{enumerate} -} diff --git a/src/requirements/functional-requirements/IO-functions/procedure/KPR02.tex b/src/requirements/functional-requirements/IO-functions/procedure/KPR02.tex deleted file mode 100644 index fd4e75b..0000000 --- a/src/requirements/functional-requirements/IO-functions/procedure/KPR02.tex +++ /dev/null @@ -1,40 +0,0 @@ -\procedureTable -{Konkrētā istabas, spēlētāja, lietotāja atbilstības pārbaude} -{KPR02} -{ - Pārbauda vai datubāzē eksistē un savstarpēji saistīti lietotāja, spēlētāja un istabas ieraksti, i.e, pārbauda vai spēlētājs atrodas istabā un lietotājs ir šis spēlētājs. -} -{ - Obligātie parametri: - \begin{enumerate} - \item Lietotāja identifikators - atbilst \hyperref[tab:IIDP10]{IIDP10} - \item Spēlētāja identifikators - atbilst \hyperref[tab:IIDP10]{IIDP10} - \item Istabas identifikators - atbilst \hyperref[tab:IIDP10]{IIDP10} - \end{enumerate} -} -{ - \begin{enumerate} - \item Meklē istabas ierakstu pēc spēles istabas identifikatora; - \begin{enumerate} - \item Ja neatrod atgriež ``nepatiess''. - \end{enumerate} - \item Meklē spēlētāju ierakstu pēc spēlētāja un spēles istabas identifikatora; - \begin{enumerate} - \item Ja neatrod, atgriež ``nepatiess''. - \end{enumerate} - \item Meklē lietotāju ierakstu pēc spēlētāja un spēles istabas identifikatora; - \begin{enumerate} - \item Ja neatrod, atgriež ``nepatiess''. - \end{enumerate} - \item Pārbauda, vai lietotāja un spēlētāja ieraksta attiecīgie identifikatori sakrīt; - \begin{enumerate} - \item Ja nesakrīt, atgriež ``nepatiess'' - \end{enumerate} - \item Atgriež ``patiess''. - \end{enumerate} -} -{ - \begin{enumerate} - \item Atbilstības karodziņš - vai dotie identifikatori ir savā starpā saistīti. - \end{enumerate} -} diff --git a/src/requirements/functional-requirements/IO-functions/procedure/KPR03.tex b/src/requirements/functional-requirements/IO-functions/procedure/KPR03.tex deleted file mode 100644 index 08336ac..0000000 --- a/src/requirements/functional-requirements/IO-functions/procedure/KPR03.tex +++ /dev/null @@ -1,23 +0,0 @@ -\procedureTable -{Piederības pārbaude ``Mafija'' lomu grupai} -{KPR03} -{ - Pārbauda, vai konkrētais spēlētājs pieder ``Mafija'' lomu grupai. -} -{ - Obligātie parametri: - \begin{enumerate} - \item Spēlētāja identifikators - \hyperref[tab:IIDP10]{IIDP10} - \end{enumerate} -} -{ - \begin{enumerate} - \item Meklē spēlētāja lomu pēc spēlētāja identifikatora; - \item Ja lomas ``Mafija'' karodziņš parāda to, ka spēlētāja loma nepieder ``Mafija'' lomu grupai, tad atgriež ``nepatiess'' (vērtība 0), pretēji - atgriež ``patiess'' (vērtība 1). - \end{enumerate} -} -{ - \begin{enumerate} - \item Mafijas piederības karodziņš - vai spēlētājs pieder mafijai. - \end{enumerate} -} diff --git a/src/requirements/functional-requirements/IO-functions/procedure/KPR04.tex b/src/requirements/functional-requirements/IO-functions/procedure/KPR04.tex deleted file mode 100644 index 1407122..0000000 --- a/src/requirements/functional-requirements/IO-functions/procedure/KPR04.tex +++ /dev/null @@ -1,37 +0,0 @@ -\procedureTable -{Pieprasījuma filtru pievienošana} -{KPR04} -{ - Pieprasījuma filtru pievienošana -} -{ - Obligātie parametri: - \begin{enumerate} - \item Datubāzes pieprasījums, kas atbilst \hyperref[tab:IIDP13]{IIDP13}; - \item Filtra atribūta nosaukums - datubāzes identifikators. - \end{enumerate} - - Neobligātie parametri: - \begin{enumerate} - \item Entitātes identifikators - atbilst \hyperref[tab:IIDP10]{IIDP10}. - \end{enumerate} - -} -{ - \begin{enumerate} - \item Pārbauda, vai katrs atribūts no filtra atribūtu saraksta ar tādu nosaukumu eksistē; - \begin{enumerate} - \item Ja kāds no tiem neeksistē, beidz apstrādi. - \end{enumerate} - \item Katram filtra atribūtam pievieno filtru datubāzes pieprasījumu; - \begin{enumerate} - \item Ja entitātes identifikators ir iesniegts, pievieno filtrēšanu pēc šī identifikatora. - \item Ja nav, filtrē pēc karodziņa ``patiess''. - \end{enumerate} - \end{enumerate} -} -{ - \begin{enumerate} - \item Datubāzes pieprasījums, kas atbilst \hyperref[tab:IIDP13]{IIDP13}. - \end{enumerate} -} diff --git a/src/requirements/functional-requirements/IO-functions/procedure/KPR05.tex b/src/requirements/functional-requirements/IO-functions/procedure/KPR05.tex deleted file mode 100644 index 38bfa23..0000000 --- a/src/requirements/functional-requirements/IO-functions/procedure/KPR05.tex +++ /dev/null @@ -1,28 +0,0 @@ -\procedureTable -{Meklēšanas nosacījuma pievienošana} -{KPR06} -{ - Apstrādā datubāzes pieprasījumu, pievienojot atbilstošus meklēšanas nosacījumus. -} -{ - Obligātie parametri: - \begin{enumerate} - \item Datubāzes pieprasījums, kas atbilst \hyperref[tab:IIDP13]{IIDP13}; - \item Meklēšanas atribūtu nosaukumu saraksts, kas sastāv no simbolu virknēm, kas atbilst \hyperref[tab:IIDP12]{IIDP12}; - \item Meklēšanas uzvedne - simbolu virkne, kas \hyperref[tab:IIDP14]{IIDP14}. - \end{enumerate} -} -{ - \begin{enumerate} - \item Pārbauda, vai katrs atribūts no meklēšanas atribūtu saraksta ar tādu nosaukumu eksistē; - \begin{enumerate} - \item Ja neeksistē, beidz apstrādi. - \end{enumerate} - \item Pievieno meklēšanas nosacījumu pieprasījumu ar meklēšanas saraksta atribūtiem. - \end{enumerate} -} -{ - \begin{enumerate} - \item Datubāzes pieprasījums, kas atbilst \hyperref[tab:IIDP13]{IIDP13}. - \end{enumerate} -} diff --git a/src/requirements/functional-requirements/IO-functions/procedure/KPR06.tex b/src/requirements/functional-requirements/IO-functions/procedure/KPR06.tex deleted file mode 100644 index 0f714a7..0000000 --- a/src/requirements/functional-requirements/IO-functions/procedure/KPR06.tex +++ /dev/null @@ -1,28 +0,0 @@ -\procedureTable -{Kārtošanas nosacījuma pievienošana} -{KPR06} -{ - Apstrādā datubāzes pieprasījumu, pievienojot atbilstošus meklēšanas nosacījumus. -} -{ - Obligātie parametri: - \begin{enumerate} - \item Datubāzes pieprasījums, kas atbilst \hyperref[tab:IIDP13]{IIDP13}; - \item Meklēšanas atribūtu nosaukumu saraksts, kas sastāv no simbolu virknēm, kas atbilst \hyperref[tab:IIDP12]{IIDP12}; - \item Kārtošanas kods, kas atbilst \hyperref[tab:IIDP11]{IIDP11}. - \end{enumerate} -} -{ - \begin{enumerate} - \item Pārbauda, vai atribūts ar tādu nosaukumu eksistē; - \begin{enumerate} - \item Ja neeksistē, beidz apstrādi. - \end{enumerate} - \item Pievieno kārtošanu attiecīgajam atribūtam attiecīgi kārtošanas kodam. - \end{enumerate} -} -{ - \begin{enumerate} - \item Datubāzes pieprasījums, kas atbilst \hyperref[tab:IIDP13]{IIDP13}. - \end{enumerate} -} diff --git a/src/requirements/functional-requirements/IO-functions/procedure/KPR07.tex b/src/requirements/functional-requirements/IO-functions/procedure/KPR07.tex deleted file mode 100644 index 56ffff2..0000000 --- a/src/requirements/functional-requirements/IO-functions/procedure/KPR07.tex +++ /dev/null @@ -1,42 +0,0 @@ -\procedureTable -{ - Pārskata pieprasījuma sagatavošana -} -{KPR07} -{ - Sagatavo entitātes pārskata datubāzes pieprasījumu pievienojot neobligātu lappuses nobīdi, filtrēšanu un kārtošanu. -} -{ - Obligātie parametri: - \begin{enumerate} - \item Datubāzes pieprasījums, kas atbilst \hyperref[tab:IIDP13]{IIDP13}. - \end{enumerate} - - Neobligātie parametri: - \begin{enumerate} - \item Lappuses numurs - vesels pozitīvs skaitlis; - \item Meklēšanas uzvedne - simbolu virkne ar garumu līdz 50 simboliem bez atļauto simbolu ierobežojumiem; - \item Kārtošanas vārdnīcu saraksts, kas sastāv no vārdnīcām: datu bāzes atribūta nosaukums (atbilst \hyperref[tab:IDP12]{IDP12}) - kārtošanas kods (atbilst \hyperref[tab:IDP11]{IDP11}); - \item Filtru vārdnīcu saraksts, kas sastāv no vārdnīcām: datu bāzes atribūta nosaukums (atbilst \hyperref[tab:IDP12]{IDP12}) - filtra vērtība (vesels skaitlis) un filtra veids (0 - Būla mainīgā filtrs, 1 - entitātes identifikatora filtrs). - \end{enumerate} -} -{ - \begin{enumerate} - \item Ja filtru vārdnīcu saraksts nav tukšs, katram saraksta elementam pievieno kārtošanu pieprasījumam ar attiecīgiem atribūtu nosaukumiem, filtra veidiem un vērtībām, izmantojot \hyperref[tab:KPR04]{KPR04}; - \item Ja meklēšanas uzvedne ir iesniegta un nav tukša simbolu virkne, tad pieprasījumam pievieno meklēšanas nosacījumu meklēšanai pēc pilna vārda, segvārda un biogrāfijas, izmantojot \hyperref[tab:KPR05]{KPR05}; - \item Ja kārtošanas vārdnīcu saraksts nav tukšs, katram saraksta elementam pievieno kārtošanu pieprasījumam ar attiecīgiem atribūtu nosaukumiem, kārtošanas kodiem, izmantojot \hyperref[tab:KPR06]{KPR06}; - \item Ja lappuses numurs netika iesniegts, uzskata, ka lappuses numurs ir 1; - \item Pieprasa ierakstu saskaitīšanu, izmantojot sagatavoto pieprasījumu. - \begin{enumerate} - \item Ja rezultātu skaits ir lielāks par 0, iegūst lappuses ierakstu nobīdi, lappuses numuru un kopējo lappušu skaitu, izmantojot \hyperref[tab:KPR01]{KPR01} ar attiecīgo rezultātu skaitu, lappuses numuru, noklusēto ierakstu skaitu lappusē; - \item Ja rezultātu skaits ir 0, kopējo lappušu skaitu un lappuses numuru uzskata par 0. - \end{enumerate} - \end{enumerate} -} -{ - \begin{enumerate} - \item Datubāzes pieprasījums, kas atbilst \hyperref[tab:IIDP13]{IIDP13}; - \item Lappuses numurs - vesels pozitīvs skaitlis; - \item Kopējs lappušu skaits - vesels pozitīvs skaitlis. - \end{enumerate} -} diff --git a/src/requirements/functional-requirements/IO-functions/procedure/index.tex b/src/requirements/functional-requirements/IO-functions/procedure/index.tex deleted file mode 100644 index 7553e64..0000000 --- a/src/requirements/functional-requirements/IO-functions/procedure/index.tex +++ /dev/null @@ -1,8 +0,0 @@ -\subsubsection{Kopīgās procedūras} - -\input{./src/requirements/functional-requirements/IO-functions/procedure/KPR01.tex} -\input{./src/requirements/functional-requirements/IO-functions/procedure/KPR02.tex} -\input{./src/requirements/functional-requirements/IO-functions/procedure/KPR03.tex} -\input{./src/requirements/functional-requirements/IO-functions/procedure/KPR04.tex} -\input{./src/requirements/functional-requirements/IO-functions/procedure/KPR05.tex} -\input{./src/requirements/functional-requirements/IO-functions/procedure/KPR06.tex} diff --git a/src/requirements/functional-requirements/function-modules.tex b/src/requirements/functional-requirements/function-modules.tex deleted file mode 100644 index 95abb74..0000000 --- a/src/requirements/functional-requirements/function-modules.tex +++ /dev/null @@ -1,104 +0,0 @@ -\subsubsection{Funkciju sadalījums moduļos} -Funkciju sadalījums moduļos ir aprakstīts tabulā (\ref{tab:function-modules} tab.). -Katrs maksas lietotājs un administrators ir uzskatāms par reģistrētu lietotāju. -Administratora privilēģijas ir atvasinātas no maksas lietotāja privilēģijas. -Sistēmas lietotājs nav ierobežots. -Maksas lietotājs un administrators tiek norādīts pie lietotāja grupas tikai tad, ja, funkcijas rezultāts atšķiras no rezultāta, kuru atgrieztu reģistrētam lietotājam. -Tiek pieņemts, ka lietotāja autentifikācija ir izpildīta, izmantojot funkcijas, kur apstrāde ir neatkarīga no lietotāju grupas. - -2.līmeņa DPD parāda izvērstāku 1. līmeņa (jeb konteksta) DPD ar sistēmas sadalījumu pa moduļiem. -Pārskatāmības dēļ DPD tika sadalīta divās daļās (skat \ref{fig:dpd-1.1} att. un \ref{fig:dpd-1.2} att.). - - -\begin{figure}[htbp] - \centering - \includegraphics[width=\linewidth]{./src/img/1LīmeņaDPDSpēlesDatubāze.png} - \caption{1. līmeņa DPD (1)} - \label{fig:dpd-1.1} -\end{figure} - -\begin{figure}[htbp] - \centering - \includegraphics[width=\linewidth]{./src/img/1LīmeņaDPDLietotājuDatubāze.png} - \caption{1. līmeņa DPD (2)} - \label{fig:dpd-1.2} -\end{figure} -\eject - - -\begin{tabularx}{\linewidth}{|p{2.1cm}|X|p{2.7cm}|X|} - \caption{Funkciju sadalījums pa moduļiem} \label{tab:function-modules} \\ \hline - - \hline - \textbf{Modulis} & \textbf{Funkcija} & \textbf{Identifikators} & \textbf{Lietotāja grupa} \\ \hline - \endfirsthead - - \hline \multicolumn{4}{r}{Turpinājums no iepriekšējās lapas} \\ \hline - \textbf{Modulis} & \textbf{Funkcija} & \textbf{Identifikators} & \textbf{Lietotāja grupa} \\ \hline - \endhead - - \hline \multicolumn{4}{r}{Turpinājums nākamajā lapā} \\ \hline - \endfoot - - \hline - \endlastfoot - - - % Table data here - \setcounter{rownum}{0} - \multirow{1}{2.1cm}{Reģistrācijas un pieteikšanās modulis} & Lietotāja reģistrācija & \hyperref[tab:mod-func-auth-reg]{\stepcounter{rownum}AMF\therownum} & Nereģistrēts lietotājs \\ \cline{2-4} - & Apstiprinājuma ziņas atkārtotās izsūtīšanas pieteikums & \hyperref[tab:mod-func-auth-app]{\stepcounter{rownum}AMF\therownum} & Nereģistrēts lietotājs, Reģistrēts lietotājs \\ \cline{2-4} - & Paroles atjaunošanas pieteikums & \hyperref[tab:mod-func-auth-pass-restore-app]{\stepcounter{rownum}AMF\therownum} & Reģistrēts lietotājs \\ \cline{2-4} - & Paroles atjaunošana & \hyperref[tab:mod-func-auth-pass-restore]{\stepcounter{rownum}AMF\therownum} & Reģistrēts lietotājs \\ \cline{2-4} - & Lietotāja pieteikšanās & \hyperref[tab:mod-func-auth-login]{\stepcounter{rownum}AMF\therownum} & Reģistrēts lietotājs \\ \cline{2-4} - & Lietotāja atteikšanās & \hyperref[tab:mod-func-auth-logout]{\stepcounter{rownum}AMF\therownum} & Reģistrēts lietotājs \\ \cline{2-4} - & Lietotāja konta apstiprināšana & \hyperref[tab:mod-func-auth-email-confirm]{\stepcounter{rownum}AMF\therownum} & Reģistrēts lietotājs \\ \hline - - \setcounter{rownum}{0} - \multirow{1}{2.1cm}{Lietotāju kontu modulis} & Lietotāju profilu pārskats & \hyperref[tab:mod-func-user-profiles]{\stepcounter{rownum}LAM\therownum} & Reģistrēts lietotājs, Administrators \\ \cline{2-4} - & Lietotāja konta detaļas & \hyperref[tab:mod-func-user-profile-data]{\stepcounter{rownum}LAM\therownum} & Reģistrēts lietotājs, Administrators \\ \cline{2-4} - & Lietotāja konta bloķēšana & \hyperref[tab:mod-func-user-block]{\stepcounter{rownum}LAM\therownum} & Administrators \\ \cline{2-4} - & Lietotāja konta rediģēšana & \hyperref[tab:mod-func-user-edit]{\stepcounter{rownum}LAM\therownum} & Reģistrēts lietotājs, Administrators \\ \cline{2-4} - & Lietotāja konta dzēšāna & \hyperref[tab:mod-func-user-delete]{\stepcounter{rownum}LAM\therownum} & Reģistrēts lietotājs, Administrators \\ \hline - \setcounter{rownum}{0} - \multirow{1}{2.1cm}{Maksas abonamentu modulis} & Abonementa pieteikums & \hyperref[tab:mod-func-premium-app]{\stepcounter{rownum}MAMF\therownum} & Reģistrēts lietotājs \\ \cline{2-4} - & Abonementu pārskats & \hyperref[tab:mod-func-premium-overview]{\stepcounter{rownum}MAMF\therownum} & Reģistrēts lietotājs, Maksas lietotājs \\ \cline{2-4} - & Abonementa atcelšana & \hyperref[tab:mod-func-premium-cancel]{\stepcounter{rownum}MAMF\therownum} & Maksas lietotājs, Administrators \\ \hline - - \setcounter{rownum}{0} - \multirow{1}{2.1cm}{Cenu modulis} & Cenas pievienošana & \hyperref[tab:mod-func-price-add]{\stepcounter{rownum}CMF\therownum} & Administrators \\ \cline{2-4} - & Cenas rediģēšana & \hyperref[tab:mod-func-price-edit]{\stepcounter{rownum}CMF\therownum} & Administrators \\ \cline{2-4} - & Cenu pārskats & \hyperref[tab:mod-func-price-overview]{\stepcounter{rownum}CMF\therownum} & Administrators \\ \hline - \setcounter{rownum}{0} - \multirow{1}{2.1cm}{Tērzēšanas modulis} & Jaunas īsziņas izveidošana & \hyperref[tab:mod-func-chat-create]{\stepcounter{rownum}TMF\therownum} & Reģistrēts lietotājs \\ \cline{2-4} - & Īsziņas dzēšana & \hyperref[tab:mod-func-chat-delete]{\stepcounter{rownum}TMF\therownum} & Reģistrēts lietotājs \\ \cline{2-4} - & Īsziņu pārskats & \hyperref[tab:mod-func-chat-overview]{\stepcounter{rownum}TMF\therownum} & Reģistrēts lietotājs \\ \cline{2-4} - & Īsziņu rediģēšana & \hyperref[tab:mod-func-chat-edit]{\stepcounter{rownum}TMF\therownum} & Reģistrēts lietotājs \\ \hline - \setcounter{rownum}{0} - \multirow{1}{2.1cm}{Spēles istabas modulis} & Pieejamo pieslēgšanās spēles istabu pārskats & \hyperref[tab:mod-func-room-overview]{\stepcounter{rownum}SIMF\therownum} & Reģistrēts lietotājs \\ \cline{2-4} - & Pieslēgšanās spēles istabai & \hyperref[tab:mod-func-room-connect]{\stepcounter{rownum}SIMF\therownum} & Reģistrēts lietotājs \\ \cline{2-4} - & Atslēgšanās no spēles istabas pieteikums & \hyperref[tab:mod-func-room-disconnect]{\stepcounter{rownum}SIMF\therownum} & Reģistrēts lietotājs \\ \cline{2-4} - & Jaunas spēles istabas izveide & \hyperref[tab:mod-func-room-create]{\stepcounter{rownum}SIMF\therownum} & Maksas lietotājs, Administrators \\ \cline{2-4} - & Spēles sākuma pieteikums & \hyperref[tab:mod-func-room-app]{\stepcounter{rownum}SIMF\therownum} & Maksas lietotājs \\ \cline{2-4} - & Spēlētāja izslēgšana & \hyperref[tab:mod-func-room-kill]{\stepcounter{rownum}SIMF\therownum} & Administrators \\ \cline{2-4} - & Spēlētāju pārskata iegūšana & \hyperref[tab:mod-func-room-player-overview]{\stepcounter{rownum}SIMF\therownum} & Sistēma, Reģistrēts lietotājs, Administrators \\ \hline - \setcounter{rownum}{0} - \multirow{1}{2.1cm}{Spēles gaitas modulis} & Spēles darbības veikšana & \hyperref[tab:mod-func-progress-action]{\stepcounter{rownum}SGMF\therownum} & Reģistrēts lietotājs \\ \cline{2-4} - & Spēles notikuma izveidošana & \hyperref[tab:mod-func-progress-create]{\stepcounter{rownum}SGMF\therownum} & Sistēma \\ \cline{2-4} - & Spēles notikumu pārskats & \hyperref[tab:mod-func-progress-overview]{\stepcounter{rownum}SGMF\therownum} & Sistēma, Reģistrēts lietotājs \\ \cline{2-4} - & Spēles stāvokļa detaļas & \hyperref[tab:mod-func-progress-state-overview]{\stepcounter{rownum}SGMF\therownum} & Sistēma, Reģistrēts lietotājs \\ \hline - \setcounter{rownum}{0} - \multirow{1}{2.1cm}{Spēles lomu uzstādījumu modulis} & Lomas detaļu detaļas & \hyperref[tab:mod-func-role-details]{\stepcounter{rownum}SLMF\therownum} & Reģistrēts lietotājs \\ \cline{2-4} - & Lomu pārskats & \hyperref[tab:mod-func-role-overview]{\stepcounter{rownum}SLMF\therownum} & Reģistrēts lietotājs \\ \cline{2-4} - & Lomas darbību pārskats & \hyperref[tab:mod-func-role-action-overview]{\stepcounter{rownum}SLMF\therownum} & Reģistrēts lietotājs \\ \cline{2-4} - & Jaunas lomas izveidošana & \hyperref[tab:mod-func-role-create]{\stepcounter{rownum}SLMF\therownum} & Maksas lietotājs, Administrators \\ \cline{2-4} - & Lomas rediģēšana & \hyperref[tab:mod-func-role-edit]{\stepcounter{rownum}SLMF\therownum} & Maksas lietotājs, Administrators \\ \cline{2-4} - & Lomas dzēšana & \hyperref[tab:mod-func-role-delete]{\stepcounter{rownum}SLMF\therownum} & Maksas lietotājs, Administrators \\ \hline - \setcounter{rownum}{0} - \multirow{1}{2.1cm}{Spēles uzstādījumu modulis} & Spēles uzstādījumu pārskats & \hyperref[tab:mod-func-setup-overview]{\stepcounter{rownum}SUMF\therownum} & Reģistrēts lietotājs \\ \cline{2-4} - & Spēles uzstādījumu lomu pārskats & \hyperref[tab:mod-func-setup-role-overview]{\stepcounter{rownum}SUMF\therownum} & Reģistrēts lietotājs, Sistēma \\ \cline{2-4} - & Jaunas spēles uzstādījuma izveidošana & \hyperref[tab:mod-func-setup-new]{\stepcounter{rownum}SUMF\therownum} & Maksas lietotājs, Administrators \\ \cline{2-4} - & Spēles uzstādījuma rediģēšana & \hyperref[tab:mod-func-setup-edit]{\stepcounter{rownum}SUMF\therownum} & Maksas lietotājs, Administrators \\ \cline{2-4} - & Spēles uzstādījuma dzēšana & \hyperref[tab:mod-func-setup-delete]{\stepcounter{rownum}SUMF\therownum} & Maksas lietotājs, Administrators \\ \hline - % ... continue for each row -\end{tabularx} diff --git a/src/requirements/functional-requirements/general-notices.tex b/src/requirements/functional-requirements/general-notices.tex deleted file mode 100644 index f68d6f4..0000000 --- a/src/requirements/functional-requirements/general-notices.tex +++ /dev/null @@ -1,39 +0,0 @@ -\subsubsection{Vispārīgi paziņojumi} - -\begin{tabularx}{\linewidth}{|p{2.5cm}|X|p{2.7cm}|X|} - \caption{Vispārīgi paziņojumi} \label{tab:general_notices} \\ - \hline - \textbf{Paziņojumu grupa} & \textbf{Paziņojums} & \textbf{Identifikators} & \textbf{Raksturojums} \\ - \hline - \endfirsthead - - \multicolumn{4}{c}% - {{\thetable{} \tablename: turpinājums no iepriekšējās lapas}} \\ - \hline - \textbf{Paziņojumu grupa} & \textbf{Paziņojums} & \textbf{Identifikators} & \textbf{Raksturojums} \\ - \hline - \endhead - - \hline \multicolumn{4}{|r|}{{Turpinājums nākamajā lapā}} \\ \hline - \endfoot - - \hline - \endlastfoot - - % Table data here - \setcounter{rownum}{0} - \multirow{3}{2.5cm}{Vispārīgi kļūdu paziņojumi} & ``Iesniegtā datne pārsniedz maksimālo pieļaujamo datnes lielumu. Lūdzu, mēģiniet vēlreiz ar mazāka izmēra datni!'' & \stepcounter{rownum}VKP\therownum & Iesniegtā datne pārsniedz maksimālo datnes izmēru. \\ \cline{2-4} - & ``Jūsu pieprasījums spēļu sistēmai nav korekts. Lūdzu, mēģiniet vēlreiz!'' & \stepcounter{rownum}VKP\therownum & \dots \\ \cline{2-4} - & ``Ir notikusi sistēmas iekšējā ķļūme. Lūdzu, mēģiniet vēlreiz!'' & \stepcounter{rownum}VKP\therownum & \dots \\ \hline - \setcounter{rownum}{0} - \multirow{5}{2.5cm}{Vispārīgi apstiprinājumu paziņojumi} & ``[Entitātes nosaukums] ir veiksmīgi izveidota(/-s)!'' & \stepcounter{rownum}VAP\therownum & Lietotājs ir veiksmīgi izveidojis entitāti. \\ \cline{2-4} - & ``[Entitātes nosaukums] ir veiksmīgi rediģēta(/-s)!'' & \stepcounter{rownum}VAP\therownum & Lietotājs ir veiksmīgi rediģējis entitāti. \\ \cline{2-4} - & ``[Entitātes nosaukums] ir veiksmīgi rediģēta(/-s)!'' & \stepcounter{rownum}VAP\therownum & Lietotājs ir veiksmīgi rediģējis entitāti. \\ \cline{2-4} - & ``[Entitātes nosaukums] ir veiksmīgi rediģēta(/-s)!'' & \stepcounter{rownum}VAP\therownum & Lietotājs ir veiksmīgi rediģējis entitāti. \\ \cline{2-4} - & ``[Entitātes nosaukums] ir veiksmīgi rediģēta(/-s)!'' & \stepcounter{rownum}VAP\therownum & Lietotājs ir veiksmīgi rediģējis entitāti. \\ \hline - \setcounter{rownum}{0} - \parbox{2.5cm}{Vispārīgi informācijas paziņojumi} & & \stepcounter{rownum}VIP\therownum & \\ \hline - \setcounter{rownum}{0} - \parbox{2.5cm}{Vispārīgi spēles paziņojumi??} & & \stepcounter{rownum}VSP\therownum & \\ \hline - % ... continue for each row -\end{tabularx} diff --git a/src/requirements/functional-requirements/index.tex b/src/requirements/functional-requirements/index.tex deleted file mode 100644 index 8113409..0000000 --- a/src/requirements/functional-requirements/index.tex +++ /dev/null @@ -1,7 +0,0 @@ -\subsection{Funkcionālās prasības} -% TODO: remove the following line -% [Citas apakšnodaļas ar vispārīgu lietu aprakstu] - -\input{./src/requirements/functional-requirements/function-modules.tex} -\input{./src/requirements/functional-requirements/IO-functions/index.tex} -\input{./src/requirements/functional-requirements/modules/index.tex} diff --git a/src/requirements/functional-requirements/modules/auth/AMF01.tex b/src/requirements/functional-requirements/modules/auth/AMF01.tex deleted file mode 100644 index 0ea43f5..0000000 --- a/src/requirements/functional-requirements/modules/auth/AMF01.tex +++ /dev/null @@ -1,116 +0,0 @@ -\moduleFunctionTable -{Lietotāja reģistrācija} -{mod-func-auth-reg} -{Lietotāja reģistrācija} -{AMF01} -{ - Funkcijas mērķis ir reģistrēt lietotāja kontu sistēmā, autentifikācijas - procesam un lietotāja darbību autorizācijai, un lietotāja informācijas - uzglabāšanai. Apstrādes procesā ievades dati tiek pārbaudīti attiecīgi - noteiktajām prasībām. Paroles šifrēšanas procesā tiek izmantota - jaucējfunkcija ar papildus drošības metodiku - ``sāls pievienošanu'' - - nejaušu simbolu virknes pievienošanu pirms šifrēšanas procesa uzsākšanas. -} -{ - Ievades dati tiek saņemti no nereģistrētiem lietotājiem pieejamās veidlapas. \\ - - Obligātie parametri: - \begin{enumerate} - \item Vārds, uzvārds; - \item Segvārds; - \item E-pasta adrese; - \item Parole; - \item Paroles apstiprinājums - simbolu virkne. kas atbilst iepriekš minētās paroles prasībām. - \end{enumerate} - - Neobligātie parametri: - \begin{enumerate} - \item Profila attēls; - \item Biogrāfiskā informācija. - \end{enumerate} -} -{ - \begin{enumerate} - \item Pārbauda, vai visi obligātie lauki ir iesniegti; - \begin{enumerate} - \item Ja tie nav, iegūst sarakstu ar neaizpildītajiem laukiem, parāda - 1. paziņojumu. Beidz apstrādi. - \end{enumerate} - \item Pārbauda, vai parole un paroles apstiprinājums sakrīt; - \begin{enumerate} - \item Ja nesakrīt, tad parāda 2. paziņojumu. Beidz apstrādi. - \end{enumerate} - \item Pārbauda, vai pilns vārds, segvārds, e-pasta adrese, parole satur tikai pieļaujamos simbolus; - \begin{enumerate} - \item Ja nesatur, tad iegūst izmantotos neatļautos simbolus, tad parāda - 3. paziņojumu ar attiecīgi laukiem un simboliem. Beidz apstrādi. - \end{enumerate} - \item Pārbauda, vai pilns vārds, segvārds, e-pasta adrese, biogrāfiskā informācija, parole nepārsniedz noteikto garumu; - \begin{enumerate} - \item Ja pārsniedz, tad iegūst pārsniegto garumu parametru sarakstu un - parāda 4. paziņojumu ar attiecīgajiem laukiem un garumiem. Beidz - apstrādi. - \end{enumerate} - \item Pārbauda, vai parole atbilst noteiktiem drošības prasībām; - \begin{enumerate} - \item Ja tā tiem neatbilst, tad parāda 5. paziņojumu ar attiecīgām - neizpildītajām prasībām. Beidz apstrādi. - \end{enumerate} - \item Pārbauda, vai dzimšanas datums atbilst minimālam vecumam reģistrācijai; - \begin{enumerate} - \item Ja neatbilst, parāda 6. paziņojumu. Beidz apstrādi. - \item Ja tika iesniegta biogrāfiskā informācija, tiek pielietota sanitizācija. - \item Ja tika iesniegts attēls, tad pārbauda, vai datne atbilst pieļaujamajiem datnes paplašinājumiem; - \item Ja neatbilst, parāda 7. paziņojumu ar atļautiem datnes paplašinājumiem. Beidz apstrādi. - \item Ja tika iesniegts attēls, tad pārbauda, vai datne nepārsniedz noteikto datnes lielumu; - \item Ja pārsniedz, parāda 8. paziņojumu ar iesniegtās datnes lielumu un maksimāli atļauto datnes lielumu. Beidz apstrādi. - \item Ja iesniegtā attēla paplašinājums nav PNG, tad datne tiek konvertēta šajā paplašinājumā. - \end{enumerate} - \item Meklē datubāzē lietotājus ar ievadīto e-pastu vai segvārdu; - \begin{enumerate} - \item Ja tāds (/-i) pastāv, tad parāda 9. paziņojumu ar attiecīgo - aizņemto lauku. Beidz apstrādi. - \end{enumerate} - \item Pievieno parolei nejauši ģenerēto simbolu virkni, šifrē paroli ar jaucējfunkciju; - \begin{enumerate} - \item Jauna lietotāja sagatavotie dati tiek ierakstīti datubāzē; - \item Ja ierakstīšana nenotiek, parādīt 10. paziņojumu. Beidz apstrādi. - \end{enumerate} - \item Ģenerē e-pasta apstiprinājuma marķieri. Sameklē lietotājus ar šo e-pasta apstiprinājuma marķieri; - \begin{enumerate} - \item Ja lietotājs tika atrasts, atkārto e-pasta apstiprinājuma ģenerēšanu un - lietotāju meklēšanu līdz marķieris ir unikāls. - \end{enumerate} - \item Izveido saiti apstiprinājumam, iekļaujot e-pasta apstiprinājuma marķieri; - \item Sagatavo e-pasta ziņas saturu no šablona, ievietojot tajā apstiprinājuma saiti; - \item Pieprasa e-pasta aizsūtīšanu. - \begin{enumerate} - \item Ja tā netiek apstiprināta, parāda 10. paziņojumu. Beidz apstrādi. - \end{enumerate} - \end{enumerate} -} -{ - Izvades datu mērķis ir noteikt, vai lietotājs tiks pāradresēts un uz kuru lapu lietotājs tiks pāradresēts. - Lietotāja saskarnē parādās 11. paziņojums ar instrukciju par e-pasta - apstiprināšanu. - \begin{enumerate} - \item Reģistrācijas apstiprinājuma stāvoklis - kods ar noteiktu stāvokli. - \end{enumerate} -} -{ - \begin{enumerate} - \item Lauks: [neaizpildīto lauku saraksts] netika aizpildīts (/-i)!; - \item Parole un paroles apstiprinājums nesakrīt!; - \item {}[Parametra nosaukums] nedrīkst saturēt: [izmantoto parametra neatļauto - simbolu saraksts]!; - \item {}[Parametra nosaukums] nedrīkst pārsniegt [noteikto parametra maksimālo - simbolu skaits]!; - \item Parolei ir jāsatur: [neizpildīto paroles prasību saraksts]!; - \item Minimālais vecums reģistrācijai: [noteikts minimālais vecums reģistrācijai]; - \item Attēla datne ir aizliegts paplašinājums! Atļautie datnes paplašinājumi: [atļauto datnes paplašinājumu saraksts]; - \item Attēla datne pārsniedz maksimāli atļauto lielumu! Maksimāli atļautais lielums: [maksimāli atļautais lielums]; - \item Lietotājs ar tādu [aizņemtā lauka nosaukums] jau eksistē!; - \item Sistēmas iekšējā kļūda! Mēģiniet vēlreiz vēlāk!; - \item Reģistrācija ir veiksmīga! Apstipriniet lietotāja kontu ar saiti, kas tiks izsūtīta tuvākā laikā e-pastā. - \end{enumerate} -} diff --git a/src/requirements/functional-requirements/modules/auth/AMF02.tex b/src/requirements/functional-requirements/modules/auth/AMF02.tex deleted file mode 100644 index 07c7daf..0000000 --- a/src/requirements/functional-requirements/modules/auth/AMF02.tex +++ /dev/null @@ -1,51 +0,0 @@ -\moduleFunctionTable -{Apstiprinājuma ziņas atkārtotās izsūtīšanas pieteikums} -{mod-func-auth-app} -{Apstiprinājuma ziņas atkārtotās izsūtīšanas pieteikums} -{AMF02} -{ - Funkcijas mērķis ir izsūtīt e-pasta apstiprinājumu atkārtoti lietotājam, kas jau veica reģistrāciju vai reģistrācijas laikā, vai pēc e-pasta izmaiņas lietotāja kontā. -} -{ - Ievaddati tiek iegūti no darbības - klikšķis uz attiecīgo apstiprinājuma pieteikuma pogu reģistrācijas laikā vai lietotāja konta rediģēšanas lapā. - - Obligātie parametri: - \begin{enumerate} - \item Lietotāja identifikators - sistēmā izmantots lietotāja identifikators, kas atbilst IIDP10. - \end{enumerate} -} -{ - \begin{enumerate} - \item Pārbauda, vai identifikators atbilst paredzētajam datu tipam; - \begin{enumerate} - \item Ja neatbilst parāda 1. paziņojumu. Beidz apstrādi. - \end{enumerate} - \item Meklē lietotāju datubāzē pēc ievades datu identifikatora parametra; - \begin{enumerate} - \item Ja tāds lietotājs neeksistē, parāda 1. paziņojumu. Beidz apstrādi. - \end{enumerate} - \item Iegūst no datubāzes atrastā lietotāja tā e-pasta adresi; - \item Iegūst atrastā lietotāja tā e-pasta adresi; - \item Ģenerē e-pasta apstiprinājuma marķieri. Izveido saiti apstiprinājumam, iekļaujot e-pasta apstiprinājuma marķieri; - \item Sagatavo e-pasta ziņas saturu no šablona, ievietojot tajā apstiprinājuma saiti; - \item Pieprasa e-pasta aizsūtīšanu; - \begin{enumerate} - \item Ja tā netiek apstiprināta, parāda 1. paziņojumu. Beidz apstrādi. - \item Ja e-pasta ziņas aizsūtīšana ir apstiprināta, parāda 2. paziņojumu. Beidz apstrādi. - \end{enumerate} - \end{enumerate} -} -{ - Izvades datu mērķis ir lietotāja informēšana par apstiprinājuma ziņojuma izsūtīšanas stāvokli. - Lietotāja saskarnē parādās 3. paziņojums ar instrukciju par e-pasta apstiprināšanu. - \begin{enumerate} - \item E-pasta apstiprinājuma ziņas izsūtīšanas stāvoklis - kods ar noteiktu stāvokli. - \end{enumerate} -} -{ - \begin{enumerate} - \item Sistēmas iekšējā kļūda! Mēģiniet pārlādēt lapu vai mēģiniet vēlāk!; - \item Apstiprinājuma ziņa tiks izsūtīta 1-10 minūšu laikā; - \item Apstiprinājuma ziņa ir izsūtīta! Apstipriniet lietotāja kontu ar saiti, kas tiks izsūtīta tuvākā laikā e-pastā. - \end{enumerate} -} diff --git a/src/requirements/functional-requirements/modules/auth/AMF03.tex b/src/requirements/functional-requirements/modules/auth/AMF03.tex deleted file mode 100644 index 4735b1b..0000000 --- a/src/requirements/functional-requirements/modules/auth/AMF03.tex +++ /dev/null @@ -1,45 +0,0 @@ -\moduleFunctionTable -{Paroles atjaunošanas pieteikums} -{mod-func-auth-pass-restore-app} -{Paroles atjaunošanas pieteikums} -{AMF03} -{ - Funkcijas mērķis ir ļaut lietotājam atjaunot aizmirstu vai nedrošu paroli, nodrošinot drošu paroles maiņas procesu, kas ietver unikāla marķiera izveidi, tā nosūtīšanu lietotāja e-pastā un tā verifikāciju. -} -{ - Ievaddati tiek iegūti no veidlapas. - - Obligātie parametri: - \begin{enumerate} - \item E-pasta adrese - simbolu virkne, kas atbilst “RFC 2822: Interneta ziņu formāts” standarta prasībām. - \end{enumerate} -} -{ - \begin{enumerate} - \item Pārbauda, vai e-pasta adrese eksistē datubāzē, meklējot lietotāju ar sakrītošu e-pasta adresi; - \begin{enumerate} - \item Ja tāds lietotājs jau eksistē, parāda 1. paziņojumu. Beidz apstrādi. - \end{enumerate} - \item Ģenerē unikālu marķieri paroles atjaunošanai, pārbaudot unikalitāti, meklējot lietotāju ar sakrītošu un derīgu marķieri; - \begin{enumerate} - \item Ja tāds lietotājs eksistē, atkārto ģenerāciju līdz iegūtais marķieris ir unikāls. - \end{enumerate} - \item Ieraksta jaunu marķieri lietotāja, kas atjauno paroli, ierakstam, pievienojot tam noteikto derīguma laiku; - \item Izveido saiti paroles atjaunošanai, iekļaujot marķieri; - \item Nosūta saiti uz lietotāja e-pasta adresi. - \end{enumerate} -} -{ - Izvades datu mērķis ir lietotāja informēšana par paroles atjaunošanas pieteikuma ziņas izsūtīšanas stāvokli. Lietotāja saskarnē parādās 4. paziņojums. - \begin{enumerate} - Paroles atjaunošanas pieteikuma stāvoklis - kods ar noteiktu stāvokli. - \end{enumerate} -} -{ - \begin{enumerate} - \item E-pasta adrese jau ir reģistrēta!; - \item Saitei ir beidzies derīguma termiņš!; - \item Parolei ir jāsatur: [neizpildīto paroles prasību saraksts]!; - \item Apstiprinājuma ziņa ir izsūtīta! Apstipriniet lietotāja kontu ar saiti, kas tiks izsūtīta tuvākā laikā e-pastā. - \end{enumerate} -} diff --git a/src/requirements/functional-requirements/modules/auth/AMF04.tex b/src/requirements/functional-requirements/modules/auth/AMF04.tex deleted file mode 100644 index ecbb642..0000000 --- a/src/requirements/functional-requirements/modules/auth/AMF04.tex +++ /dev/null @@ -1,56 +0,0 @@ -\moduleFunctionTable -{Paroles atjaunošana} -{mod-func-auth-pass-restore} -{Paroles atjaunošana} -{AMF04} -{ - Funkcijas mērķis ir ļaut lietotājam atjaunot aizmirstu vai nedrošu paroli, nodrošinot drošu paroles maiņas procesu, kas ietver unikāla marķiera izveidi, tā nosūtīšanu lietotāja e-pastā un tā pārbaudi. -} -{ - Ievaddati tiek iegūti no apstiprinājuma vietrādes parametriem ar kuru lietotājs piekļūst sistēmas funkcijai. - - Obligātie parametri: - \begin{enumerate} - \item Lietotāja paroles atjaunošanas marķieris - 16 simbolu gara virkne, kas tiek iegūta no saites parametriem; - \item Lietotāja jaunā parole - atbilst \hyperref[tab:IIDP06]{IIDP06}; - \item Lietotāja jaunās parole apstiprinājums - atbilst \hyperref[tab:IIDP06]{IIDP06}. - \end{enumerate} -} -{ - \item Ja lietotāja paroles identifikatora atjaunošanas marķieris nav iesniegts, parāda 1. paziņojumu. Beidz apstrādi; - \item Sameklē lietotāja ierakstu datubāzē, meklējot to pēc atjaunošanas marķiera; - \begin{enumerate} - \item Ja lietotāja ieraksts netika atrasts, parāda 2. paziņojumu. Beidz apstrādi; - \item Pārbauda, vai saitē iekļautais marķieris ir derīgs un nav novecojis. Ja tas ir nederīgs vai novecojis, parāda 2. paziņojumu. Beidz apstrādi. - \end{enumerate} - \item Pārbauda, vai parole un paroles apstiprinājums ir iesniegts; - \begin{enumerate} - \item Ja kāds no laukiem nav iesniegts parāda 4. paziņojumu ar attiecīgo lauku nosaukumiem. - \end{enumerate} - \item Pārbauda, vai jaunā parole atbilst drošības prasībām; - \begin{enumerate} - \item Ja nē, parāda 5. paziņojumu ar neizpildīto prasību sarastu. Beidz apstrādi. - \end{enumerate} - \item Pievieno parolei sāls simbolu virkni, šifrē paroli ar jaucējfunkciju; - \item Ieraksta marķiera derīguma termiņu pamaina uz tagadējo laiku; - \item Atjaunoto lietotāja ierakstu ieraksta datubāzē. - \begin{enumerate} - \item Ja ierakstīšana neizdevās, parāda 3. paziņojumu. - \end{enumerate} -} -{ - Izvades datu mērķis ir lietotāja informēšana par paroles atjaunošanas stāvokli. Lietotāja saskarnē parādās 6. paziņojums. - \begin{enumerate} - \item Paroles atjaunošanas stāvoklis - kods ar noteiktu stāvokli. - \end{enumerate} -} -{ - \begin{enumerate} - \item Paroles atjaunošanas marķieris nav norādīts! - \item Paroles atjaunošanas marķieris nav derīgs! - \item Sistēmas kļūda! Mēģiniet vēlreiz vēlāk! - \item Lauks: [neaizpildīto lauku saraksts] netika aizpildīts (/-i)! - \item Parolei ir jāsatur: [neizpildīto paroles prasību saraksts]! - \item Paroles atjaunošana ir veiksmīga! - \end{enumerate} -} diff --git a/src/requirements/functional-requirements/modules/auth/AMF05.tex b/src/requirements/functional-requirements/modules/auth/AMF05.tex deleted file mode 100644 index ff68a97..0000000 --- a/src/requirements/functional-requirements/modules/auth/AMF05.tex +++ /dev/null @@ -1,59 +0,0 @@ -\moduleFunctionTable -{Lietotāja pieteikšanās} -{mod-func-auth-login} -{Lietotāja pieteikšanās} -{AMF05} -{ - Autentificēt lietotāju, lai sistēma to uztver kā lietotāju ar konkrēto sistēmas lomu un atļauj turpmākās sistēmas lomas darbības sistēmā. -} -{ - Ievades dati tiek saņemti no pieteikšanās veidlapas. - - Obligātie parametri: - \begin{enumerate} - \item E-pasta adrese vai segvārds - simbolu virkne, kas tiek pārbaudīta uz atbilstību e-pasta adreses formātam, kam jāatbilst ``RFC 2822: Interneta ziņu formāts'' standarta prasībām; - \item Ja tā neatbilst, tad tai jāatbilst sekojošām prasībām: simbolu virkne ar garumu no 6 līdz 20 simboliem, kas var saturēt burtciparu simbolus, skaitļus, defises, pasvītras, apostrofus. - \item Parole - simbolu virkne ar garumu no 8 līdz 128 simboliem, kas var saturēt burtciparu simbolus, skaitļus, atstarpi, speciālos simbolus: izsaukuma zīmi, dubultpēdiņas, skaitļa zīmi, dolāra zīmi, procenta zīmi, ampersandu, pēdiņas, iekavas, figūriekavas, zvaigznīti, plusu, komatu, mīnusu, punktu, slīpsvītru, kolu, semikolu, salīdzinājuma zīmes, vienādības zīmi, jautājuma zīmi, ``et'' zīmi, slīpsvītru, pasvītru, vertikālo joslu, tildi. - \end{enumerate} -} -{ - \begin{enumerate} - \item Pārbauda vai visi lauki ir aizpildīti. - \begin{enumerate} - \item Ja kāds no laukiem nav aizpildīts, tad parāda 1. paziņojumu. - \end{enumerate} - \item Pārbauda, vai e-pasta adrese vai segvārds un parole satur tikai pieļaujamos simbolus; - \begin{enumerate} - \item Ja satur, tad iegūst izmantotos neatļautos simbolus, tad parāda 2. paziņojumu ar laukiem un simboliem. Beidz apstrādi. - \end{enumerate} - \item Pārbauda, vai e-pasta adrese vai un parole nepārsniedz noteikto garumu; - \begin{enumerate} - \item Ja satur, tad iegūst pārsniegto garumu parametru sarakstu un parāda 3. paziņojumu ar laukiem un garumiem. Beidz apstrādi. - \end{enumerate} - \item Iegūst lietotāja autentifikācijas datus no datubāzes, meklējot lietotājus pēc segvārdu vai e-pasta adreses; - \begin{enumerate} - \item Ja tāds lietotājs netika atrasts, parāda 4. paziņojumu. Beidz apstrādi. - \end{enumerate} - \item Pievieno ievades datu parolei sāls simbolu virkni; - \item Pārbauda, vai lietotāja sniegtā paroles jaucējfunkcijas rezultāts sakrīt ar datubāzē glabātu vērtību; - \begin{enumerate} - \item Ja paroles jaucējfunkcijas rezultāts nesakrīt ar datubāzē glabāto vērtību nesakrīt, parāda X paziņojumu. Beidz apstrādi. - \end{enumerate} - \item Ja sakrīt, ģenerē lietotāja sesijas marķieri. Saglabā marķieri kā sīkdatni lietotāja pārlūkprogrammas datu krātuvē. - \end{enumerate} -} -{ - Izvades datu mērķis ir noteikt, vai lietotājs tiks pāradresēts un kurā lapā lietotājs tiks pāradresēts. - Lietotāja saskarnē lietotājs tiek pāradresēts uz autentificēto lietotāju sākuma lapu. - \begin{enumerate} - \item Paroles atjaunošanas stāvoklis - kods ar noteiktu stāvokli. - \end{enumerate} -} -{ - \begin{enumerate} - \item Lauks: [neaizpildīto lauku saraksts] netika aizpildīts (/-i)!; - \item {}[Parametra nosaukums] nedrīkst saturēt: [izmantoto parametra neatļauto simbolu saraksts]!; - \item {}[Parametra nosaukums] nedrīkst pārsniegt [noteikto parametra maksimālo simbolu skaits]!; - \item Lietotājs ar šādu segvārdu vai e-pastu netika atrasts vai parole nav pareiza! - \end{enumerate} -} diff --git a/src/requirements/functional-requirements/modules/auth/AMF06.tex b/src/requirements/functional-requirements/modules/auth/AMF06.tex deleted file mode 100644 index 76e4b35..0000000 --- a/src/requirements/functional-requirements/modules/auth/AMF06.tex +++ /dev/null @@ -1,33 +0,0 @@ -\moduleFunctionTable -{Lietotāja atteikšanās} -{mod-func-auth-logout} -{Lietotāja atteikšanās} -{AMF06} -{ - Funkcijas mērķis ir pārtraukt lietotāja pārlūkprogrammas sasaisti ar noteiktu lietotāju kontu. -} -{ - Ievades dati tiek saņemti no lietotāja - klikšķis uz atteikšanās pogu. - - Obligātie parametri: - \begin{enumerate} - \item Lietotāja sesijas marķieris - 16 simbolu gara virkne, kas tiek glabāta lietotāja pārlūkprogrammā. - \end{enumerate} -} -{ - \begin{enumerate} - \item No lietotāja pārlūkgrammas tiek iegūts sesijas marķieris; - \item Ja sesijas marķieris eksistē, tas tiek izdzēsts. Lietotājs tiek pāradresēts uz mājaslapas sākuma lapu. - \begin{enumerate} - \item Ja marķiera izdzēšana nav veiksmīga. Parāda 1. paziņojumu. - \end{enumerate} - \end{enumerate} -} -{ - Izvades datu funkcijai nav. Lietotājs tiek pāradresēts mājaslapas sākuma lapā. -} -{ - \begin{enumerate} - \item Atteikšanās neizdevās! Mēģiniet pārlādēt lapu vai mēģiniet vēlāk! - \end{enumerate} -} diff --git a/src/requirements/functional-requirements/modules/auth/AMF07.tex b/src/requirements/functional-requirements/modules/auth/AMF07.tex deleted file mode 100644 index ee34e57..0000000 --- a/src/requirements/functional-requirements/modules/auth/AMF07.tex +++ /dev/null @@ -1,47 +0,0 @@ -\moduleFunctionTable -{Lietotāja konta apstiprināšana} -{mod-func-auth-email-confirm} -{Lietotāja konta apstiprināšana} -{AMF07} -{ - Funkcijas mērķis ir apstiprināt lietotāja konta e-pasta adresi, i.e., apstiprināt to, ka lietotājam pieder norādītā e-pasta adrese. -} -{ - Ievaddati tiek iegūti no apstiprinājuma vietrādes parametriem, ar kuras lietotājs piekļūst funkcijai. - - Obligātie parametri: - \begin{enumerate} - \item E-pasta apstiprinājuma marķieris - 16 simbolu gara virkne, kas tiek iegūta no saites parametriem. - \end{enumerate} - -} -{ - \item Pārbauda, vai ievades datos ir e-pasta apstiprinājuma marķieris; - \begin{enumerate} - \item Ja tā nav, tad parāda 1. paziņojumu. Beidz apstrādi. - \end{enumerate} - \item Pārbauda, vai e-pasta adreses apstiprinājuma marķieris atbilst sagaidāmam garumam; - \begin{enumerate} - \item Ja neatbilst, parāda 2. paziņojumu. Beidz apstrādi. - \end{enumerate} - \item Meklē datubāzē lietotājus ar iesniegto marķieri; - \begin{enumerate} - \item Ja tāds lietotājs netiek atrasts, parāda 2. paziņojumu. Beidz apstrādi; - \item Ja datubāzē atrastā lietotāja e-pasta apstiprināšanas karodziņš apzīmē apstiprinātu e-pastu, parāda 3. paziņojumu. Beidz apstrādi. - \end{enumerate} - \item Ierakstam pamaina karodziņa stāvokli uz kodu, kas atbilst apstiprinātam stāvoklim un rediģētu ierakstu ieraksta datubāzē. -} -{ - Izvades datu mērķis ir lietotāja informēšana par konta apstiprināšanas stāvokli. Lietotājam tiek parādīts 4. paziņojums. - \begin{enumerate} - \item E-pasta adreses apstiprinājuma stāvoklis - kods ar noteiktu stāvokli. - \end{enumerate} -} -{ - \begin{enumerate} - \item Apstiprināšanas saite nav korekta: marķieris nav norādīts! Mēģiniet vēlreiz vai pieprasiet atkārtotu apstiprinājuma ziņas izsūtīšanu!; - \item Marķieris nav aktuāls vai nav korekts! Mēģiniet vēlreiz vai pieprasiet atkārtotu apstiprinājuma ziņas izsūtīšanu!; - \item E-pasts jau ir apstiprināts!; - \item E-pasts ir veiksmīgi apstiprināts! - \end{enumerate} -} diff --git a/src/requirements/functional-requirements/modules/auth/index.tex b/src/requirements/functional-requirements/modules/auth/index.tex deleted file mode 100644 index e2b8a61..0000000 --- a/src/requirements/functional-requirements/modules/auth/index.tex +++ /dev/null @@ -1,17 +0,0 @@ -\clearpage -\subsubsection{Reģistrācijas un pieteikšanās modulis} - -\begin{figure}[htbp] - \centering - \includegraphics[width=\linewidth]{./src/img/ReģistrācijasPieteikšanāsModulis.png} - \caption{Reģistrācijas un pieteikšanās moduļa 2. līmeņa DPD} - \label{fig:dpd-2-auth} -\end{figure} - -\input{./src/requirements/functional-requirements/modules/auth/AMF01.tex} -\input{./src/requirements/functional-requirements/modules/auth/AMF02.tex} -\input{./src/requirements/functional-requirements/modules/auth/AMF03.tex} -\input{./src/requirements/functional-requirements/modules/auth/AMF04.tex} -\input{./src/requirements/functional-requirements/modules/auth/AMF05.tex} -\input{./src/requirements/functional-requirements/modules/auth/AMF06.tex} -\input{./src/requirements/functional-requirements/modules/auth/AMF07.tex} diff --git a/src/requirements/functional-requirements/modules/chat/TMF01.tex b/src/requirements/functional-requirements/modules/chat/TMF01.tex deleted file mode 100644 index 023c635..0000000 --- a/src/requirements/functional-requirements/modules/chat/TMF01.tex +++ /dev/null @@ -1,32 +0,0 @@ -\moduleFunctionTable -{Jaunas īsziņas izveidošana} -{mod-func-chat-create} -{Jaunas īsziņas izveidošana} -{TMF01} -{ - Funkcijas mērķis ir dot iespēju rakstiskā veidā sazināties spēlētājam ar citiem klātesošajiem spēlētājiem. -} -{ - Lietotājs ievada tekstu, ko vēlās izsūtīt citiem spēles dalībniekiem. -} -{ - \begin{enumerate} - \item Pārbauda vai ziņā ir ieraksts, ja nav tad ziņa netiek izsūtīta. - \item Pārbauda rakstzīmju skaitu noteiktajā tekstā, vai tas nav par garu. - \item Pārbauda, kurā tērzēšanas sadaļā ziņa ir izsūtīta, visiem spēlētājiem, noteiktam spēlētājam, vai noteiktām grupām ar spēlētājiem. - \item Meklē vai vēlamajā tekstā nav vārdi, kas atrodas aizliegto vārdu sarakstā, piemēram lamuvārdi. - \item Apstiprina spēlētāja ID un ziņa tiek izsūtīta ar noteiktā spēlētāja vārdu - \end{enumerate} -} -{ - \begin{enumerate} - \item Ziņa, ko rakstījis spēlētājs citiem spēlētājiem. - \end{enumerate} -} -{ - \begin{enumerate} - \item Ziņā nav neviena simbola! - \item Ziņa satur neatļautos vārdus. - \item Notikusi kļūda ziņa nav izsūtīta. - \end{enumerate} -} diff --git a/src/requirements/functional-requirements/modules/chat/TMF02.tex b/src/requirements/functional-requirements/modules/chat/TMF02.tex deleted file mode 100644 index 44286d3..0000000 --- a/src/requirements/functional-requirements/modules/chat/TMF02.tex +++ /dev/null @@ -1,38 +0,0 @@ -\moduleFunctionTable -{Īsziņas izdzēšana} -{mod-func-chat-delete} -{Īsziņas izdzēšana} -{TMF02} -{ - Funkcija atbild par netīšām uzrakstītām ziņām, kuras spēlētāji vēlas izdzēst, pēc ziņu nosūtīšanas vai atbild par nekorektu vai neobjektīvi pareizu ziņu izdzēšanu. -} -{ - \begin{enumerate} - \item Spēlētājs nospiež pogu dzēst. - \item Spēlētājs apstiprina, ka ziņu vēlas izdzēst. - \end{enumerate} - Vai - \begin{enumerate} - \item Tērzētavā tiek ierakstīta nepiedienīga ziņa, istabas vadītājs nospiež ziņai pogu dzēst. - \item Istabas vadītājs apstiprina, ka ziņu vēlas izdzēst - \end{enumerate} -} -{ - \begin{enumerate} - \item Kad tiek nospiesta poga izdzēst, datubāzē tiek atrasta noteiktā ziņa, kurai uzspiesta izdzēšanas poga. - \item Kad ziņa ir atrasta, tiek pārbaudīts spēlētāja ID, ja tas sakrīt, tad spēlētājam liek apstiprināt, ka tiešām ziņa ir jāizdzēš. - \item Ja spēlētājs apstiprina dzēšanu, ziņa tiek izdzēsta, ja nē, tad netiek dzēsta. - \end{enumerate} -} -{ - \begin{enumerate} - \item Izdzēstā ziņa no ziņu uzskaites ir pazudusi. - \item Parādās uzraksts par ziņas izdzēšanu. - \end{enumerate} -} -{ - \begin{enumerate} - \item Ziņa ir veiksmīgi izdzēsta! - \item Ziņa netika izdzēsta! - \end{enumerate} -} diff --git a/src/requirements/functional-requirements/modules/chat/TMF03.tex b/src/requirements/functional-requirements/modules/chat/TMF03.tex deleted file mode 100644 index 8527c97..0000000 --- a/src/requirements/functional-requirements/modules/chat/TMF03.tex +++ /dev/null @@ -1,34 +0,0 @@ -\moduleFunctionTable -{Īsziņu pārskats} -{mod-func-chat-overview} -{Īsziņu pārskats} -{TMF03} -{ - Funkcija nepieciešama, lai uzskaitītu un parādītu visas uzrakstītās īsziņas visās tērzētavās. -} -{ - \begin{enumerate} - \item Spēlētājs ierakstot ziņu, tā parādās uzskaitē, ko redz visi spēlētāji, kuriem ir piekļuve noteiktajai tērzētavai, kur ziņa tika izsūtīta. - \end{enumerate} -} -{ - \begin{enumerate} - \item Spēlētājs ieraksta ziņu. - \item Tiek pārbaudīts kurā no tērzētavām ziņa ir ierakstīta. - \item Pārbauda ziņas identifikatoru un lietotāja identitāti. - \item Ziņa tiek ierakstīta uzskaitē, kur visi ar piekļuvi to var izlasīt. - \item Tērzētavas uzskaitē ziņa redzama spēlētājiem paliek līdz 10 sekundēm. - \end{enumerate} -} -{ - \begin{enumerate} - \item Spēlētāja rakstītā ziņa. - \item Pēc noteiktām sekundēm ziņa nodziest. - \end{enumerate} -} -{ - \begin{enumerate} - \item Ziņa netika nosūtīta - \item {}[Laiks]:[Spēlētāja vārds]: [Īsziņa] - \end{enumerate} -} diff --git a/src/requirements/functional-requirements/modules/chat/TMF04.tex b/src/requirements/functional-requirements/modules/chat/TMF04.tex deleted file mode 100644 index 9a5e4f6..0000000 --- a/src/requirements/functional-requirements/modules/chat/TMF04.tex +++ /dev/null @@ -1,36 +0,0 @@ -\moduleFunctionTable -{Īsziņu rediģēšana} -{mod-func-chat-edit} -{Īsziņu rediģēšana} -{TMF04} -{ - Funkcija nodrošina iespēju spēlētājam rediģēt jau izsūtītu ziņu tērzētavā. -} -{ - \begin{enumerate} - \item Poga ``Rediģēt'' blakus ziņai. - \item Rediģējamās ziņas ievades lauks. - \end{enumerate} -} -{ - \begin{enumerate} - \item Spēlētājs nospiež pogu ``Rediģēt'' blakus vēlamajai ziņai. - \item Parādās ievades lauks ar esošās ziņas saturu. - \item Spēlētājs rediģē tekstu un nosūta izmaiņas. - \item Pārbauda ziņas identifikators un lietotāja identitāti. - \item Aizstāj esošo tekstu ar jauno. - \item Atjauno ziņu ar rediģēšanas laika zīmogu. - - \end{enumerate} -} -{ - \begin{enumerate} - \item Rediģētā ziņa ar atjauninātu laika zīmolu. - \end{enumerate} -} -{ - \begin{enumerate} - \item Ziņa veiksmīgi rediģēta. - \item Kļūda rediģējot ziņu. - \end{enumerate} -} diff --git a/src/requirements/functional-requirements/modules/chat/index.tex b/src/requirements/functional-requirements/modules/chat/index.tex deleted file mode 100644 index 0015269..0000000 --- a/src/requirements/functional-requirements/modules/chat/index.tex +++ /dev/null @@ -1,14 +0,0 @@ -\clearpage -\subsubsection{Terzēšanas modulis} - -\begin{figure}[htbp] - \centering - \includegraphics[width=\linewidth]{./src/img/TerzēšanasModulis.png} - \caption{Tēržēšanas moduļa 2. līmeņa DPD} - \label{fig:dpd-2-chat} -\end{figure} - -\input{./src/requirements/functional-requirements/modules/chat/TMF01.tex} -\input{./src/requirements/functional-requirements/modules/chat/TMF02.tex} -\input{./src/requirements/functional-requirements/modules/chat/TMF03.tex} -\input{./src/requirements/functional-requirements/modules/chat/TMF04.tex} diff --git a/src/requirements/functional-requirements/modules/game-progress/SGMF01.tex b/src/requirements/functional-requirements/modules/game-progress/SGMF01.tex deleted file mode 100644 index 1d9d64d..0000000 --- a/src/requirements/functional-requirements/modules/game-progress/SGMF01.tex +++ /dev/null @@ -1,66 +0,0 @@ -\moduleFunctionTable -{Spēles darbības veikšana} -{mod-func-progress-action} -{Spēles darbības veikšana} -{SGMF01} -{ - Funkcijas mērķis ir veikt spēles darbību lietotājiem, kas atrodas spēles istabā, saglabājot darbībau kā notikuma ierakstu. -} -{ - Ievade tiek iegūta no darbības spēles laikā. - - Obligātie parametri: - \begin{enumerate} - \item Darbības identifikators - vesels pozitīvs skaitlis. - \item Spelētāja identifikators - vesels pozitīvs skaitlis. - \item Veicēja lietotāja identifikators - vesels pozitīvs skaitlis. - \item Spēles istabas identifikators - vesels pozitīvs skaitlis. - \end{enumerate} - - Neobligātie parametri: - \begin{enumerate} - \item Mērķa spēlētāju identifikatori - veselu pozitīvu skaitļu saraksts. - Noklusētā vērtība: tukšs saraksts. - \end{enumerate} -} -{ - \begin{enumerate} - \item Meklē spēles istabu attiecīgā tabulā, izmantojot darbības identifikatoru. - Ja spēles istaba netiek atrasta parāda 1. paziņojumu. - Ja speles istabas stāvoklis neatbilst stāvoklim spēlei procesā, tad parāda 2. paziņojumu. - \item Meklē spēles darbību attiecīgā tabulā, izmantojot darbības identifikatoru. - Ja darbība netiek atrasta parāda 2. paziņojumu. - \item Ja mērķa spēlētāju saraksts nav tukšs, meklē spēlētāju attiecīgajā tabulā, izmantot spēlētāja identifikatorus. - Ja viens no mērķa spēlētājiem netiek atrasts parāda 2. paziņojumu. - \item Meklē mērķa spēlētājus attiecīgajā tabulā, izmantot spēlētāja identifikatoru. - Ja darbība netiek atrasta parāda 3. paziņojumu. - \item Iegūst lietotāja identifikatoru no atrastā ieraksta. - Pārbauda vai lietotāja identifikators sakrīt ar spēlētāja identifikatoru. - Ja nesakrīt, parāda 2. paziņojumu. - \item Iegūst lomas identifikatoru no atrastā ieraksta. - Meklē lomu, izmantojot identifikatoru. - Ja loma netiek atrasta, parāda 2. paziņojumu. - \item Pārbauda, vai darbība ir ar lomu saistīta darbība. - Ja tā nav, parāda 3. paziņojumu. - \item Meklēt spēles notikumus datubāzē, noskaidro vai pēdējais pēc izveidošanas notikums aizliedz darbību vai to atļauj. - Ja pēdējais nav atļaujošais notikums, parāda 2. paziņojumu. - \item Izveido jaunu ierakstu darbību. - Ja ieraksta veikšana neizdevās. - Parāda 2. paziņojumu. - \end{enumerate} -} -{ - Izvades mērķis ir parādīt ar izpildīto darbību saistīto informāciju. - \begin{enumerate} - \item Darbības veikšanas apstiprinājuma teksts - simbolu virkne. - \item Darbības stāvokļa kods - skaitlisks kods. - \end{enumerate} -} -{ - \begin{enumerate} - \item Spēle ir beigusies, nevar veikt darbību! - \item Sistēmas kļūda! Mēģiniet vēlreiz. - \item Darbība nav atļauta jūsu lomai! - \item Darbība nav atļauta šajā spēles fāzē! - \end{enumerate} -} diff --git a/src/requirements/functional-requirements/modules/game-progress/SGMF02.tex b/src/requirements/functional-requirements/modules/game-progress/SGMF02.tex deleted file mode 100644 index 5543eae..0000000 --- a/src/requirements/functional-requirements/modules/game-progress/SGMF02.tex +++ /dev/null @@ -1,47 +0,0 @@ -\moduleFunctionTable -{Spēles notikuma izveidošana} -{mod-func-progress-create} -{Spēles notikuma izveidošana} -{SGMF02} -{ - Funkcijas mērķis ir izveidot visiem spēlētājiem aktuālu spēles notikumu. - Notikumi galvenokārt ir spēlētāju izraisīti. - Taču daļa no notikumiem ir atkarīgi no laika un fāzes. -} -{ - Ievades dati tiek iegūti no esošās spēles procesa konteksta. - \begin{enumerate} - \item izveidošanas laiks - simbolu virkni ar datumu noteiktā formatējumā; - \item vai ir nakts - karodziņš; - \item darbības identifikators - vesels pozitīvs skaitlis vai 0; - \item spēlētāja identifikators - vesels pozitīvs skaitlis vai 0. - \end{enumerate} -} -{ - \begin{enumerate} - \item Meklē spēles istabu attiecīgā tabulā, izmantojot darbības identifikatoru. - Ja spēles istaba netiek atrasta parāda 1. paziņojumu. - \item Meklē spēles darbību datubāzē, izmantojot darbības identifikatoru. - Ja spēles istaba netiek atrasta parāda 1. paziņojumu. - \item Pārbauda, vai datuma formāts ir korekts. - Ja nav korekts, parāda X paziņojumu. - \item Iegūst vēlāko notikumu nakts maiņas datubāzē. - Ja netika atrasts neviens, tad pieņem, ka ir 0-tā nakts (neviena nakts vēl nav notikusi). - \item Pārbauda, vai spēles notikumu identifikatori datubāzes ierakstā sakrīt ar sarakstā atrodamiem. - \item Izveido jaunu notikuma ierakstu datubāzē, izmantojot sagatavotos datus. - Ja izveidošana nenotika parāda 3. paziņojumu. - \end{enumerate} -} -{ - Izvades mērķis ir apstiprināt notikuma izveidošanu. - \begin{enumerate} - \item Notikumu izveidošanas stāvokļa kods - skaitlisks kods. - \end{enumerate} -} -{ - \begin{enumerate} - \item Spēles istaba ar identifikatoru [istabas identifikators] netika atrasta! - \item Darbība ar identifikatoru [istabas identifikators] netika atrasta! - \item Notikuma izveidošana neizdevās: nevar ierakstīt datubāzē! - \end{enumerate} -} diff --git a/src/requirements/functional-requirements/modules/game-progress/SGMF03.tex b/src/requirements/functional-requirements/modules/game-progress/SGMF03.tex deleted file mode 100644 index 044f760..0000000 --- a/src/requirements/functional-requirements/modules/game-progress/SGMF03.tex +++ /dev/null @@ -1,41 +0,0 @@ -\moduleFunctionTable -{Spēles notikumu pārskats} -{mod-func-progress-overview} -{Spēles notikumu pārskats} -{SGMF03} -{ - Funkcijas mērķis ir iegūt informāciju par spēles notikumiem. -} -{ - Obligātie parametri: - \begin{enumerate} - \item Spēles istabas identifikators - vesels pozitīvs skaitlis. - \item Paslēptā informācija - karodziņš. - \end{enumerate} -} -{ - \begin{enumerate} - \item Meklē spēles istabu attiecīgā tabulā, izmantojot darbības identifikatoru. - Ja spēles istaba netiek atrasta parāda 1. paziņojumu. - \item Ja pieprasītājs nav sistēma un ir pieprasīta paslēptā informācija un spēles istabas stāvoklis neapzīmē pabeigtu spēli, parāda 2. paziņojumu. - \item Sāk veidot sarakstu ar notikumu vārdnīcām. - \item No datubāzes iegūst spēles notikumu ierakstus. - Katram notikumam iegūst veidu. - \item Ja notikuma redzamības spēles procesā ir patiess, tad pievieno attiecīgo vārdnīcu sarakstam. - \end{enumerate} -} -{ - Izvades mērķis ir par notikumiem nepieciešamās informācijas apkopošana vārdnīcā atkarībā no paslēptās informācijas ievades karodziņa. - Ja tiek izvadīta paslēptā informācija, saraksts sastāvēs no vārdnīcām, kas sastāv no: - \begin{enumerate} - \item Notikuma veids - skaitlisks kods; - \item Ietekmēto spēlētāju saraksts - veselu pozitīvu skaitļu saraksts. - \end{enumerate} - Ja paslēptā informācija izvadīta netiks, tad spēlētāju vārdnīca sastāvēs tikai no lomas identifikatora. -} -{ - \begin{enumerate} - \item Spēles istaba ar identifikatoru [istabas identifikators] netika atrasta! - \item Notikumu detalizēts pārskats nav pieejams spēles laikā! - \end{enumerate} -} diff --git a/src/requirements/functional-requirements/modules/game-progress/SGMF04.tex b/src/requirements/functional-requirements/modules/game-progress/SGMF04.tex deleted file mode 100644 index 4c289f7..0000000 --- a/src/requirements/functional-requirements/modules/game-progress/SGMF04.tex +++ /dev/null @@ -1,49 +0,0 @@ -\moduleFunctionTable -{Spēles stāvokļa detaļas} -{mod-func-progress-state-overview} -{Spēles stāvokļa detaļas} -{SGMF04} -{ - Funkcijas mērķis par spēles tagadējo stāvokli, kas ietver spēlētāju stāvokli, nakts numuru un atļautās darbības. -} -{ - Paslēptā informācija nosaka, vai izvade saturēs lomu datus par spēlētājiem. - Obligātie parametri: - Spēles istabas identifikators - vesels pozitīvs skaitlis. - Paslēptā informācija - karodziņš. - -} -{ - \begin{enumerate} - \item Meklē spēles istabu attiecīgā tabulā, izmantojot darbības identifikatoru. - Ja spēles istaba netiek atrasta parāda 1. paziņojumu. - \item Iesāk vārdnīcas gatavošanu ar noteiktu informāciju. - \item Vārdnīcai pievieno spēles stāvokli un nakts numuru. - \item Ja paslēptās informācijas karodziņš ir patiesība, katram spēlētājam sameklē datubāzē attiecīgo lomu. - Ja loma netika atrasta, parāda 2. paziņojumu ar attiecīgajiem spēlētāju identifikatoriem. - Pievieno vārdnīcai spēlētāju vārdnīcu sarakstu, katram pievienojot lomas identifikatoru, dzīvības stāvokli un sakaru redzamības mainīgos. - \end{enumerate} -} -{ - Izvades mērķis ir nepieciešamās informācijas apkopošana vārdnīcā. - Ja tiek izvadīta paslēptā informācija, vārdnīca sastāvēs no atribūtiem: - \begin{enumerate} - \item Spēles stāvoklis - skaitlisks kods. - \item Nakts numurs - vesels pozitīvs skaitlis. - \item Spēlētāju vārdnīcu saraksts. Katra spēlētāja vārdnīca, kā atslēgas ir: - \begin{enumerate} - \item Lomas identifikators - veselu pozitīvu skaitli; - \item Dzīvības stāvoklis - karodziņš; - \item Mafijas sakaru redzamība - karodziņš; - \item Vispārīgo sakaru redzamība - karodziņš; - \end{enumerate} - - \end{enumerate} - Ja paslēptā informācija izvadīta netiks, tad spēlētāju vārdnīca sastāvēs tikai no lomas identifikatora. -} -{ - \begin{enumerate} - \item Spēles istaba ar identifikatoru [istabas identifikators] netika atrasta! - \item Spēlētāju ar identifikatoru: [spēlētāju identifikatori] netika atrasti! - \end{enumerate} -} diff --git a/src/requirements/functional-requirements/modules/game-progress/index.tex b/src/requirements/functional-requirements/modules/game-progress/index.tex deleted file mode 100644 index c0d2aa7..0000000 --- a/src/requirements/functional-requirements/modules/game-progress/index.tex +++ /dev/null @@ -1,14 +0,0 @@ -\clearpage -\subsubsection{Spēles gaitas modulis} - -\begin{figure}[htbp] - \centering - \includegraphics[width=\linewidth]{./src/img/SpēlesGaitasModulis.png} - \caption{Spēles gaitas moduļa 2. līmeņa DPD} - \label{fig:dpd-2-game-progress} -\end{figure} - -\input{./src/requirements/functional-requirements/modules/game-progress/SGMF01.tex} -\input{./src/requirements/functional-requirements/modules/game-progress/SGMF02.tex} -\input{./src/requirements/functional-requirements/modules/game-progress/SGMF03.tex} -\input{./src/requirements/functional-requirements/modules/game-progress/SGMF04.tex} diff --git a/src/requirements/functional-requirements/modules/game-role/SLMF01.tex b/src/requirements/functional-requirements/modules/game-role/SLMF01.tex deleted file mode 100644 index e355470..0000000 --- a/src/requirements/functional-requirements/modules/game-role/SLMF01.tex +++ /dev/null @@ -1,41 +0,0 @@ -\moduleFunctionTable -{Lomas detaļu detaļas} -{mod-func-role-details} -{Lomas detaļu detaļas} -{SLMF01} -{ - Funkcijas mērķis ir izvadīt specificētās lomas pārskatu. -} -{ - Obligātie parametri: - \begin{enumerate} - \item Spēles lomas identifikators - pozitīvs skaitlis. - \end{enumerate} -} -{ - \begin{enumerate} - \item Pārbauda vai lietotājs ir reģistrēts. - Ja nav, izvada 1. paziņojumu. - \item Sagatavo datubāzes pieprasījumu no spēles lomas tabulas. - \item Pieprasījumam pievieno atlasīšanu pēc spēles lomas identifikatora. - \item Sagatavo pieprasījuma lauku sarakstu. - Saraksta pamatā ir nosaukums, apraksts, maksimāli pieļaujamais skaits spēlē, vai var tikt mafijas noslepkavots, vai ir lietotāja izveidots. - \item Veic sagatavoto pieprasījumu, pieprasot iepriekš sagatavoto lauku sarakstu. - Ja pieprasījums neizdotas, parāda 2. paziņojumu. - Ja spēles loma netika atrasta, parāda 3. paziņojumu. - \end{enumerate} -} -{ - Izvades datu mērķis ir spēles lomas datu izvadīšana. - \begin{enumerate} - \item Vārdnīca - nosaukums - simbolu virkne, apraksts - simbolu virkne, maksimāli pieļaujamais - skaits spēlē - nenegatīvs skaitlis, vai var tikt mafijas noslepkavots - karodziņš, vai ir lietotāja izveidots - karodziņš. - \end{enumerate} -} -{ - \begin{enumerate} - \item Darbība nav autorizēta! - \item Notika sistēmas iekšēja kļūda! Mēģiniet vēlreiz! - \item Tāda spēles lomas nav atrasta! Mēģiniet vēlreiz! - \end{enumerate} -} diff --git a/src/requirements/functional-requirements/modules/game-role/SLMF02.tex b/src/requirements/functional-requirements/modules/game-role/SLMF02.tex deleted file mode 100644 index bc0b21f..0000000 --- a/src/requirements/functional-requirements/modules/game-role/SLMF02.tex +++ /dev/null @@ -1,39 +0,0 @@ -\moduleFunctionTable -{Lomu pārskats} -{mod-func-role-overview} -{Lomu pārskats} -{SLMF02} -{ - Funkcijas mērķis ir izvadīt sarakstu ar visām pieejamajām lomām, to nosaukumiem. -} -{ - % TODO: Filters -} -{ - \begin{enumerate} - \item Pārbauda, vai lietotājs ir reģistrēts. Ja nav, izvada 1. paziņojumu. - \item Sagatavo datubāzes pieprasījumu no spēles lomas tabulas. - \item Pieprasījumam pievieno atlasīšanu pēc filtra. - \item Pieprasa ierakstu saskaitīšanu pēc filtra, izmantojot sagatavoto pieprasījumu. - Ja rezultātu skaits ir $0$, tad parāda 4. paziņojumu. - \item Aprēķina lappušu skaitu ar formulu: $L = ceil(Q / Q_l)$, $Q$ - rezultātu skaits, $Q_l$ - ierakstu skaits vienā lappusē. - \item Ja ievaddatos nav lappuses numurs vai tā pārsniedz aprēķināto lappušu skaitu, tad turpmāk lappuses numurs būs 1. - \item Aprēķina ierakstu nobīdi ar formulu: $O = (N - 1) * Q_l$, kur $O$ - nobīde; $N$ - lappuses numurs, $Q_l$ - ierakstu skaits vienā lappusē. - \item Pievieno pieprasījumam nobīdi pēc aprēķinātās lappuses. - \item Veic sagatavoto pieprasījumu, iegūstot lomas nosaukumu. Ja pieprasījums neizdotas, parāda 2. paziņojumu. Ja spēles loma netika atrasta, parāda 3. paziņojumu. - \end{enumerate} -} -{ - Izvades datu mērķis ir spēles lomu saraksta datu izvadīšana. - \begin{enumerate} - \item Vārdnīca - nosaukumi - simbolu virknes. - \end{enumerate} -} -{ - \begin{enumerate} - \item Darbība nav autorizēta! - \item Notika sistēmas iekšēja kļūda! Mēģiniet vēlreiz! - \item Tāda spēles lomas nav atrasta! Mēģiniet vēlreiz! - \item Pēc jūsu meklēšanas uzvednes netika atrasts neviens lietotājs! - \end{enumerate} -} diff --git a/src/requirements/functional-requirements/modules/game-role/SLMF03.tex b/src/requirements/functional-requirements/modules/game-role/SLMF03.tex deleted file mode 100644 index 7577f3a..0000000 --- a/src/requirements/functional-requirements/modules/game-role/SLMF03.tex +++ /dev/null @@ -1,35 +0,0 @@ -\moduleFunctionTable -{Lomas darbību pārskats} -{mod-func-role-action-overview} -{Lomas darbību pārskats} -{SLMF03} -{ - Funkcijas mērķis ir izvadīt visas darbības, kuras var izpildīt attiecīgā loma. -} -{ - Obligātie parametri: - \begin{enumerate} - \item Spēles lomas identifikators - pozitīvs skaitlis. - \end{enumerate} -} -{ - \begin{enumerate} - \item Pārbauda, vai lietotājs ir reģistrēts. Ja nav, izvada 1. paziņojumu. - \item Sagatavo datubāzes viens pret daudz pieprasījumu no spēles lomas tabulas uz lomas darbības tabulu. - \item Sagatavo pieprasījuma lauku sarakstu. Saraksta pamatā ir lomas nosaukums, darbības nosaukums, vai darbība ir tūlītēja. - \item Veic sagatavoto pieprasījumu, pieprasot iepriekš sagatavoto lauku sarakstu. Ja pieprasījums neizdodas, parāda 2. paziņojumu. Ja spēles loma netika atrasta, parāda 3. paziņojumu. - \end{enumerate} -} -{ - Izvades datu mērķis ir spēles lomas darbības datu izvadīšana. - \begin{enumerate} - \item Vārdnīca - lomas nosaukums - simbolu virkne, virkne - lomas darbības nosaukums - simbolu virkne, vai lomas darbība ir tūlītēja - karodziņš. - \end{enumerate} -} -{ - \begin{enumerate} - \item Darbība nav autorizēta! - \item Notika sistēmas iekšēja kļūda! Mēģiniet vēlreiz! - \item Tāda spēles lomas nav atrasta! Mēģiniet vēlreiz! - \end{enumerate} -} diff --git a/src/requirements/functional-requirements/modules/game-role/SLMF04.tex b/src/requirements/functional-requirements/modules/game-role/SLMF04.tex deleted file mode 100644 index e41b0a8..0000000 --- a/src/requirements/functional-requirements/modules/game-role/SLMF04.tex +++ /dev/null @@ -1,60 +0,0 @@ -\moduleFunctionTable -{Jaunas lomas izveidošana} -{mod-func-role-create} -{Jaunas lomas izveidošana} -{SLMF04} -{ - Funkcijas mērķis ir izveidot spēles lomu. - Ievades dati tiek saņemti no maksas lietotājiem un administratoriem pieejamās veidlapas. - -} -{ - Obligātie parametri: - \begin{enumerate} - \item Nosaukums - simbolu virkne ar garumu līdz 64 simboliem, kas var saturēt burtciparu simbolus, skaitļus, defises. - \item Apraksts - simbolu virkne ar garumu līdz 2048 simboliem. - \item Neobligātie parametri: - \item Maksimāli pieļaujamais skaits spēlē - nenegatīvs skaitlis, noklusētā vērtība - 1. - \item Vai var tikt mafijas noslepkavots - karodziņš, noklusētā vērtība - patiess. - \item Lomas darbības nosaukums - virkne - simbolu virkne ar garumu līdz 64 simboliem, kas var saturēt burtciparu simbolus, skaitļus, defises. - \item Vai lomas darbība ir tūlītēja - virkne - karodziņš, noklusētā vērtība - nepatiess. - \end{enumerate} - Administratoram specifiskie ievaddati: - \begin{enumerate} - \item Vai ir lietotāju izveidota - karodziņš, noklusētā vērtība - patiess. - \end{enumerate} -} -{ - \begin{enumerate} - \item Pārbauda, vai visi obligātie lauki ir iesniegti. - Ja nav, iegūst sarakstu ar neaizpildītajiem laukiem un parāda 1. paziņojumu. - \item Pārbauda, vai nosaukums un darbības nosaukums, ja ievadīts, satur tikai pieļaujamos simbolus. - Ja nesatur, tad iegūst izmantotos neatļautos simbolus, tad parāda 7. paziņojumu ar attiecīgi laukiem un simboliem. - \item Pārbauda, vai nosaukums, apraksts un darbības nosaukums, ja ievadīts, nepārsniedz noteikto garumu. - Ja pārsniedz, tad iegūst pārsniegto garumu parametru sarakstu un parāda 2. paziņojumu ar attiecīgajiem laukiem un garumiem. - \item Ja ir ievadīts maksimāli pieļaujamais skaits spēlē parametrs, pārbauda, vai skaitlis ir nenegatīvs, citādi parāda 6. paziņojumu. - \item Ja ir ievadīts(/-i) lomas darbības nosaukums(/-i), tad izveidot daudz pret daudz attiecību tabulu starp spēles lomas un lomas darbības tabulām. - \item Ja lietotājs nav administrators, iestatīt noklusēto vērtību ``vai ir lietotāju izveidota'' uz patiess. - \item Mēģina sameklēt datubāzē spēles lomu ar ievadīto nosaukumu. - Ja tāds pastāv, tad parāda 3. paziņojumu. - \item Jaunas spēles lomas dati tiek ierakstīti datubāzē. - Ja ierakstīšana notiek, parādīt 4. paziņojumu, citādi parādīt 5. paziņojumu. - \end{enumerate} -} -{ - Izvades datu mērķis ir noteikt, vai spēles loma ir veiksmīgi saglabāta. - \begin{enumerate} - \item Lomas izveidošanas stāvoklis - kods ar noteiktu stāvokli. - \end{enumerate} -} -{ - \begin{enumerate} - \item Lauks: [neaizpildīto lauku saraksts] netika aizpildīts (/-i)! - \item {}[Parametra nosaukums] nedrīkst pārsniegt [noteikto parametra maksimālo simbolu skaits]! - \item Uzstādījumi ar tādu nosaukumu jau eksistē! Samainiet nosaukumu un mēģiniet vēlreiz! - \item Uzstādījumi veiksmīgi saglabāti! - \item Sistēmas iekšēja kļūda! Mēģiniet vēlreiz! - \item Skaitlim jābūt nenegatīvam! Mēģiniet vēlreiz! - \item {}[Parametra nosaukums] nedrīkst saturēt: [izmantoto parametra neatļauto simbolu saraksts]! - \end{enumerate} -} diff --git a/src/requirements/functional-requirements/modules/game-role/SLMF05.tex b/src/requirements/functional-requirements/modules/game-role/SLMF05.tex deleted file mode 100644 index 66fea31..0000000 --- a/src/requirements/functional-requirements/modules/game-role/SLMF05.tex +++ /dev/null @@ -1,68 +0,0 @@ -\moduleFunctionTable -{Lomas rediģēšana} -{mod-func-role-edit} -{Lomas rediģēšana} -{SLMF05} -{ - Funkcijas mērķis ir rediģēt spēles lomas. -} -{ - Ievades dati tiek saņemti no maksas lietotājiem un administratoriem pieejamās veidlapas. - - Obligātie parametri: - \begin{enumerate} - \item Spēles lomas identifikators - pozitīvs skaitlis. Noklusētā vērtība - no konteksta spēles loma, kas tiek rediģēts, iegūtais identifikators. - \item Nosaukums - simbolu virkne ar garumu līdz 64 simboliem, kas var saturēt burtciparu simbolus, skaitļus, defises, pasvītras, apostrofus. - \item Apraksts - simbolu virkne ar garumu līdz 2048 simboliem. - \end{enumerate} - - Neobligātie parametri: - \begin{enumerate} - \item Maksimāli pieļaujamais skaits spēlē - nenegatīvs skaitlis. - \item Vai var tikt mafijas noslepkavots - karodziņš. - \item Lomas darbības nosaukums - virkne - simbolu virkne ar garumu līdz 64 simboliem, kas var saturēt burtciparu simbolus, skaitļus, defises. - \item Vai lomas darbība ir tūlītēja - virkne - karodziņš. - \end{enumerate} - - Administratoram specifiskie ievaddati: - \begin{enumerate} - \item Vai ir lietotāju izveidota - karodziņš. - \end{enumerate} -} -{ - \begin{enumerate} - \item Ja lietotājs nav administrators vai lietotāja identifikators, nesakrīt ar nesakrīt ar lietotāja identifikatoru, kurš izveidoja doto spēles lomu, parādīt 6. paziņojumu. - \item Veido izmainīto datu sarakstu pēc turpmāk izmainītajiem laukiem. - \item Pārbauda, vai nosaukums un darbības nosaukums, ja ievadīts, satur tikai pieļaujamos simbolus. - Ja nesatur, tad iegūst izmantotos neatļautos simbolus, tad parāda 8. paziņojumu ar attiecīgi laukiem un simboliem. - \item Pārbauda, vai visi obligātie lauki ir iesniegti. - Ja nav, iegūst sarakstu ar neaizpildītajiem laukiem un parāda 1. paziņojumu. - \item Pārbauda, vai nosaukums un apraksts nepārsniedz noteikto garumu. - Ja pārsniedz, tad iegūst pārsniegto garumu parametru sarakstu un parāda 2. paziņojumu ar attiecīgajiem laukiem un garumiem. - \item Pārbauda, vai maksimāli pieļaujamais skaits spēlē ir nenegatīvs skaitlis. - Ja nav, tad parāda 7. paziņojumu. - \item Ja tika iesniegts atšķirīgs nosaukums, mēģina sameklēt datubāzē lomu ar ievadīto nosaukumu. - Ja tāda pastāv, tad parāda 3. paziņojumu. - \item Iepriekš izmainītos laukus pievieno izmainīto lauku sarakstam. - \item Spēles uzstādījumu sagatavotie dati - lauki, kas ir rediģēto lauku sarakstā, tiek ierakstīti datubāzē. - Ja ierakstīšana nenotiek, parādīt 5. paziņojumu. - \end{enumerate} -} -{ - Izvades datu mērķis ir noteikt, vai spēles loma ir veiksmīgi rediģēta. - \begin{enumerate} - \item Lomas rediģēšanas stāvoklis - kods ar noteiktu stāvokli. - \end{enumerate} -} -{ - \begin{enumerate} - \item Lauks: [neaizpildīto lauku saraksts] netika aizpildīts (/-i)! - \item {}[Parametra nosaukums] nedrīkst pārsniegt [noteikto parametra maksimālo simbolu skaits]! - \item Loma ar tādu nosaukumu jau eksistē! Samainiet nosaukumu un mēģiniet vēlreiz! - \item Loma veiksmīgi saglabāti! - \item Lomas rediģēšana nav veiksmīga! - \item Darbība nav autorizēta! - \item Skaitlim jābūt nenegatīvam! Mēģiniet vēlreiz! - \item {}[Parametra nosaukums] nedrīkst saturēt: [izmantoto parametra neatļauto simbolu saraksts]! - \end{enumerate} -} diff --git a/src/requirements/functional-requirements/modules/game-role/SLMF06.tex b/src/requirements/functional-requirements/modules/game-role/SLMF06.tex deleted file mode 100644 index a90f6c1..0000000 --- a/src/requirements/functional-requirements/modules/game-role/SLMF06.tex +++ /dev/null @@ -1,41 +0,0 @@ -\moduleFunctionTable -{Lomas dzēšana} -{mod-func-role-delete} -{Lomas dzēšana} -{SLMF06} -{ - Funkcijas mērķis ir neatgriezeniski dzēst spēles lomu. -} -{ - Ievades dati tiek saņemti no maksas lietotājiem un administratoriem pieejamās veidlapas. - Obligātie parametri: - \begin{enumerate} - \item Spēles lomas identifikators - pozitīvs skaitlis. - \end{enumerate} -} -{ - \begin{enumerate} - \item Ja lietotājs nav administrators vai lietotājs, kurš izveidoja doto lomu, parādīt 1. paziņojumu. - \item Pārbauda, vai loma ar tādu identifikatoru eksistē. - Ja neeksistē, parāda 2. paziņojumu. - \item Visas spēles lomas un lomas darbības daudz pret daudz starptabulas izdzēš. - Ja izdzēšāna nav veiksmīga, parāda 4. paziņojumu. - \item Spēles lomas ierakstu izdzēš. - Ja izdzēšana ir veiksmīga, parāda 3. paziņojumu. - Ja izdzēšāna nav veiksmīga, parāda 4. paziņojumu. - \end{enumerate} -} -{ - Izvades datu mērķis ir noteikt spēles lomas dzēšanas stāvokli. - \begin{enumerate} - \item Spēles lomas dzēšanas stāvoklis - kods ar noteiktu stāvokli. - \end{enumerate} -} -{ - \begin{enumerate} - \item Darbība nav autorizēta! - \item Tāda spēles loma nav atrasta! Mēģiniet vēlreiz! - \item Spēles loma ir veiksmīgi izdzēsta! - \item Sistēmas iekšēja kļūda! Mēģiniet vēlreiz! - \end{enumerate} -} diff --git a/src/requirements/functional-requirements/modules/game-role/index.tex b/src/requirements/functional-requirements/modules/game-role/index.tex deleted file mode 100644 index 1848209..0000000 --- a/src/requirements/functional-requirements/modules/game-role/index.tex +++ /dev/null @@ -1,16 +0,0 @@ -\clearpage -\subsubsection{Spēles lomu uzstādījumu modulis} - -\begin{figure}[htbp] - \centering - \includegraphics[width=\linewidth]{./src/img/SpēlesLomuModulis.png} - \caption{Spēles lomu uzstādījumu moduļa 2. līmeņa DPD} - \label{fig:dpd-2-game-role} -\end{figure} - -\input{./src/requirements/functional-requirements/modules/game-role/SLMF01.tex} -\input{./src/requirements/functional-requirements/modules/game-role/SLMF02.tex} -\input{./src/requirements/functional-requirements/modules/game-role/SLMF03.tex} -\input{./src/requirements/functional-requirements/modules/game-role/SLMF04.tex} -\input{./src/requirements/functional-requirements/modules/game-role/SLMF05.tex} -\input{./src/requirements/functional-requirements/modules/game-role/SLMF06.tex} diff --git a/src/requirements/functional-requirements/modules/game-room/SIMF01.tex b/src/requirements/functional-requirements/modules/game-room/SIMF01.tex deleted file mode 100644 index 15153a2..0000000 --- a/src/requirements/functional-requirements/modules/game-room/SIMF01.tex +++ /dev/null @@ -1,40 +0,0 @@ -\moduleFunctionTable -{Pieejamo pieslēgšanās spēles istabu pārskats} -{mod-func-room-overview} -{Pieejamo pieslēgšanās spēles istabu pārskats} -{SIMF01} -{ - Funkcijas mērķis ir ļaut reģistrētiem lietotājiem apskatīt pieejamās spēles istabas. -} -{ - Funkcijai nav paredzēti ievades parametri. -} -{ - \begin{enumerate} - \item Tiek veikts pieprasījums Lietotāju kontu modulim identificēt lietotāju. - \begin{enumerate} - \item Ja lietotājs netiek identificēts, tad tiek atgriezts 2. paziņojums. - \end{enumerate} - \item Spēles istabu datubāzei tiek nosūtīts pieprasījums ar Lietotāja identitāti. - \item Spēles istabu datubāze atbild ar Pieejamo spēles istabu datiem. - \begin{enumerate} - \item Ja atbilde netiek saņemta, tad tiek atgriezts 3. paziņojums. - \end{enumerate} - \item Atgrieztie dati tiek sakārtoti, norādot katras istabas nosaukumu, aktīvo lietotāju skaitu, maksimālo lietotāju skaitu un spēles konfigurāciju. - \begin{enumerate} - \item Ja dati neietver nevienu pieejamu istabu, tad tiek atgriezts 1. paziņojums. - \end{enumerate} - \item Realizēto pārskatu atgriež lietotājam. - \end{enumerate} -} -{ - Saskarnē tiek izvietots pārskatāms saraksts ar visām lietotājam pieejamajām spēles istabām un to raksturojošajiem parametriem, - tas ir, nosaukumu, aktīvo lietotāju skaitu, maksimālo lietotāju skaitu, spēles konfigurāciju. -} -{ - \begin{enumerate} - \item ``Nav pieejamu istabu'' Brīdinājums par lietotājam pieejamajām spēles istabām - \item ``Autorizācijas kļūda'' - Brīdinājums par identifikācijas mēģinājumu. - \item ``Tehniskas problēmas'' - Brīdinājums par sistēmas stāvokli - \end{enumerate} -} diff --git a/src/requirements/functional-requirements/modules/game-room/SIMF02.tex b/src/requirements/functional-requirements/modules/game-room/SIMF02.tex deleted file mode 100644 index 87823da..0000000 --- a/src/requirements/functional-requirements/modules/game-room/SIMF02.tex +++ /dev/null @@ -1,52 +0,0 @@ -\moduleFunctionTable -{Pieslegšanās spēles istabai} -{mod-func-room-connect} -{Pieslegšanās spēles istabai} -{SIMF02} -{ - Funkcijas mērķis ir ļaut reģistrētiem lietotājiem pievienoties izvēlētajai spēles istabai. -} -{ - Obligātie parametri: - \begin{enumerate} - \item Istabas identifikācijas kodu - \end{enumerate} - Neobligātie parametri: - \begin{enumerate} - \item Istabas piekļuves parole - simbolu virkne no 6 - 12 simboliem [prasības]. - \end{enumerate} -} -{ - \begin{enumerate} - \item Tiek veikts pieprasījums Spēles istabu datubāzei ar Spēles istabas identifikācijas datiem. - \begin{enumerate} - \item Ja istaba ir atrasta un ja tās piekļuves kritēriji ietver paroli, tad tiek atgriezts dialogs piekļuves paroles iesniegšanai, kas tiek pievienoti pieprasījumam. - \begin{enumerate} - \item Ja piekļuves parole nesakrīt ar istabas kritērijiem, tad tiek atgriezts 3. paziņojums. - \end{enumerate} - \item Ja istabas lietotāju skaits ir sasniedzis maksimālo lietotāju skaitu, tad tiek atgriezts 2. paziņojums. - \end{enumerate} - \item Spēles istabas datubāze atbild ar Spēles istabu spēlētāju datiem un Spēlētāju stāvokļu datiem. - \begin{enumerate} - \item Ja atbilde netiek saņemta, tad tiek atgriezts 4. paziņojums. - \end{enumerate} - \item Atgrieztie dati tiek sakārtoti Spēles istabas pārskata izkārtojumā un lietotājs tiek pāradresēts uz attiecīgās istabas saiti. Tiek atgriezts 1. paziņojums. - \begin{enumerate} - \item Ja pāradresācijas procesā rodas kļūda, tad tiek atgriezts 4. paziņojums. - \end{enumerate} - \end{enumerate} -} -{ - Izvades mērķis ir noteikt vai lietotājs tiks pāradresēts. - \begin{enumerate} - \item Pieslēgšanās stāvoklis - skaitlisks kods. - \end{enumerate} -} -{ - \begin{enumerate} - \item ``Pievienošanās istabai ir veiksmīga!'' - Apstiprinošs paziņojums - \item ``Istabā nav brīvu vietu!'' - Brīdinājums par Spēles istabas stāvokli - \item ``Nepareiza piekļuves parole!'' - Brīdinājums par piekļuves mēģinājumu - \item ``Tehniskas problēmas'' - Brīdinājums par sistēmas stāvokli - \end{enumerate} -} diff --git a/src/requirements/functional-requirements/modules/game-room/SIMF03.tex b/src/requirements/functional-requirements/modules/game-room/SIMF03.tex deleted file mode 100644 index 70c8c6c..0000000 --- a/src/requirements/functional-requirements/modules/game-room/SIMF03.tex +++ /dev/null @@ -1,41 +0,0 @@ -\moduleFunctionTable -{Atslēgšanās no spēles istabas pieteikums} -{mod-func-room-disconnect} -{Atslēgšanās no spēles istabas pieteikums} -{SIMF03} -{ - Funkcijas mērķis ir ļaut reģistrētiem lietotājiem atslēgties no pašreizējās spēles istabas. -} -{ - Obligātie parametri: - \begin{enumerate} - \item Lietotāja identifikators - vesels pozitīvs skaitlis. - \item Spēles istabas identifikators - vesels pozitīvs skaitlis. - \end{enumerate} -} -{ - \begin{enumerate} - \item Meklē spēles istabas ierakstu datubāzē, izmantojot identifikatoru. - Ja to neatrod, parāda 1. paziņojumu. - \item Meklē spēlētāja ierakstu datubāzē. - Ja to neatrod, parāda 2. paziņojumu. - \item Lietotāja aktīvuma karogs tiek nomainīts uz nepatiesu. - Ja ierakstīšana neizdodas, parāda 4. paziņojumu. - \item Ja atslēgšanās ir veiksmīga, parāda 3. paziņojumu. - \end{enumerate} -} -{ - Izvades mērķis ir noteikt vai lietotājs tiks pāradresēts. - \begin{enumerate} - \item Atslēgšanās stāvoklis - skaitlisks kods. - \end{enumerate} -} -{ - \begin{enumerate} - \item Spēles istaba nav atrasta! Mēģiniet vēlreiz. - \item Spēlētājs nav atrasts! Mēģiniet vēlreiz. - \item Sistēmas kļūda! Mēģiniet vēlreiz! - \item Veiksmīgi atslēgts no istabas. - \item Tehniskas problēmas, mēģiniet vēlāk. - \end{enumerate} -} diff --git a/src/requirements/functional-requirements/modules/game-room/SIMF04.tex b/src/requirements/functional-requirements/modules/game-room/SIMF04.tex deleted file mode 100644 index 4e6fb47..0000000 --- a/src/requirements/functional-requirements/modules/game-room/SIMF04.tex +++ /dev/null @@ -1,32 +0,0 @@ -\moduleFunctionTable -{Jaunas spēles istabas izveide} -{mod-func-room-create} -{Jaunas spēles istabas izveide} -{SIMF04} -{ - Maksas lietotājiem ļauj izveidot jaunu spēles istabu ar noteiktiem iestatījumiem -} -{ - \begin{enumerate} - \item Lietotājs ievada istabas nosaukumu - \item Lietotājs izvēlas spēles uzstādījumus - \item Nospiež ``Izveidot jaunu istabu''. - \end{enumerate} -} -{ - \begin{enumerate} - \item Autorizācijas pārbaude, vai lietotājam ir maksas versija. - \item Ievades formas parādīšana istabas nosaukuma, maksimālo spēlētāju skaitu un citiem iestatījumiem - \item Formas datu validācija un istabas izveide. - \item Lietotājs tiek automātiski pievienots jaunizveidotajai istabai. - \end{enumerate} -} -{ - Lietotājs tiek novirzīts uz jaunizveidotās istabas saskarni. -} -{ - \begin{enumerate} - \item ``Istaba veiksmīgi izveidota.'' - \item ``Istaba nevarēja tikt izveidota, mēģiniet vēlāk.'' - \end{enumerate} -} diff --git a/src/requirements/functional-requirements/modules/game-room/SIMF05.tex b/src/requirements/functional-requirements/modules/game-room/SIMF05.tex deleted file mode 100644 index e291cb8..0000000 --- a/src/requirements/functional-requirements/modules/game-room/SIMF05.tex +++ /dev/null @@ -1,31 +0,0 @@ -\moduleFunctionTable -{Spēles sākuma pieteikums} -{mod-func-room-app} -{Spēles sākuma pieteikums} -{SIMF05} -{ - Istabas izveidotājam ir iespēja sākt spēli istabā, kuru ir izveidojis -} -{ - \begin{enumerate} - \item Maksas lietotājs ir autorizējies un atrodas spēles istabā. - \item Nospiež ``Sākt spēli'', tiek padots istabas identifikators. - \end{enumerate} -} -{ - \begin{enumerate} - \item Pārbauda, vai istabā ir nepieciešamais spēlētāju skaits. - \item Sākuma pieteikums tiek nosūtīts visiem istabas dalībniekiem. - \item Ja vairākums apstiprina, spēle sākas. - - \end{enumerate} -} -{ - Spēles saskarne ar sākuma informāciju par spēli. -} -{ - \begin{enumerate} - \item ``Spēle sāksies pēc dalībnieku apstiprinājuma.'' - \item ``Spēles sākums nav iespējams, nepietiek dalībnieku.'' - \end{enumerate} -} diff --git a/src/requirements/functional-requirements/modules/game-room/SIMF06.tex b/src/requirements/functional-requirements/modules/game-room/SIMF06.tex deleted file mode 100644 index 0bb50cb..0000000 --- a/src/requirements/functional-requirements/modules/game-room/SIMF06.tex +++ /dev/null @@ -1,30 +0,0 @@ -\moduleFunctionTable -{Spēlētāja izslēgšana} -{mod-func-room-kill} -{Spēlētāja izslēgšana} -{SIMF06} -{ - Administrators var izslēgt spēlētāju no spēles istabas. -} -{ - \begin{enumerate} - \item Administrators izvēlas spēlētāju, ko vēlas izslēgt. - \item Nospiež ``Izslēgt spēlētāju''. - \end{enumerate} -} -{ - \begin{enumerate} - \item Pārbauda administratora autorizāciju. - \item Atrast izvēlēto spēlētāju datubāzē. - \item Spēlētājam tiek bloķēta pieeja konkrētajai istabai - \end{enumerate} -} -{ - Administrators redz paziņojumu par veiksmīgu izslēgšanu. -} -{ - \begin{enumerate} - \item ``Spēlētājs veiksmīgi izslēgts.'' - \item "Izslēgšana neveiksmīga, mēģiniet vēlreiz. - \end{enumerate} -} diff --git a/src/requirements/functional-requirements/modules/game-room/SIMF07.tex b/src/requirements/functional-requirements/modules/game-room/SIMF07.tex deleted file mode 100644 index c752c38..0000000 --- a/src/requirements/functional-requirements/modules/game-room/SIMF07.tex +++ /dev/null @@ -1,35 +0,0 @@ -\moduleFunctionTable -{Spēlētāju pārskats} -{mod-func-room-player-overview} -{Spēlētāju pārskats} -{SIMF07} -{ - Funkcija ļauj administratoram iegūt pārskatu par visiem spēlētājiem noteiktā virtuālā istabā. -} -{ - Obligātie parametri: - \begin{enumerate} - \item Spēles identifikators - pozitīvs skaitlis. - \end{enumerate} -} -{ - \begin{enumerate} - \item Pārbauda, vai lietotājs ir autorizēts. Ja nē, parāda 1. paziņojumu. - \item Iegūst spēlētāju sarakstu no datubāzes. - \item Ja sistēmas lietotājs: veic notikumu aprēķinus un pārbauda uzvaras nosacījumus. - \item Ja administrators: sagatavo datu sarakstu ar iespēju atsaukties uz konkrētu lietotāju. - \item Ja reģistrēts lietotājs vai maksas lietotājs, tad sagatavo un atgriež identificētās istabas spēlētāju sarakstu - \end{enumerate} -} -{ - \begin{enumerate} - \item Ja reģistrēts lietotājs vai maksas lietotājs, tad saskarne ar spēlētāju sarakstu - \end{enumerate} -} -{ - \begin{enumerate} - \item Darbība nav autorizēta! - \item Neizdevās iegūt spēlētāju sarakstu. Mēģiniet vēlreiz! - \item Sistēmas iekšēja kļūda. Mēģiniet vēlreiz! - \end{enumerate} -} diff --git a/src/requirements/functional-requirements/modules/game-room/index.tex b/src/requirements/functional-requirements/modules/game-room/index.tex deleted file mode 100644 index ebfeb6e..0000000 --- a/src/requirements/functional-requirements/modules/game-room/index.tex +++ /dev/null @@ -1,17 +0,0 @@ -\clearpage -\subsubsection{Spēles istabas modulis} - -\begin{figure}[htbp] - \centering - \includegraphics[width=\linewidth]{./src/img/SpēlesIstabasModulis.png} - \caption{Spēles istabas moduļa 2. līmeņa DPD} - \label{fig:dpd-2-game-room} -\end{figure} - -\input{./src/requirements/functional-requirements/modules/game-room/SIMF01.tex} -\input{./src/requirements/functional-requirements/modules/game-room/SIMF02.tex} -\input{./src/requirements/functional-requirements/modules/game-room/SIMF03.tex} -\input{./src/requirements/functional-requirements/modules/game-room/SIMF04.tex} -\input{./src/requirements/functional-requirements/modules/game-room/SIMF05.tex} -\input{./src/requirements/functional-requirements/modules/game-room/SIMF06.tex} -\input{./src/requirements/functional-requirements/modules/game-room/SIMF07.tex} diff --git a/src/requirements/functional-requirements/modules/game-setup/SUMF01.tex b/src/requirements/functional-requirements/modules/game-setup/SUMF01.tex deleted file mode 100644 index 5280916..0000000 --- a/src/requirements/functional-requirements/modules/game-setup/SUMF01.tex +++ /dev/null @@ -1,40 +0,0 @@ -\moduleFunctionTable -{Spēles uzstādījumu pārskats} -{mod-func-setup-overview} -{Spēles uzstādījumu pārskats} -{SUMF01} -{ - Funkcijas mērķis ir sniegt pārskatu par spēles uzstādījumiem. -} -{ - Obligātie parametri: - \begin{enumerate} - \item Spēles uzstādījumu identifikators - pozitīvs skaitlis. - \end{enumerate} -} -{ - \begin{enumerate} - \item Pārbauda, vai lietotājs ir reģistrēts. - Ja nav, izvada 1. paziņojumu. - \item Sagatavo datubāzes pieprasījumu no spēles uzstādījumu tabulas. - \item Pieprasījumam pievieno atlasīšanu pēc spēles uzstādījuma identifikatora. - \item Sagatavo pieprasījumu lauku sarakstu. - Saraksta pamatā ir nosaukums, apraksts, vai ir pamata, vai ir aktīvs, izveidošanas laiks. - \item Veic sagatavoto pieprasījumu, pieprasot iepriekš sagatavoto lauku sarakstu. - Ja pieprasījums neizdodas, parāda 2. paziņojumu. - Ja spēles uzstādījums netika atrasts, parāda 3. paziņojumu. - \end{enumerate} -} -{ - Izvades datu mērķis ir spēles virtuālās istabas uzstādījumu datu izvadīšana. - \begin{enumerate} - \item Vārdnīca - nosaukums - simbolu virkne, apraksts - simbolu virkne, ir pamata - karodziņš, ir aktīvs - karodziņš, izveidošanas laiks - datums formatēts kā simbolu virkne - \end{enumerate} -} -{ - \begin{enumerate} - \item Darbība nav autorizēta! - \item Notika sistēmas iekšējā kļūda! Mēģiniet vēlreiz! - \item Tāds spēles uzstādījums nav atrasts! Mēģiniet vēlreiz! - \end{enumerate} -} diff --git a/src/requirements/functional-requirements/modules/game-setup/SUMF02.tex b/src/requirements/functional-requirements/modules/game-setup/SUMF02.tex deleted file mode 100644 index cdc1952..0000000 --- a/src/requirements/functional-requirements/modules/game-setup/SUMF02.tex +++ /dev/null @@ -1,42 +0,0 @@ -\moduleFunctionTable -{Spēles uzstādījuma lomu pārskats} -{mod-func-setup-role-overview} -{Spēles uzstādījuma lomu pārskats} -{SUMF02} -{ - Funkcijas mērķis ir sniegt pārskatu par spēles uzstādījumu lomām. -} -{ - Obligātie parametri: - \begin{enumerate} - \item Spēles uzstādījumu identifikators - pozitīvs skaitlis. - \end{enumerate} -} -{ - \begin{enumerate} - \item Pārbauda, vai lietotājs ir rēģistrēts. Ja nav, izvada 1. paziņojumu. - \item Sagatavo datubāzes pieprasījumu no spēles uzstādījumu tabulas. - \item Pieprasījumam pievieno atlasīšanu pēc spēles uzstādījuma identifikatora. - \item Sagatavo pieprasījumu lauku sarakstu. Saraksta pamatā ir spēles uzstādījumu lomu nosaukumi. - \item Pieprasa ierakstu saskaitīšanu, izmantojot sagatavoto pieprasījumu. - Ja rezultātu skaits ir $0$, tad parāda 4. paziņojumu. - \item Aprēķina lappušu skaitu ar formulu: $L = ceil(Q / Q_l)$, $Q$ - rezultātu skaits, $Q_l$ - ierakstu skaits vienā lappusē. - \item Ja ievaddatos nav lappuses numurs vai tā pārsniedz aprēķināto lappušu skaitu, tad turpmāk lappuses numurs būs 1. - \item Aprēķina ierakstu nobīdi ar formulu: $O = (N - 1) * Q_l$, kur $O$ - nobīde; $N$ - lappuses numurs, $Q_l$ - ierakstu skaits vienā lappusē. - \item Pievieno pieprasījumam nobīdi pēc aprēķinātās lappuses. - \item Veic sagatavoto pieprasījumu, pieprasot iepriekš sagatavoto lauku sarakstu. Ja pieprasījums neizdodas, parāda 2. paziņojumu. Ja spēles uzstādījums netika atrasts, parāda 3. paziņojumu. - \end{enumerate} -} -{ - Izvades datu mērķis ir spēles virtuālās istabas uzstādījumu datu izvadīšana. - \begin{enumerate} - \item Vārdnīca - lomas nosaukums - simbolu virkne. - \end{enumerate} -} -{ - \begin{enumerate} - \item Darbība nav autorizēta! - \item Notika sistēmas iekšējā kļūda! Mēģiniet vēlreiz vēlāk! - \item Tads spēles uzstādījums nav atrasts! Mēģiniet vēlreiz - \end{enumerate} -} diff --git a/src/requirements/functional-requirements/modules/game-setup/SUMF03.tex b/src/requirements/functional-requirements/modules/game-setup/SUMF03.tex deleted file mode 100644 index d1f5569..0000000 --- a/src/requirements/functional-requirements/modules/game-setup/SUMF03.tex +++ /dev/null @@ -1,47 +0,0 @@ -\moduleFunctionTable -{Jauna spēles uzstādījuma izveidošana} -{mod-func-setup-new} -{Jauna spēles uzstādījuma izveidošana} -{SUMF03} -{ - Funkcijas mērķis ir izveidot spēles virtuālās istabas uzstādījumus, turpmākai izmantošanai spēlē. -} -{ - Ievades dati tiek saņemti no maksas lietotājiem un administratoriem pieejamās veidlapas. - - Obligātie parametri: - \begin{enumerate} - \item Nosaukums - simbolu virkne ar garumu līdz 128 simboliem, kas var saturēt burtciparu simbolus, skaitļus, defises, pasvītras, apostrofus. - \item Apraksts - simbolu virkne ar garumu līdz 2048 simboliem. - \end{enumerate} -} -{ - \begin{enumerate} - \item Pārbauda, vai visi obligātie lauki ir iesniegti. - Ja nav, iegūst sarakstu ar neaizpildītajiem laukiem un parāda 1. paziņojumu. - \item Pārbauda, vai nosaukums un darbības nosaukums, ja ievadīts, satur tikai pieļaujamos simbolus. - Ja nesatur, tad iegūst izmantotos neatļautos simbolus, tad parāda 6. paziņojumu ar attiecīgi laukiem un simboliem. - \item Pārbauda, vai nosaukums un apraksts nepārsniedz noteikto garumu. - Ja pārsniedz, tad iegūst pārsniegto garumu parametru sarakstu un parāda 2. paziņojumu ar attiecīgajiem laukiem un garumiem. - \item Mēģina sameklēt datubāzē uzstādījumus ar ievadīto nosaukumu. - Ja tāds pastāv, tad parāda 3. paziņojumu. - \item Jaunas spēles uzstādījumi dati tiek ierakstīti datubāzē. - Ja ierakstīšana notiek, parādīt 4. paziņojumu, citādi parādīt 5. paziņojumu. - \end{enumerate} -} -{ - Izvades datu mērķis ir noteikt, vai spēles uzstādījumi ir veiksmīgi saglabāti. - \begin{enumerate} - \item Uzstādījumu izveidošanas stāvoklis - kods ar noteiktu stāvokli. - \end{enumerate} -} -{ - \begin{enumerate} - \item Lauks: [neaizpildīto lauku saraksts] netika aizpildīts (/-i)! - \item {}[Parametra nosaukums] nedrīkst pārsniegt [noteikto parametra maksimālo simbolu skaits]! - \item Uzstādījumi ar tādu nosaukumu jau eksistē! Samainiet nosaukumu un mēģiniet vēlreiz! - \item Uzstādījumi veiksmīgi saglabāti! - \item Sistēmas iekšēja kļūda! Mēģiniet vēlreiz! - \item {}[Parametra nosaukums] nedrīkst saturēt: [izmantoto parametra neatļauto simbolu saraksts]! - \end{enumerate} -} diff --git a/src/requirements/functional-requirements/modules/game-setup/SUMF04.tex b/src/requirements/functional-requirements/modules/game-setup/SUMF04.tex deleted file mode 100644 index 237d0fe..0000000 --- a/src/requirements/functional-requirements/modules/game-setup/SUMF04.tex +++ /dev/null @@ -1,65 +0,0 @@ -\moduleFunctionTable -{Spēles uzstādījuma rediģēšana} -{mod-func-setup-edit} -{Spēles uzstādījuma rediģēšana} -{SUMF04} -{ - Funkcijas mērķis ir rediģēt spēles virtuālās istabas uzstādījumus. -} -{ - Ievades dati tiek saņemti no maksas lietotājiem un administratoriem pieejamās veidlapas. - - Obligātie parametri: - \begin{enumerate} - \item Spēles uzstādījumu identifikators - pozitīvs skaitlis. - Noklusētā vērtība - no konteksta spēles uzstādījumu, kas tiek rediģēts, iegūtais identifikators. - \item Nosaukums - simbolu virkne ar garumu līdz 128 simboliem, kas var saturēt burtciparu simbolus, skaitļus, defises, pasvītras, apostrofus. - \item Apraksts - simbolu virkne ar garumu līdz 2048 simboliem. - \end{enumerate} - - Administratoram specifiskie ievaddati: - \begin{enumerate} - \item Vai ir pamata - karodziņš, noklusētā vērtība - nepatiess. - \item Izveidošanas laiks - datums formatēts kā simbolu virkne, noklusētā vērtība - tagadējais laiks. - \end{enumerate} -} -{ - \begin{enumerate} - \item Ja lietotājs nav administrators vai lietotāja identifikators, nesakrīt ar nesakrīt ar lietotāja identifikatoru, kurš izveidoja doto spēles uzstādījumu, parādīt 6. paziņojumu. - \item Veido izmainīto datu sarakstu pēc turpmāk izmainītajiem laukiem. - \item Pārbauda, vai visi obligātie lauki ir iesniegti. - Ja nav, iegūst sarakstu ar neaizpildītajiem laukiem un parāda 1. paziņojumu. - \item Pārbauda, vai nosaukums un darbības nosaukums, ja ievadīts, satur tikai pieļaujamos simbolus. - Ja nesatur, tad iegūst izmantotos neatļautos simbolus, tad parāda 9. paziņojumu ar attiecīgi laukiem un simboliem. - \item Pārbauda, vai nosaukums un apraksts nepārsniedz noteikto garumu. - Ja pārsniedz, tad iegūst pārsniegto garumu parametru sarakstu un parāda 2. paziņojumu ar attiecīgajiem laukiem un garumiem. - \item Ja tika iesniegts atšķirīgs nosaukums, mēģina sameklēt datubāzē uzstādījumus ar ievadīto nosaukumu. - Ja tāds pastāv, tad parāda 3. paziņojumu. - \item Iepriekš izmainītos laukus pievieno izmainīto lauku sarakstam. - \item Ja lietotājs ir administrators, pārbauda, vai datumam ir korekts formāts. - Ja nav, parāda 7. paziņojumu. Pārbauda, vai datums ir pagātnē vai tagad. - Ja datums ir nākotnē, parāda 8. paziņojumu. - Sagatavotiem datiem pievieno administratoriem specifiskās. - \item Spēles uzstādījumu sagatavotie dati - lauki, kas ir rediģēto lauku sarakstā, tiek ierakstīti datubāzē. - Ja ierakstīšana nenotiek, parādīt 5. paziņojumu. - \end{enumerate} -} -{ - Izvades datu mērķis ir noteikt spēles uzstādījumu rediģēšanas stāvokli. - \begin{enumerate} - \item Spēles uzstādījumu rediģēšanas apstiprinājuma stāvoklis - kods ar noteiktu stāvokli. - \end{enumerate} -} -{ - \begin{enumerate} - \item Lauks: [neaizpildīto lauku saraksts] netika aizpildīts (/-i)! - \item {}[Parametra nosaukums] nedrīkst pārsniegt [noteikto parametra maksimālo simbolu skaits]! - \item Uzstādījumi ar tādu nosaukumu jau eksistē! Samainiet nosaukumu un mēģiniet vēlreiz! - \item Uzstādījumi veiksmīgi saglabāti! - \item Spēles uzstādījumu rediģēšana nav veiksmīga! - \item Darbība nav autorizēta! - \item Nekorekts datums! Datuma formāts: [nepieciešamais datuma formāts]. - \item Izveidošanas datums nedrīkst būt nākotnē! - \item {}[Parametra nosaukums] nedrīkst saturēt: [izmantoto parametra neatļauto simbolu saraksts]! - \end{enumerate} -} diff --git a/src/requirements/functional-requirements/modules/game-setup/SUMF05.tex b/src/requirements/functional-requirements/modules/game-setup/SUMF05.tex deleted file mode 100644 index 9a562b1..0000000 --- a/src/requirements/functional-requirements/modules/game-setup/SUMF05.tex +++ /dev/null @@ -1,41 +0,0 @@ -\moduleFunctionTable -{Spēles uzstādījuma dzēšana} -{mod-func-setup-delete} -{Spēles uzstādījuma dzēšana} -{SUMF05} -{ - Funkcijas mērķis ir neatgriezeniski dzēst spēles virtuālās istabas uzstādījumus. -} -{ - Obligātie parametri: - \begin{enumerate} - \item Spēles uzstādījumu identifikators - pozitīvs skaitlis. - \end{enumerate} -} -{ - \begin{enumerate} - \item Ja lietotājs nav administrators vai lietotājs, kurš izveidoja dotos uzstādījumus, parādīt 1. paziņojumu. - \item Pārbauda, vai uzstādījumi ar tādu identifikatoru eksistē. - Ja neeksistē, parāda 2. paziņojumu. - \item Pārbauda, vai uzstādījums pašlaik ir aktīvs. - Ja ir, parāda 3. paziņojumu. - \item Uzstādījumu ierakstu izdzēš. - Ja izdzēšana ir veiksmīga, parāda 4. paziņojumu. - Ja izdzēšana nav veiksmīga, parāda 5. paziņojumu. - \end{enumerate} -} -{ - Izvades datu mērķis ir noteikt spēles uzstādījumu dzēšanas stāvokli. - \begin{enumerate} - \item Spēles uzstādījumu dzēšanas stāvoklis - kods ar noteiktu stāvokli. - \end{enumerate} -} -{ - \begin{enumerate} - \item Darbība nav autorizēta! - \item Tāds spēles uzstādījums nav atrasts! Mēģiniet vēlreiz! - \item Spēles uzstādījumi pašlaik tiek izmantoti. Mēģiniet vēlreiz vēlāk. - \item Spēles uzstādījumi ir veiksmīgi izdzēsti! - \item Sistēmas iekšēja kļūda! Mēģiniet vēlreiz! - \end{enumerate} -} diff --git a/src/requirements/functional-requirements/modules/game-setup/index.tex b/src/requirements/functional-requirements/modules/game-setup/index.tex deleted file mode 100644 index 799ba56..0000000 --- a/src/requirements/functional-requirements/modules/game-setup/index.tex +++ /dev/null @@ -1,15 +0,0 @@ -\clearpage -\subsubsection{Spēles uzstādījumu modulis} - -\begin{figure}[htbp] - \centering - \includegraphics[width=\linewidth]{./src/img/SpēlesUzstādījumuModulis.png} - \caption{Spēles uzstādījumu moduļa 2. līmeņa DPD} - \label{fig:dpd-2-game-setup} -\end{figure} - -\input{./src/requirements/functional-requirements/modules/game-setup/SUMF01.tex} -\input{./src/requirements/functional-requirements/modules/game-setup/SUMF02.tex} -\input{./src/requirements/functional-requirements/modules/game-setup/SUMF03.tex} -\input{./src/requirements/functional-requirements/modules/game-setup/SUMF04.tex} -\input{./src/requirements/functional-requirements/modules/game-setup/SUMF05.tex} diff --git a/src/requirements/functional-requirements/modules/index.tex b/src/requirements/functional-requirements/modules/index.tex deleted file mode 100644 index 0f48222..0000000 --- a/src/requirements/functional-requirements/modules/index.tex +++ /dev/null @@ -1,11 +0,0 @@ -\setlength{\parindent}{0pt} -\input{./src/requirements/functional-requirements/modules/auth/index.tex} -\input{./src/requirements/functional-requirements/modules/user/index.tex} -\input{./src/requirements/functional-requirements/modules/premium-user/index.tex} -\input{./src/requirements/functional-requirements/modules/price/index.tex} -\input{./src/requirements/functional-requirements/modules/chat/index.tex} -\input{./src/requirements/functional-requirements/modules/game-room/index.tex} -\input{./src/requirements/functional-requirements/modules/game-progress/index.tex} -\input{./src/requirements/functional-requirements/modules/game-role/index.tex} -\input{./src/requirements/functional-requirements/modules/game-setup/index.tex} -\setlength{\parindent}{1cm} diff --git a/src/requirements/functional-requirements/modules/premium-user/MAMF01.tex b/src/requirements/functional-requirements/modules/premium-user/MAMF01.tex deleted file mode 100644 index 271cff9..0000000 --- a/src/requirements/functional-requirements/modules/premium-user/MAMF01.tex +++ /dev/null @@ -1,59 +0,0 @@ -\moduleFunctionTable -{Abonementa pieteikums} -{mod-func-premium-app} -{Abonementa pieteikums} -{MAMF01} -{ - Funckcijas mērķis ir izveidot maksājuma pieteikumu maksas abonementam, izveidojot maksas abonementa ierakstu datubāzē maksājuma apstiprināšanas gadījumā. -} -{ - Ievades dati tiek iegūti no lietotāja maksājuma pieteikuma veidlapas, apmaksājot maksas abonementu. - - Obligātie parametri: - \begin{enumerate} - \item Kartes īpašnieka vārds. - Simbolu virkne, kas var saturēt lielo un mazos burtus (a-z, A-Z) no \emph{ASCII} simbolu kopas, atstarpes, defīzes, apostrofus. - Maksimālais simbolu skaits ir 100 simboli. - \item Kartes numurs - simbolu virkne, kas sastāv no cipariem un ir 16 simbolus gara. - \item Kartes derīguma termiņš - datums, kas sastāv no gada un mēneša. - Pieļaujamas tikai termiņi, kas nav pirms tekošā mēneša. - \item Kartes drošības kods. - Simbolu virkne no 3 cipariem. - \end{enumerate} -} -{ - \begin{enumerate} - \item Pārbauda, vai datubāzē neeksistē aktīvs abonements, kas ir saistīts ar lietotāju, kas veido maksājuma pieteikumu. - \item Pārbauda, vai visi obligātie lauki ir iesniegti. - Ja tie nav, iegūst sarakstu ar neazpildītajiem laukiem, parāda 1. paziņojumu. - \item Pārbauda, vai visi obligātie lauki satur tikai pieļaujamos simbolus. - Ja satur, tad iegūst izmantotos neatļautos simbolus, tad parāda 2. paziņojumu ar attiecīgajiem laukiem un izmantotajimem aizliegtiem simboliem. - \item Pārbauda, vai visi obligātie lauki nepārsniedz noteikto garumu. - Ja satur, tad iegūst pārsniegto garumu parametru sarakstu un parāda 3. paziņojumu ar attiecīgi laukiem un garumiem. - \item Pārbauda, vai kartes numura pirmie 4 cipari atbilst vienai no bankām, ko apstrādā maksājumu apstrādātājs. - Ja neatbilst, parāda 4. paziņojumu. - \item Pārbauda, vai kartes derīguma termiņš ir pēc tekošā mēneša. - Ja tas ir pirms, parāda 4. paziņojumu. - \item No datubāzes iegūst aktuālo šodienas cenu par abonementu. - \item Sagatavo datus pieparsījumam, kas iekļauj maksājuma datus. - Pārveido tos maksājuma apstrādātāja pieprasītā formātā un to šifrē, izmantojot maskājumu apstrādātāja \emph{API}. - \item Pieprasa abonementa izveidošanu, sazinoties ar maksājumu apstrādātāju. - Ja atbildē izveidošana netiek apstiprināta, parāda 4. paziņojumu. - \item Ja abonementa izveidošana ir apstiprināta, izveido ierakstu ar abonementa datiem datubāzē ar maksājuma procesora atbildē saņemtu klienta identifikatoru. - \end{enumerate} -} -{ - Izvades datu mērķis ir noteikt, vai lietotājs tiks pāradresēts. - \begin{enumerate} - \item Abonementa izveidošanas apstiprinājuma stāvoklis - kods ar noteiktu stāvokli. - \end{enumerate} -} -{ - \begin{enumerate} - \item Lauks: [neaizpildīto lauku saraksts] netika aizpildīts (/-i)! - \item {}[Parametra nosaukums] nedrīkst saturēt: [izmantoto parametra neatļauto simbolu saraksts]! - \item {}[Parametra nosaukums] nedrīkst pārsniegt [noteikto parametra maksimālo simbolu skaits]! - \item Notika sistēmas iekšējā kļūda! Mēģiniet vēlreiz vēlāk! - \item Abonēšana ir veiksmīga! - \end{enumerate} -} diff --git a/src/requirements/functional-requirements/modules/premium-user/MAMF02.tex b/src/requirements/functional-requirements/modules/premium-user/MAMF02.tex deleted file mode 100644 index a7bd667..0000000 --- a/src/requirements/functional-requirements/modules/premium-user/MAMF02.tex +++ /dev/null @@ -1,50 +0,0 @@ -\moduleFunctionTable -{Abonementu pārskats} -{mod-func-premium-overview} -{Abonementu pārskats} -{MAMF02} -{ - Funkcijas mērķis ir lietotājiem rādīt informāciju par maskas esošiem un bijušiem maksas abonementiem. Šī pārskata dati tiek kārtoti un filtrēti neobligātā kārtā. -} -{ - Ievades dati tiek saņemti no vietrāža parametriem. - Neobligātie parametri: - Lappuses numurs - pozitīvs skaitlis. - Stāvokļa filtra opcija (kods) - skaitlis, kas pieņem vairākas vērtības: 0 - filtru nepielietot, pārējie iespējamie abonementa stāvokļi. - Kārtošanas opcija (kods) - skaitlis, kas pieņem 2 vērtības: 0 - rezultātus nekārtot, 1 - rezultātus kārtot augoši. -} -{ - \begin{enumerate} - \item Sagatavo datubāzes pieprasījumu no maksas abonementiem. - \item Ja pastāv stāvokļa filtra opcija, kā vērtība nav nulle, pievieno pieprasījumam nosacījumu atlasīšanai pēc stāvokļa. - \item Ja pastāv kārtošanas opcija un tā nav 0, pieprasījumam pievieno rezultātu kārtošanas nosacījumu. - \item Iegūst lietotāja lomu sistēmā. - Ja lietotājs nav administrators, pieprasījumam pievieno nosacījumu, ka abonementa ierakstiem jābūt saistītiem ar lietotāju. - \item Pieprasa ierakstu saskaitīšanu, izmantojot sagatavoto pieprasījumu. - Ja rezultātu skaits ir 0, tad parāda 1. paziņojumu. - \item Aprēķina lappušu skaitu ar formulu: $L = ceil(Q / Q_l)$, $Q$ - rezultātu skaits, $Q_l$ - ierakstu skaits vienā lappusē. - \item Ja ievaddatos nav lappuses numurs vai tā pārsniedz aprēķināto lappušu skaitu, tad turpmāk lappuses numurs būs 1. - \item Aprēķina ierakstu nobīdi ar formulu: $O = (N - 1) * Q_l$, kur $O$ - nobīde; $N$ - lappuses numurs, $Q_l$ - ierakstu skaits vienā lappusē. - \item Pievieno pieprasījumam nobīdi pēc aprēķinātās lappuses. - \item Veic sagatavoto pieprasījumu, iegūstot abonementa sākuma laiku, beigu laiku, stāvokli, nākamā maksājuma laiku, maksājumu atstrādāja klienta identifikators. - Ja pieprasījums neizdodas, parāda 2. paziņojumu. - \end{enumerate} -} -{ - Izvades datu mērķis ir parādīt pārskata, ņemot vērā filtrus un kārtošanu, ja tas tika pieprasīts. - Kā arī dot informāciju abonementa abonementa atcelšanai. - - Izvades dati: - \begin{enumerate} - \item Pārskata ieraksta dati: vairāki ieraksti, kas sastāv no 2 datumiem - sākuma un beigu laiks (kas varētu neeksistēt), - abonementa stāvoklis - skaitlisks kods, kas apzīmē tekošo stāvokli abonementam, maksājumu atstrādāja klienta identifikators - skaitlis. - \item Lapu skaits - pozitīvs skaitlis. - \item Tekošā lappuse - pozitīvs skaitlis, kas ir mazāks vai vienāds par lapu skaitu. - \end{enumerate} -} -{ - \begin{enumerate} - \item Netika atrasts neviens abonements! - \item Notika sistēmas iekšējā kļūda! Mēģiniet vēlreiz vēlāk! - \end{enumerate} -} diff --git a/src/requirements/functional-requirements/modules/premium-user/MAMF03.tex b/src/requirements/functional-requirements/modules/premium-user/MAMF03.tex deleted file mode 100644 index acf257c..0000000 --- a/src/requirements/functional-requirements/modules/premium-user/MAMF03.tex +++ /dev/null @@ -1,36 +0,0 @@ -\moduleFunctionTable -{Abonementa atcelšana} -{mod-func-premium-cancel} -{Abonementa atcelšana} -{MAMF03} -{ - Funkcijas mērķis ir atcelt lietotājam, kam ir aktīvs maksas abonementi. - Maksājuma procesora abonements tiks atcelts, kā rezultātā no lietotāja vairs nebūs iekasēti maksājumi. - Abonementa stāvoklis sistēmā būs apzīmēts kā atcelts. -} -{ - Ievades dati tiek iegūti no darbības abonementu pārskatā. - Obligātie parametri: - Maksājuma procesora klienta identifikators - pozitīvs skaitlis. -} -{ - \begin{enumerate} - \item Sameklē datubāzē maksas abonementa ierakstu, pēc maksas apstrādātāja klienta identifikatora. - Ja tāds neeksistē, parāda 1. paziņojumu. - \item Izmantojot maksājumu apstrādātāja klienta numuru, pieprasa abonementa atcelšanu, izmantojot maksājuma procesora \emph{API}. - Ja maksājuma procesora atbilde norāda, ka atcelšana neizdevusies, parāda 2. paziņojumu. - \item Ja maksājuma procesora atbilde norāda, ka abonementa atcelšana ir veiksmīga, attiecīgā datubāzes ieraksta stāvokli nomaina uz stāvokli, kas apzīmē atceltu abonementu. - \end{enumerate} -} -{ - Izvades datu mērķis ir noteikt, vai atcelšana bija veiksmīga. - \begin{enumerate} - \item Abonementa atcelšanas stāvoklis - kods ar noteiktu stāvokli. - \end{enumerate} -} -{ - \begin{enumerate} - \item Maksas apstrādātāja klienta identifikators neeksistē! - \item Neizdevās atcelt abonementu! Mēģiniet vēlreiz vēlāk vai sazinieties ar tehniskās palīdzības specialistu. - \end{enumerate} -} diff --git a/src/requirements/functional-requirements/modules/premium-user/index.tex b/src/requirements/functional-requirements/modules/premium-user/index.tex deleted file mode 100644 index 1da611c..0000000 --- a/src/requirements/functional-requirements/modules/premium-user/index.tex +++ /dev/null @@ -1,13 +0,0 @@ -\clearpage -\subsubsection{Maksas abonementu modulis} - -\begin{figure}[htbp] - \centering - \includegraphics[width=\linewidth]{./src/img/MaksasAbonementaModuls.png} - \caption{Maksas abonementu moduļa 2. līmeņa DPD} - \label{fig:dpd-2-premium-user} -\end{figure} - -\input{./src/requirements/functional-requirements/modules/premium-user/MAMF01.tex} -\input{./src/requirements/functional-requirements/modules/premium-user/MAMF02.tex} -\input{./src/requirements/functional-requirements/modules/premium-user/MAMF03.tex} diff --git a/src/requirements/functional-requirements/modules/price/CMF01.tex b/src/requirements/functional-requirements/modules/price/CMF01.tex deleted file mode 100644 index 45d6aab..0000000 --- a/src/requirements/functional-requirements/modules/price/CMF01.tex +++ /dev/null @@ -1,36 +0,0 @@ -\moduleFunctionTable -{Cenas pievienošana} -{mod-func-price-add} -{Cenas pievienošana} -{CMF01} -{ - Funkcija atbild par jaunu digitālo produktu cenu pievienošanai, piemēram, maksas konta iegādei. -} -{ - Ievades datus iegūst no cenas izveidošanas veidlapas. - - Obligāti parametri: - \begin{enumerate} - \item Cena - pozitīvs decimālskaitlis. - \item Sākuma laiks - datums simbola virknes formātā. - \end{enumerate} -} -{ - \begin{enumerate} - \item Pārbauda vai lietotājam ir administratora tiesības. - \item Ierakstot jauno cenu notiek tās datu validācija un pārbaude. - \item Ja validācija ir sekmīga dati tiek ievadīti un saglabāti lietotāja datubāzē. - \end{enumerate} -} -{ - \begin{enumerate} - \item Cenas izveidošanas stāvokļa kods - skaitlisks kods. - \end{enumerate} -} -{ - \begin{enumerate} - \item Cena ir pievienota un saglabāta. - \item Cena nav saglabāta. - \item Nav notikusi sinhronizācija ar naudas kontu. - \end{enumerate} -} diff --git a/src/requirements/functional-requirements/modules/price/CMF02.tex b/src/requirements/functional-requirements/modules/price/CMF02.tex deleted file mode 100644 index 1ded5f3..0000000 --- a/src/requirements/functional-requirements/modules/price/CMF02.tex +++ /dev/null @@ -1,37 +0,0 @@ -\moduleFunctionTable -{Cenas rediģēšana} -{mod-func-price-edit} -{Cenas rediģēšana} -{CMF02} -{ - Funkcija nodrošina iespēju rediģēt jau esošu produktu cenas. -} -{ - Ievades datus iegūst no cenas rediģēšanas veidlapas. - - Obligāti parametri: - \begin{enumerate} - \item Cena - pozitīvs decimālskaitlis; - \item Sākuma laiks - datums simbola virknes formātā. - \end{enumerate} -} -{ - \begin{enumerate} - \item Pārbauda vai lietotājam ir administratora tiesības. - \item Rediģējot jau esošu cenu un izmaina tās vērtību. - \item Notiek rediģētās vērtības validācija un pārbaude. - \item Ja validācija ir apstiprināta, tad rediģētā cena tiek saglabāta un aizstāj veco cenu, kas tiek dzēsta. - \end{enumerate} -} -{ - \begin{enumerate} - \item Cenas izveidošanas stāvokļa kods - skaitlisks kods. - \end{enumerate} -} -{ - \begin{enumerate} - \item Cena ir saglabāta. - \item Cena nav saglabāta. - \item Nav notikusi sinhronizācija ar naudas kontu. - \end{enumerate} -} diff --git a/src/requirements/functional-requirements/modules/price/CMF03.tex b/src/requirements/functional-requirements/modules/price/CMF03.tex deleted file mode 100644 index e920e9d..0000000 --- a/src/requirements/functional-requirements/modules/price/CMF03.tex +++ /dev/null @@ -1,33 +0,0 @@ -\moduleFunctionTable -{Cenu pārskats} -{mod-func-price-overview} -{Cenu pārskats} -{CMF03} -{ - Funkcija dod iespēju apskatīt visas šobrīd aktuālās un neaktuālās produktu cenas. -} -{ - Ievades datus iegūst no vietrāža parametriem. - - Obligāti parametri: - \begin{enumerate} - \item Kārtošanas karodziņš. - \item Cenu kategorija. - \end{enumerate} -} -{ - \begin{enumerate} - \item Pārbauda vai lietotājam ir administratora tiesības. - \item Tiek nolasīti atlasītie dati un izvadīti no datubāzes. - \item Dati tiek apstrādāti nolasīšanas sagatavošanai. - \item Tiek izveidota saskarne, ko var pārskatīt administrators. - \end{enumerate} -} -{ - Saraksts ar atlasītajām cenām -} -{ - \begin{enumerate} - \item Cenu uzskaite nav pieejama. - \end{enumerate} -} diff --git a/src/requirements/functional-requirements/modules/price/index.tex b/src/requirements/functional-requirements/modules/price/index.tex deleted file mode 100644 index 0115fd1..0000000 --- a/src/requirements/functional-requirements/modules/price/index.tex +++ /dev/null @@ -1,13 +0,0 @@ -\clearpage -\subsubsection{Cenu modulis} - -\begin{figure}[htbp] - \centering - \includegraphics[width=\linewidth]{./src/img/CenuModulis.png} - \caption{Cenu moduļa 2. līmeņa DPD} - \label{fig:dpd-2-price} -\end{figure} - -\input{./src/requirements/functional-requirements/modules/price/CMF01.tex} -\input{./src/requirements/functional-requirements/modules/price/CMF02.tex} -\input{./src/requirements/functional-requirements/modules/price/CMF03.tex} diff --git a/src/requirements/functional-requirements/modules/user/LAMF01.tex b/src/requirements/functional-requirements/modules/user/LAMF01.tex deleted file mode 100644 index 1fef6d8..0000000 --- a/src/requirements/functional-requirements/modules/user/LAMF01.tex +++ /dev/null @@ -1,54 +0,0 @@ -\moduleFunctionTable -{Lietotāju profilu pārskats} -{mod-func-user-profiles} -{Lietotāju profilu pārskats} -{LAMF01} -{ - Funkcijas mērķis ir lietotājiem sniegt citu lietotāju profilu publisku informāciju. Funkcijas ietvaros var tikt veikta neobligāta meklēšana pēc noteiktiem lietotāja profilu atribūtiem. -} -{ - Ievades datus iegūst no lietotāja neobligāti uzstādītiem filtriem, kārtošanas izvēles un lappuses numura un meklēšanas uzvednes. - Parametri atbilst attiecīgām saitēm un ievades laukam lietotāja saskarnē un izvēlnēm pārskata lapās. - Parametru vērtības tiek iegūtas no vietrādes parametriem. - - Neobligātie parametri: - \begin{enumerate} - \item Lappuses numurs - vesels pozitīvs skaitlis; - \item Meklēšanas uzvedne - simbolu virkne ar garumu līdz 50 simboliem bez atļauto simbolu ierobežojumiem; - \item Kārtošanas vārdnīcu saraksts, kas sastāv no vārdnīcām: datu bāzes atribūta nosaukums (atbilst \hyperref[tab:IIDP12]{IIDP12}) - kārtošanas kods (atbilst \hyperref[tab:IIDP11]{IIDP11}); - \item Filtru vārdnīcu saraksts, kas sastāv no vārdnīcām: datu bāzes atribūta nosaukums (atbilst \hyperref[tab:IIDP12]{IIDP12}) - filtra vērtība (vesels skaitlis) un filtra veids (0 - Būla mainīgā filtrs, 1 - entitātes identifikatora filtrs). - \end{enumerate} -} -{ - \begin{enumerate} - \item Sāk gatavot datubāzes pieprasījumu no lietotāju tabulas; - \item Sagatavo pārskata pieprasījumu un iegūst lappuses numuru un kopējo lappušu skaitu, izmantojot \hyperref[tab:KPR07]{KPR07} ar lappuses numuru, meklēšanas uzvedni, kārtošanas vārdnīcu sarakstu, filtru vārdnīcu sarakstu, šos parametrus iesniedzot, ja tie ir iesniegti funkcijā; - \begin{enumerate} - \item Ja lappušu skaits ir 0, tad parāda 1. paziņojumu. Beidz apstrādi. - \end{enumerate} - \item Veic sagatavoto pieprasījumu, iegūstot lietotāja segvārdu, lietotāja konta izveidošanas laiku (lietotāja pievienošanās laiku), lietotāja attēla datnes adreses; - \begin{enumerate} - \item Ja pieprasījums neizdodas, parāda 2. paziņojumu. Beidz apstrādi. - \end{enumerate} - \item Katram ierakstam no rezultāta, iegūst sameklē attēla datnes adresi no attēlu tabulas pēc attēla identifikatora. - \begin{enumerate} - \item Ja attēla datnes adrese neeksistē ierakstam, tad iegūst noklusētā attēla datnes adresi un pamaina ieraksta datnes adresi izvades datos uz noklusētā datnes attēla adresi. - \end{enumerate} - \end{enumerate} -} -{ - Izvades datu mērķis ir parādīt rezultāta pārskatu lietotāja saskarnē. - \begin{enumerate} - \item Pārskata ierakstu saraksts: ierakstu saraksts, kas sastāv no: lietotāja identifikatora, segvārda, lietotāja konta izveidošanas laika (lietotāja pievienošanās laiku); - \item Kopējais lapu skaits - vesels pozitīvs skaitlis; - \item Tekošā lappuse - vesels pozitīvs skaitlis, kas ir mazāks vai vienāds par lapu skaitu; - \item Kārtošanas vārdnīcu saraksts, kas sastāv no vārdnīcām: datu bāzes atribūta nosaukums (atbilst \hyperref[tab:IIDP12]{IIDP12}) - kārtošanas kods (atbilst \hyperref[tab:IIDP11]{IIDP11}); - \item Filtru vārdnīcu saraksts, kas sastāv no vārdnīcām: datu bāzes atribūta nosaukums (atbilst \hyperref[tab:IIDP12]{IIDP12}) - filtra vērtība (vesels skaitlis) un filtra veids ($0$ - Būla mainīgā filtrs, $1$ - entitātes identifikatora filtrs). - \end{enumerate} -} -{ - \begin{enumerate} - \item Netika atrasts neviens lietotājs!; - \item Sistēmas iekšējā kļūda! Mēģiniet vēlreiz vēlāk! - \end{enumerate} -} diff --git a/src/requirements/functional-requirements/modules/user/LAMF02.tex b/src/requirements/functional-requirements/modules/user/LAMF02.tex deleted file mode 100644 index d4f2536..0000000 --- a/src/requirements/functional-requirements/modules/user/LAMF02.tex +++ /dev/null @@ -1,64 +0,0 @@ -\moduleFunctionTable -{Lietotāja konta detaļas} -{mod-func-user-profile-data} -{Lietotāja konta detaļas} -{LAMF02} -{ - Funkcijas mērķis ir reģistrētiem lietotājiem saņemt savu informāciju, kas ietver gan publisko informāciju, gan privāto. Administratoriem informācija ir iegūstama par jebkuru lietotāju. -} -{ - Ievades datus iegūst no vietrāža parametriem, caur kuru tiek piekļūts funkcijai. Alternatīvi, dati (lietotāja identifikators) tiek iegūti no konteksta. - - Neobligātie parametri: - \begin{enumerate} - \item Apskatāmo konta datu lietotāja identifikators - atbilst IIDP10. Noklusētā vērtība - no konteksta lietotāja (kas piekļūst funkciju) iegūtais identifikators. - \end{enumerate} -} -{ - \begin{enumerate} - \item Sagatavo datubāzes pieprasījumu no lietotāju tabulas; - \item Iegūst lietotāja lomu sistēmā; - \begin{enumerate} - \item Ja lietotājs nav administrators, pieprasījumam pievieno nosacījumu, ka abonementa ierakstiem jābūt saistītiem ar lietotāju. - \end{enumerate} - \item Ja apskatāmo datu kontu lietotāja identifikators sakrīt ar lietotāja identifikatoru, tad parāda X paziņojumu. Beidz apstrādi; - \item Pieprasījumam pievieno atlasīšanu pēc lietotāja identifikatora; - \item Sagatavo pieprasīto lauku sarakstu. Saraksta pamatā ir pilns vārds, segvārds, biogrāfijas informācija, konta izveidošanas laiks, attēls (datnes adrese); - \begin{enumerate} - \item Ja pieprasītājs lietotājs ir administrators, tad pie šī saraksta pievieno arī e-pasta adresi, e-pasta apstiprinājuma informāciju, konta stāvokli. - \end{enumerate} - \item Veic sagatavoto pieprasījumu, pieprasot iepriekš sagatavoto lauku sarakstu, attēla datnes adreses; - \begin{enumerate} - \item Ja pieprasījums neizdodas, parāda 2. paziņojumu. Beidz apstrādi. - \item Ja lietotājs netika atrasts, parāda 3. paziņojumu. Beidz apstrādi. - \end{enumerate} - \item Ja attēla datnes adrese neeksistē, tad iegūst noklusētā attēla datnes adresi. - \end{enumerate} -} -{ - Izvades datu mērķis ir lietotāja konta datu parādīšana. - Ja pieprasītājs lietotājs nav administrators: - \begin{enumerate} - \item Vārdnīca: - \begin{enumerate} - \item pilns vārds - simbolu virkne; - \item segvārds - simbolu virkne; - \item biogrāfijas informācija - simbolu virkne; - \item konta izveidošanas laiks - datums simbolu virknes formātā; - \item attēls - datnes adrese - \end{enumerate} - \item Papildus vārdnīcas dati, ja pieprasītājs lietotājs ir administrators: - \begin{enumerate} - \item e-pasta adrese - IIDP05; - \item e-pasta apstiprinājuma stāvoklis - skaitlisks kods (0 - neapstiprināts; 1- apstiprinājuma vēstule ir aizsūtīta; 1 - apstiprināts ); - \item konta stāvoklis - IIDP10 - \end{enumerate} - \end{enumerate} -} -{ - \begin{enumerate} - \item Darbība nav autorizēta! - \item Sistēmas iekšējā kļūda! Mēģiniet vēlreiz vēlāk! - \item Tāds lietotājs nav atrasts! Mēģiniet vēlreiz! - \end{enumerate} -} diff --git a/src/requirements/functional-requirements/modules/user/LAMF03.tex b/src/requirements/functional-requirements/modules/user/LAMF03.tex deleted file mode 100644 index 3a8ac23..0000000 --- a/src/requirements/functional-requirements/modules/user/LAMF03.tex +++ /dev/null @@ -1,35 +0,0 @@ -\moduleFunctionTable -{Lietotāja konta bloķēšana} -{mod-func-user-block} -{Lietotāja konta bloķēšana} -{LAMF03} -{ - Mērķis ir bloķēt lietotāja kontu, ja notikuši drošības vai cita veida noteikumu pārkāpumi. -} -{ - Ievades datus iegūst no veicamās darbības. - - Obligātie parametri: - \begin{enumerate} - \item Lietotāja identifikators - \end{enumerate} -} -{ - \begin{enumerate} - \item Pārbauda, vai lietotāja identifikators eksistē datubāzē. - \item Pārbauda administratora autorizāciju. - \item Maina lietotāja konta statusu uz ``bloķēts''. - \item Reģistrē bloķēšanas laiku un administratora identifikatoru. - \item Nosūta paziņojumu lietotājam. - \end{enumerate} -} -{ - Konta bloķēšanas stāvoklis. -} -{ - \begin{enumerate} - \item Konts veiksmīgi bloķēts! - \item Neeksistējošs lietotāja identifikators! - \item Nepietiekams autorizācijas līmenis, lai veiktu šo darbību! - \end{enumerate} -} diff --git a/src/requirements/functional-requirements/modules/user/LAMF04.tex b/src/requirements/functional-requirements/modules/user/LAMF04.tex deleted file mode 100644 index 38b7748..0000000 --- a/src/requirements/functional-requirements/modules/user/LAMF04.tex +++ /dev/null @@ -1,97 +0,0 @@ -\moduleFunctionTable -{Lietotāja konta rediģēšana} -{mod-func-user-edit} -{Lietotāja konta rediģēšana} -{LAMF04} -{ - Funkcijas mērķis ir rediģēt lietotāju konta datus, kas ir rediģējami. - Administratoriem rediģēt dažus laukus, kuru rediģēšana nav pieejama lietotājiem, kas nav admistratori. -} -{ - Ievades dati tiek saņemti no reģistrēto lietotāju pieejamās veidlapas. - - Obligātie parametri: - \begin{enumerate} - \item Konta datu lietotāja identifikators - pozitīvs skaitlis. - Noklusētā vērtība - no konteksta lietotāja (kas piekļūst funkciju) iegūtais identifikators. - \item Pilns vārds - simbolu virkne ar garumu līdz 50 simboliem, kas var saturēt burtciparu simbolus, defises un atstarpes. - \item Segvārds - simbolu virkne ar garumu no 6 līdz 20 simboliem, kas var saturēt burtciparu simbolus, skaitļus, defises, pasvītras, apostrofus. - \item E-pasta adrese - simbolu virkne ar garumu līdz 320 simboliem. - Pieļautajiem simboliem un pieļaujamam formātam jāatbilst ``RFC 2822: Interneta ziņu formāts'' standarta prasībām. - \item Dzimšanas datums - datums formatēts kā simbolu virkne. - \item Neobligātie parametri: - \item Vecā parole - simbolu virkne, kas atbilst iepriekš minētām paroles prasībām. - \item Jaunā parole - simbolu virkne, kas atbilst iepriekš minētām paroles prasībām. - \item Jaunās paroles apstiprinājums - simbolu virkne, kas atbilst iepriekš minētām paroles prasībām. - \item Administratoram specifiskie obligātie parametri: - \item E-pasta apstiprinājuma karogs - karodziņš, noklusētā vērtība - nepatiess. - \item Izveidošanas laiks - datums formatēts kā simbolu virkne, noklusētā vērtība - tagadējais laiks. - \item Konta stāvokļa kods - skaitlisks kods, kas atbilst noteiktam lietotāja konta stāvoklim, noklusētā vērtība - 0. - \end{enumerate} -} -{ - \begin{enumerate} - \item Ja lietotājs nav administrators un lietotāja identifikators nesakrīt ar pieprasītāja lietotāja identifikatoru, parādīt 1. paziņojumu. - \item Veido izmainīto datu sarakstu pēc turpmāk izmainītiem laukiem. - \item Pārbauda, vai visi obligātie lauki ir iesniegti. - Ja nav, iegūst sarakstu ar neizpildītajiem laukiem, parāda 2. paziņojumu. - \item Pārbauda, vai pilns vārds, segvārds, e-pasta adrese, parole satur tikai pieļaujamos simbolus. - Ja satur, tad iegūst izmantotos neatļautos simbolus, tad parāda 4. paziņojumu ar attiecīgi laukiem un simboliem. - \item Pārbauda, vai pilns vārds, segvārds, e-pasta adrese, biogrāfiskā informācija, parole nepārsniedz noteikto garumu. - Ja satur, tad iegūst pārsniegto garumu parametru sarakstu un parāda 5. paziņojumu ar attiecīgi laukiem un garumiem. - \item Pārbauda, vai dzimšanas datums atbilst noteiktam minimālam lietotāja vecumam. - Ja neatbilst, parāda 7. paziņojumu. - \item Pārbauda, vai parole un paroles apstiprinājums sakrīt. - Ja nesakrīt, tad parāda 3. paziņojumu. - \item Ja tika iesniegta biogrāfiskā informācija, aizvieto salīdzinājuma zīmes, ampersandu, dubultpēdiņas un pēdiņas ar izbēgšanas simboliem. - \item Ja jaunā parole tika iesniegta, pārbauda, vai parole atbilst noteiktiem drošības prasībām. - Ja tā tiem neatbilst, tā parāda 6. paziņojumu ar attiecīgām neizpildītajām prasībām. - \item Pievieno parolei nejauši noģenerēto simbolu virkni, šifrē paroli ar jaucējfunkciju. - \item Ja tika iesniegts attēls, tad pārbauda, vai datne atbilst atļautajiem datnes paplašinājumiem. - Ja neatbilst, parāda 8. paziņojumu ar atļautiem datnes paplašinājumiem. - \item Ja tika iesniegts attēls, tad pārbauda, vai datne nepārsniedz noteikto datnes lielumu. - Ja pārsniedz, parāda 9. paziņojumu ar iesniegtās datnes lielumu un maksimāli atļauto datnes lielumu. - Ja iesniegtā attēla paplašinājums nav PNG, tad datne tiek konvertētas šajā paplašinājumā. - \item Ja tika iesniegts atšķirīgs segvārds, mēģina sameklēt datubāzē lietotājus ar ievadīto segvārdu. - Ja tāds (/-i) pastāv, tad parāda 10. paziņojumu ar attiecīgo aizņemto lauku. - \item Ja tika iesniegts atšķirīgs e-pasts, mēģina sameklēt datubāzē lietotājus ar ievadīto e-pastu. - Ja tāds (/-i) pastāv, tad parāda 10. paziņojumu ar attiecīgo aizņemto lauku. - \item Iepriekš izmainītos laukus pievieno izmainīto lauku sarakstam. - \item Ja lietotājs ir administrators. - Pārbauda, vai datumam ir korekts formāts. - Ja nav, parāda 12. paziņojumu. - Pārbauda, vai datums ir pagātnē vai tagad. - Ja datums ir nākotnē, parāda 13. paziņojumu. - Sagatavotiem datiem pievieno administratoriem specifiskās. - \item Ja lietotājs ir administrators, pārbauda vai stāvokļa kods atbilst definētiem stāvokļa kods. - Ja neatbilst, parāda 14. paziņojumu. - \item Lietotāja konta sagatavotie dati - lauki, kas ir rediģēto lauku sarakstā, tiek ierakstīti datubāzē. - Ja ierakstīšana ir veiksmīga, pārādīt 15. paziņojumu. - Ja ierakstīšana nenotiek, parādīt 11. paziņojumu. - \end{enumerate} -} -{ - Izvades datu mērķis ir noteikt rediģēšanas konta stāvokli. - \begin{enumerate} - \item Konta rediģēšanas apstiprinājuma stāvoklis - kods ar noteiktu stāvokli. - \end{enumerate} -} -{ - \begin{enumerate} - \item Darbība nav autorizēta! - \item Lauks: [neaizpildīto lauku saraksts] netika aizpildīts (/-i)! - \item Parole un paroles apstiprinājums nesakrīt! - \item {}[Parametra nosaukums] nedrīkst saturēt: [izmantoto parametra neatļauto simbolu saraksts]! - \item {}[Parametra nosaukums] nedrīkst pārsniegt [noteikto parametra maksimālo simbolu skaits]! - \item Parolei ir jāsatur: [neizpildīto paroles prasību saraksts]! - \item Minimālais vecums reģistrācijai: [noteikts minimālais vecums reģistrācijai]. - \item Attēla datne ir aizliegts paplašinājums! Atļautie datnes paplašinājumi: [atļauto datnes paplašinājumu saraksts]. - \item Attēla datne pārsniedz maksimāli atļauto lielumu! Maksimāli atļautais lielums: [maksimāli atļautais lielums]. - \item Lietotājs ar tādu [aizņemtā lauka nosaukums] jau eksistē! - \item Notika sistēmas iekšējā kļūda! Mēģiniet vēlreiz vēlāk! - \item Nekorekts datums! Datuma formāts: [nepieciešamais datuma formāts]. - \item Izveidošanas datums nedrīkst būt nākotnē! - \item Lietotāja stāvokļa kods nav korekts! - \item Konta rediģēšana ir veiksmīga! - \end{enumerate} -} diff --git a/src/requirements/functional-requirements/modules/user/LAMF05.tex b/src/requirements/functional-requirements/modules/user/LAMF05.tex deleted file mode 100644 index a194220..0000000 --- a/src/requirements/functional-requirements/modules/user/LAMF05.tex +++ /dev/null @@ -1,42 +0,0 @@ -\moduleFunctionTable -{Lietotāja konta dzēšana} -{mod-func-user-delete} -{Lietotāja konta dzēšana} -{LAMF05} -{ - Funkcijas mērķis ir dzēst lietotāju kontus, lai to konta informācija būtu neatgriezeniski izdzēsta. -} -{ - Ievades dati tiek saņemti no reģistrēto lietotāju pieejamās darbības. - Alternatīvi, dati tiek iegūti no konteksta (autentificēta lietotāja identifikators). - - Obligātie parametri: - \begin{enumerate} - \item Konta datu lietotāja identifikators - pozitīvs skaitlis. - Noklusētā vērtība - no konteksta lietotāja (kas piekļūst funkciju) iegūtais identifikators. - \end{enumerate} -} -{ - \begin{enumerate} - \item Ja lietotājs nav administrators, parādīt 1. paziņojumu. - \item Pārbauda, vai lietotājs ar tādu identifikatoru eksistē. - Ja neeksistē, parāda 2. paziņojumu. - \item Lietotāja ierakstu izdzēš. - Ja izdzēšana ir veiksmīga, parāda 3. paziņojumu. - Ja izdzēšana nav veiksmīga, parāda 4. paziņojumu. - \end{enumerate} -} -{ - Izvades datu mērķis ir noteikt, vai lietotājs tiks pāradresēts. - \begin{enumerate} - \item Lietotāja konta dzēšanas stāvoklis - kods ar noteiktu stāvokli. - \end{enumerate} -} -{ - \begin{enumerate} - \item Darbība nav autorizēta! - \item Tāds lietotājs nav atrasts! Mēģiniet vēlreiz! - \item Sistēmas iekšējā kļūda! Mēģiniet vēlreiz! - \item Lietotāja deaktivizēšana ir veiksmīga! - \end{enumerate} -} diff --git a/src/requirements/functional-requirements/modules/user/index.tex b/src/requirements/functional-requirements/modules/user/index.tex deleted file mode 100644 index 881567d..0000000 --- a/src/requirements/functional-requirements/modules/user/index.tex +++ /dev/null @@ -1,15 +0,0 @@ -\clearpage -\subsubsection{Lietotāju kontu modulis} - -\begin{figure}[htbp] - \centering - \includegraphics[width=\linewidth]{./src/img/LietotājuKontuModulis.png} - \caption{Lietotāju kontu moduļa 2. līmeņa DPD} - \label{fig:dpd-2-user} -\end{figure} - -\input{./src/requirements/functional-requirements/modules/user/LAMF01.tex} -\input{./src/requirements/functional-requirements/modules/user/LAMF02.tex} -\input{./src/requirements/functional-requirements/modules/user/LAMF03.tex} -\input{./src/requirements/functional-requirements/modules/user/LAMF04.tex} -\input{./src/requirements/functional-requirements/modules/user/LAMF05.tex} diff --git a/src/requirements/index.tex b/src/requirements/index.tex deleted file mode 100644 index 3e3b4fa..0000000 --- a/src/requirements/index.tex +++ /dev/null @@ -1,4 +0,0 @@ -\section{Programmatūras prasību specifikācija} -\input{./src/requirements/conceptual-description.tex} -\input{./src/requirements/functional-requirements/index.tex} -\input{./src/requirements/nonfunctional-requirements/index.tex} diff --git a/src/requirements/nonfunctional-requirements/attributes/index.tex b/src/requirements/nonfunctional-requirements/attributes/index.tex deleted file mode 100644 index 519d9e8..0000000 --- a/src/requirements/nonfunctional-requirements/attributes/index.tex +++ /dev/null @@ -1,7 +0,0 @@ -\subsubsection{Atribūti} - -\input{./src/requirements/nonfunctional-requirements/attributes/usability.tex} -\input{./src/requirements/nonfunctional-requirements/attributes/scalability.tex} -\input{./src/requirements/nonfunctional-requirements/attributes/security.tex} -\input{./src/requirements/nonfunctional-requirements/attributes/maintainability.tex} -\input{./src/requirements/nonfunctional-requirements/attributes/portability.tex} diff --git a/src/requirements/nonfunctional-requirements/attributes/maintainability.tex b/src/requirements/nonfunctional-requirements/attributes/maintainability.tex deleted file mode 100644 index 329188a..0000000 --- a/src/requirements/nonfunctional-requirements/attributes/maintainability.tex +++ /dev/null @@ -1,12 +0,0 @@ -\paragraph{Uzturamība} - -Pret sistēmas izstrādājamo programmatūras uzturamību tiek izvirzītas sekojošās prasības: - -\begin{itemize} - \item Ciklomātiskā sarežģītība nepārsniedz 10. - \item API dokumentācijas pārklājumam jābūt vismaz 80\%. - \item Koda testēšanas pārklājumam jābūt vismaz 70\%. - % \item Moduļu fan-out metriks (ārējo moduļu izsaukuma izskaušanas skaits šī moduļa ietvaros) nepārniedz 7. - % \item Moduļu fan-out metriks (ārējo moduļu izsaukuma skaits ārpus šī moduļa ietvariem) jābūt nepārniedz 11. - \item Programmatūrā ir realizēta automātiska vairs nevajadzīgo datu izdzēšana diska vietas atbrīvošanai, piemēram, darbības spēlēs, kas notikušas pirms 840h (5 nedēļām). -\end{itemize} diff --git a/src/requirements/nonfunctional-requirements/attributes/portability.tex b/src/requirements/nonfunctional-requirements/attributes/portability.tex deleted file mode 100644 index d18f9d6..0000000 --- a/src/requirements/nonfunctional-requirements/attributes/portability.tex +++ /dev/null @@ -1,6 +0,0 @@ -\paragraph{Pārnesamība} - -Sistēmas programmatūrā ir jārealizē migrācijas skripti, kas nodrošina -strukturētu datu glabāšanu pārnešanas laikā, datu dublēšanu un ģenerē -kontrolsummas datu integritātei. Pēc sistēmas migrācijas ir jābūt realizētiem -datu pārbaudes skriptiem, datu integritātes pārbaudei. diff --git a/src/requirements/nonfunctional-requirements/attributes/scalability.tex b/src/requirements/nonfunctional-requirements/attributes/scalability.tex deleted file mode 100644 index 4208243..0000000 --- a/src/requirements/nonfunctional-requirements/attributes/scalability.tex +++ /dev/null @@ -1,6 +0,0 @@ -\paragraph{Mērogojamība} - -Sistēmai jābūt paredzētai gan vertikālai, gan horizontālai mērogošanai. -Inkrementālai slodzes izmaiņai ir pielietojama vertikāla mērogošana. -Savukārt, kardinālai slodzes izmaiņai ir pielietojama horizontālā merogošana. -Horizontālālās mērogošanas vienkāršošanai funkcionalitāte tiks sadalījuma pakalpojumu komponentēs. diff --git a/src/requirements/nonfunctional-requirements/attributes/security.tex b/src/requirements/nonfunctional-requirements/attributes/security.tex deleted file mode 100644 index 4f25a69..0000000 --- a/src/requirements/nonfunctional-requirements/attributes/security.tex +++ /dev/null @@ -1,75 +0,0 @@ -\paragraph{Drošība} - -Sistēmas drošības atribūti ir kategorizēti sarakstā: -\begin{itemize} - \item Autentifikācija: - \begin{itemize} - \item Paroles tiek glabātas šifrētā formātā, pirms šifrēšanas, tām pievieno sāli. - \item Sāls tiek saglabāts teksta formātā pie lietotāja ieraksta. - \item Paroles atiestatīšanai tiek izmantots marķieris ar derīguma termiņu, ģenerēts ar jaucējfunkciju. - \end{itemize} - - \item Autorizācija: - \begin{itemize} - \item Sistēmā ir jārealizē uz lomu bāzēta piekļuve, kas nosaka noteiktās darbības noteiktām sistēmas lietotāju grupām. - \item Autorizācijas pārbaude gan priekšgala saskarnē, gan aizmugursistēmā. - \end{itemize} - - \item Datu aizsardzība: - \begin{itemize} - \item Paroles, maksājuma informācijas un citu ierobežotas piekļuves datu šifrēšana, tos glabājot un sūtot. - \item Sistēmai nav jāglabā dati, kas nav nepieciešami sistēmas darbībai. - \end{itemize} - - \item Sesiju pārvalde: - \begin{itemize} - \item Izmanto tikai HTTP sīkdatnes. - \item Sesijas noildzes izmantošana. - \item Sesijas atpazīšana tiek realizēta, izmantojot sīkdatnes. - \end{itemize} - - \item Ievades pārbaude un dezinficēšana: - \begin{itemize} - \item Aizsardzība pret SQL injekcijām, komandu injekcijām un citiem injekciju veidiem. - \item Visu ārējo pieprasījumu dati ir validēti un sanitizēti, ja nepieciešams. - \item Ieviesiet pareizu validāciju visiem lietotāja ievadītajiem datiem un visiem datiem, kas saņemti no ārējām sistēmām. - \end{itemize} - - \item Aizsardzība pret tīmekļa apdraudējumiem: - \begin{itemize} - \item Aizsardzība pret CSRF) uzbrukumiem ar CSRF marķiera izmantošanu. - \item Aizsardzība pret starpvietņu-skriptošanas (XSS) uzbrukumiem. - \end{itemize} - - \item Kļūdu apstrāde: - \begin{itemize} - \item Kļūdu paziņojumi neatklāj ierobežotas ierobežotas piekļuves informāciju. - \item Kļūdu paziņojumi ir pielāgoti lietotāju grupai - sistēmas lietotāji, kas nepieder administratoru grupai, neredz ar sistēmas iekšējiem komponentiem saistīto informāciju, piemēram, datubāzes kļūmes. - \end{itemize} - - \item API: - \begin{itemize} - \item API marķieru izmantošana, izņemot publiski pieejamos API galapunktos. - \item API pieprasījumu ierobežojums laikā (vienam lietotājam un vienai IP adresei). - \item Visu API pieprasījumu ievades validācija un sanitizēšana, ja nepieciešams. - \end{itemize} - - \item Datņu augšuplādēšana: - \begin{itemize} - \item Datnes, kas tiek augšuplādētas, tiek analizētas pret ļaunatūru pirms uzglabāšanas. - \item Datņu lielums un datu tips tiek validēts. - \end{itemize} - - \item Rezerves kopēšana: - \begin{itemize} - \item Rezerves kopijas izveidošanai jānotiek noteiktā laika periodā automātiski lokālā glabātuvē. - \item Automatizēta procedūra sistēmas datu atjaunošanai, datu zaudēšanas vai bojājumu gadījumā. - \end{itemize} - - \item Darbību žurnāls: - \begin{itemize} - \item Darbību žurnāla uzturēšana. - \item Darbību žurnāls nesatur ierobežotas piekļuves informāciju. - \item Darbību žurnāla rezerves kopēšana atsevišķi no pamata rezerves kopijām. - \end{itemize} -\end{itemize} diff --git a/src/requirements/nonfunctional-requirements/attributes/usability.tex b/src/requirements/nonfunctional-requirements/attributes/usability.tex deleted file mode 100644 index 0fc8be3..0000000 --- a/src/requirements/nonfunctional-requirements/attributes/usability.tex +++ /dev/null @@ -1,14 +0,0 @@ -\paragraph{Izmantojamība} - -Uz sistēmas izmantojamību ir sekojošas prasības: - -\begin{itemize} - \item 90\% jaunu lietotāju jāspēj lietot visas tiem pieejamās funkcijas bez palīdzības. - \item Sistēmai jāatbalsta reaģējošs noformējums - jāpielāgojas dažādiem ekrānu izmēriem. - \item Saskarnēm jābūt adaptētām gan priekš ainavas, gan portreta orientācijas. - \item Teksta fonta izmēram datoru ekrāniem jābūt vismaz 14 pikseļiem, labas salasāmības nodrošināšanai. - \item Visām funkcijām palīdzības ziņojumi pieejami angļu un latviešu valodā. - \item Sistēmai ir jānodrošina, ka lietotājam pirms datu dzēšanas tiek pieprasīts darbību apstiprināt. - \item Izveidota piekļuves programmsaskarnes (API) integrācija ar ārējiem pakalpojumiem: maksājumu apstrādātāja un mākoņa balstīts e-pasta pakalpojumu sniedzējs. - \item Lapas kodējumā jāizmanto funkcijas un tehnoloģijas, kas tiek atbalstītas visās izplatītajās tīmekļa pārlūkprogrammās, nodrošinot piekļuvi sistēmai no dažādām operētājsistēmām. -\end{itemize} diff --git a/src/requirements/nonfunctional-requirements/constraints.tex b/src/requirements/nonfunctional-requirements/constraints.tex deleted file mode 100644 index 9aa3216..0000000 --- a/src/requirements/nonfunctional-requirements/constraints.tex +++ /dev/null @@ -1,51 +0,0 @@ -\subsubsection{Projekta ierobežojumi} - -\paragraph{Intelektuālā īpašuma tiesības} - -Projektā jāievēro autortiesību un preču zīmju likumi. Lai izvairītos no -juridiskām problēmām, ir jāsaņem atbilstošas atļaujas un licences par spēļu -aktīviem (assets). - -\paragraph{Atbilstība standartiem} - -Šajā sadaļā ir izklāstīti galvenie standarti, kā prasībām sistēmai ir -jāatbilst, lai nodrošinātu robustumu, uzticamību un lietotāju tiesību un -cerību ievērošanu. - -\subparagraph{Datu privātuma atbilstība} - -Sistēmai ir jāatbilst datu aizsardzības noteikumiem, tostarp -vispārīgajai datu aizsardzības regulai (GDPR - General Data Protection -Regulation). Ir būtiski noteikt visaptverošu datu apstrādes praksi, lai -nodrošinātu lietotāju datu konfidencialitāti un drošību. - -\subparagraph{Pieejamības standarti} - -Lai nodrošinātu vienlīdzīgu piekļuvi visiem lietotājiem, sistēmai -jāatbilst tīmekļa satura pieejamības vadlīnijām (WCAG - Web Content -Accessibility Guidelines) attiecībā uz tīmekļa pieejamību. Jāapsver -lokalizācijas un iekļaušanas iespējas, lai pielāgotos dažādām -auditorijām. - -\subparagraph{Drošības standarti} - -Jāievieš stingri drošības pasākumi, ievērojot nozares paraugpraksi, -piemēram, atvērto lietojumprogrammu drošības projektu visā pasaulē -(OWASP - Open Worldwide Application Security Project), lai pasargātu no -bieži sastopamām tīmekļa ievainojamībām. Datu aizsardzībai jāizmanto -šifrēšanas protokoli. - -\paragraph{Aparatūras ierobežojumi} - -\subparagraph{Atbalstītās ierīces} - -Sistēmai jābūt saderīgai ar dažādām ierīcēm, tostarp galddatoriem, -klēpjdatoriem, viedtālruņiem un planšetdatoriem. Lai nodrošinātu -netraucētu spēlēšanu, jānosaka minimālās aparatūras prasības. - -\subparagraph{Serveris un mitināšana} - -Uz servera, kurā tiek mitināta sistēma, jābūt pieejamam Docker -programmatūras atbalstam, lai standartizētu programmatūras izvietošanu -ražošanas vidē un ražošanas vides simulēšanai un atvieglotai -tehnoloģiju versiju sinhronizācijai ar izstrādes vidi. diff --git a/src/requirements/nonfunctional-requirements/index.tex b/src/requirements/nonfunctional-requirements/index.tex deleted file mode 100644 index 70136f7..0000000 --- a/src/requirements/nonfunctional-requirements/index.tex +++ /dev/null @@ -1,5 +0,0 @@ -\subsection{Nefunkcionālās prasības} -\input{./src/requirements/nonfunctional-requirements/performance-requirements.tex} -\input{./src/requirements/nonfunctional-requirements/attributes/index.tex} -\input{./src/requirements/nonfunctional-requirements/constraints.tex} -\input{./src/requirements/nonfunctional-requirements/interface/index.tex} diff --git a/src/requirements/nonfunctional-requirements/interface/font-table.tex b/src/requirements/nonfunctional-requirements/interface/font-table.tex deleted file mode 100644 index 85e1e4b..0000000 --- a/src/requirements/nonfunctional-requirements/interface/font-table.tex +++ /dev/null @@ -1,41 +0,0 @@ - - -\begin{tabularx}{\linewidth}{|X|X|X|X|X|} - \caption{Teksta elementu noformējuma specifikācija} \label{tab:font-size} \\ - - \hline - \textbf{Teksta elementa klase} & \textbf{Izmērs} & \textbf{Svars} & \textbf{Stils} & \textbf{Cits} \\ \hline - \endfirsthead - - \hline \multicolumn{5}{r}{Turpinājums no iepriekšējās lapas} \\ \hline - \textbf{Teksta elementa klase} & \textbf{Izmērs} & \textbf{Svars} & \textbf{Stils} & \textbf{Cits} \\ \hline - \endhead - - \hline \multicolumn{5}{r}{Turpinājums nākamajā lapā} \\ \hline - \endfoot - - \hline - \endlastfoot - - H1: Galvenais virsraksts & vismaz 36px & Bold (treknraksts) & Regulārs & Var izmantot atšķirīgu krāsu, lai izceltu no citiem virsrakstiem. \\ \hline - H2: Apakšvirsraksti & vismaz 24px & Bold (treknraksts) & Regulārs & Var izmantot atšķirīgu krāsu, lai izceltu no pamata teksta. \\ \hline - H3: Sekundārie virsraksti & 20px & Semi-Bold (pus-treknraksts) & Regulārs & Var izmantot atšķirīgu krāsu. \\ \hline - H4: Apakšvirsraksti & 18px & Medium (vidējs treknraksts) & Regulārs & Izcelt ar atšķirīgu krāsu. \\ \hline - H5 & 16px & Regulārs (parasts) & Regulārs & \\ \hline - H5 & 16px & Regulārs (parasts) & Regulārs & \\ \hline - H6 & 14px & Regulārs (parasts) & Regulārs & \\ \hline - Pamatteksts & 16px & Regulārs (parasts) & Regulārs & \\ \hline - Saturteksts & 14px & Regulārs (parasts) & Regulārs & Var izmantot slīprakstu, lai akcentētu citātus vai īpaši teksta fragmentus. \\ \hline - Citāti un īpaši akcentēti teksti & 16px & Regulārs (parasts) & Italics (slīpraksts) & Lai iezīmētu citātus vai īpaši akcentētu tekstus var izmantot slīprakstu. \\ \hline - Sarunas un komentāri & 14px & Regulārs (parasts) & Regulārs & \\ \hline - Standarta saites & 16px & Regulārs (parasts) & Regulārs & Izmantot krāsas un pasvītrojumu, lai izceltu saites. \\ \hline - Apmeklētās un neapmeklētās saites & 16px & Regulārs (parasts) & Regulārs & Izmantot krāsas un pasvītrojumu, lai atšķirtu apmeklētās un neapmeklētās saites. \\ \hline - Numurētās un nenumurētās saraksta vienības & 16px & Regulārs (parasts) & Regulārs & Izmantot atzīmes (bullets) vai numurēšanas stilu. \\ \hline - Atzīmes (bullets) & 12px & Regulārs (parasts) & Regulārs & \\ \hline - Tabulu teksts un tabulu virsraksti & 14px & Regulārs (parasts) & Regulārs & \\ \hline - Ievades lauki & 16px & Regulārs (parasts) & Regulārs & \\ \hline - Izvēles rūtiņas un radio pogas & 12px & Regulārs (parasts) & Regulārs & Var izmantot atšķirīgu krāsu. \\ \hline - Ievades lauku kļūdu ziņojumi & & & & \\ \hline - Galvenās navigācijas saites & 18px & Bold (treknraksts) & Regulārs & \\ \hline - Sānu paneļa navigācijas saites & 14px & Regulārs (parasts) & Regulārs & \\ \hline -\end{tabularx} diff --git a/src/requirements/nonfunctional-requirements/interface/index.tex b/src/requirements/nonfunctional-requirements/interface/index.tex deleted file mode 100644 index cf3b8a7..0000000 --- a/src/requirements/nonfunctional-requirements/interface/index.tex +++ /dev/null @@ -1,12 +0,0 @@ -\subsubsection{Ārējās saskarnes prasības} - -\input{./src/requirements/nonfunctional-requirements/interface/user-interface.tex} - -% \paragraph{Apratūras saskarne} -% -% \paragraph{Programmatūras saskarne} - -\paragraph{Sakaru saskarne} - -Visas iekšējās komponentes (pakalpojumi) komunicē, izmantojot HTTPS (drošu HTTP). -Komunikācija ar ārējo pakalpojumu sniedzēju API notiek, izmantojot HTTPS. diff --git a/src/requirements/nonfunctional-requirements/interface/user-interface.tex b/src/requirements/nonfunctional-requirements/interface/user-interface.tex deleted file mode 100644 index 9bb267e..0000000 --- a/src/requirements/nonfunctional-requirements/interface/user-interface.tex +++ /dev/null @@ -1,43 +0,0 @@ -\paragraph{Lietotāja saskarne} -Sistēmas ``MAFIJA'' vietne piedāvā atbalstu plašam spektram ekrāna formātu un izmēriem, -nodrošinot elastīgu un reaktīvu dizainu, kas pielāgojas lietotāja ierīces un ekrāna izmēram. -Tas ietver, bet nav ierobežots ar sekojošiem prasītajiem ekrāna formātiem un attiecībām: - -\begin{itemize} - \item Atbalstāmās ekrāna attiecības (platums:augstums): 16:9; 4:3; 1:1; 3:2; 21:9; - \item Atbalstāmie ekrānu izmēri (Mobilās ierīces): - \begin{itemize} - \item Mazie mobilie ekrāni (maksimāli 360 pikseļu plati): Piemēram, IPhone 5 un līdzīgi. - \item Parastie mobilie ekrāni (maksimāli 414 pikseļu plati): Piemēram, IPhone 6/7/8 un daudzi Android telefoni. - \item Plašie mobilie ekrāni (maksimāli 768 pikseļu plati): Piemēram, daži planšetdatori un lieli mobilo ierīču ekrāni. - \end{itemize} - - \item Atbalstāmie ekrānu izmēri (Planšetdatori): - \begin{itemize} - \item Mazie planšetdatoru ekrāni (maksimāli 768 pikseļu plats): Piemēram, 7 collu planšetdatori. - \item Parastie planšetdatoru ekrāni (maksimāli 1024 pikseļu plats): Piemēram, 10 collu planšetdatori. - \end{itemize} - - \item Atbalstāmie ekrānu izmēri (Datori): - \begin{itemize} - \item Mazie datoru ekrāni (maksimāli 1280 pikseļu plats): Piemēram, daži nelieli datoru ekrāni. - \item Parastie datoru ekrāni (maksimāli 1440 pikseļu plats): Parastie datoru ekrāni ar vidēju izšķirtspēju. - \item Lielie datoru ekrāni (maksimāli 1920 pikseļu plats): Plaši lietoti augstas izšķirtspējas datoru ekrāni. - \item Ļoti lielie datoru ekrāni (lielāki par 1920 pikseļiem): Piemēram, 4K ekrāni un daudzi datoru monitori. - \end{itemize} -\end{itemize} - -Grafiskā izkārtojuma pielāgošanai paredzēts izmantot sekojošos ekrāna izmēra precizējumu punktus: -\begin{itemize} - \item 360px - maziem mobilajiem ekrāniem. - \item 768px - plašiem mobilajiem ekrāniem un maziem planšetdatoru ekrāniem. - \item 1024px - parastiem planšetdatoriem un maziem datoru ekrāniem. - \item 1440px - lieliem datoru ekrāniem. - \item 1920px - ļoti lieliem un augstas izšķirtspējas datoru ekrāniem. -\end{itemize} - -Lietotāja saskarne piedāvā pielāgotu izkārtojumu un saturu, kas pilnībā atbilst konkrētam ekrāna formātam un izmēram. -Teksta izvietojums ir optimizēts atbilstoši ekrāna izmēram, izmantojot precīzi pielāgojamu fonta izmēru un stilu, lai nodrošinātu ērtu lasīšanu. -Lietotne var iekļaut teksta formatējuma klāstā, bet nav ierobežota ar aprakstītiem teksta elementu noformējumiem (skat. \ref{tab:font-size} tab.). - -\input{./src/requirements/nonfunctional-requirements/interface/font-table.tex} diff --git a/src/requirements/nonfunctional-requirements/performance-requirements.tex b/src/requirements/nonfunctional-requirements/performance-requirements.tex deleted file mode 100644 index 28b3b2a..0000000 --- a/src/requirements/nonfunctional-requirements/performance-requirements.tex +++ /dev/null @@ -1,20 +0,0 @@ -\subsubsection{Veiktspējas prasības} - -\paragraph{Statiskā veiktspēja} - -Uz statisko veiktspēju ir sekojošas prasības: - -\begin{itemize} - \item Normāla sistēmas darbība vismaz 500 lietotājiem paralēli. - \item Normāla sistēmas darbība ar vismaz 40 paralēlām spēles instancēm. -\end{itemize} - -\paragraph{Dinamiskā veiktspēja} - -Uz dinamisko veiktspēju ir sekojošas prasības: - -\begin{itemize} - \item Sistēmai ir jānodrošina, ka 95\% no dienā veiktajiem pieprasījumiem tiek izpildīti uz servera ne ilgāk kā 5 sekundēs. - \item Darbībām spēles procesā jāizpildās ne ilgāk kā 3 sekundēs. - \item Darbspējas laiks ir vismaz 99,4\% no visa laika. -\end{itemize} diff --git a/src/sql/Mafia.sql b/src/sql/Mafia.sql deleted file mode 100644 index da029ff..0000000 --- a/src/sql/Mafia.sql +++ /dev/null @@ -1,243 +0,0 @@ -CREATE TABLE - "LomasDarbiba" ( - "id" SERIAL8 PRIMARY KEY NOT NULL, - "nosaukums" VARCHAR(255) UNIQUE NOT NULL, - "ir_nekavejoties" BOOL DEFAULT FALSE NOT NULL - ); - -CREATE TABLE - "LomasTrukums" ( - "id" SERIAL8 PRIMARY KEY NOT NULL, - "nosaukums" VARCHAR(255) UNIQUE NOT NULL, - "apraksts" TEXT DEFAULT '' NOT NULL - ); - -CREATE TABLE - "Attels" ( - "id" SERIAL8 PRIMARY KEY NOT NULL, - "datnes_adrese" VARCHAR(255) UNIQUE NOT NULL, - "pievienosanas_laiks" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL - ); - -CREATE TABLE - "AbonementaCena" ( - "id" SERIAL8 PRIMARY KEY NOT NULL, - "cena" DECIMAL(16, 2) DEFAULT 0 NOT NULL CHECK (cena >= 0), - "pievienosanas_laiks" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL, - "aktivizesanas_laiks" TIMESTAMP NOT NULL CHECK (aktivizesanas_laiks >= pievienosanas_laiks) - ); - -CREATE TABLE - "ParolesAtjaunosana" ( - "id" SERIAL8 PRIMARY KEY NOT NULL, - "markieris" VARCHAR(255) UNIQUE NOT NULL, - "deriguma_termins" TIMESTAMP NOT NULL - ); - -CREATE TABLE - "EpastaApstiprinajums" ( - "id" SERIAL8 PRIMARY KEY NOT NULL, - "markieris" VARCHAR(255) UNIQUE NOT NULL, - "deriguma_termins" TIMESTAMP NOT NULL - ); - -CREATE TABLE - "SpelesLoma" ( - "id" SERIAL8 PRIMARY KEY NOT NULL, - "nosaukums" VARCHAR(255) UNIQUE NOT NULL, - "apraksts" TEXT DEFAULT '' NOT NULL, - "max_speletaju_skaits" INT4 DEFAULT 1 CHECK ("max_speletaju_skaits" > 0) NOT NULL, - "ir_pamata" BOOL DEFAULT FALSE NOT NULL, - "ir_mafija" BOOL DEFAULT FALSE NOT NULL, - "attels" INT8, - FOREIGN KEY ("attels") REFERENCES "Attels" ("id") - ); - -CREATE TABLE - "KontaStavoklis" ( - "id" SERIAL8 PRIMARY KEY NOT NULL, - "teksts" VARCHAR(255) UNIQUE NOT NULL - ); - -CREATE TABLE - "AbonementaStavoklis" ( - "id" SERIAL8 PRIMARY KEY NOT NULL, - "teksts" VARCHAR(255) UNIQUE NOT NULL - ); - -CREATE TABLE - "IstabasStavoklis" ( - "id" SERIAL8 PRIMARY KEY NOT NULL, - "teksts" VARCHAR(255) UNIQUE NOT NULL - ); - -CREATE TABLE - "Lietotajs" ( - "id" SERIAL8 PRIMARY KEY NOT NULL, - "segvards" VARCHAR(255) UNIQUE NOT NULL, - "epasts" VARCHAR(255) UNIQUE NOT NULL, - "parole" VARCHAR(255) NOT NULL, - "vards" VARCHAR(255) DEFAULT '' NOT NULL, - "uzvards" VARCHAR(255) DEFAULT '' NOT NULL, - "dzimsanas_datums" DATE, - "bio_info" TEXT DEFAULT '' NOT NULL, - "izveidosanas_laiks" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL, - "konta_stavoklis" INT8 NOT NULL, - "attels" INT8, - "epasta_apstiprinajums" INT8 UNIQUE, - "paroles_atjaunosana" INT8 UNIQUE, - FOREIGN KEY ("konta_stavoklis") REFERENCES "KontaStavoklis" ("id"), - FOREIGN KEY ("attels") REFERENCES "Attels" ("id"), - FOREIGN KEY ("epasta_apstiprinajums") REFERENCES "EpastaApstiprinajums" ("id"), - FOREIGN KEY ("paroles_atjaunosana") REFERENCES "ParolesAtjaunosana" ("id") - ); - -CREATE TABLE - "SpelesKonfiguracija" ( - "id" SERIAL8 PRIMARY KEY NOT NULL, - "nosaukums" VARCHAR(255) UNIQUE NOT NULL, - "apraksts" TEXT DEFAULT '' NOT NULL, - "ir_pamata" BOOL DEFAULT FALSE NOT NULL, - "izveidosanas_laiks" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL, - "autors" INT8 NOT NULL, - FOREIGN KEY ("autors") REFERENCES "Lietotajs" ("id") - ); - -CREATE TABLE - "Istaba" ( - "id" SERIAL8 PRIMARY KEY NOT NULL, - "nosaukums" VARCHAR(255) UNIQUE NOT NULL, - "speles_saksanas_laiks" TIMESTAMP, - "speles_beigsanas_laiks" TIMESTAMP, - "stavoklis" INT8 NOT NULL, - "piekluves_kods" CHAR(6) UNIQUE, - "vai_rada_miruso_lomu" BOOL DEFAULT FALSE NOT NULL, - "izveidosanas_laiks" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL, - "speles_konfiguracija" INT8 NOT NULL, - FOREIGN KEY ("stavoklis") REFERENCES "IstabasStavoklis" ("id"), - FOREIGN KEY ("speles_konfiguracija") REFERENCES "SpelesKonfiguracija" ("id") - ); - -CREATE TABLE - "SpelesNotikums" ( - "id" SERIAL8 PRIMARY KEY NOT NULL, - "nosaukums" VARCHAR(255) UNIQUE NOT NULL, - "nakts_pk" INT2 DEFAULT 0 NOT NULL CHECK ("nakts_pk" >= 0), - "veids" VARCHAR(255), - "ir_redzams" BOOL DEFAULT FALSE NOT NULL, - "izveidosanas_laiks" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL, - "lomas_darbiba" INT8 NOT NULL, - FOREIGN KEY ("lomas_darbiba") REFERENCES "LomasDarbiba" ("id") - ); - -CREATE TABLE - "Speletajs" ( - "id" SERIAL8 PRIMARY KEY NOT NULL, - "ir_noslepkavots" BOOL DEFAULT FALSE NOT NULL, - "ir_izbalsots" BOOL DEFAULT FALSE NOT NULL, - "ir_izslegts" BOOL DEFAULT FALSE NOT NULL, - "ir_aktivs" BOOL DEFAULT TRUE NOT NULL, - "redz_mafijas_sakarus" BOOL DEFAULT FALSE NOT NULL, - "istaba" INT8, - "speles_loma" INT8 NOT NULL, - FOREIGN KEY ("istaba") REFERENCES "Istaba" ("id"), - FOREIGN KEY ("speles_loma") REFERENCES "SpelesLoma" ("id") - ); - -CREATE TABLE - "MaksasAbonements" ( - "id" SERIAL8 PRIMARY KEY NOT NULL, - "stripe_id" VARCHAR(255) UNIQUE NOT NULL, - "stavoklis" INT8 NOT NULL, - "sakuma_laiks" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL, - "periods" INTERVAL NOT NULL, - "atteikuma_laiks" TIMESTAMP, - "lietotajs" INT8 NOT NULL, - "abonementa_cena" INT8 NOT NULL, - FOREIGN KEY ("stavoklis") REFERENCES "AbonementaStavoklis" ("id"), - FOREIGN KEY ("lietotajs") REFERENCES "Lietotajs" ("id"), - FOREIGN KEY ("abonementa_cena") REFERENCES "AbonementaCena" ("id") - ); - -CREATE TABLE - "Iszina" ( - "id" SERIAL8 PRIMARY KEY NOT NULL, - "teksts" TEXT NOT NULL, - "ir_mafijas_iszina" BOOL DEFAULT FALSE NOT NULL, - "ir_izmainita" BOOL DEFAULT FALSE NOT NULL, - "autors" INT8 NOT NULL, - FOREIGN KEY ("autors") REFERENCES "Speletajs" ("id") - ); - -CREATE TABLE - "SpeletajaDarbiba" ( - "speletajs" INT8 NOT NULL, - "lomas_darbiba" INT8 NOT NULL, - PRIMARY KEY ("speletajs", "lomas_darbiba"), - FOREIGN KEY ("speletajs") REFERENCES "Speletajs" ("id"), - FOREIGN KEY ("lomas_darbiba") REFERENCES "LomasDarbiba" ("id") - ); - -CREATE TABLE - "SpeletajsIzraisaNotikumu" ( - "speletajs" INT8 NOT NULL, - "speles_notikums" INT8 NOT NULL, - PRIMARY KEY ("speletajs", "speles_notikums"), - FOREIGN KEY ("speletajs") REFERENCES "Speletajs" ("id"), - FOREIGN KEY ("speles_notikums") REFERENCES "SpelesNotikums" ("id") - ); - -CREATE TABLE - "SpelesUzstatijumuLomas" ( - "speles_konfiguracija" INT8 NOT NULL, - "speles_loma" INT8 NOT NULL, - PRIMARY KEY ("speles_konfiguracija", "speles_loma"), - FOREIGN KEY ("speles_konfiguracija") REFERENCES "SpelesKonfiguracija" ("id"), - FOREIGN KEY ("speles_loma") REFERENCES "SpelesLoma" ("id") - ); - -CREATE TABLE - "LomasNotikumi" ( - "speles_loma" INT8 NOT NULL, - "speles_notikums" INT8 NOT NULL, - "ir_atlauts" BOOL DEFAULT TRUE, - PRIMARY KEY ("speles_loma", "speles_notikums"), - FOREIGN KEY ("speles_loma") REFERENCES "SpelesLoma" ("id"), - FOREIGN KEY ("speles_notikums") REFERENCES "SpelesNotikums" ("id") - ); - -CREATE TABLE - "SpelesLomasTrukums" ( - "speles_loma" INT8 NOT NULL, - "lomas_trukums" INT8 NOT NULL, - PRIMARY KEY ("speles_loma", "lomas_trukums"), - FOREIGN KEY ("speles_loma") REFERENCES "SpelesLoma" ("id"), - FOREIGN KEY ("lomas_trukums") REFERENCES "LomasTrukums" ("id") - ); - -CREATE TABLE - "SpelesLomasDarbibas" ( - "speles_loma" INT8 NOT NULL, - "lomas_darbiba" INT8 NOT NULL, - PRIMARY KEY ("speles_loma", "lomas_darbiba"), - FOREIGN KEY ("speles_loma") REFERENCES "SpelesLoma" ("id"), - FOREIGN KEY ("lomas_darbiba") REFERENCES "LomasDarbiba" ("id") - ); - -CREATE TABLE - "Atbilde" ( - "id" SERIAL8 PRIMARY KEY NOT NULL, - "raksta" INT8 NOT NULL, - "atbild" INT8 NOT NULL, - FOREIGN KEY ("raksta") REFERENCES "Iszina" ("id"), - FOREIGN KEY ("atbild") REFERENCES "Iszina" ("id") - ); - -CREATE TABLE - "NotikumsIetekmeSpeletaju" ( - "speletajs" INT8 NOT NULL, - "speles_notikums" INT8 NOT NULL, - PRIMARY KEY ("speletajs", "speles_notikums"), - FOREIGN KEY ("speletajs") REFERENCES "Speletajs" ("id"), - FOREIGN KEY ("speles_notikums") REFERENCES "SpelesNotikums" ("id") - ); diff --git a/src/test.tex b/src/test.tex deleted file mode 100644 index 2740c3a..0000000 --- a/src/test.tex +++ /dev/null @@ -1 +0,0 @@ -\pagebreak diff --git a/src/title-page.tex b/src/title-page.tex deleted file mode 100644 index ebf45a8..0000000 --- a/src/title-page.tex +++ /dev/null @@ -1,39 +0,0 @@ -\begin{titlepage} - \thispagestyle{empty} - \begin{center} - \MakeUppercase{\large Latvijas Universitāte} - - \MakeUppercase{\large Datorikas Fakultāte} - - \vfill - \textbf{\Large Tiešsaistes spēles sistēmas ``MAFIJA''} - \textbf{\Large programmatūras prasību specifikācija} - - - \vspace{1cm} - \MakeUppercase{Praktiskais darbs programminženierijā} - \vfill - \end{center} - \begin{flushright} - \textbf{Darba autori:} - - Alens Aleksandrs Čerņa, ac22065 - - Ernests Gustavs Dane, eg22086 - - Jorens Štekeļs, js21283 - - Kristiāns Francis Cagulis, kc22015 - - Miķelis Kukainis, mk22092 - - \vspace{1cm} - \textbf{Darba vadītājs:} - - prof. Dr. sc. comp. Laila Niedrīte - \end{flushright} - \vspace{1cm} - \begin{center} - RĪGA 2023 - \end{center} -\end{titlepage} diff --git a/src/utils/entity-table.tex b/src/utils/entity-table.tex deleted file mode 100644 index 3616004..0000000 --- a/src/utils/entity-table.tex +++ /dev/null @@ -1,27 +0,0 @@ -\newenvironment{entityTable}[2]{% -\tabularx{\linewidth}{|p{4cm}|p{2.7cm}|X|X|} -\caption{#1} \label{tab:#2} \\ - -\hline -\textbf{Lauks} & \textbf{Datu tips} & \textbf{Lauka atribūti} & \textbf{Apraksts} \\ \hline -\endfirsthead - -\hline \multicolumn{4}{r}{Turpinājums no iepriekšējās lapas} \\ \hline -\textbf{Lauks} & \textbf{Datu tips} & \textbf{Lauka atribūti} & \textbf{Apraksts} \\ \hline -\endhead - -\hline \multicolumn{4}{r}{Turpinājums nākamajā lapā} \\ \hline -\endfoot - -\hline -\endlastfoot - -\entityTableRow{id}{serial8}{primary key, not null}{Unikālais identifikators} -}{ -\endtabularx -} - - -\newcommand{\entityTableRow}[4]{ - #1 & \texttt{\uppercase{#2}} & \texttt{\uppercase{#3}} & #4 \\ \hline -} diff --git a/src/utils/function-table.tex b/src/utils/function-table.tex deleted file mode 100644 index 0216257..0000000 --- a/src/utils/function-table.tex +++ /dev/null @@ -1,52 +0,0 @@ -\mdfsetup{ - innertopmargin=8pt, - innerbottommargin=8pt, - skipbelow=0pt, - skipabove=0pt, - everyline=true, - backgroundcolor=none, - linecolor=black, - fontcolor=black, - roundcorner=0pt, - splittopskip=25pt, - % secondextra={ - % \node[ - % overlay, - % fill=white, - % anchor=west, - % inner xsep=10pt - % ] at ([xshift=10pt]O|-P) {Turpinājums}; - % }, - % middleextra={ - % \node[ - % overlay, - % fill=white, - % anchor=west, - % inner xsep=10pt - % ] at ([xshift=10pt]O|-P) {Excursus (Cont.)}; - % } -} - -\newcommand{\specificationTableItem}[2]{ - \begin{mdframed} - \textbf{#1} - \end{mdframed} - - \begin{mdframed} - #2 - \end{mdframed} -} - -\newcommand{\moduleFunctionTable}[9]{ - % \paragraph{#1} - \begin{table}[h] - \caption{#1}\label{tab:#2} - \end{table} - \specificationTableItem{Funkcijas nosaukums}{#3} - \specificationTableItem{Funkcijas identifikators}{#4} - \specificationTableItem{Ievads}{#5} - \specificationTableItem{Ievade}{#6} - \specificationTableItem{Apstrāde}{#7} - \specificationTableItem{Izvade}{#8} - \specificationTableItem{Paziņojumi}{#9} -} diff --git a/src/utils/index.tex b/src/utils/index.tex deleted file mode 100644 index 4334a5e..0000000 --- a/src/utils/index.tex +++ /dev/null @@ -1,4 +0,0 @@ -\input{./src/utils/function-table.tex} -\input{./src/utils/entity-table.tex} -\input{./src/utils/parameter-table.tex} -\input{./src/utils/procedure-table.tex} diff --git a/src/utils/parameter-table.tex b/src/utils/parameter-table.tex deleted file mode 100644 index 4b28dcc..0000000 --- a/src/utils/parameter-table.tex +++ /dev/null @@ -1,37 +0,0 @@ -\newcommand{\parameterTable}[5]{ - % \paragraph{#1} - \begin{table}[h] - \caption{#1}\label{tab:#2} - \end{table} - \specificationTableItem{Parametra nosaukums}{#1} - \specificationTableItem{Parametra identifikators}{#2} - \specificationTableItem{Parametra apraksts}{#3} - \specificationTableItem{Parametra prasības}{#4} - \specificationTableItem{Parametra piemērs}{#5} -} - -% \newcommand{\parameterTable}[7]{ -% \begin{tabularx}{\linewidth}{|X|} -% \caption{#1} \label{tab:#2} \\ \hline -% \endfirsthead -% \hline \multicolumn{1}{r}{Turpinājums no iepriekšējās lapas} \\ \hline -% \endhead -% -% \hline \multicolumn{1}{r}{Turpinājums nākamajā lapā} \\ \hline -% \endfoot -% -% \hline -% \endlastfoot -% -% \textbf{Parametra nosaukums} \\ \hline -% #3 \\ \hline -% \textbf{Parametra identifikators} \\ \hline -% #4 \\ \hline -% \textbf{Parametra apraksts} \\ \hline -% #5 \\ \hline -% \textbf{Parametra prasības} \\ \hline -% #6 \\ \hline -% \textbf{Parametra piemērs} \\ \hline -% #7 \\ \hline -% \end{tabularx} -% } diff --git a/src/utils/procedure-table.tex b/src/utils/procedure-table.tex deleted file mode 100644 index 234c552..0000000 --- a/src/utils/procedure-table.tex +++ /dev/null @@ -1,12 +0,0 @@ -\newcommand{\procedureTable}[6]{ - % \paragraph{#1} - \begin{table}[h] - \caption{#1}\label{tab:#2} - \end{table} - \specificationTableItem{Procedūras nosaukums}{#1} - \specificationTableItem{Procedūras identifikators}{#2} - \specificationTableItem{Procedūras apraksts}{#3} - \specificationTableItem{Ievade}{#4} - \specificationTableItem{Apstrāde}{#5} - \specificationTableItem{Izvade}{#6} -} diff --git a/utils.typ b/utils.typ new file mode 100644 index 0000000..8b745c2 --- /dev/null +++ b/utils.typ @@ -0,0 +1,126 @@ +#import "@preview/tablex:0.0.6": tablex +#import "@preview/big-todo:0.2.0": todo as TODO + +#let custom-block(item) = { + set align(start) + block( + inset: 8pt, + stroke: black, + width: 100%, + spacing: 0pt, + breakable: true, + item + ) +} + +#let longtable( + title: "", + titles: (), + caption: "", + ..items +) = { + set par(first-line-indent: 0pt) + figure( + gap: 1.5em, + kind: table, + caption: if caption != ""{ + caption + } else { + if titles.len() == 0 { + title + } else { + titles.first() + } + }, + [ + #if titles.len() == 0 { + custom-block(text(weight: "bold", title)) + } + #for i in range(items.pos().len()) { + if titles.len() > 0 { + custom-block(text(weight: "bold", titles.at(i))) + } + custom-block(items.pos().at(i)) + } + ] + ) + linebreak() +} + +#let parameter-table(caption: "", ..items) = { + if caption == "" { + caption = items.pos().first() + } + longtable( + titles: ("Parametra nosaukums", "Parametra identifikators", "Parametra apraksts", "Parametra prasības", "Parametra piemērs (/-i)"), + caption: caption, + ..items + ) +} + +#let procedure-table(caption: "", ..items) = { + if caption == "" { + caption = items.pos().first() + } + longtable( + titles: ("Procedūras nosaukums", "Procedūras identifikators", "Procedūras apraksts", "Ievade", "Apstrāde", "Izvade"), + caption: caption, + ..items + ) +} + +#let function-table(caption: "", ..items) = { + if caption == "" { + caption = items.pos().first() + } + longtable( + titles: ("Funkcijas nosaukums", "Funkcijas identifikators", "Ievads", "Ievade", "Apstrāde", "Izvade", "Paziņojumi",), + caption: caption, + ..items + ) +} + + +#let entity-table-row(..items) = { + ( + items.pos().at(0), + upper(raw(items.pos().at(1), block: false)), + upper(raw(items.pos().at(2), block: false)), + items.pos().at(3) + ) +} + +#let entity-table(caption: "", id: (), ..items) = { + if id == () { + id = ("id", "serial8", "primary key, not null", "Unikālais identifikators") + } + + figure( + caption: caption, + kind: table, + tablex( + columns: (4cm, 3cm, auto, auto), + repeat-header: true, + /* Header */ + [*Lauks*], [*Datu tips*], [*Lauka atribūti*], [*Apraksts*], + + ..entity-table-row(..id), // id row + + ..for i in range(items.pos().len(), step:4){ + entity-table-row(..items.pos().slice(i, i+4)) + }, + ) + ) +} + +#let todo(..body) = { + TODO(..body, inline: true, big_text: 14pt, small_text: 12pt) +} + +#let hyperlink-source(author, title, link_str, date) = { + if link_str == "" { + [#author #title Aplūkots #date.display("[day].[month].[year]")] + } else { + [#author #title Pieejams: #link(link_str) aplūkots #date.display("[day].[month].[year]")] + } +}