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 õppejõule 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.
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.

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_oppejoud(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õtte
Primaarne tegutseja: Õppejõud
Osapooled ja nende huvid:
Üliõpilane: Soovib võimalikult operatiivselt saada õppejõult konsultatsiooni. Soovib, et ta peaks ootama õppejõu vastuvõtu ruumi ukse taga võimalikult vähe aega.
Õppejõud: Soovib, et võimalikult paljud üliõpilased saaksid tulla vastuvõtule. Soovib, et üliõpilased peaksid võimalikult vähe vastuvõtu ruumi ukse taga ootama ning et vastuvõtt kulgeks võimalikult sujuvalt.
Käivitav sündmus: Õppejõud soovib vaadata, lisada, muuta või tühistada enda aktiivset vastuvõttu või selle üksikut vastuvõtuaega. 
Eeltingimused: Õppejõud on autenditud ja autoriseeritud.
Järeltingimused: Õppejõuga seotud aktiivsed vastuvõtud on leitud.
Stsenaarium (tüüpiline sündmuste järjestus):
1. Õppejõud avaldab soovi vaadata, lisada, muuta või tühistada enda aktiivset vastuvõttu või selle üksikut vastuvõtuaega. 
2. Süsteem kuvab nimekirja otsingut tegeva õppejõuga seotud aktiivsetest vastuvõttudest. Need on vastuvõtud, mis toimuvad vastuvõtu lisamise ajaga samal kuupäeval või tulevikus. Nimekirjas esitatakse vastuvõtu kuupäev,  vastuvõtu toimumise koht – hoone ja ruum ning vastuvõtu kommentaar. Vastuvõtud on sorteeritud kuupäeva järgi kahanevalt (OP2.1).
3. Õppejõud võib leitud vastuvõttude andmeid vastuvõtu kuupäeva ning toimumise hoone ja ruumi alusel sorteerida või filtreerida.
4. Süsteem kuvab vastuvõtud soovitud järjekorras või piirab filtri alusel vastuvõttude hulka (OP2.1).
Laiendused  (või alternatiivne sündmuste käik):
2a – Kui õppejõul ei ole ühtegi seotud aktiivset vastuvõttu, siis ei kuva süsteem vastuvõttude andmeid.

OP2.1 realiseeritakse kasutades andmebaasis skeemis public loodud vaadet aktiivsed_vastuvotud, kus on veerud vastuvott_id, toimumise_kuupaev, hoone_kood, ruum_kood, vastuvotja_kasutajanimi, vastuvotja_kommentaar.

Kasutusjuht: Paku välja vastuvõtt
Primaarne tegutseja: Õppejõud
Osapooled ja nende huvid:
Üliõpilane: Soovib võimalikult operatiivselt saada õppejõult konsultatsiooni. Soovib, et ta peaks ootama õppejõu vastuvõtu ruumi ukse taga võimalikult vähe aega.
Õppejõud: Soovib, et võimalikult paljud üliõpilased saaksid tulla vastuvõtule. Soovib, et üliõpilased peaksid võimalikult vähe vastuvõtu ruumi ukse taga ootama ning et vastuvõtt kulgeks võimalikult sujuvalt.
Käivitav sündmus: Õppejõud soovib mingil kuupäeval konsulteerida üliõpilasi õppetööga seotud küsimustes.
Eeltingimused: Õppejõud on autenditud ja autoriseeritud. Ruum, kus vastuvõtt toimub ning õppejõud, kes võtab üliõpilasi vastu, on registreeritud.
Järeltingimused: Vastuvõtt on registreeritud.
Stsenaarium (tüüpiline sündmuste järjestus):
1. Õppejõud avaldab soovi registreerida uue vastuvõtu.
2. Käivitub kasutusjuht "Otsi enda aktiivseid vastuvõtte".
3. Õppejõud annab korralduse alustada uue vastuvõtu sisestamist.
4. Süsteem kuvab vastuvõtu sisestamise maketi. Süsteem kuvab ruumide nimekirja (OP2.2).
5. Õppejõud valib vastuvõtu kuupäeva, vastuvõtu ruumi (kui vastuvõtt ei toimu Internetis) ning sisestab vajadusel kommentaari (kohustuslik, kui vastuvõtt toimub Internetis).
6. Süsteem salvestab andmed (OP2.3).
Laiendused  (või alternatiivne sündmuste käik):
6a – Kui vastuvõtu kuupäev on varasem kui vastuvõtu lisamise kuupäev, siis vastuvõttu andmeid ei salvestata.

OP2.2 realiseerimiseks kasutatakse andmebaasis skeemis public loodud vaadet ruumid, milles on veerud ruum_id ja ruum. Veerus ruum on ruumi koodi ja hoone koodi kombinatsioon.

OP2.3 realiseerimiseks kasutatakse andmebaasis skeemis public loodud funktsiooni f_loo_vastuvott (p_ruum_id integer, p_vastuvotja_kasutajanimi varchar, p_toimumise_kuupaev date, p_kommentaar text). Funktsioon ei tagasta väärtust.

Ruum võib puududa (olla NULL). Kui ruum puudub, siis peab kommentaar olema registreeritud. Kui ruum on olemas, siis võib kommentaar puududa.