-
Notifications
You must be signed in to change notification settings - Fork 0
Modelová vrstva
Každý model od základu v Laravelu dědí funkčnost od Illuminate\Database\Eloquent\Model.
V aplikaci se však mezi Laravel modelem a modelovou vrstvou nachází ještě abstraktní třída App\BaseModel.
Tato třída umožnuje všem modelům využívat validaci pomocí Watson\Validating\ValidatingTrait a získat modely
vytvořené za posledních X hodin pomocí query scope scopeNew(). Interval v hodinách
pro výběr nových modelů je uložen v konstantě NEW_INTERVAL.
Model představuje typ letadla v aplikaci, nikoliv jednotlivá letadla na letišti.
-
name- název letadla, např. Antonov An-2 -
range- dolet letadla v celých km -
speed- rychlost letadla v km/h -
cost- cena na provoz letadla v Kč na km
- AircraftAirport - všechna letadla tohoto typu, nevyužívá se
- Airport -
airports()- všechna letiště, na kterých se tento typ letadla nachází - AircraftImage -
image()- letadlu přislušící obrázek
- Model využívá
SoftDeletes. - Metoda
getDurationForDistancevrací čas v sekundách.
Model představuje instanci určitého typu letadla na určitém letišti. Neobsahuje žádné další podstatné atributy kromě obou cizích klíčů.
Neobsahuje
- Aircraft -
aircraft()- příslušné letadlo - Airport -
airport()- příslušné letiště - Order -
orders()- všechny objednávky pro toto letadlo
- Model využívá
SoftDeletes. - Tabulka v databázi má nestandartní název:
aircraft_airport_xref.
Model představuje obrázek typu letadla.
-
path- unikátní cesta, kde je obrázek uložen -
description- popis obrázku
- Aircraft -
aircrafts()- všechny typy letadel s tímto obrázkem
- Metoda
saveFromRequestukládá obrázky do složkystorage/app/public/aircraft-images. Pro správnou funkci je nutné mít složkustorage/app/publicpropojenou se složkoupublic/storage. Toho lze dosáhnout příkazemphp artisan storage:link.
Model představuje instanci letiště.
-
name- název letiště -
lat- zeměpisná šířka letiště -
lon- zeměpisná délka letiště -
code- ICAO kód letiště
- Aircraft -
aircrafts()- všechny typy letadel, které se na tomto letišti nacházejí - AircraftAirport - všechna letadla na tomto letišti, nevyužívá se
- Route - všechny trasy startující z tohoto letiště, nevyužívá se
- Route - všechny trasy končící na tomto letišti, nevyužívá se
- Validace souřadnic využívá stejný regex jako validační pravidlo RouteJson.
- Model využívá
SoftDeletes.
Model představuje instanci objednávky.
-
price- celková cena objednávky -
flight_price- cena za let -
transport_price- cena za přesun letadla na startovní a zpět z přistávacího letiště -
duration- doba trvání letu -
code- unikátní 32 znaků dlouhý kód objednávky -
email- email objednávajícího -
user_note- poznámka objednávajícího -
admin_note- poznámka majitele -
confirmed_at- datum potvrzení objednávky -
completed_at- datum dokončení objednávky (let proběhl)
- AircraftAirport -
aircraftAirport()- příslušné letadlo - Route -
route()- trasa letu
- Model využívá
SoftDeletes. - V případě pokusu o označení nepotvrzené objednávky za dokončenou bude akce zamítnuta.
- Při vytvoření objednávky
App\Events\OrderCreatedbude jak objednávajícímu, tak všem majitelům odeslán email o vytvoření nové objednávky. - Při potvrzení objednávky
App\Events\OrderConfirmedbude objednávajícímu odeslán potvrzovací email uživateli. Potvrzení objednávky změnou atributuorder_confirmedevent nespustí. - Při odstranění nepotvrzené nebo nedokončené objednávky
App\Events\OrderDeletedbude objednávajícímu odeslán email o zrušení objednávky. Změna atributudeleted_atnebo odstranění dokončené objednávky event nespustí.
Model představuje instanci obsahující informace o naplánované trase.
-
distance- délka trasy -
route- body trasy ve formátu RouteJson -
is_predefined- boolean, zda-li se jedná o předdefinovanou trasu
- Airport -
airportFrom()- startovní letiště - Airport -
airportTo()- přistávací letiště - Order -
orders()- všechny objednávky na této trase
- Pokud vytvářený model neobsahuje v parametrech použitých v konstruktoru položku
is_predefined, je tento argument automaticky nastaven nafalse. - Model sám automaticky parsuje hodnoty atributu
is_predefinednabooleana hodnotu atributuroutezJSONnaarray. - Délka trasy je vždy přepočítána při ukládání modelu:
Route::saving. Celková délka je vypočítána jako délka trasy sečtená se vzdálenosti ze startovního letiště do prvního bodu trasy a z posledního bodu trasy na přistávací letiště.