Serveris on PostgreSQL andmebaas nimega vastuvotuajad, mille kasutamiseks on loodud kasutaja nimega xxx ja parooliga yyyy. 
Palun kujutle ennast kasutajaliideste kavandajana ning genereeri ainult PHP-d (versioonid 7 ja 8) ja CSSi kasutav ülõpilasele mõeldud rakendus, kus on realiseeritud funktsionaalsused, mida kirjeldavad järgnevad kasutusjuhud. 
Palun kasuta kodeeringuna UTF-8.
Kasutajaliidese värvivalikus tuleb kasutada Tallinna Tehnikaülikooli tunnusgraafika värve Pantone 221 CV (kirsipunane) ja Pantone Cool Gray 8 (terashall). 

Nõuded kasutajaliidese ülesehitusele.
Ülesehituse põhimõtteid tuleb järjekindlalt järgida.
Rakenduses peab olema peavorm või pealehekülg, kust saab töökohaga seotud tegevuste juurde edasi liikuda.
Välisvõtme väärtuste registreerimiseks tuleb kasutada liitbokse või hüpikaknaid.
Klassifikaatorite väärtuste valimisel tuleb kasutajale koodi asemel näidata nimetust.
Kasutajaliideses ei näidata kasutajatele surrogaatvõtme väärtuseid.
Kohustuslikud sisestusväljad tuleb tähistada (nt lisades lipikule *).
Andmete lugemiseks ning andmete muutmiseks mõeldud väljad peavad erinevalt välja nägema (nt olema erineva taustavärviga).
Kuupäeva ja ajatempli valimiseks tuleb esitada kalendrivalik.
Kalendrivalikus peab nädala esimene päev olema esmaspäev.
Kui kalendrivalikus on tunnid ja minutid, siis ei ole seal sekundeid.
Kuupäevad tuleb esitada formaadis DD.MM.YYYY
Kellaajad tuleb esitada formaadis HH24:MI:SS
Ajatemplid tuleb esitada formaadis DD.MM.YYYY HH24:MI:SS
Tegevused, mida süsteem saab ise teha (nt kindlaks tegema, kes andmed registreeris), peab tegema süsteem ilma kasutajalt tagasiside küsimisega tülitamata.
Kõikides olemite nimekirjades tuleb esitada selline hulk andmeid, et nende andmete alusel oleks võimalik olemeid üksteisest üheselt eristada ning et need andmed oleksid konkreetse kasutaja jaoks mõistetavad ja sisukad.
Andmete sisestamiseks ja vaatamiseks mõeldud väljade juures peab olema võimalikult arusaadavalt ja täielikult välja toodud nende andmete tähendus. Mõõtmistulemusi või rahasummasid esitavate atribuutide väärtuste juures tuleb esitada ühik – rahasummade puhul valuuta tähis ning mõõtmistulemuste korral mõõtühik. Hinna/maksumuse välja juures tuleb öelda, kas väärtus sisaldab ka maksudeks minevat osa.
Kasutajale esitatavad andmed peavad olema sorteeritud viisil, mis võimaldab tal vajalikud andmed lihtsalt üles leida või peab olema kasutajal võimalik sorteerimiseeskirja ise muuta.

Kui tekstiline väärtus on tühi string, siis tuleb salvestada NULL.

Palun tee nii, et tabelis saaks veergudele klõpsates sorteerida.
Palun tee nii, et väljad on joondatud.
Palun tee nii, et nimekirjad esitatakse päistega tabelites.

Kasutusjuht: Kasutaja tuvastamine
Primaarne tegutseja: Üliõpilane, dekanaadi sekretär, õppejõud – (edaspidi subjekt).
Osapooled ja nende huvid:
Üliõpilane, õppejõud: Soovivad siseneda süsteemi ja teha tegevusi neile antud volituste piires.
Käivitav sündmus: Subjekt soovib süsteemi siseneda.
Eeltingimused: Subjekt on süsteemis kasutajaks registreeritud.
Järeltingimused: On tehtud kindlaks, kas subjektil on õigus süsteemi siseneda või mitte. Subjekt on autenditud ja talle on antud võimalus kasutada süsteemi talle antud volituste piires (subjekt on autoriseeritud).
Stsenaarium (tüüpiline sündmuste järjestus):
1. Subjekt soovib siseneda süsteemi.
2. Süsteem palub subjektil ennast identifitseerida.
3. Subjekt identifitseerib ennast (määrates rolli ning sisestades kasutajanime ja parooli).
4. Süsteem kontrollib, kas esitatud volitustõendiga (antud juhul parooliga) subjekti andmed on süsteemis olemas ning kas ta on sobivas rollis ja seisundis (OP1.1).
5. Süsteem annab subjektile volituse süsteemi kasutada ja annab talle juurdepääsu infosüsteemi objektidele.
Subjekt võib üritada süsteemi siseneda kuni kolm korda.
Laiendused  (või alternatiivne sündmuste käik):
5a. Kui süsteem ei leia esitatud volitustõendiga subjekti siis, ei saa subjekt õigust süsteemi kasutada.
1. Süsteem kuvab subjektile teate, et taolist kasutajat ei leidu ja ei anna talle õigust süsteemi kasutada.

