Ce travail est à produire individuellement, vous devrez pour cela créer un dépôt git privé.
Le code de base est présent sur ce dépôt GitHub.
Créez un dépôt (privé!) BitBucket ou GitHub, puis faire par exemple:
git clone https://github.com/Gregwar/td-dawin-2020.git
cd td-dawin-2020
git remote rm origin
git remote add origin git@bitbucket.org:mon-login-bitbucket/mon-depot-prive.git
git push --set-upstream origin master
N'oubliez pas de partager ce dépôt privé avec moi (login gregwar sur BitBucket ou GitHub)
Vous devez impérativement renseigner votre dépôt à l'aide d'une remise sur le Moodle du cours dans l'espace de remise
La date limite de remise est le 18 Janvier 2020 inclu, ce qui signifie que vos dépôts seront clonés et ne seront plus mis à jour
Information: nous exécutons des scripts automatiques pour détecter le plagiat de code, si vous nous rendez des devoirs similaires, nous le détecterons et reviendrons à la fois vers le plagieur et le plagié.
La base de code est une application Symfony dont le but est de gérer la participation des étudiants au forum des stages.
Installez les dépendances à l'aide de composer :
composer install
Modifiez alors le fichier .env pour qu'il contienne les paramètres de connexion valide à un serveur MySQL
et créez les tables:
php bin/console doctrine:schema:create
Lancez alors le serveur web et testez:
php bin/console server:run
Vous aurez besoin d'un compte admin, et d'un compte non-admin. Pour cela, vous pouvez vous inscrire deux fois, et modifier les roles d'un des utilisateurs à l'aide de la commande:
php /bin/console app:make-admin e-mail@de-ladmin.com
Le site ne comporte actuellement aucune règle de sécurité. Faites en sorte que:
On aimerait pouvoir aussi spécifier une adresse (URL) de site web pour les entreprises qui est optionelle.
Ajoutez cette url:
make:entityAjoutez un champ training (formation) dans l'entité utilisateur (vous pouvez
utilisez encore une fois make:entity),
qui sera une relation adéquate avec l'entité Training.
Ajoutez également ce champ dans le formulaire d'inscription, afin que l'on puisse choisir la formation à l'aide d'un menu déroulant.
On souhaite pouvoir associer des crénaux à chaque entreprise. Un créneau est une heure à laquelle il est possible de rencontrer l'entreprise pendant le forum des stages (pour la prise de rendez-vous).
L'entité Slot (créneau) est déjà fournie dans le code de base.
Lorsque l'on créé une entreprise, on lui associe des créneaux libres à partir des paramètres (heure
de début, heure de fin, et durée de chaque créneau. Voici un exemple de résultat attendu pour
un début à 14:00, une fin à 16:00 et des créneaux de 15 minutes:
Implémentez la création des créneaux libres (dans CompanyController::createSlots).
Note: L'entité Slot qui représente les crénaux existe déjà dans le code fournie, et
l'affichage des crénaux est déjà implémenté.
Les entreprises participantes ne sont pas intéressées par des étudiants de toutes les formations. (Par exemple, certains recruteurs veulent exclusivement des étudiants DAWIN, ou des DUT etc.).
Ajoutez une connexion entre les entreprises et les formations, de manière à ce qu'il soit possible de séléctionner (avec des cases à cocher) dans le formulaire de création/édition des entreprises la liste des formations qui l'intéressent.
Ajoutez cette liste dans la page "détails" de l'entreprise.
Lorsqu'un utilisateur regarde la liste des entreprises, montrez visuellement les entreprises qui
ne sont pas intéressées par la formation pour laquelle il s'est enregistré (on peut par exemple
les mettre en opacity:0.5).
Un étudiant peut déclarer son intérêt pour une entreprise via l'application, pour cela il
clique sur un créneau libre, qui lui est alors assigné (via le champ student de
Slot).
Attention: un étudiant ne peut pas bloquer plusieurs créneaux à la même heure, ni plusieurs créneaux à des heures différentes pour la même entreprise!
Sur la page d'accueil, l'étudiant doit pouvoir voir tous ses créneaux, et quelle entreprise il rencontrera à ce moment là. Il voit également son nom à côté du créneau qu'il a reservé sur la page détails d'une entreprise.
Lorsqu'un autre étudiant voit la liste des créneaux, il voit lesquels sont disponibles et ne peut pas réserver un créneau déjà pris.
Sur la page d'une entreprise, l'administrateur doit pouvoir voir le nom de chaque étudiant à côté des créneaux lorsqu'il sont réservés.