2020-04-17 12:22:33 +02:00
2020-04-17 11:30:44 +02:00
2020-04-17 07:59:50 +02:00
2020-04-17 08:14:42 +02:00
2020-04-17 11:30:44 +02:00
2020-04-17 07:59:50 +02:00
2020-04-17 09:57:10 +02:00
2020-04-17 07:59:50 +02:00
2020-04-17 07:59:50 +02:00
2020-04-17 07:59:50 +02:00
2020-04-17 07:59:50 +02:00
2020-04-17 07:59:50 +02:00
2020-04-17 07:59:50 +02:00
2020-04-17 07:59:50 +02:00
2020-04-17 07:59:50 +02:00
2020-04-17 07:59:50 +02:00
2020-04-17 07:59:50 +02:00
2020-04-17 07:59:50 +02:00
2020-04-17 12:22:33 +02:00
2020-04-17 07:59:50 +02:00
2020-04-17 07:59:50 +02:00

Jurassic Land

Test technique pour B-Appli.

Réalisé en utilisant le framework PHP Laravel. Testé avec une base SQLite.

Compte-rendu

Fonctionnalités :

  • Création d'un enclos
  • Modification du nom d'un enclos
  • Modification de l'état d'un enclos
  • Enregistrement des changements d'état des enclos (ouvertures et fermetures)
  • Listing des enclos avec leurs status
  • Suppression d'un enclos

À faire :

  • 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 http://localhost:8000

Description
No description provided
Readme 99 KiB
Languages
PHP 93%
HTML 6.4%
JavaScript 0.6%