OP1.1 realiseerimiseks kasutatakse andmebaasis skeemis public loodud funktsiooni f_on_yliopilane(p_kasutajanimi text, p_parool text), mis tagastab TRUE, kui kasutaja saab süsteemi siseneda ja FALSE, kui ei saa. 
Kasutaja peab saama ka välja logida.
Sisseloginud kasutaja kasutajanime kasutatakse selleks, et leida temaga seotud vastuvõtud.

Kasutusjuht: Otsi enda aktiivseid vastuvõtule tulekuid
Primaarne tegutseja: Üliõpilane
Osapooled ja nende huvid:
Üliõpilane: Soovib saada konsultatsiooni mingis õppetööga seotud küsimuses.
Õppejõud: Soovib anda konsultatsioone õppetööga seotud küsimustes, et parandada õppe- ja teadustöö kvaliteeti.
Käivitav sündmus: Üliõpilane soovib vaadata, lisada või tühistada enda aktiivset vastuvõtule tulekut.
Eeltingimused: Üliõpilane on autenditud ja autoriseeritud.
Järeltingimused: Üliõpilasega seotud aktiivsed vastuvõtule tulekud on leitud.
Stsenaarium (tüüpiline sündmuste järjestus):
1. Üliõpilane avaldab soovi vaadata, lisada või tühistada enda aktiivset vastuvõtule tulekut.
2. Süsteem kuvab nimekirja otsingut tegeva üliõpilasega seotud aktiivsetest vastuvõtule tulekutest. Need tulekud on seotud vastuvõtuaegadega, mille algus on tulevikus või mis algavad vaatamise hetkel. Süsteem kuvab iga vastuvõtule tuleku kohta vastuvõtu kuupäeva, vastuvõtuaja kellaaja, õppejõu ees- ja perenime, õppejõu e-posti aadressi, hoone ja ruumi, kus vastuvõtt toimub, üliõpilase lisatud kommentaari ning vastuvõtuga seotud kommentaari. Vastuvõtule tulekud on sorteeritud kuupäeva alusel kahanevalt ning selle sees kellaaja alusel kahanevalt (OP7.1).
3. Üliõpilane võib leitud vastuvõtule tulekute andmeid vastuvõtu kuupäeva kellaja, õppejõu ees- ja perenime ning e-posti aadressi, hoone, ruumi ja kommentaari alusel sorteerida või filtreerida.
4. Süsteem kuvab vastuvõtule tulekud soovitud järjekorras või piirab filtri alusel vastuvõtule tulekute hulka (OP7.1).
Laiendused  (või alternatiivne sündmuste käik):
2a – Kui üliõpilasel ei ole ühtegi seotud aktiivset vastuvõtule tulekut, siis ei kuva süsteem vastuvõtule tulekute andmeid.

OP7.1 realiseeritakse kasutades andmebaasis skeemis public loodud vaadet aktiivsed_vastuvotule_tulekud, kus on veerud vastuvott_kuupaev,     vastuvott_kellaaeg, oppejou_eesnimi, oppejou_perenimi, oppejou_email, hoone_nimi, ruum_kood, uliopilase_kommentaar, vastuvott_kommentaar,
uliopilase_kasutajanimi, vastuvott_id.

