You are on page 1of 7

BACKEND ZADATAK

JELA SVIJETA
ZADATAK I CILJEVI
Potrebno je kreirati aplikaciju Jela svijeta koristeći Laravel framework (Verzija
5.0+). Ova aplikacija se sastoji od baze jela, sastojaka, kategorija i tagova.

S obzirom da je aplikacija višejezična, jela, sastojci, kategorije i tagovi imaju tablice


prijevoda. Također postoji i tablica jezika u kojoj se nalaze dostupni jezici.

Moguće koristiti Laravel Translatable paket


https://github.com/Astrotomic/laravel-translatable

Tablice je potrebno kreirati korištenjem migracija.

Tablice se trebaju popuniti podacima korištenjem seedera i paketa FakerPHP /


Faker.

Poželjno je koristiti “Dependency Injection”.

Cilj ovog zadatka je vidjeti koliko dobro kandidat poznaje laravel api, a pri
rješavanju zadatka trebao bi se pridržavati “SOLID design principles”.

Aplikacija treba imati jedan endpoint na kojem se trebaju izlistavati jela. Koji podatci
se prikazuju i kako, ovisi o parametrima u query-ju.

Pretpostavimo da sva jela imaju unesen isti broj prijevoda koji je identičan broju
jezika u tablici languages.

• Jelo može biti bez kategorije, ili može pripadati samo jednoj kategoriji

• Jelo mora imati definiran barem jedan tag

• Jelo mora imati definiran barem jedan sastojak

Svi sastojci imaju isti broj prijevoda koji je identičan broju jezika u tablici languages.

Potrebno je napraviti validaciju svih parametara requesta po kojima će se filtrirati


rezultati baze.

BACKEND DEVELOPER 2/7


REQUEST RESPONSE
Želimo imati kontrolu nad Ovdje se nalazi primjer responsa koji odgovara URL queryu

• per_page - (optional) Broj rezultata po stranici ...?per_page=5&tags=2&lang=hr&with=ingredients,category,tags&diff_


time=1493902343&page=2
• page - (optional) broj stranice

• category - (optional) id kategorije po kojoj želimo filtrirati rezultate; osim id, ovaj POJAŠNJENJE NEKIH PODATAKA IZ RESPONSA
parametar može imati vrijednost NULL (gdje ne postoji kategorija) kao i vrijednost
• id - id jela iz tablice meals
!NULL (gdje postoji kategorija)
• title - naziv jela iz tablice prijevoda za jelo ovisno o parametru lang
• tags - (optional) lista id-jeva po kojima želimo filtrirati rezultate (npr, tags=1,2,3).
Vratiti samo jela koja imaju sve navedene tagove. • description - opis jela iz tablice prijevoda za jelo ovisno o parametru lang

• with - (optional) lista ključnih riječi (ingredients, category, tags) s kojima dajemo • status - zadana vrijednost je ‘created’ osim ako je u requestu proslijeđen
do znanja koje dodatne podatke očekujemo u responsu parametar diff_time, tada status može biti jedan od created, modified,
deleted ovisno o tome dali je vraćeno jelo bilo kreirano, modificirano ili obrisano
• lang - (required) parametar kojim definiramo jezik
nakon vremena definiranog u parametru diff_time. Manipulaciju status
• diff_time - (optional) UNIX Timestamp; kad je ovaj parametar proslijeđen tad je potrebno je izvesti putem time stampa created_at, updated_at i deleted_at
potrebno vratiti sve iteme (i one obrisane). Treba vratiti sve ne samo izmijenjene (prouciti Laravel Eloquent SoftDeletes).
nakon datuma proslijeđenog u ovom parametru *
Ovi gore spomenuti property definiraju osnovnu shemu responsa; međutim shemu
* S obzirom na to da nije predviđena kreacija, ažuriranje i brisanje, nije se potrebno responsa je moguće promijeniti (proširiti) tako da se pošalje jedan ili više ključnih
posebno fokusirati na razradu ove funkcionalnosti, ono što je bitno je sljedeće: riječi u parametar with, tada se u responsu na svakom objektu još mogu pojaviti i
kada je u requestu poslan parametar diff_time i kada je to pozitivan cijeli broj property tags, category ili/i ingredients.
veći od 0, tada je pri selektiranju podataka iz baze potrebno uzeti u obzir sva jela
(uključujući i obrisana) koja su kreirana, modificirana ili obrisana nakon datuma
definiranog u tom parametru

BACKEND DEVELOPER 3/7


U nastavku je pojašnjenje strukture ostalih objekata.

CATEGORY
• id - id kategorije

• title - naziv kategorije ovisno o parametru lang

• slug - tekstualna unique oznaka kategorije koja ne ovisi o prijevodu

TAGS
• id - id taga

• title - naziv taga ovisno o parametru lang

• slug - tekstualna unique oznaka taga koja ne ovisi o prijevodu

INGREDIENTS
• id - id sastojka

• title - naziv sastojka ovisno o parametru lang

• slug - tekstualna unique oznaka sastojka koja ne ovisi o prijevodu

BACKEND DEVELOPER 4/7


SLANJE RJEŠENJA
Riješeni zadatak treba staviti na GitHub, a repozitorij treba biti Public.
Link do repozitorija poslati na mail.

ROK IZRADE
Sedam dana od dobivenog zadatka.

BACKEND DEVELOPER 5/7


SRETNO!

6/7

You might also like