# Jurassic Land Test technique pour B-Appli. Réalisé en utilisant le framework PHP Laravel. Testé avec une base SQLite. ## Compte-rendu Fonctionnalités : [X] Création d'un enclos [X] Modification du nom d'un enclos [X] Modification de l'état d'un enclos [X] Enregistrement des changements d'état des enclos (ouvertures et fermetures) [X] Listing des enclos avec leurs status [X] Suppression d'un enclos [ ] Listing des ouvertures/fermetures [ ] Styler les pages correctement (css, bootstrap) [ ] Gérer les erreurs de validation de façon user-friendly (reporter l'erreur dans l'interface, catcher les exceptions) [ ] Ajout d'une ouverture aléatoire pour modéliser l'ouverture par les vélociraptors [ ] Brancher le système d'authentification de Laravel ## Remarques Codé en environ 2h30. C'était pour moi l'occasion de découvrir Laravel. L'implémentation utilise au maximum les facilités offertes par Laravel : ORM, migrations de base de données, routage d'un modèle. La modélisation est très simple : - un modèle Paddock (`app/Paddock.php`), qui modélise un enclos : id, nom, état (booléen isClosed) ; - un modèle PaddockStateChange (`app/PaddockStateChange.php`), qui modélise un changement d'état (ouverture/fermeture). On utilise le fait que l'ORM de laravel stocke automatiquement des timestamps de création et mise à jour pour stocker la date d'ouverture/fermeture de l'enclos ; - Paddock et PaddockStateChange sont liés par une relation hasMany ; - le controlleur PaddockController (`app/Http/Controller/PaddockController.php`) est dérivé du squelette créé automatiquement par Laravel ; - ce qui permet de router toutes les actions CRUD classiques en une ligne dans `routes/web.php` ; - les fichiers de migration sont dans `database/migrations` (create_paddock_table, add_unique_constraint_on_paddock_names, create_paddock_state_changes). Propriétés : * un enclos est identifié de manière unique par son nom : assuré par une contrainte d'intégrité sur la colonne de la base de données. * enclos fermé par défaut (valeur par défaut dans le modèle) ## Installation et test Pré-requis : installation de Laravel ``` composer global require laravel/installer ``` Clonage et mise en route : ``` git clone http://git.dromaludaire.info/benjamin/bappli-jurassic-land.git cd bappli-jurassic-land composer update cp .env.example .env php artisan key:generate touch database/database.sqlite php artisan migrate php artisan serve ``` Et l'application est ensuite disponible sur