Kasutusjuht: Registreeri vastuvõtule tulek
Primaarne tegutseja: Üliõpilane
Osapooled ja nende huvid:
Üliõpilane: Soovib saada konsultatsiooni mingis õppetööga seotud küsimuses.
Õppejõud: Soovib anda konsultatsioone õppetööga seotud küsimustes, et parandada õppe- ja teadustöö kvaliteeti.
Käivitav sündmus: Üliõpilane soovib tulla õppe jõu vastuvõtule, et arutada mingit õppetööga seotud küsimust.
Eeltingimused: Üliõpilane on autenditud ja autoriseeritud. Vastuvõtt ja sellega seotud vastuvõtuajad on registreeritud.
Järeltingimused: Üliõpilane on registreerinud ennast konkreetsele vastuvõtuajale.
Stsenaarium (tüüpiline sündmuste järjestus):
1. Üliõpilane avaldab soovi enda vastuvõtule tuleku registreerida.
2. Käivitub kasutusjuht "Otsi enda aktiivseid vastuvõtule tulekuid".
3. Üliõpilane annab korralduse vastuvõtule tuleku registreerimise alustamiseks.
4. Süsteem kuvab õppejõudude nimekirja, kus on iga õppejõu kohta eesnimi, perenimi ja e-posti aadress (OP7.2).
5. Üliõpilane valib õppejõu, kelle vastuvõtule ta soovib tulla.
6. Süsteem kuvab valitud õppejõu aktiivsed vastuvõtud – vastuvõtud, mis toimuvad kas samal päeval või tulevikus. Süsteem kuvab kuupäeva, vastuvõtja kommentaari ning toimumiskoha ruumi ja hoone koodi (OP7.3).
7. Üliõpilane valib vastuvõtu.
8. Süsteem kuvab valitud vastuvõtuga seotud vastuvõtuajad, mis ei ole veel alanud ning mis on vabad – sinna pole ükski üliõpilane registreerunud (OP7.4).
9. Üliõpilane valib vastuvõtuaja ning vajadusel sisestab kommentaari.
10. Üliõpilane annab korralduse registreerida ennast vastuvõtule. 
11. Süsteem küsib, kas üliõpilane soovib kindlasti vastuvõtule tuleku registreerida.
12. Üliõpilane kinnitab oma soovi vastuvõtule tulek registreerida.
13. Süsteem registreerib vastuvõtule tuleku (OP7.5).
Üliõpilane võib korrata samme 5–13 nii mitu korda kui soovib.
Laiendused  (või alternatiivne sündmuste käik):
5a – Kui ei leita ühegi õppejõu andmeid, siis ei saa üliõpilane enda vastuvõtule tulekut registreerida.
7a – Kui ei leita ühegi vastuvõtu andmeid, siis ei saa üliõpilane enda vastuvõtule tulekut registreerida.
9a – Kui ei leita ühegi vastuvõtuaja andmeid, siis ei saa üliõpilane enda vastuvõtule tulekut registreerida.
12a – Kui üliõpilane siiski ei soovi vastuvõtule tulekut registreerida, siis süsteem ei registreeri vastuvõtule tulekut.
13a – Kui üliõpilane üritab ennast registreerida vastuvõtuajale, mis algab varasemal ajal, kui on vastuvõtule tuleku registreerimise aeg, siis vastuvõtule tuleku registreerimine ebaõnnestub.
13b – Kui vahepeal on juba keegi jõudnud valitud vastuvõtuajale registreeruda, siis vastuvõtule tuleku registreerimine ebaõnnestub.

OP7.2 realiseerimiseks kasutatakse andmebaasis skeemis public loodud vaadet oppejoud, milles on veerud oppejou_eesnimi, oppejou_perenimi, oppejou_email.

OP7.3 realiseerimiseks kasutatakse andmebaasis skeemis public loodud vaadet aktiivsed_vastuvotud_yliopilasele, milles on veerud vastuvott_kuupaev,
vastuvott_kommentaar, ruum_kood, hoone_kood, oppejou_email, vastuvott_id.

OP7.4 realiseerimiseks kasutatakse andmebaasis skeemis public loodud vaadet vabad_vastuvotuajad_yliopilasele, milles on veerud vastuvott_id,
alguse_kellaaeg.

OP7.5 realiseerimiseks kasutatakse andmebaasis skeemis public loodud funktsiooni f_registreeri_vastuvotule_tulek (p_kommentaar d_kirjeldus, p_vastuvott_id INTEGER, p_alguse_kellaaeg TIME, p_tulija_kasutajanimi d_kasutajanimi). Funktsioon tagastab õnnestumise korral täisarvulise väärtuse.