ПСИ/К2 2022

Извор: SI Wiki
Пређи на навигацију Пређи на претрагу

Други колоквијум 2022. године одржан је 4. маја. Трајао је 120 минута, носио је 20 бодова и радио се на рачунару. Штампана литература није била дозвољена, док је за радне оквире који су се користили (Дјанго, Ларавел, ЦодеИгнитер) била доступна документација. Текст колоквијума доступан је са странице предмета, као и фајлови за имплементацију и скрипт базе.

Поставка

Дата је спецификација корисничких захтева веб система за сајам послова и стручних пракси за студенте техничких факултета у Србији. Корисници система се пријављују коришћењем својих креденцијала: јединственог корисничког имена и лозинке. Физичка лица су корисници који имају своје име, презиме, датум рођења, индекс (у облику: ГГГГ-ББББ, где су Г ознаке године уписа, а Б броја индекса), и факултет који студирају. Уколико су завршили факултет, таква лица треба означити као да су дипломирала. Правна лица, односно компаније, су корисници система који имају свој назив, адресу, град, поштански број, јединствени ПИБ (порески идентификациони број), и име и презиме одговорног лица (директора компаније). Компанија може имати један (главни) или више (додатних) рачуна (за сваки рачун чувати информације о броју рачуна и којој банци припада). Сви подаци су обавезни.

Компаније расписују конкурсе. Тип конкурса може бити конкурс за стручну праксу или запослење. Сваки конкурс који компанија распише мора да поседује назив, ознаку типа конкурса, број отворених позиција по том конкурсу, датуме отварања и затварања конкурса, број година искуства особе (само за запослење), и потребне компетенције. Конкурс не мора имати никакве тражене компентенције, али их може имати и више. Компетенције су на пример: ПХП, Пyтхон, тестирање софтвера, архитектурални узорци, итд. Физичка лица се пријављују на конкурсе, само у тренутку када су они отворени. Када се конкурс заврши компанија треба да одабере одређени број пријављених особа (физичких лица), према броју отворених позиција, и да их запосли или прими на стручну праксу.

За запослење могу конкурисати само физичка лица која су дипломирала. За стручну праксу могу конкурисати и лица која нису дипломирала. Није потребно чувати податке о активним (потврђеним) практикантима у бази података. Физичко лице које се запослило, добија свој јединствени ИД (идентификатор) у тој компанији у којој почиње да ради и све запослене особе неопходно је чувати у бази података.

Задаци за израду:

  1. На нивоу релационе базе, дате у МyСQЛ скрипти јобфаир22.сqл или модела у моделс.пy, утврдити да ли су подаци у бази и да ли су сви ентитети и односи у бази у складу са горе описаном спецификацијом. Реализовати измене, како би база података одговарала овим корисничким захтевима. Није потребно реализовати тригере и процедуре.
  2. Реализовати МВЦ (Модел-Виеw-Цонтроллер) апликацију коришћењем програмског језика ПХП или Пyтхон. Имплементацију је могуће радити коришћењем објектно оријентисаног ПХП кода, или коришћењем радних оквира ЦодеИгнитер, Ларавел или Дјанго МТВ (Модел-Темплате-Виеw). Следећи сценарији треба да буду реализовани:
    1. Почетна страна се састоји из горњег и доњег заглавља и менија са стране (хеадер, фоотер и мени странице) и централног дела (садржаја). У менију приказати две опције: страна за пријаву и страна за преглед компанија. Реализовати контролер који учитава страну за пријаву као почетну. На страни се приказује форма са текстуалним пољем за унос назива конкурса (или само дела назива конкурса), као и 2 поља за потврду (цхецкбоx) која означавају тип конкурса који претражује (стручна пракса или запослење). Физичко лице уноси жељене податке и притиска дугме ТРАЖИ, којим се веб страна освежава и из базе дохватају подаци који одговарају параметрима претраге. Резултате (назив конкурса са компетенцијама, назив компаније, и датум затварања конкурса) приказати један испод другог, и поред сваког радио дугме. Лице бира тачно једну опцију (један конкурс), уноси у текстуално поље испод резултата претраге своје јединствено корисничко име и притиска дугме КОНКУРИШИ, чиме се пријава бележи у бази података. Водити рачуна да се у резултатима претраге приказују само актуелни конкурси (који су отворени и који још увек нису завршени). Физичко лице може конкурисати на више конкурса истовремено и о томе, као и о статусу запослења не треба водити рачуна (не имплементирати провере око тога!). Физичко лице не може два пута да се пријави на исти конкурс и тада исписати грешку. Правно лице не може да се пријављује на конкурс за посао/запослење, тада исто исписати грешку.
    2. Друга страна за преглед конкурса по компанијама, која се може изабрати из менија, садржи падајућу листу свих правних лица (компанија). Одабиром неке од компанија из листе, и притиском на дугме ИЗАБЕРИ, приказати табеларно све конкурсе, са следећим колонама: корисничко име особе која је конкурисала, датум и време када је конкурисала особа, назив конкурса и тип (пракса или запослење). Резултате приказати растуће по корисничком имену особе и према називу конкурса.

НАПОМЕНА - Као решење задатка потребно је приложити:

  1. Нови скрипт јобфаир22.сqл или Пyтхон скрипте са преуређеном базом података и довољно попуњеном за тестирање свих сценарија.
  2. Читав пројекат веб апликације, са изворним кодом.

Решење

  • ЦодеИгнитер пројекат и СQЛ скрипта
    • За покретање потребно је следеће:
      1. Покренути СQЛ скрипту која ће направити базу и попунити је подацима
      2. У app/Config/Database.php изменити креденцијале за базу са is1 / tubic на корисника који постоји и његову лозинку
      3. Имати Цомпосер инсталиран
      4. Покренути composer install како би се инсталирати потребни пакети за пројекат
      5. Покренути php spark serve
      6. Посетити http://127.0.0.1:8080